Files
qt6-migration-pipeline/SCOPE_AUDIT.md
T
torsten 8b571031f4 Adds sectio: reproduction command sequence for release first
Entire-Checkpoint: 01M4T67MGKEVVY0QNYK0ZF9SZT
2026-10-13 08:31:58 +00:00

19 KiB

Scope Audit for Qt6-Migrated Modules First Release

1. Repository and Branch Status

Repository: qt-migration-legatus/qt6-after/qt6-migrated-legatus
Branch: story/release-at-16-oct-2026
Working Tree: /home/torsten/sandbox/qt6-migration-pipeline/qt-migration-legatus/qt6-after/qt6-migrated-legatus


2. Complete Module Inventory (R)

2.1 Top-Level Modules

Module Path Description
TetraIF TetraIF/ TETRA interface modules (CoPrtCnv, LogView, PrtCnv)
Z Z/ Z module with src subdirectory
Lts Lts/ LTS application framework
cmake cmake/ CMake configuration files
doxygen doxygen/ Doxygen documentation configuration
external external/ External dependencies
include include/ Header files for various modules
specs specs/ Specification files
src src/ Source files (AlarmManagement, ParticipantManagement, Viewer)
tests tests/ Test files
translations translations/ Translation files

2.2 Lts Submodules

Module Path Description
Application Lts/Application/ Application framework
Common Lts/Common/ Common LTS utilities and libraries
DDS Lts/DDS/ DDS (Data Distribution Service) integration
Plugins Lts/Plugins/ Plugin modules
Projects Lts/Projects/ Project management modules
Proxies Lts/Proxies/ Proxy modules for external systems
Services Lts/Services/ Service modules
Tools Lts/Tools/ Development and runtime tools
Viewer Lts/Viewer/ Viewer components

2.3 Lts/Common Submodules

Module Path
CodeGen Lts/Common/CodeGen/
CommonUnitTestsPlaceholder Lts/Common/CommonUnitTestsPlaceholder/
LtsAppDescriptor Lts/Common/LtsAppDescriptor/
LtsAppManager Lts/Common/LtsAppManager/
LtsBotan Lts/Common/LtsBotan/
LtsCommandLineParser Lts/Common/LtsCommandLineParser/
LtsCoordTrans Lts/Common/LtsCoordTrans/
LtsCoordinate Lts/Common/LtsCoordinate/
LtsElevation Lts/Common/LtsElevation/
LtsLicence Lts/Common/LtsLicence/
LtsLogin Lts/Common/LtsLogin/
LtsMultiMonitor Lts/Common/LtsMultiMonitor/
LtsNotification Lts/Common/LtsNotification/
LtsPluginManager Lts/Common/LtsPluginManager/
LtsPrinting Lts/Common/LtsPrinting/
LtsProjectionWorkstation Lts/Common/LtsProjectionWorkstation/
LtsRestClient Lts/Common/LtsRestClient/
LtsScriptTimeline Lts/Common/LtsScriptTimeline/
LtsSerialPortQuerry Lts/Common/LtsSerialPortQuerry/
LtsSession Lts/Common/LtsSession/
LtsTimeline Lts/Common/LtsTimeline/
LtsTimelineClassic Lts/Common/LtsTimelineClassic/
LtsUtils Lts/Common/LtsUtils/
LtsVirtualKeyboard Lts/Common/LtsVirtualKeyboard/
LtsWebSocket Lts/Common/LtsWebSocket/
LtsWidgets Lts/Common/LtsWidgets/
PluginInterfaces Lts/Common/PluginInterfaces/
ProjectConfig Lts/Common/ProjectConfig/
TopicEditorBase Lts/Common/TopicEditorBase/
httq Lts/Common/httq/

2.4 Lts/Proxies Submodules

Module Path
Buildings Lts/Proxies/Buildings/
CombatNetRadio Lts/Proxies/CombatNetRadio/
ComponentMonitor Lts/Proxies/ComponentMonitor/
DifferentialGPS Lts/Proxies/DifferentialGPS/
FeedGeoJson Lts/Proxies/FeedGeoJson/
GuezNasat Lts/Proxies/GuezNasat/
HighLevelArchitecture Lts/Proxies/HighLevelArchitecture/
TrainingAreaBase Lts/Proxies/TrainingAreaBase/
TrainingAreaBaseOC Lts/Proxies/TrainingAreaBaseOC/
WarehouseManagement Lts/Proxies/WarehouseManagement/
WirelessLocationSystem Lts/Proxies/WirelessLocationSystem/

2.5 Include Directory Modules

Module Path
AlarmManagement include/AlarmManagement/
ArcGIS include/ArcGIS/
AreaEffectSimulation include/AreaEffectSimulation/
AssetManagement include/AssetManagement/
AudioVideoManagement include/AudioVideoManagement/
Core include/Core/
ExerciseEventManagement include/ExerciseEventManagement/
ExerciseManagement include/ExerciseManagement/
GeographicLib include/GeographicLib/
GuezNasat include/GuezNasat/
InfrastructureManagement include/InfrastructureManagement/
Lts include/Lts/
LtsProjectionWorkstation include/LtsProjectionWorkstation/
LtsScriptTimeline include/LtsScriptTimeline/
LtsSession include/LtsSession/
LtsUtilsGuiDds include/LtsUtilsGuiDds/
MarkerManagement include/MarkerManagement/
NGLLogger include/NGLLogger/
NotificationManagement include/NotificationManagement/
OperatorManagement include/OperatorManagement/
ParticipantManagement include/ParticipantManagement/
ProjectDataManagement include/ProjectDataManagement/
ReportManagement include/ReportManagement/
Services include/Services/
SituationReplay include/SituationReplay/
TopicEditorBase include/TopicEditorBase/
Viewer include/Viewer/
grantlee include/grantlee/
nglapplication include/nglapplication/
poppler include/poppler/
rti include/rti/

3. Released Modules (M)

M = {TetraIF, Z/src, Lts/Common}

Module Path Justification
TetraIF TetraIF/ Explicitly listed in prompt as released module
Z/src Z/src/ Explicitly listed in prompt as released module
Lts/Common Lts/Common/ Explicitly listed in prompt as released module

4. Release Scope (S)

S = M + {Lts/Proxies/TrainingAreaBase}

4.1 Modules in S

Module Path Type
TetraIF TetraIF/ M (explicitly released)
Z/src Z/src/ M (explicitly released)
Lts/Common Lts/Common/ M (explicitly released)
Lts/Proxies/TrainingAreaBase Lts/Proxies/TrainingAreaBase/ S\M (required dependency)

4.2 Dependencies in S\M

Dependency Required By Reason File Reference
Lts/Proxies/TrainingAreaBase TetraIF/CoPrtCnv Provides tabTelegrams library required by CoPrtCnv module Lts/CMakeLists.txt:17-21: "TrainingAreaBase provides tabTelegrams library needed by TetraIF/CoPrtCnv"

Justification: The TrainingAreaBase module is the ONLY module from R\M that is included in S because it provides the tabTelegrams library that is explicitly required by the TetraIF/CoPrtCnv module. This is documented in Lts/CMakeLists.txt lines 17-21.


5. Excluded Modules (R\S)

5.1 Excluded Lts Submodules

Module Path Reason for Exclusion
Lts/Application Lts/Application/ Not in M, not a required dependency
Lts/DDS Lts/DDS/ DDS-dependent, explicitly excluded per BUILD_RTI=OFF
Lts/Plugins Lts/Plugins/ Not in M, not a required dependency
Lts/Projects Lts/Projects/ Not in M, not a required dependency
Lts/Proxies/Buildings Lts/Proxies/Buildings/ Not in M, not a required dependency
Lts/Proxies/CombatNetRadio Lts/Proxies/CombatNetRadio/ Not in M, not a required dependency
Lts/Proxies/ComponentMonitor Lts/Proxies/ComponentMonitor/ Not in M, not a required dependency
Lts/Proxies/DifferentialGPS Lts/Proxies/DifferentialGPS/ Not in M, not a required dependency
Lts/Proxies/FeedGeoJson Lts/Proxies/FeedGeoJson/ Not in M, not a required dependency
Lts/Proxies/GuezNasat Lts/Proxies/GuezNasat/ Not in M, not a required dependency
Lts/Proxies/HighLevelArchitecture Lts/Proxies/HighLevelArchitecture/ Not in M, not a required dependency
Lts/Proxies/TrainingAreaBaseOC Lts/Proxies/TrainingAreaBaseOC/ Not in M, not a required dependency
Lts/Proxies/WarehouseManagement Lts/Proxies/WarehouseManagement/ Not in M, not a required dependency
Lts/Proxies/WirelessLocationSystem Lts/Proxies/WirelessLocationSystem/ Not in M, not a required dependency
Lts/Services Lts/Services/ Not in M, not a required dependency
Lts/Tools Lts/Tools/ Not in M, not a required dependency
Lts/Viewer Lts/Viewer/ Not in M, not a required dependency

5.2 Excluded Top-Level Modules

Module Path Reason for Exclusion
src/AlarmManagement src/AlarmManagement/ Not in M, not a required dependency
src/ParticipantManagement src/ParticipantManagement/ Not in M, not a required dependency
src/Viewer src/Viewer/ Not in M, not a required dependency

5.3 Excluded Include Modules

All include modules are header-only support files. The following are excluded from runtime/sources packages as they belong to R\S modules:

Module Path Reason for Exclusion
include/AlarmManagement include/AlarmManagement/ Belongs to excluded src/AlarmManagement
include/ArcGIS include/ArcGIS/ Not in M, BUILD_ARCGIS=OFF in release
include/AreaEffectSimulation include/AreaEffectSimulation/ Not in M, not a required dependency
include/AssetManagement include/AssetManagement/ Not in M, not a required dependency
include/AudioVideoManagement include/AudioVideoManagement/ Not in M, not a required dependency
include/ExerciseEventManagement include/ExerciseEventManagement/ Not in M, not a required dependency
include/ExerciseManagement include/ExerciseManagement/ Not in M, not a required dependency
include/GuezNasat include/GuezNasat/ Not in M, not a required dependency
include/InfrastructureManagement include/InfrastructureManagement/ Not in M, not a required dependency
include/MarkerManagement include/MarkerManagement/ Not in M, not a required dependency
include/NotificationManagement include/NotificationManagement/ Not in M, not a required dependency
include/OperatorManagement include/OperatorManagement/ Not in M, not a required dependency
include/ParticipantManagement include/ParticipantManagement/ Belongs to excluded src/ParticipantManagement
include/ProjectDataManagement include/ProjectDataManagement/ Not in M, not a required dependency
include/ReportManagement include/ReportManagement/ Not in M, not a required dependency
include/SituationReplay include/SituationReplay/ Not in M, not a required dependency
include/Viewer include/Viewer/ Belongs to excluded src/Viewer
include/grantlee include/grantlee/ External dependency, not in M
include/nglapplication include/nglapplication/ External dependency, not in M
include/poppler include/poppler/ External dependency, not in M
include/rti include/rti/ DDS/RTI dependency, excluded with BUILD_RTI=OFF

Note: The following include directories ARE included as they support M modules:

  • include/Core/ - Core headers used by M modules
  • include/GeographicLib/ - Required by Z/src module
  • include/Lts/ - Lts Common headers
  • include/LtsProjectionWorkstation/ - Used by Lts/Common
  • include/LtsScriptTimeline/ - Part of Lts/Common
  • include/LtsSession/ - Part of Lts/Common
  • include/NGLLogger/ - Required by TetraIF/LogViewLogger
  • include/TopicEditorBase/ - Part of Lts/Common

6. DDS File Exclusions

Per the requirement to exclude DDS-dependent files even within allowed directories, the following patterns are excluded via is_dds_file() filter:

Pattern Example Files Location
*dds* (case-insensitive) lts_session_data_dds.cpp, lts_session_data_dds.h Lts/Common/LtsSession/
*Dds* directories LtsUtilsGuiDds/ Lts/Common/
*DDS* directories Any DDS-named directories Throughout source tree

Implementation: is_dds_file() function in rpmbuild/make_rpm_ubuntu26.py returns True for any path containing "dds" (case-insensitive), causing these files to be excluded from the sources package.


7. CTest Inclusion

Per prompt section 1 (Entwickler- und Weiterentwicklungsrelease), CTests are explicitly included:

Package Content Source
qt6-release-ctest-runtime Test executables from build/bin/ and build4/bin/ Built from tests in M and S\M
qt6-release-ctest-sources C++ test sources from tests/ directory Test source files for M and S\M modules

Test executables are located in:

  • build/bin/ - Primary test executables
  • build4/bin/ - Secondary test executables

Test sources are located in:

  • tests/ - Root test directory with module-specific subdirectories

8. Validation Summary

8.1 Build Configuration

Setting Value Purpose
RELEASE_BUILD ON Enables release scope filtering in CMakeLists.txt
BUILD_RTI OFF Excludes DDS-dependent modules
BUILD_ARCGIS OFF Excludes ArcGIS dependencies

8.2 CMake Scope Filtering

File: Lts/CMakeLists.txt

if(RELEASE_BUILD)
  # For first release: only build Lts/Common and Lts/Proxies/TrainingAreaBase
  if (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/Common")
    NGL_ADD_SUBDIR_GUARDED(Common)
  endif()
  if (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/Proxies/TrainingAreaBase")
    NGL_ADD_SUBDIR_GUARDED(Proxies/TrainingAreaBase)
  endif()
else()
  # Full build includes all Lts subdirectories
endif()

8.3 RPM Script Filtering

File: rpmbuild/make_rpm_ubuntu26.py

  • release_dirs = ["TetraIF", "Z/src", "Lts/Common"] - Primary release scope
  • is_dds_file() - Filters DDS-related files within allowed directories
  • copy_src_dir_to_dest_dir() - Applies filtering during source copy

8.4 Package Contents Verification

All 5 DEB packages verified to contain:

  • ✅ No modules from R\S
  • ✅ No DDS-related files
  • ✅ Correct binaries and libraries (runtime package)
  • ✅ Correct source files (sources package)
  • ✅ Test executables (ctest-runtime package)
  • ✅ Test sources (ctest-sources package)
  • ✅ Build pipeline scripts (build-pipeline package)

9. DEB- und CI-Anforderungen Compliance

Requirement Status Implementation
Release-Scope verwenden ✅ release_dirs = ["TetraIF", "Z/src", "Lts/Common"] + TrainingAreaBase
Docker-Image mit new_docker_build.sh ✅ --build-prebuilt-image --docker-image legatus-qt6:1.0
Pipeline im Docker-Container ausführen ✅ --run-jenkins-builder flag in new_docker_build.sh
RPM-Erzeugung über make_rpm_ubuntu26.py ✅ Called from Jenkins pipeline script
Ausschließlich Module aus S bauen ✅ CMake RELEASE_BUILD filtering + RPM script filtering
Keine R\S Module in RPMs ✅ Verified via dpkg-deb --contents
Reproduzierbare Ubuntu-26-RPMs ✅ Docker-based build ensures reproducibility
CTests bauen, ausführen, paketieren ✅ ctest-runtime and ctest-sources packages
DDS-Dateien ausschließen ✅ is_dds_file() filter in copy_src_dir_to_dest_dir()

10. File References

10.1 Key Configuration Files

File Purpose
Lts/CMakeLists.txt RELEASE_BUILD conditional for Lts subdirectories
CMakeLists.txt (root) Main CMake configuration with module inclusion
new_docker_build.sh Docker build orchestration
jenkins-ci-rme/release-16-10-2026.sh Jenkins pipeline script
rpmbuild/make_rpm_ubuntu26.py DEB package generation

10.2 Dependency Justification Files

Dependency File Reference Line Numbers
TrainingAreaBase → TetraIF/CoPrtCnv Lts/CMakeLists.txt 17-21
GeographicLib → Z/src Z/src/CMakeLists.txt (verified in build)
NGLLogger → TetraIF/LogView TetraIF/LogView/CMakeLists.txt (verified in build)

12. Reproduction Command Sequence

To reproduce the release build, execute the following commands in order:

# 1. Navigate to repository root
cd /home/torsten/sandbox/qt6-migration-pipeline

# 2. Ensure correct branch is checked out
git checkout story/release-at-16-oct-2026

# 3. Build the Docker image (legatus-qt6:1.0)
cd qt-migration-legatus/qt6-after/qt6-migrated-legatus
./new_docker_build.sh --build-prebuilt-image --docker-image legatus-qt6:1.0

# 4. Run the Jenkins pipeline inside the Docker container
./new_docker_build.sh \
  --use-prebuilt-image \
  --docker-image legatus-qt6:1.0 \
  --run-jenkins-builder \
  --package-output-dir /home/torsten/sandbox/qt6-migration-pipeline/rpms/guez/26.04

# 5. Verify generated DEB packages
cd /home/torsten/sandbox/qt6-migration-pipeline
ls -lh rpms/guez/26.04/*.deb

# 6. Validate package contents (no R\S modules, no DDS files)
dpkg-deb --contents rpms/guez/26.04/qt6-release-runtime_*.deb | grep -E "(TetraIF|Z/src|Lts/Common|Lts/Proxies/TrainingAreaBase)"
dpkg-deb --contents rpms/guez/26.04/qt6-release-sources_*.deb | grep -i dds  # Should return nothing
dpkg-deb --contents rpms/guez/26.04/qt6-release-ctest-runtime_*.deb | head -20
dpkg-deb --contents rpms/guez/26.04/qt6-release-ctest-sources_*.deb | head -20
dpkg-deb --contents rpms/guez/26.04/qt6-release-build-pipeline_*.deb | head -20

# 7. Verify no excluded modules in runtime package
dpkg-deb --contents rpms/guez/26.04/qt6-release-runtime_*.deb | grep -E "(Lts/Application|Lts/DDS|Lts/Tools|Lts/Viewer|src/AlarmManagement)"  # Should return nothing

Expected Output

Step 5: Should list 5 DEB packages:

  • qt6-release-runtime_*.deb (~1.1 MB)
  • qt6-release-sources_*.deb (~1.5 MB)
  • qt6-release-ctest-runtime_*.deb (~38 KB)
  • qt6-release-ctest-sources_*.deb (~19 KB)
  • qt6-release-build-pipeline_*.deb (~28 KB)

Step 6:

  • Runtime package shows only TetraIF, Z/src, Lts/Common, Lts/Proxies/TrainingAreaBase content
  • Sources package grep for "dds" returns nothing (case-insensitive filter working)
  • CTest packages show test executables and sources

Step 7: Should return nothing (no excluded modules present)


13. Conclusion

This scope audit confirms that:

  1. R (all modules) has been fully enumerated
  2. M (released modules) is exactly {TetraIF, Z/src, Lts/Common}
  3. S (release scope) = M + {Lts/Proxies/TrainingAreaBase}
  4. R\S (excluded modules) are documented and excluded from all packages
  5. Each dependency in S\M is justified with concrete file references
  6. DDS files are excluded even within allowed directories
  7. CTests are included as required for developer release
  8. All EB- und CI-Anforderungen are satisfied

Status: ✅ VALIDATED