One unit-test/ directory per module/target, mirroring the existing
TetraIF/unit-test/ layout (one QtTest executable per module, guarded by
BUILD_TESTING and the module target, each registered with ctest):
Lts/Common/CodeGen codegen_unit_test
Lts/Common/LtsCoordinate ltscoordinate_unit_test
Lts/Common/LtsSession ltssession_unit_test
Lts/DDS/Core ddscore_unit_test
Lts/DDS/QosProfile ddsqos_unit_test
Lts/Tools/LogViewer logviewer_unit_test
Lts/Tools/SqlBrowser sqlbrowser_unit_test
Z/src/NGLLogger ngllogger_unit_test
Z/src/WMS_Interface wms_json_ds_unit_test
Z/src/nglapplication nglcoreapplication_unit_test
Z/src/nglcompression nglcompression_unit_test
Z/src/nglsettings nglsettings_unit_test
Z/src/ngltranslator ngltranslator_unit_test
Where a module is built with hidden visibility and has no export macro
(LogViewer, SqlBrowser, ngltranslator, NGLLogger, nglcompression,
nglsettings), its sources are compiled directly into the test
executable, the same pattern as prtcnv_unit_test.
ctest baseline in the container (QT_QPA_PLATFORM=offscreen): 20/23
passed (13 new + 7 pre-existing in-scope tests), 3 Not Run as before
(nglcomp_test, GrantleeParserSmoke, utils_test).
README: ctest baseline table extended to the 23 registered tests and
section 2.4 now documents the per-module test layout. ddsview has no
unit test (GUI tool, XmlHelper needs the DDS dynamic-xtypes runtime).
Revert part of the markdown cleanup: the two TrainingAreaBase plugin
ICD docs and jenkins-ci-rme/README.md stay in the tree; the root
migration/validation reports remain removed. README.md pointers to
jenkins-ci-rme/README.md are restored.
Drop the 13 leftover documents (12 migration/validation reports at the
tree root, 2 plugin ICD docs under Lts/Proxies/TrainingAreaBase, and
jenkins-ci-rme/README.md); README.md is the only .md in the tree. The
two README pointers at jenkins-ci-rme/README.md now describe the
pipeline files inline.
The pruned tree no longer registers the out-of-scope ctest entries; the
expected baseline is now 7 in-scope tests passed + 3 Not Run
(nglcomp_test, GrantleeParserSmoke, utils_test).
Verified with a full pipeline run on the pruned tree: 46/46 targets
built, ctest 7/7 in-scope passed, 5 DEBs produced.
new_docker_build.sh and rpmbuild/make_rpm_ubuntu26.py (Release 1
validation-scope driver/producer) did not belong to this branch; their
functional callers are adapted to the Release 2 files:
- rpmbuild/make_rpm_ubuntu26_release2.py: PIPELINE_FILES now packages
new_docker_build_release2.sh and make_rpm_ubuntu26_release2.py.
- jenkins-ci-rme/jenkins_builder_ubuntu26.sh: runs
make_rpm_ubuntu26_release2.py with -DBUILD_RTI=ON and the Release 2
target list (--build_targets; a full-tree build is not possible on
this tree); staging tar also excludes ./build4*.
- jenkins-ci-rme/release-16-10-2026.sh (local dry run): calls
new_docker_build_release2.sh; derives the pipeline root from the tree
layout and exports MIGRATE_PIPELINE_ROOT; uses the prebuilt image when
present, otherwise the driver installs deps in-container (the R1
--build-prebuilt-image option does not exist in the R2 driver).
- jenkins-ci-rme/jenkins/Jenkinsfile: coverage stage runs the R2 driver
with MIGRATE_PIPELINE_ROOT exported (wins over the checked-in .envrc,
which carries a host-specific path).
- Doc/comment updates: Dockerfile header, install_arcgis.sh, publisher,
Jenkinsfile descriptions, jenkins-ci-rme/README.md, README.md.
Remaining references to the old names are only in historical migration
reports, which are left as-is.
Verified every claim against new_docker_build_release2.sh, the DEB
producer and a real pipeline run, then removed/fixed what does not
belong to this branch:
- Removed Step 1 (--build-prebuilt-image/--delete-prebuilt-image): those
options do not exist in the driver.
- Replaced the Release 1 bookkeeping (R1 packages table, R1 modules
table, 38-target count) with the actual Release 2 scope: 46 targets
(GROUP1 6, GROUP3 36, GROUP5 3, GROUP6 1).
- Fixed the build description: Ninja (not make -j8), unique
build4_<timestamp>_<pid> dirs (not a shared build4/), the real cmake
flags (BUILD_RTI, BUILD_GROUP*, RTI defines), no RELEASE_BUILD flag.
- Fixed image/mount facts: default image qt6-migrated-legatus-release2
(not guez-release2:2.0), /repo mount root (not /workspace), no
WORKSPACE env var, no build4/release_build.log.
- Fixed DEB names/contents: qt6-release-*_1.0-1_amd64.deb (not
guez-*_2.0), real PIPELINE_FILES list, honest note that the
ctest-runtime DEB is currently empty (build4 vs build4_<ts> mismatch).
- ctest baseline: 7 in-scope tests passed + the 9 expected Not Run
entries.
- Options reference: real options/defaults (lts-version 1.0), env
override list matching the driver; troubleshooting updated
(offscreen Qt, RTI license, prebuilt image).
- Update scope section with Release 2 target breakdown (38 targets)
- Update DEB package names from qt6-release-* to guez-*
- Update test suite expectations (13 tests including TetraIF)
- Update build instructions with guez-release2:2.0 Docker image
- Update Steps 4-6 for Release 2 DEB packaging and CI/CD
- Update options reference table with version 2.0
- Add troubleshooting note for Qt modules and build script
Co-authored-by: Copilot <2235566219+Copilot@users.noreply.github.com>
- new_docker_build.sh: new --run-coverage mode (mutually exclusive with
--run-jenkins-builder). Instruments the release-scope build with
-O0 -g --coverage -fPIC -DNDEBUG (RELEASE flag override keeps -DNDEBUG
and -fPIC so behavior and PIC match the green baseline), runs ctest,
then collects the lcov report: capture --external -> extract on the
four release dirs -> remove test sources -> summary -> genhtml, all
with --ignore-errors mismatch,inconsistent,unused (GCC 15 + lcov 2.4).
Report lands in --coverage-output-dir (default ./coverage-out):
html/index.html, coverage.info, coverage_summary.txt.
- Dockerfile image gains lcov via APT_PACKAGES (genhtml ships in the
same package).
- Jenkinsfile: RunCoverage parameter (default on) + per-OS Coverage
stage running the driver on the agent and archiving
coverage/<project>/<os>/**.
- release-16-10-2026.sh: same coverage step, gated by DRYRUN_COVERAGE
(default ON, mirrors the Jenkins default).
- README: Step 6 (code coverage) and options/env reference entries.
- .gitignore: coverage-out/
Scope is now described only as what the release build contains
(TetraIF, Z/src, Lts/Common, TrainingAreaBase). All steps (image,
compile, tests, DEB packaging, Jenkins) kept and refreshed; the
license note is reduced to 'no license file is required'.
The release validation scope (TetraIF, Z/src, Lts/Common +
TrainingAreaBase) never consumes an RTI license: no CMake file or
build step reads RTI_LICENSE_FILE, and the only RTI Connext DDS
consumers are all behind BUILD_RTI (OFF for this branch, stubs
compiled instead). The license was pure plumbing:
- new_docker_build.sh: remove the require_file validation, the
bind mount and the in-container RTI_LICENSE_FILE export
- jenkins-ci-rme: remove the RTI_LICENSE_FILE export and the
Jenkinsfile workspace-layout comment
- README: document that no license file is needed
Verified with a full pipeline rebuild (scope-rebuild12) run while
rti_license.dat was absent: 0 warnings, ctest baseline unchanged,
all 5 DEBs produced, none of them containing the license.
Document the full flow: prebuilt Docker image build, release-scope
compilation (mandatory CMake flags), running the unit tests (ctest
baseline plus direct execution of the test binaries), DEB package
production with the in-tree rpmbuild script, the Jenkins/CI entry
points, the options reference and troubleshooting notes.