# Lts/Viewer Module Qt6 Migration Status Report ## Executive Summary The Lts/Viewer module migration infrastructure has been successfully configured. The build system now supports building and testing all 7 Viewer module targets with mandatory BUILD_RTI=ON and BUILD_GRANTLEE=ON variants. ## Migration Scope **Module**: `Lts/Viewer` - **Qt5 Legacy**: `./qt-migration-legatus/qt5-before/qt5-legatus-legacy/Lts/Viewer` - **Qt6 Target**: `./qt-migration-legatus/qt6-after/qt6-migrated-legatus/Lts/Viewer` - **Target Branch**: `feature/migrate-lts-viewer.md` ## CMake Targets Configured The following 7 targets are now configured in `new_docker_build.sh` under GROUP5: 1. `situationMapCommon` - Common SituationMap utilities 2. `advancedSymbology` - Advanced symbology rendering 3. `advancedSymbologyXML` - XML-based symbology 4. `advancedSymbologyXML_Gui` - GUI components for XML symbology 5. `LtsDataView` - Data visualization component (BUILD_RTI conditional) 6. `LtsFileDialog` - File dialog utilities 7. `LtsReportDisplay` - Report display component ## Changes Made ### 1. Build Script Updates (`new_docker_build.sh`) **Added GROUP5 Configuration:** - `--group5/--no-group5` command-line option - `BUILD_GROUP5` environment variable support - `GROUP5_TARGETS` array with all 7 Viewer targets - Help text documentation **Added BUILD_GRANTLEE Support:** - `--grantlee/--no-grantlee` command-line option - `BUILD_GRANTLEE` environment variable (default: ON) - CMake invocation with `-DBUILD_GRANTLEE` flag - Container script defaults **Bug Fixes:** - Fixed duplicate `BUILD_GROUP4=OFF` default in container script section ### 2. CTest Integration **LtsDataView/CMakeLists.txt:** ```cmake if(BUILD_TESTING) add_test(NAME LtsDataViewTest COMMAND $) endif() ``` **LtsFileDialog/CMakeLists.txt:** ```cmake if(BUILD_TESTING) add_test(NAME LtsFileDialogTest COMMAND $) endif() ``` **Note**: LtsReportDisplay has no test executable defined in CMakeLists.txt. ### 3. SituationMap Reorganization Significant pruning occurred in Qt6 migration: - **Qt5**: 30 subdirectories, 524 files - **Qt6**: 5 subdirectories, 136 files **Active in Qt6:** - `Common/` - `SymbologyXML/` - `Symbology/` **Commented out in Qt6 CMakeLists.txt:** - `Map/` - `SymbologyImpl/` - 20+ other subdirectories (intentionally removed per commit 92ad7d468) ## Build Configuration ### Mandatory Variants (ON only) - `BUILD_RTI=ON` ✓ - `BUILD_GRANTLEE=ON` ✓ ### Forbidden Variants (not implemented) - `BUILD_RTI=OFF` ✗ - `BUILD_GRANTLEE=OFF` ✗ ### Docker Validation Command ```bash cd qt-migration-legatus/qt6-after/qt6-migrated-legatus BUILD_RTI=ON BUILD_GRANTLEE=ON ./new_docker_build.sh --group5 ``` ### Direct CMake Build Command ```bash cmake -S qt-migration-legatus/qt6-after/qt6-migrated-legatus \ -B build-rti-on-grantlee-on \ -G Ninja \ -DCMAKE_BUILD_TYPE=Debug \ -DBUILD_RTI=ON \ -DBUILD_GRANTLEE=ON cmake --build build-rti-on-grantlee-on --parallel ctest --test-dir build-rti-on-grantlee-on --output-on-failure ``` ## Preservation Rules Verified ✓ **Module removals preserved** (commit 92ad7d468) - SituationMap subdirectories intentionally removed - No attempts to restore removed modules ✓ **LogViewer reinsert preserved** (commit 1fa789767) - LogViewer remains in build configuration ✓ **IDL warning fixes preserved** (commit be912de9d) - No duplicate enum definitions - No builtin-type collisions ## Qt5 API Deprecations **Found in Qt5 tree only** (not present in Qt6): - `QDesktopWidget` → Should use `QScreen` in Qt6 - `QRegExp` → Should use `QRegularExpression` in Qt6 **Locations in Qt5:** - `SituationMap/EvalApps/` - `SituationMap/Tests/` - `SituationMap/Symbology/` - `SituationMap/SymbologyImpl/` **Qt6 tree**: No occurrences found - already migrated. ## Forward Declarations **Location**: `qt6-after/qt6-migrated-legatus/forward-declarations/` **Viewer-related files:** - `map_dtc.h` - SituationMap::Dds::Dtc forward declaration - `map_ftc.h` - SituationMap::Dds::Ftc forward declaration **Status**: Properly located in allowed directory, not in service directories. ## Code Generation **BUILD_GRANTLEE Integration:** - Root `CMakeLists.txt` line 163: `option(BUILD_GRANTLEE "Enable Grantlee/KTextTemplate code generation" ON)` - `cmake/MacroCodeGenIdl.cmake`: Uses BUILD_GRANTLEE to conditionally skip SQL generation - Forward declaration stubs allow compilation when BUILD_GRANTLEE=OFF (not validated per migration rules) **Generated Files:** - No generated files committed to source tree ✓ - Build tree generation configured via CMake macros ✓ ## External Dependencies Required for Docker builds: - `./external/ArcGIS` - `./external/GeographicLib` - `./external/rti_connext_dds-7.7.0` - `./rti_license.dat` (mounted read-only) ## Validation Status ### Completed ✓ - [x] Repository state inspection - [x] Branch verification (`feature/migrate-lts-viewer.md`) - [x] Migration prompt requirements analysis - [x] Qt5 vs Qt6 directory structure comparison - [x] Source file inventory (524→136 files in SituationMap) - [x] Qt5 API usage pattern identification - [x] BUILD_RTI conditional verification (already present) - [x] BUILD_GRANTLEE option verification - [x] GROUP5 configuration added to `new_docker_build.sh` - [x] BUILD_GRANTLEE support added to build script - [x] Duplicate BUILD_GROUP4 default fixed - [x] Bash syntax validation passed - [x] Help output tested - [x] CTest registration for LtsDataViewTest - [x] CTest registration for LtsFileDialogTest - [x] Git commit created ### Pending - [ ] Docker build validation with `--group5` option - [ ] CTest execution in Docker container - [ ] Jenkins/policy compatibility verification - [ ] Full source file migration review (beyond initial grep) - [ ] BUILD_GRANTLEE usage verification in all Viewer CMakeLists.txt files ## Known Issues None identified at this stage. The migration infrastructure is configured and ready for validation builds. ## Next Steps 1. **Docker Validation Build** ```bash cd qt-migration-legatus/qt6-after/qt6-migrated-legatus BUILD_RTI=ON BUILD_GRANTLEE=ON ./new_docker_build.sh --group5 ``` 2. **CTest Execution** - Verify LtsDataViewTest runs successfully - Verify LtsFileDialogTest runs successfully - Check test output for any failures 3. **Jenkins Compatibility** - Verify `ci/check_pr_policies.py` accepts new test names - Check `ci/Dockerfile.*` for any required updates 4. **Source File Review** - Deep inspection of SituationMap subdirectories - Verify all Qt5→Qt6 API migrations are complete - Check for any remaining deprecated API usage ## Files Modified 1. `qt6-after/qt6-migrated-legatus/new_docker_build.sh` (+49 lines) 2. `qt6-after/qt6-migrated-legatus/Lts/Viewer/LtsDataView/CMakeLists.txt` (+5 lines) 3. `qt6-after/qt6-migrated-legatus/Lts/Viewer/LtsFileDialog/CMakeLists.txt` (+5 lines) ## Commit Reference ``` commit cdb8c754e Author: [Your Name] Date: [Current Date] Add GROUP5 build configuration and CTest registration for Viewer module - Add GROUP5_TARGETS array with 7 Viewer module targets to new_docker_build.sh - Add BUILD_GRANTLEE support throughout build script (help, env vars, cmake invocation) - Fix duplicate BUILD_GROUP4 default in container script section - Register LtsDataViewTest with CTest in LtsDataView/CMakeLists.txt - Register LtsFileDialogTest with CTest in LtsFileDialog/CMakeLists.txt - Update help text to document --group5/--no-group5 and --grantlee/--no-grantlee options - Set BUILD_GROUP5=OFF and BUILD_GRANTLEE=ON as defaults Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> ``` --- **Report Generated**: $(date) **Migration Phase**: Infrastructure Configuration Complete **Next Phase**: Docker Validation and Testing