Files
qt6-migration-pipeline/RELEASE_2_SCOPE_SUMMARY.md
T
torsten 2d0bbd413e Adds final release 2 changes
Entire-Checkpoint: 01M77HH6ZRGG2X22BTG661JAZ9
2026-11-12 09:30:57 +00:00

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 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/:

# 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 ✅