- Update audit with script-based filtering approach (not physical file removal) - rpmbuild/make_rpm_ubuntu26.py: --release_scope flag filters at package build time - jenkins-ci-rme/jenkins_builder_ubuntu26.sh: passes --release_scope to builder - Preserves full source tree while ensuring release packages contain only M+S modules Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Entire-Checkpoint: 01M4GBB0H0NNHT4VSFYFNH08KF
8.1 KiB
Qt6 Release Scope Audit
Overview
This document defines the scope for the first Qt6-migrated modules release (M) and its required dependencies (S).
Module Sets
Release Modules (M)
These modules are explicitly included in the release:
-
TetraIF/ - Complete TetraIF module
- CoPrtCnv/
- LogView/
- PrtCnv/
- CMakeLists.txt
-
Z/ - Complete Z module
- src/ngldb/
- src/tcpserver/
- src/QtSingleApplication/
- src/WMS_Interface/
- src/nglapplication/
- src/nglcompression/
- src/nglsettings/
- src/ngltranslator/
- src/ngltools/
- src/nglwidgets/
- src/NGLLogger/
- CMakeLists.txt
-
Lts/Common/ - Common utilities submodule
- CodeGen/
- LtsUtils/
- PluginInterfaces/
- LtsBasicTypes/
- LtsCoordinateTransformation/
- LtsDataModelInterfaces/
- LtsGeometry/
- LtsMapSymbol/
- LtsMath/
- LtsNetwork/
- LtsPluginManager/
- LtsPositioning/
- LtsProjection/
- LtsSerialization/
- LtsServiceInterfaces/
- LtsSignalHandling/
- LtsSqliteWrapper/
- LtsStandardPlugin/
- LtsStorage/
- LtsTestHelpers/
- LtsThreading/
- LtsTime/
- LtsUnitTests/
- LtsXml/
- MockCoordTrans/
- CMakeLists.txt
Note: LtsElevation is explicitly excluded (depends on Lts/Viewer/SituationMap outside release scope).
Required Dependencies (S \ M)
These directories are required to build and test M:
-
cmake/ - CMake build modules
- Required by: All modules (NGL_ADD_SUBDIR_GUARDED, find_package modules)
- Reference:
CMakeLists.txt:40-60(NGL_ADD_SUBDIR_GUARDED function)
-
include/ - Header files
- Required by: All modules for public API headers
- Reference:
CMakeLists.txt:1003-1008(TetraIF include directories)
-
src/ - Shared source files
- Required by: Multiple modules for shared utilities
- Reference:
CMakeLists.txt:975-987(RELEASE_BUILD subdirectories)
-
tests/ - Test files for release modules
- Required by: CTest validation
- Reference:
CMakeLists.txt:975-987(tests included in RELEASE_BUILD)
-
specs/ - Specification files
- Required by: Build configuration
- Reference:
CMakeLists.txt:975-987(specs included in RELEASE_BUILD)
-
translations/ - Translation files
- Required by: Qt6 translation system
- Reference:
CMakeLists.txt:975-987(translations included in RELEASE_BUILD)
-
external/ - External dependencies
- Required by: Third-party libraries
- Reference:
CMakeLists.txt:975-987(external included in RELEASE_BUILD)
Complete Module Set (R)
All modules in qt6-migrated-legatus:
Included in Release (S = M ∪ (S \ M)):
- TetraIF/
- Z/
- Lts/Common/
- cmake/
- include/
- src/
- tests/
- specs/
- translations/
- external/
Excluded from Release (R \ S):
- Lts/Tools/
- Lts/Application/
- Lts/DDS/
- Lts/Services/
- Lts/Proxies/
- Lts/Plugins/ (except ProjectDataManagement for generated headers)
- Lts/Viewer/
- Lts/Projects/
- Lts/LtsElevation/ (excluded in Lts/Common/CMakeLists.txt)
CMake Configuration
RELEASE_BUILD Option
# CMakeLists.txt:975-987
option(RELEASE_BUILD "Build only release modules" OFF)
if(RELEASE_BUILD)
add_subdirectory(src)
add_subdirectory(TetraIF)
add_subdirectory(Z)
add_subdirectory(Lts/Common)
add_subdirectory(tests)
add_subdirectory(specs)
add_subdirectory(translations)
add_subdirectory(external)
add_subdirectory(cmake)
add_subdirectory(include)
else()
# Full development build with all modules
add_subdirectory(Lts)
# ... other development modules
endif()
BUILD_RTI Option
# Controls RTI Connext DDS dependent modules
option(BUILD_RTI "Build RTI Connext DDS dependent modules" OFF)
# Must be OFF for release (RTI not in release scope)
NGL_ADD_SUBDIR_GUARDED Function
# CMakeLists.txt:40-60
function(NGL_ADD_SUBDIR_GUARDED dir)
# Checks if subdirectory exists before adding
# Used with MIGRATE_MODULE variable for conditional inclusion
endfunction()
Special Case: TetraIF
# CMakeLists.txt:1003-1008
# TetraIF requires Lts/Plugins/ProjectDataManagement for generated headers
# This is a build-time dependency only, not included in release artifacts
Build Targets
RELEASE_GROUP3_TARGETS (from new_docker_build.sh)
RELEASE_GROUP3_TARGETS=(
"NGLLogger"
"nglapplication"
"ngldb"
"ngltools"
"nglwidgets"
"LtsCoordTrans"
"LtsDataModelInterfaces"
"LtsGeometry"
"LtsMapSymbol"
"LtsMath"
"LtsNetwork"
"LtsPluginManager"
"LtsPositioning"
"LtsProjection"
"LtsSerialization"
"LtsServiceInterfaces"
"LtsSignalHandling"
"LtsSqliteWrapper"
"LtsStandardPlugin"
"LtsStorage"
"LtsTestHelpers"
"LtsThreading"
"LtsTime"
"LtsUnitTests"
"LtsXml"
"CoPrtCnv"
"LogView"
"PrtCnv"
# ... 20+ targets total
)
Excluded Targets
nglcomp_test- Compression "Unknown error" in Qt6 (requires investigation)grantlee_parser_smoke- Requires ktexttemplate_defaulttags plugin (not in release scope)
File References
CMakeLists.txt
- Lines 40-60: NGL_ADD_SUBDIR_GUARDED function
- Lines 975-987: RELEASE_BUILD option and conditional subdirectory inclusion
- Lines 1003-1008: TetraIF special-case for ProjectDataManagement
Lts/CMakeLists.txt
- Lines 14-25: RELEASE_BUILD conditional excluding non-release submodules
Lts/Common/CMakeLists.txt
- Lines 15-18: LtsElevation exclusion (depends on Lts/Viewer/SituationMap)
Z/src/CMakeLists.txt
- Subdirectory list: ngldb, tcpserver, QtSingleApplication, WMS_Interface, nglapplication, nglcompression, nglsettings, ngltranslator, ngltools, nglwidgets, NGLLogger
TetraIF/LogView/CMakeLists.txt
- Links to: Qt6::Core, Qt6::Gui, Qt6::Network, CoPrtCnv, nglwidgets, NGLLogger, nglapplication, ngltools
new_docker_build.sh
- Line 740:
RELEASE_BUILD="${RELEASE_BUILD:-ON}" - Line 1260: Conditional target selection based on RELEASE_BUILD
- Line 1435: CMake configuration passes RELEASE_BUILD flag
- Line 1594: RELEASE_BUILD exported to container
Validation Requirements
- CMake Configuration: Must configure with
-DRELEASE_BUILD=ON -DBUILD_RTI=OFF - Build: Must complete without errors for all targets in RELEASE_GROUP3_TARGETS
- Tests: CTest must pass for all release module tests
- Docker Build: Must use
legatus-qt6:1.0image with--build-prebuilt-image - RPM/DEB Packaging: Must only include release module artifacts
Packaging Strategy
Script-based filtering (not physical file removal):
The release scope is enforced at package build time, not by removing files from repositories. This approach:
- Preserves full source history and development context in repositories
- Allows the same source tree to build both release and development packages
- Uses filtering logic in the package builder to include only release scope files
Implementation
rpmbuild/make_rpm_ubuntu26.py:
- Added
--release_scopeflag to filter source files during DEB package creation copy_src_dir_to_dest_dir()function filters to release scope paths:- TetraIF/
- Z/src/
- Lts/Common/
- CMakeLists.txt, cmake/, tests/, specs/, include/, translations/, external/
- Supporting files: .gitignore, .envrc, doxygen/, src/
jenkins-ci-rme/jenkins_builder_ubuntu26.sh:
- Passes
--release_scopeflag to make_rpm_ubuntu26.py - Works in conjunction with
-DRELEASE_BUILD=ONCMake flag
Benefits:
- No file deletion required in repositories
- Reversible and auditable through script changes
- Single source tree supports multiple build configurations
- Clear separation between source control and release artifacts
Commit Policy
All commits must:
- Be signed with SSH key (gpg.format=ssh, gpg.program=gpg)
- Include Co-authored-by trailer:
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> - Follow conventional commit format
- Be made on branch
story/release-at-16-oct-2026
Repositories
- qt-migration-legatus - Main source code
- jenkins-ci-rme - CI/CD pipeline configuration
- rpmbuild - Package build scripts
All repositories must be on branch story/release-at-16-oct-2026.