432 lines
13 KiB
Markdown
432 lines
13 KiB
Markdown
# 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
|
|
```bash
|
|
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
|
|
```bash
|
|
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 value `ON`)
|
|
- **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
|
|
- `situationMapElevationMap` and `Trajectory` now use `TARGET_EXISTS` generator
|
|
- 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 `#include` dependencies 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
|
|
1. **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
|
|
|
|
2. **qt-migration-legatus/qt6-after/qt6-migrated-legatus/Lts/Common/CMakeLists.txt**
|
|
- Uncommented `ADD_SUBDIRECTORY(LtsCoordinate)` to enable target registration
|
|
|
|
3. **qt-migration-legatus/qt6-after/qt6-migrated-legatus/Lts/Services/AreaEffectSimulation/CMakeLists.txt**
|
|
- Lines 121-122: Used `TARGET_EXISTS` for situationMapElevationMap and Trajectory
|
|
|
|
### 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/`:
|
|
|
|
```bash
|
|
# 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:
|
|
|
|
```bash
|
|
# 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:
|
|
|
|
```bash
|
|
# 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
|
|
- [x] 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
|
|
```bash
|
|
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 ✅ |