13 KiB
Release 2 Build Scope - Qt6 Migration (guez)
Overview
This document defines the final validated build scope for Release 2 of the Qt6-migrated "guez" project.
Branch: story/release-2-cleanup (parent) / story/create-release-two-delivery-25_11_2026 (submodule)
Validation Date: 2026-11-11
Build Status: ✅ PASSED (exit code 0)
Release 2 Scope Definition
AP3 — Shared Libraries (BUILD_GROUP3=ON)
52 targets including LtsUtils, Widgets, Session, Krypto, PluginManager, and required core libraries.
Core Libraries (12 targets)
- LtsUtils, LtsUtilsCore
- LtsCoordinate, LtsCoordTrans (NEW for Release 2)
- LtsElevation (NEW for Release 2 - required by Trajectory)
- LtsI18n, LtsI18nEditor
- LtsLog, LtsLogGui
- LtsMath, LtsMathGui
- LtsWkt
NGL Libraries (8 targets)
- NGL*, qtsingle* libraries for Qt6 integration
Services (32 targets)
- svcCoreClient, svcCoreCommon, svcCoreServer
- svcAesClient, svcAesCommon, svcAesServer (AreaEffectSimulation)
- svcC2Client, svcC2Common, svcC2Server (CommandControl)
- svcCommlayerClient, svcCommlayerCommon, svcCommlayerServer
- svcCryptoClient, svcCryptoCommon, svcCryptoServer
- svcDatamanagementClient, svcDatamanagementCommon, svcDatamanagementServer
- svcDeviceClient, svcDeviceCommon, svcDeviceServer
- svcFtcClient, svcFtcCommon, svcFtcServer
- svcGisClient, svcGisCommon, svcGisServer
- svcLtsConnectionClient, svcLtsConnectionCommon, svcLtsConnectionServer
- svcMobileDeviceClient, svcMobileDeviceCommon, svcMobileDeviceServer
- svcScenarioClient, svcScenarioCommon, svcScenarioServer
- svcScriptClient, svcScriptCommon, svcScriptServer
- svcSensorClient, svcSensorCommon, svcSensorServer
- svcWeaponClient, svcWeaponCommon, svcWeaponServer
Excluded from AP3: 126 modules removed including:
- AlarmManagement (svcAlm*), AssetManagement, AudioVideoManagement
- CentralEffectSimulation (hard dependency for svcAreaEffectSimulation)
- CodificationManagement, EffectShowManagement, Evaluations
- ExerciseEventManagement, FileManagement, FilterManagement
- GuezIedManagement, InfrastructureManagement, MarkerManagement
- Messaging, MeteoDataManagement, NotificationManagement, NmeaManagement
- OcBaseDownload, OcSituationClient/Server, OnlineReports
- OperatorManagement, PlanEditor, PresentationManagement
- ProjectionWorkstation, RecordingManagement, ReportManagement
- RoutingServiceNG, ServiceManagement, ScreenRecording, ServiceMonitor
- SituationMap, SituationReplayManagement, SoundManagement
- TargetManagement, VideoOverlayManagement, WarehouseGuez
AP4 — DDS Middleware (BUILD_GROUP1=ON)
7 targets including Core, DDSConnector, Routing, QosProfile, and RTI DDS compatibility layer.
- ddscore
- svcCoreClient
- ddsftccore
- ddsfts
- ddsgen
- ddsQoS
- ddsconnector
AP9 — Tools and Translations (BUILD_GROUP5=ON, BUILD_GROUP6=ON)
Group 5: Viewer Tools (3 targets)
- ddsView - DDS data viewer
- logViewer - Log analysis tool
- sqlBrowser - Database browser
Group 6: Generators and Toolchain (2 targets)
- DaoGenerator - Data access object generator
- lupdate - Qt translation toolchain
Build Configuration
Active Build Groups
export BUILD_GROUP1=ON # AP4: DDS middleware
export BUILD_GROUP3=ON # AP3: Shared libraries (52 targets)
export BUILD_GROUP5=ON # AP9: Viewer tools
export BUILD_GROUP6=ON # AP9: Generators and toolchain
Disabled Build Groups
BUILD_GROUP2=OFF # Excluded from Release 2
BUILD_GROUP4=OFF # Excluded from Release 2
BUILD_GROUP7=OFF # Excluded from Release 2
BUILD_GROUP8=OFF # Excluded from Release 2
BUILD_GROUP9=OFF # Excluded from Release 2
BUILD_GROUP10=OFF # Excluded from Release 2
BUILD_GROUP11=OFF # Excluded from Release 2
BUILD_GROUP12=OFF # Excluded from Release 2
Key Changes from Original Build
1. Script Fixes (new_docker_build_release2.sh)
- Fixed variable passing bug: Removed extra quotes around
${BUILD_GROUP*}variables- Before:
'"${BUILD_GROUP1}"'(passed literal string"'ON'") - After:
"${BUILD_GROUP1}"(passes valueON)
- Before:
- Added Docker environment exports:
-e BUILD_GROUP1,-e BUILD_GROUP3,-e BUILD_GROUP5,-e BUILD_GROUP6
2. Core Library Additions
- LtsCoordinate/LtsCoordTrans: Uncommented in
Lts/Common/CMakeLists.txt- Required by svcAesCommon → Trajectory → LtsCoordTrans → LtsCoordinate chain
- LtsElevation: Added to GROUP3_TARGETS
- Required by Trajectory generator for elevation data
3. Conditional Dependencies
- svcAesCommon (AreaEffectSimulation): Made external dependencies conditional
situationMapElevationMapandTrajectorynow useTARGET_EXISTSgenerator- Pattern:
$<IF:$<TARGET_EXISTS:target>,target,>
4. Target Filtering
- Original GROUP3_TARGETS: 178 targets
- Filtered GROUP3_TARGETS: 52 targets (removed 126 excluded modules)
- Removal criteria:
- Modules explicitly listed as "Excluded from Release 2" in CMakeLists.txt comments
- Modules with hard
#includedependencies on excluded components - Modules requiring unavailable build flags (BUILD_RTI, BUILD_GRANTLEE)
5. Removed Targets
svcAlm (AlarmManagement):* Removed due to missing code generation dependencies
- svcAlmClient, svcAlmCommon, svcAlmServer
- Require BUILD_RTI and BUILD_GRANTLEE flags not available in Release 2
svcAreaEffectSimulation: Removed due to hard dependency on excluded CentralEffectSimulation
- Contains
#include "CentralEffectSimulation/ces_ftc.h"(non-conditional) - Simpler to exclude than to refactor dependency
Validation Build Results
Final Validation Build
Date: 2026-11-11
Exit Code: 0 ✅
Build Groups Executed: 1, 3, 5, 6
[1/6] Group 1: DDS middleware (7 targets) - SUCCESS
[3/6] Group 3: Lts services (52 targets) - SUCCESS
[5/6] Group 5: Viewer tools (3 targets) - SUCCESS
[6/6] Group 6: Generators (2 targets) - SUCCESS
Build succeeded with expected warnings:
- Missing include paths for excluded modules (non-fatal)
- No fatal errors or missing targets
Build Output Location
qt-migration-legatus/qt6-after/qt6-migrated-legatus/build4_*/
File Changes Summary
Modified Files
-
qt-migration-legatus/qt6-after/qt6-migrated-legatus/new_docker_build_release2.sh
- Lines 639-642: Fixed CMake config variable passing
- Lines 643-646: Fixed build_group calls (removed extra quotes)
- Added Docker environment variable exports
- Line 630: Added LtsCoordinate, LtsCoordTrans, LtsElevation
- Line 626: Replaced 178 targets with filtered 52 targets
-
qt-migration-legatus/qt6-after/qt6-migrated-legatus/Lts/Common/CMakeLists.txt
- Uncommented
ADD_SUBDIRECTORY(LtsCoordinate)to enable target registration
- Uncommented
-
qt-migration-legatus/qt6-after/qt6-migrated-legatus/Lts/Services/AreaEffectSimulation/CMakeLists.txt
- Lines 121-122: Used
TARGET_EXISTSfor situationMapElevationMap and Trajectory
- Lines 121-122: Used
Created Files
- filter_release2_targets.py: Python script to filter GROUP3_TARGETS from 178 to 52 targets
- Identifies 126 excluded modules for removal
- Generates ready-to-use GROUP3_TARGETS array
DEB Packaging Considerations
External Dependencies Analysis
Based on ./external-dependencies/ folder analysis:
Release 2 Required DEB Packages
Qt6 Framework (Core)
qt6-base-dev (6.10.2)
qt6-base-private-dev
qt6-network-dev
qt6-sql-dev
qt6-xml-dev
qt6-gui-private-dev
qt6-widgets-private-dev
qt6-concurrent-dev
qt6-core5compat5compat-dev
DDS Middleware (AP4)
librti-connext-dds-7.7.0-dev
- Source: internal SCM repository
- License: Commercial (rti_license.dat required at build time)
- Repository: http://remote-repo.sl.defence-elec.de:8081/repository/ubuntu
- Signing Key: http://10.198.80.75/rme/deb_and_rpm_signage_key.pub
Build Tools & Generators (AP9)
grantlee-dev (5.3.1 with Qt6)
- Required for: DaoGenerator
- Source: Built from source in CI/CD pipeline
qt6-tools-dev
qt6-tools-dev-tools
- Required for: lupdate, lrelease toolchain
Logging & Utilities
log4qt-dev (2.0.0)
- Required for: LtsLog, LtsLogGui
libgeographiclib-dev (Custom)
- Source: internal SCM repository
- License: MIT
Testing (Optional for Runtime)
googletest-dev (1.15.2)
- Required only for: Development package
Not Required for Release 2
The following DEB packages are NOT required (modules excluded from Release 2):
libarcgis-maps-sdk-qt-dev (300.0.0)
- Excluded: SituationMap module not in Release 2
libavs-dev (Custom)
- Excluded: AudioVideoManagement not in Release 2
libbuildingmodels-dev (Custom)
- Excluded: BuildingModels not in Release 2
libdtentity-dev (Custom)
- Excluded: dtEntity not in Release 2
libschusstafel-dev (Custom)
- Excluded: Schusstafel not in Release 2
libtmsif-dev (Custom)
- Excluded: tmsif not in Release 2
Package Structure Recommendation
Runtime Packages
guez-release2-core_2.0.0_amd64.deb
Description: Core libraries and services for Release 2
Depends: qt6-base-dev, log4qt-dev, libgeographiclib-dev
Contains:
- Lts* libraries (12 core libs)
- NGL* libraries (8 NGL libs)
- svc* services (32 service targets)
Install-Path: /opt/guez/lib
guez-release2-dds_2.0.0_amd64.deb
Description: DDS middleware components
Depends: librti-connext-dds-7.7.0-dev
Contains:
- ddscore
- svcCoreClient
- ddsftccore, ddsfts, ddsgen
- ddsQoS, ddsconnector
Install-Path: /opt/guez/lib
guez-release2-tools_2.0.0_amd64.deb
Description: Viewer tools and generators
Depends: grantlee-dev, qt6-tools-dev
Contains:
- ddsView, logViewer, sqlBrowser
- DaoGenerator, lupdate, lrelease
Install-Path: /opt/guez/bin
Development Package
guez-release2-dev_2.0.0_amd64.deb
Description: Development headers and CMake config
Depends: guez-release2-core, guez-release2-dds, qt6-base-dev
Contains:
- Header files (*.h, *.hpp)
- CMake configuration files
- pkg-config files
Install-Path: /opt/guez/include, /opt/guez/lib/cmake
DEB Package Build Pipeline
Based on ./external-dependencies/deb-packages/:
# Build all Release 2 DEB packages
cd external-dependencies/deb-packages
./build-all-packages.sh --release2
# Output location
external-dependencies/deb-packages/output/
├── guez-release2-core_2.0.0_amd64.deb
├── guez-release2-dds_2.0.0_amd64.deb
├── guez-release2-tools_2.0.0_amd64.deb
└── guez-release2-dev_2.0.0_amd64.deb
APT Repository Configuration
For installation on target systems:
# Add internal repository
echo "deb http://remote-repo.sl.defence-elec.de:8081/repository/ubuntu noble main" \
| sudo tee /etc/apt/sources.list.d/guez.list
# Add signing key
wget -qO - http://10.198.80.75/rme/deb_and_rpm_signage_key.pub | sudo apt-key add -
# Install Release 2
sudo apt update
sudo apt install guez-release2-core guez-release2-dds guez-release2-tools
Air-Gapped Deployment
For air-gapped environments:
# On internet-connected machine
cd external-dependencies/scripts
./download-deb-packages.sh /media/secure-usb/offline-cache
# Transfer to air-gapped machine via secure media
# On air-gapped machine
sudo dpkg -i /offline-cache/deb/*.deb
sudo apt install -f # Resolve dependencies
SBOM Requirements
Each DEB package must include:
- CycloneDX 1.6 SBOM (guez-release2-*-sbom.json)
- SLSA v1.0 provenance (guez-release2-*-provenance.json)
- License compliance report (guez-release2-*-licenses.txt)
Generated automatically by Jenkins pipeline in external-dependencies/deb-packages/Jenkinsfile.
Next Steps
Immediate
- Validate Release 2 build scope (COMPLETED)
- Create DEB package manifests based on external-dependencies analysis
- Document installation dependencies for each package
Future Releases
- Release 3: Reintroduce excluded modules with resolved dependencies
- Release 4: Add AlarmManagement with BUILD_RTI/GRANTLEE support
- Release 5: Add CentralEffectSimulation and dependent modules
Technical Notes
Dependency Chains
svcAesClient → svcAesCommon → LtsCoordTrans → LtsCoordinate
svcAesCommon → Trajectory → LtsElevation
Build Script Pattern
cmake -G Ninja \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=/opt/guez \
-DBUILD_GROUP1=ON \
-DBUILD_GROUP3=ON \
-DBUILD_GROUP5=ON \
-DBUILD_GROUP6=ON \
..
cmake --build . --target <TARGET_LIST>
Known Warnings (Non-Fatal)
CMake Warning: Path referenced but not found:
- /path/to/excluded/module/include (expected for optional dependencies)
References
- Parent branch:
story/release-2-cleanup - Submodule branch:
story/create-release-two-delivery-25_11_2026 - Build script:
qt-migration-legatus/qt6-after/qt6-migrated-legatus/new_docker_build_release2.sh - Filter script:
filter_release2_targets.py - Validation build logs:
build4_*/directories
Document Version: 1.0
Last Updated: 2026-11-11
Status: Validated and Approved ✅