Qt6 Migration CI / migrate (push) Waiting to run
Entire-Checkpoint: 01M36NBG4QDQK8MNQBYXJ5P8JR
246 lines
7.7 KiB
Markdown
246 lines
7.7 KiB
Markdown
# 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 $<TARGET_FILE:LtsDataViewTest>)
|
|
endif()
|
|
```
|
|
|
|
**LtsFileDialog/CMakeLists.txt:**
|
|
```cmake
|
|
if(BUILD_TESTING)
|
|
add_test(NAME LtsFileDialogTest COMMAND $<TARGET_FILE:LtsFileDialogTest>)
|
|
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 |