A full Ninja build directory (613 files, ~1GB of build output) was
committed to the tree. Build artifacts do not belong in the index; the
build4_* gitignore rule added in 06209a496 keeps regenerated copies
out of status.
Co-Authored-By: Claude Code <noreply@anthropic.com>
The driver builds into build4_$(date +%Y%m%d_%H%M%S)_$; the old
build4_2* pattern only covered current-year timestamps. Ignore the
whole family so build artifacts stop showing up as untracked.
Co-Authored-By: Claude Code <noreply@anthropic.com>
A full-tree build (ninja all) is not possible on the Release 2 tree:
out-of-scope modules reference modules excluded from the scope
(e.g. TopicEditorBase -> LtsScriptTimeline; 100+ CMakeLists references),
and cmake --install hard-fails on targets that were never built. Align
the DEB pipeline with its own description (binaries and libraries from
release scope S):
- make_rpm_ubuntu26_release2.py: new --build_targets option
(space-separated CMake/Ninja targets; empty = legacy full tree).
Step 1 builds only those targets; the runtime DEB is staged from the
scoped build artifacts (bin/ + lib/) and packaged with build_deb
nobuild, replacing the full-tree debuild/cmake-buildsystem path.
- new_docker_build_release2.sh: pass the Release 2 group targets via
--build_targets; exclude the driver build4* dirs from the staging tar
(the DEB step builds its own tree; nothing consumes the driver build
output). Fix two comments inside the single-quoted docker bash -c
string that contained apostrophes, which broke word construction and
failed bash -n.
Co-Authored-By: Claude Code <noreply@anthropic.com>
Run 3 exposed two driver bugs in the DEB step:
- A '#' comment line placed inside the backslash-continued python3
invocation terminated the logical command early: python ran without
--cmake_build_flags (hence the empty cmake flags and the recurring
pdm_enums.hpp failure) and bash then tried to execute
'--cmake_build_flags' as a command (exit 127). Moved the comment
above the statement.
- GUEZ_MODE was defaulted on the host but never passed to the container
(-e GUEZ_MODE missing), so the DEB cmake flags expanded -DGUEZ_MODE=
(empty -> false in CMake).
Co-Authored-By: Claude Code <noreply@anthropic.com>
- The DEB cmake flags lacked BUILD_RTI: the full-tree DEB build compiles
RTI codegen consumers (svcPdmCommon -> ProjectDataManagement/pdm_enums.hpp)
whose BUILD_RTI=OFF stubs were removed as 'forbidden OFF variants', so the
deb_stage build failed with 'pdm_enums.hpp: No such file or directory'.
RTI_INSTALL_DIR still resolves in-container via DOCKER_MOUNT_ROOT.
- ctest: GUI test executables (coprtcnv/prtcnv unit tests, test_nglpdfwidget)
aborted in the headless container ('no Qt platform plugin could be
initialized' - xcb needs a display); export QT_QPA_PLATFORM=offscreen
(the offscreen plugin is present in the image).
Co-Authored-By: Claude Code <noreply@anthropic.com>
- Host-side check now also accepts the license at the source tree root
(checked-in location) instead of only MIGRATE_PIPELINE_ROOT, where it
does not exist in this checkout
- In-container: export RTI_LICENSE pointing at the mounted license file so
RTI Connext DDS processes (build tools, ctest) can find it at runtime
Co-Authored-By: Claude Code <noreply@anthropic.com>
The full-module import merge (097e5b488) replaced the validated Release 2
test wiring with the full-tree CMake files, leaving 5 targets referenced by
new_docker_build_release2.sh / README undefined:
- Restore LogViewLogger library in TetraIF/LogView/CMakeLists.txt
(pre-merge file defined both LogViewLogger lib and LogView exe)
- Re-add ADD_SUBDIRECTORY(unit-test) in TetraIF/CMakeLists.txt
(coprtcnv_unit_test, logview_unit_test, prtcnv_unit_test)
- Add CommonUnitTestsPlaceholder to Lts/Common/CMakeLists.txt (MockCoordTrans)
Driver (new_docker_build_release2.sh):
- Pass -DBUILD_TESTING=ON: TetraIF/unit-test is gated on BUILD_TESTING
- Default GUEZ_MODE=ON: the DEB step expanded ${GUEZ_MODE} in-container
where it was unset, producing -DGUEZ_MODE= (false in CMake)
rpmbuild/make_rpm_ubuntu26_release2.py:
- Use the Ninja generator (cmake -G Ninja / dh_auto_configure -GNinja):
with CMake 4.2.3 in the legatus-qt6:1.0 image the Unix Makefiles
generator emits no rule for AUTOMOC <target>_autogen/mocs_compilation.cpp
("No rule to make target") and every Qt target fails; Ninja handles
automoc correctly (verified: ninja -n of all 39 Release 2 targets passes)
- Add ninja-build to debian Build-Depends
Verified inside legatus-qt6:1.0 (mount /repo, BUILD_RTI=ON, BUILD_TESTING=ON,
Ninja): cmake configure exit 0 and ninja -n of the full Release 2 target
list (GROUP1/3/5/6, 39 targets) exit 0.
Co-Authored-By: Claude Code <noreply@anthropic.com>
new_docker_build_release2.sh and the Release 2 README reference
rpmbuild/make_rpm_ubuntu26_release2.py, but only make_rpm_ubuntu26.py
existed (used by the jenkins-ci-rme builder). The Release 2 producer is
the same general 5-DEB builder (runtime, sources, ctest-runtime,
ctest-sources, build-pipeline), so add it under the expected name.
make_rpm_ubuntu26.py is kept for the jenkins-ci-rme flow.
Co-Authored-By: Claude Code <noreply@anthropic.com>
- 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>
- Removed duplicate GROUP1_TARGETS definition (lines 306-316)
- Removed duplicate GROUP3_TARGETS definition with 100+ svc* services (lines 318-499)
- Set BUILD_GROUP1 default to OFF (not in Release 2 scope)
- Removed svcCoreClient from GROUP1_TARGETS
- Script reduced from 851 to 669 lines
- Only in-scope targets remain: 24 in GROUP3, 6 in GROUP1, 3 in GROUP5, 1 in GROUP6
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Replace all /workspace references with ${DOCKER_MOUNT_ROOT} in DEB packaging block
- Add WORKSPACE_DIR variable pointing to qt-migration-legatus subdirectory
- Use WORKSPACE_DIR as tar extraction source to correctly stage workspace files
- Fix output directory paths for RPM and packages-out locations
This fixes the staging error where tar couldn't find /workspace inside the container.
- Changed single quotes to double quotes in printf statement
- Prevents bash syntax error when inline script is passed to docker run -c
- Fixes DEB packaging stage execution failure
- Fix 'log_error: command not found' in DEB packaging stage
- Docker run uses inline bash script with separate function definitions
- Added log_error() after log_info() in Docker inline script (line 712)
- Function executes inside container context where DEB packaging runs
- log_error() function was used in DEB packaging block but not defined
- Added function definition after log_info() at script top
- Fixes 'log_error: command not found' error in DEB packaging stage
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Enable LtsMultiMonitor and PluginInterfaces in Lts/Common/CMakeLists.txt
- Add LtsMultiMonitor, DataPluginInterface, GuiPluginInterface to GROUP3_TARGETS
- Required by LtsSession which is used by LtsWidgets
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Removed pdmTests, eemTests, flmTests, srpFtTests from GROUP3_TARGETS
as they are test executables, not library targets.
Release 2a now contains only 18 library targets:
- 14 NGL/Qt single application libraries
- 2 wms_json_ds, tcpserver
- 2 LtsCoordinate, LtsCoordTrans
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Exclude LtsElevation library (depends on AssetManagement, needed only for Release 2b services)
- Update GROUP3_TARGETS to remove LtsElevation
- Comment out LtsElevation subdirectory in CMakeLists.txt
Co-authored-by: Copilot <2235566219+Copilot@users.noreply.github.com>
Add Jenkins builder and coverage options:
- --run-jenkins-builder: Enable DEB package production mode
- --package-output-dir: Output directory for .deb packages
- --lts-version: LTS version for package metadata
- --project: Project name (guez)
- --build-number: Build number for package versioning
- --build-tag: Build tag/identifier
- --run-coverage: Enable lcov code coverage
- --coverage-output-dir: Output directory for coverage reports
Add MIGRATE_PIPELINE_ROOT handling with precedence:
1. Exported variable (Jenkinsfile)
2. .envrc file
3. Script location default
Add validation for mutually exclusive options:
- --run-jenkins-builder and --run-coverage cannot be used together
Export all new variables for Docker container and pass to CMake.
Co-authored-by: Copilot <223556619+Copilot@users.noreply.github.com>
- LtsElevation required by Trajectory generator used in svcAesCommon
- Part of core libraries needed for AreaEffectSimulation
- Fixes build error: missing ltselevation_export.h
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Use TARGET_EXISTS generator expressions for external dependencies
- Allows building without Viewer/SituationMap module in Release 2
- Maintains compatibility when those modules are available
- Required by svcAesClient/svcAesCommon for coordinate transformation
- Fixes missing include directories for coordinate transformation library
- Both libraries are core dependencies for AreaEffectSimulation services
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- QT5_ADD_RESOURCES was a no-op stub under Qt6, silently dropping .qrc
files: LogView's :/image/* icons were never compiled into the binary.
Map the stub onto qt6_add_resources() (outfiles-variable form, which
appends the generated qrc_*.cpp to the source list). LogView is the
only caller of the stub.
- nglwidgets' Qt6 branch only processed rme_light_style.qrc;
nglresources.qrc (which provides :icons/16x16/* toolbar/window icons)
was left as a raw file in the source list and never compiled
(CMAKE_AUTORCC is off). Process both qrcs.
- LogView never loads libnglwidgets.so at runtime (--as-needed drops it:
the code uses no nglwidgets symbols), so its :icons/16x16 resources
were never registered for the app. Embed the 20 icons LogView actually
uses directly into LogViewResources.qrc with explicit aliases (rcc
rejects XML comments in .qrc and, without an alias, registers the full
relative path as the resource name).