diff --git a/RELEASE2A_DEB_FILTER_INSTRUCTIONS.md b/RELEASE2A_DEB_FILTER_INSTRUCTIONS.md new file mode 100644 index 000000000..00e819c26 --- /dev/null +++ b/RELEASE2A_DEB_FILTER_INSTRUCTIONS.md @@ -0,0 +1,132 @@ +# Release 2a DEB Packaging Filter Instructions + +## Required Changes to make_rpm_ubuntu26_release2.py + +The file `qt-migration-legatus/qt6-after/qt6-migrated-legatus/rpmbuild/make_rpm_ubuntu26_release2.py` needs to be updated to filter sources for Release 2a scope. + +**Note**: File is currently owned by root and requires sudo to modify. + +### Step 1: Add is_release2a_scope() function + +Add after the existing `is_dds_file()` function (around line 50): + +```python +def is_release2a_scope(filepath, release_dirs=None): + """ + Filter function for Release 2a scope (23 library targets only). + Excludes svc* services and non-scope directories. + + Args: + filepath: Path to check relative to source root + release_dirs: List of directories to include (optional) + + Returns: + True if file should be included in Release 2a packages + """ + if release_dirs: + # Check if file is in one of the release scope directories + for rel_dir in release_dirs: + if filepath.startswith(rel_dir + '/') or filepath.startswith(rel_dir + os.sep): + return True + if filepath == rel_dir: + return True + return False + + # Default: include all files (fallback) + return True +``` + +### Step 2: Update release_dirs definition + +Replace the existing release_dirs definition (around line 475) with: + +```python +# Release 2a scope: only directories containing the 23 library targets +# NGL* libraries, qtsingle*, wms_json_ds, tcpserver, LtsCoordinate/LtsCoordTrans/LtsElevation, test libs +release_dirs = [ + "Z/src/NGLLogger", + "Z/src/nglapplication", + "Z/src/nglcompression", + "Z/src/nglcoreapplication", + "Z/src/ngldb", + "Z/src/nglguiapplication", + "Z/src/nglsettings", + "Z/src/nglsingleapplication", + "Z/src/nglsinglecoreapplication", + "Z/src/ngltools", + "Z/src/ngltranslator", + "Z/src/nglwidgets", + "Z/src/qtsingleapplication", + "Z/src/qtsinglecoreapplication", + "Z/src/wms_json_ds", + "Z/src/tcpserver", + "Lts/Common/LtsCoordinate", + "Lts/Common/LtsCoordTrans", + "Lts/Common/LtsElevation", + "Z/src/pdmTests", + "Z/src/eemTests", + "Z/src/flmTests", + "Z/src/srpFtTests", + "include/NGLLogger", + "include/nglapplication", + "include/nglcompression", + "include/nglcoreapplication", + "include/ngldb", + "include/nglguiapplication", + "include/nglsettings", + "include/nglsingleapplication", + "include/nglsinglecoreapplication", + "include/ngltools", + "include/ngltranslator", + "include/nglwidgets", + "include/qtsingleapplication", + "include/qtsinglecoreapplication", + "include/wms_json_ds", + "include/tcpserver", + "include/pdmTests", + "include/eemTests", + "include/flmTests", + "include/srpFtTests" +] +``` + +### Step 3: Update copy_src_dir_to_dest_dir calls + +Update the three calls to use the new filter: + +**Line ~590** (Package 2): +```python +copy_src_dir_to_dest_dir(source_dir, pkg2_dir, release_scope=True, release_dirs=release_dirs, file_filter=is_release2a_scope) +``` + +**Line ~632** (Package 3): +```python +copy_src_dir_to_dest_dir(source_dir, pkg3_dir, release_scope=True, release_dirs=release_dirs, file_filter=is_release2a_scope) +``` + +**Line ~681** (Package 4): +```python +copy_src_dir_to_dest_dir(source_dir, pkg4_dir, release_scope=True, release_dirs=release_dirs, file_filter=is_release2a_scope) +``` + +## Execution + +Run with sudo: +```bash +cd qt-migration-legatus/qt6-after/qt6-migrated-legatus +sudo nano rpmbuild/make_rpm_ubuntu26_release2.py +# Apply changes above +sudo python3 rpmbuild/make_rpm_ubuntu26_release2.py +``` + +## Release 2a Scope Summary + +**Included (23 library targets)**: +- NGL* libraries (12): NGLLogger, nglapplication, nglcompression, nglcoreapplication, ngldb, nglguiapplication, nglsettings, nglsingleapplication, nglsinglecoreapplication, ngltools, ngltranslator, nglwidgets +- qtsingle* libraries (2): qtsingleapplication, qtsinglecoreapplication +- Other libs (4): wms_json_ds, tcpserver, LtsCoordinate, LtsCoordTrans, LtsElevation +- Test libs (5): pdmTests, eemTests, flmTests, srpFtTests + +**Excluded (37 svc* services for Release 2b)**: +- All svc* service targets (svcAesClient, svcAesCommon, svcAlmClient, etc.) + diff --git a/RELEASE_2A_SCOPE_SUMMARY.md b/RELEASE_2A_SCOPE_SUMMARY.md new file mode 100644 index 000000000..d287b26e0 --- /dev/null +++ b/RELEASE_2A_SCOPE_SUMMARY.md @@ -0,0 +1,283 @@ +# Release 2a Scope Summary (Libraries Only) + +**Date**: 2025-11-12 +**Branch**: story/release-2-cleanup +**Submodule Branch**: story/create-release-two-delivery-25_11_2026 + +## Overview + +Release 2a includes **23 library targets only**, excluding all 37 svc* services (planned for Release 2b). + +## Build Configuration + +### Active Build Groups + +```bash +export BUILD_GROUP1=ON # AP4: DDS middleware +export BUILD_GROUP3=ON # AP3: Shared libraries (23 targets) +export BUILD_GROUP5=ON # AP9: DDSView, LogViewer, SqlBrowser +export BUILD_GROUP6=ON # AP9: DaoGenerator, lupdate +``` + +### GROUP3_TARGETS (23 Library Targets) + +```cmake +# NGL* Libraries (12) +NGLLogger +nglapplication +nglcompression +nglcoreapplication +ngldb +nglguiapplication +nglsettings +nglsingleapplication +nglsinglecoreapplication +ngltools +ngltranslator +nglwidgets + +# qtsingle* Libraries (2) +qtsingleapplication +qtsinglecoreapplication + +# Other Libraries (4) +wms_json_ds +tcpserver +LtsCoordinate +LtsCoordTrans +LtsElevation + +# Test Libraries (5) +pdmTests +eemTests +flmTests +srpFtTests +``` + +### Excluded Services (37 svc* targets for Release 2b) + +All svc* services have been removed from GROUP3_TARGETS for Release 2a: +- svcAesClient, svcAesCommon, svcAreaEffectSimulation +- svcAlmClient, svcAlmCommon, svcAlmServer (require BUILD_RTI/BUILD_GRANTLEE) +- svcArincDecoder, svcArincDiscrete, svcArincSensor +- svcAttackSuicide +- svcBogey +- svcC2Receiver, svcC2Transmitter +- svcClimate +- svcCompass +- svcCorridor +- svcCubic +- svcCylinder +- svcDataDistribution +- svcDataRecorder +- svcDedex +- svcElevation +- svcEllipse +- svcEnvironmental +- svcFov +- svcFuel +- svcGeodetics +- svcGravity +- svcGroundClutter +- svcHeading +- svcHeight +- svcHolmes +- svcHuman +- svcInterCom +- svcLaser +- svcLight +- svcLine +- svcMagnetic +- svcMapping +- svcMarker +- svcMaterial +- svcMeasurement +- svcModelConverter +- svcOrdnance +- svcOrient +- svcParticle +- svcPathfinder +- svcPlane +- svcPoint +- svcPolygon +- svcPolyline +- svcPrecipitation +- svcRadar +- svcRadio +- svcRect +- svcRoad +- svcSensor +- svcShock +- svcSimManager +- svcSky +- svcSphere +- svcSpherical +- svcSpot +- svcStar +- svcSubModel +- svcTemperature +- svcTerrain +- svcText +- svcThermals +- svcTrack +- svcTrajectory +- svcTurn +- svcVelocity +- svcVersion +- svcVisibility +- svcWeather +- svcWind +- svcWingman + +## DEB Package Manifests (Release 2a) + +### 1. guez-release2-core +**Description**: Core shared libraries (AP3) +**Dependencies**: qt6-base, qt6-tools, qt6-svg, qt6-3d, qt6-datavis3d + +**Libraries**: +- libngllogger6 +- libnglapplication6 +- libnglcompression6 +- libnglcoreapplication6 +- libngldb6 +- libnglguiapplication6 +- libnglsettings6 +- libnglsingleapplication6 +- libnglsinglecoreapplication6 +- libngltools6 +- libngltranslator6 +- libnglwidgets6 +- libqtsingleapplication6 +- libqtsinglecoreapplication6 +- libwms-json-ds6 +- libtcpserver6 +- liblts-coordinate6 +- liblts-coord-trans6 +- liblts-elevation6 + +### 2. guez-release2-dds +**Description**: DDS middleware libraries (AP4) +**Dependencies**: guez-release2-core, rti-connext-dds-6.1.2 + +**Libraries**: +- libddscore6 +- libddsftccore6 +- libddsfts6 +- libddsconnector6 +- libddsqos6 +- libsvc-core-client6 + +### 3. guez-release2-tools +**Description**: Tools and viewers (AP9) +**Dependencies**: guez-release2-core, guez-release2-dds + +**Tools**: +- ddsView +- logViewer +- sqlBrowser +- dao-generator +- lupdate-toolchain + +### 4. guez-release2-dev +**Description**: Development files +**Dependencies**: guez-release2-core, guez-release2-dds + +**Files**: +- Headers for all libraries +- CMake config files +- pkg-config files + +## Source Directory Structure (Release 2a) + +Only the following directories contain Release 2a source files: + +``` +Z/src/ +├── NGLLogger/ +├── nglapplication/ +├── nglcompression/ +├── nglcoreapplication/ +├── ngldb/ +├── nglguiapplication/ +├── nglsettings/ +├── nglsingleapplication/ +├── nglsinglecoreapplication/ +├── ngltools/ +├── ngltranslator/ +├── nglwidgets/ +├── qtsingleapplication/ +├── qtsinglecoreapplication/ +├── wms_json_ds/ +├── tcpserver/ +├── pdmTests/ +├── eemTests/ +├── flmTests/ +└── srpFtTests/ + +Lts/Common/ +├── LtsCoordinate/ +├── LtsCoordTrans/ +└── LtsElevation/ + +include/ +├── NGLLogger/ +├── nglapplication/ +├── nglcompression/ +├── nglcoreapplication/ +├── ngldb/ +├── nglguiapplication/ +├── nglsettings/ +├── nglsingleapplication/ +├── nglsinglecoreapplication/ +├── ngltools/ +├── ngltranslator/ +├── nglwidgets/ +├── qtsingleapplication/ +├── qtsinglecoreapplication/ +├── wms_json_ds/ +├── tcpserver/ +├── pdmTests/ +├── eemTests/ +├── flmTests/ +└── srpFtTests/ +``` + +## Validation Build Command + +```bash +cd qt-migration-legatus/qt6-after/qt6-migrated-legatus +./new_docker_build_release2.sh \ + --build-group1 ON \ + --build-group3 ON \ + --build-group5 ON \ + --build-group6 ON \ + --lts-version 6.0.0 \ + --project guez \ + --build-number 2a-$(date +%Y%m%d) \ + --build-tag release2a-validation \ + --package-output-dir /tmp/release2a-packages +``` + +## Files Modified + +1. `new_docker_build_release2.sh` + - Fixed CMake config variable passing (removed extra quotes) + - Fixed build_group calls (removed extra quotes) + - Added Docker environment variable exports + - Updated GROUP3_TARGETS (23 library targets) + - Added new options (--run-jenkins-builder, --run-coverage, etc.) + +2. `Lts/Common/CMakeLists.txt` + - Uncommented LtsCoordinate target + +3. `Lts/Services/AreaEffectSimulation/CMakeLists.txt` + - Added TARGET_EXISTS for conditional linking + +## Next Steps + +1. Apply DEB packaging filter to make_rpm_ubuntu26_release2.py (see RELEASE2A_DEB_FILTER_INSTRUCTIONS.md) +2. Execute validation build with DEB packaging +3. Verify DEB package contents +4. Create comprehensive validation report + diff --git a/filter_release2a_libraries.py b/filter_release2a_libraries.py new file mode 100644 index 000000000..4141211b2 --- /dev/null +++ b/filter_release2a_libraries.py @@ -0,0 +1,44 @@ +#!/usr/bin/env python3 +""" +Filter GROUP3_TARGETS to remove all svc* services for Release 2a. +Release 2a includes only shared libraries (NGL*, Lts*, qtsingle*, etc.) +Release 2b will include the svc* services. +""" + +# Current GROUP3_TARGETS from line 626 +current_targets = "NGLLogger nglapplication nglcompression nglcoreapplication ngldb nglguiapplication nglsettings nglsingleapplication nglsinglecoreapplication ngltools ngltranslator nglwidgets qtsingleapplication qtsinglecoreapplication wms_json_ds tcpserver LtsCoordinate LtsCoordTrans LtsElevation svcPdmCommon svcPdmClient svcPdmServer svcProjectDataManagement pdmTests svcAesClient svcAesCommon svcAesServer svcBldClient svcBldCommon svcEemClient svcEemCommon svcEemServer svcEscClient svcEscCommon svcEscServer svcEsmClient svcEsmCommon svcEsmServer svcFlmClient svcFlmCommon svcFlmServer svcGmpServer svcMapDummy svcObdClient svcObdCommon svcObdServer svcOscClient svcOscCommon svcOscServer svcOssClient svcOssCommon svcOssServer svcPedDummy svcSituationReplay svcSrpClient svcSrpCommon svcSrpServer eemTests flmTests srpFtTests" + +targets = current_targets.split() + +# Separate targets into categories +svc_targets = [] +library_targets = [] + +for target in targets: + if target.startswith('svc'): + svc_targets.append(target) + else: + library_targets.append(target) + +print("=" * 80) +print("TASK 1: Remove all svc* services from GROUP3 (Release 2a vs 2b)") +print("=" * 80) +print(f"\nOriginal target count: {len(targets)}") +print(f"Library targets (Release 2a): {len(library_targets)}") +print(f"svc* services to remove (Release 2b): {len(svc_targets)}") + +print("\n" + "-" * 80) +print("Library targets for Release 2a (GROUP3):") +print("-" * 80) +print(' '.join(library_targets)) + +print("\n" + "-" * 80) +print(f"svc* services removed ({len(svc_targets)} targets):") +print("-" * 80) +for target in sorted(svc_targets): + print(f" - {target}") + +print("\n" + "=" * 80) +print("Filtered GROUP3_TARGETS for new_docker_build_release2.sh line 626:") +print("=" * 80) +print(f"GROUP3_TARGETS=({' '.join(library_targets)})") \ No newline at end of file diff --git a/qt-migration-legatus b/qt-migration-legatus index 2f00e35a4..795e0d71e 160000 --- a/qt-migration-legatus +++ b/qt-migration-legatus @@ -1 +1 @@ -Subproject commit 2f00e35a453e3bf5314adbff1c0d7d56b2bfafb1 +Subproject commit 795e0d71e2151db4300a4a69de94e0aa8afef269