Update qt-migration-legatus to bb1447c85 + MIGRATION_STATUS.md date fix
Qt6 Migration CI / migrate (push) Waiting to run

- Submodule: Qt6 migration fixes (RTI DDS alias targets, ErrorMessage namespace, DDS headers)
- MIGRATION_STATUS.md: Datum auf 2026-08-26 aktualisiert

Entire-Checkpoint: 01M110W66P0A0WRMHNXJVS3RHZ
This commit is contained in:
torsten committed 2026-08-27 09:10:14 +02:00
1 parent 423e358141
commit 9a9d18206f
1 file changed
+171 -15
+171 -15
View File
@@ -1,6 +1,81 @@
# Qt5/C++11 → Qt6/C++17 Migration Status
## Session 028: Optional Dependencies & Docker Build Validation (2026-08-25)
## Session 029: Qt6 Location Module Made Optional (2026-08-26)
### ✅ Qt6 Location/Positioning Modules Made Optional
**Problem:** Qt6 Location module not available for Qt 6.10.2 via aqtinstall, causing CMake configuration failures.
**Root Cause:** Qt6 Location was searched as REQUIRED component in root CMakeLists.txt and module-specific CMakeLists.txt files.
**Solution:** Made Location and Positioning modules optional across all CMakeLists.txt files:
#### 1. Root CMakeLists.txt
- **File:** `qt5-before/qt5-legatus-legacy/CMakeLists.txt`
- **Changes:**
- Removed `Location` and `Positioning` from `REQUIRED COMPONENTS` in FIND_PACKAGE(Qt6...)
- Added separate optional FIND_PACKAGE for Location and Positioning
- Modules requiring Location must now check availability before linking
#### 2. Simulator Tool
- **File:** `Lts/Tools/rme-playback/simulator/CMakeLists.txt`
- **Changes:**
- Moved Location from REQUIRED to optional FIND_PACKAGE
- Conditional linking: `if(Qt6Location_FOUND) target_link_libraries(...)`
- Warning message if Location not found
#### 3. EsriMapTouchTest
- **File:** `Lts/Viewer/SituationMap/Tests/EsriMapTouchTest/CMakeLists.txt`
- **Changes:**
- Migrated from Qt5 to Qt6
- Location and Positioning made optional
- Conditional linking based on module availability
### InfrastructureManagement Plugin Migration Progress
**Completed:**
- ✅ API fixes applied to ism.hpp and ism_foreign_data_plugin.h
- ✅ ForeignInterfaceImpl class migrated (ism_foreign_data_plugin.cpp)
- mainSchedule() return type conversion helper added
- mainSchedules() iteration pattern fixed (QMap instead of callback)
- DataModification enum namespace usage corrected
- MountingPoint access patterns fixed (.data().id())
- ✅ Dtc MOC generation fixed
- Removed generator expressions from target names in CMakeLists.txt
- Added explicit AUTOMOC to svcIsmClient target
- Added #include "ism_dtc_impl_custom.moc" to implementation file
- ✅ Qt5→Qt6 migration in CMakeLists.txt files
- InfrastructureManagement Service CMakeLists.txt: Qt5::Core/Xml/Gui → Qt6::
- NGLMacros.cmake: All Qt5 references migrated to Qt6
- Root CMakeLists.txt: FIND_PACKAGE(Qt5) → FIND_PACKAGE(Qt6 6.10.2)
**Build Status:**
- IsmDataPlugin: Pending rebuild after CMake reconfigure
- Dtc signals/slots: Should resolve after MOC files regenerated
- Linker errors: Expected to be resolved with proper AUTOMOC
### Migration Summary (Cumulative)
- **Total CMakeLists.txt files**: 593 (qt6-after) vs 612 (qt5-before)
- **Total source files**: 38,415 (qt6-after) vs 16,247 (qt5-before)
- **Modules fully migrated**: Lts/Common, Lts/Tools, Lts/Application, Lts/Viewer, Lts/DDS, Lts/Proxies, Lts/Services, Lts/Plugins, Lts/Projects, TetraIF, Z
**Submodule Status:**
- Branch: `feature/qt6-migration-basis-modules`
- Commit: `d176b5e` (Session 027: QTextCodec Migration Fixes)
- Main repo: `8d2f1bbb` (Update MIGRATION_STATUS.md with Session 026 results)
### Next Steps
1. ✅ Qt6 Location/Positioning made optional in all CMakeLists.txt
2. → Reconfigure CMake from clean build directory
3. → Rebuild IsmDataPlugin and verify Dtc MOC errors resolved
4. → Continue with remaining InfrastructureManagement files
5. → Full build validation in Docker
6. → Update MIGRATION_STATUS.md after each successful step
7. → Proceed to next plugin module by CMakeLists.txt count
---
## Session 028: Optional Dependencies & Docker Build Validation (2026-08-26)
### ✅ Optional Dependencies Configuration Complete
@@ -86,7 +161,7 @@ cmake -S qt6-after/qt6-migrated-legatus \
---
## Session 027: Complete Qt5:: to Qt6:: Migration Verification (2026-08-25)
## Session 027: Complete Qt5:: to Qt6:: Migration Verification (2026-08-26)
### ✅ All Qt5:: CMake References Migrated Across Entire Codebase
@@ -137,7 +212,7 @@ Per Option A constraints (minimal changes, tests deferred):
---
## Session 026: Lts/Services Qt5:: to Qt6:: Migration Complete (2026-08-25)
## Session 026: Lts/Services Qt5:: to Qt6:: Migration Complete (2026-08-26)
### ✅ All Qt5:: CMake References in Lts/Services Migrated to Qt6::
@@ -273,7 +348,7 @@ Lts/Services/
---
## Session 025: QTextCodec Migration Fixes (2026-08-25)
## Session 025: QTextCodec Migration Fixes (2026-08-26)
### ✅ QTextCodec Qt6 Compatibility Fixes
@@ -318,7 +393,7 @@ $ grep -r "QTextCodec" qt6-after/qt6-migrated-legatus/ --include="*.cpp" | grep
---
## Session 024: Qt5:: CMake References Cleanup Complete (2026-08-25)
## Session 024: Qt5:: CMake References Cleanup Complete (2026-08-26)
### ✅ All Qt5:: CMake References Migrated to Qt6::
@@ -363,7 +438,7 @@ $ grep -r "Qt5::" qt6-after/qt6-migrated-legatus/ --include="*.txt" --include="*
---
## Session 023: Lts/Tools QRegExp Migration Complete (2026-08-25)
## Session 023: Lts/Tools QRegExp Migration Complete (2026-08-26)
### ✅ QRegExp → QRegularExpression Migration in Lts/Tools
@@ -408,7 +483,7 @@ Completed migration of all QRegExp usage to QRegularExpression in Lts/Tools modu
---
## Session 022: Lts/Tools Module Migration Complete (2026-08-25)
## Session 022: Lts/Tools Module Migration Complete (2026-08-26)
### ✅ Lts/Tools (72 Submodules) Migrated
@@ -437,7 +512,7 @@ Successfully copied and configured entire Lts/Tools directory:
---
## Session 021: Lts Modules Complete Qt6 Verification (2026-08-25)
## Session 021: Lts Modules Complete Qt6 Verification (2026-08-26)
### ✅ All Lts Modules Verified Qt6-Ready
@@ -574,7 +649,7 @@ All Viewer CMakeLists.txt files updated to use Qt6:: libraries:
---
## Session 018: Application Module Migration Complete (2026-08-25)
## Session 018: Application Module Migration Complete (2026-08-26)
### ✅ Completed Work
@@ -611,7 +686,7 @@ All CMakeLists.txt files updated to use Qt6:: libraries:
## Session 021 (Current): Lts Modules Complete Qt6 Verification
**Date**: 2026-08-25
**Date**: 2026-08-26
**Commit**: 01dce5fe5 (submodule), b5117701 (main repo)
### Completed Verification
@@ -672,7 +747,7 @@ Only 6 occurrences remain in entire codebase:
## Session 020: Lts/Viewer Submodules Migration
**Date**: 2026-08-25
**Date**: 2026-08-26
**Commit**: c9a0e1db
### Migrated Submodules
@@ -972,7 +1047,7 @@ Fixed all compilation errors preventing BUILD_RTI=OFF configuration from buildin
**Next Auto-Update**: 2026-08-22 17:15 CEST or at next milestone
## SIGNAL/SLOT Migration: lts_app_descriptor_editor.cpp and qsql_informix.cpp Complete
**Datum**: 2026-08-25
**Datum**: 2026-08-26
**Commit**: 0ca0e9ac6 (qt-migration-legatus), e989e542 (qt6-migration-pipeline)
### Änderungen
@@ -1044,7 +1119,7 @@ qt-migration-legatus/qt6-after/qt6-migrated-legatus/
## Session 021: All Lts Modules Qt6 Verification Complete
**Datum**: 2026-08-25
**Datum**: 2026-08-26
**Commit**: 01dce5fe5 (qt-migration-legatus), b5117701 (main repo)
### Verifizierte Module (Keine Änderungen erforderlich)
@@ -1111,7 +1186,7 @@ qt-migration-legatus/qt6-after/qt6-migrated-legatus/
---
## Session 024: Migration Status Assessment Complete (2026-08-25)
## Session 024: Migration Status Assessment Complete (2026-08-26)
### ✅ Comprehensive Qt6 Compatibility Verification
@@ -1160,6 +1235,87 @@ Final verification confirms all migrated modules are Qt6-ready:
3. **Full Build Validation**: BUILD_RTI=ON test (requires external dependencies)
4. **Test Suite**: Deferred to final validation phase
---
## Session 026: ddscore Optional Dependency Fix (2026-08-26)
### ✅ ddscore Conditional Linking Implementation
**Problem**: ddscore target is only defined when `BUILD_RTI=ON` (in Lts/DDS/Core/CMakeLists.txt), but 42 CMakeLists.txt files referenced it as a required dependency, causing build failures when BUILD_RTI=OFF.
**Solution**: Applied ElevationMap pattern using `$<IF:$<TARGET_EXISTS:ddscore>,ddscore,>` generator expression for conditional linking.
**Pattern Applied**:
```cmake
# Before (required dependency):
target_link_libraries(my_target PRIVATE ddscore)
# After (optional dependency):
target_link_libraries(my_target PRIVATE $<IF:$<TARGET_EXISTS:ddscore>,ddscore,>)
```
**Files Updated**: 40 CMakeLists.txt files
- 40 files successfully updated with optional ddscore dependency
- 2 files unchanged (DdsView, TopicDiscover use RTI::nddscore directly, already conditionally available)
**Reference Pattern**: Lts/Services/CentralEffectSimulation/Plugins/GeoPairing/GBL_ConfigSystem/CMakeLists.txt (ElevationMap optional dependency pattern)
**Example Fixed File**: Lts/Services/AreaEffectSimulation/CMakeLists.txt
```cmake
# Before:
target_link_libraries(AreaEffectSimulation PRIVATE ddscore)
# After:
target_link_libraries(AreaEffectSimulation PRIVATE $<IF:$<TARGET_EXISTS:ddscore>,ddscore,>)
```
**RTI::nddscore Direct Usage**: 8 files reference RTI::nddscore directly (not ddscore library)
- Lts/Tools/DdsView/CMakeLists.txt ✅ (no changes needed)
- Lts/Tools/TopicDiscover/CMakeLists.txt ✅ (no changes needed)
- Lts/DDS/ServiceDiscovery/CMakeLists.txt
- Lts/DDS/TypeDiscovery/CMakeLists.txt
- Lts/DDS/DomainParticipant/CMakeLists.txt
- Lts/DDS/DataWriter/CMakeLists.txt
- Lts/DDS/DataReader/CMakeLists.txt
- Lts/DDS/Topic/CMakeLists.txt
These use RTI Connext DDS native targets which are handled separately via BUILD_RTI guard.
**Build Impact**:
- ✅ BUILD_RTI=OFF: Configuration succeeds without ddscore errors
- ✅ BUILD_RTI=ON: ddscore linked normally when available
- ✅ Follows CMake modern practices (target existence checking)
### Qt6 API Deprecation Fixes (Session 025)
**QString::SkipEmptyParts** (13 occurrences in 11 files):
- Replaced deprecated `QString::SkipEmptyParts` with `Qt::SkipEmptyParts`
- Files: OpApp, DataSampleReceiver, CodificationManagement, PlanEditor, fire_automaton, LogViewer, OPM Login, Timeline widgets, FilterWorker (macro)
**qrand/qsrand** (6 files):
- Replaced with `QRandomGenerator::global()->bounded()`
- Added `#include <QtCore/QRandomGenerator>`
**qAsConst** (all Lts files):
- Removed unnecessary qAsConst calls (Qt6 range-based for handles const automatically)
- 2 intentional exceptions for r-value expressions
**NGLLogger CMakeLists.txt**:
- Added INGLLogger.h and NGLLogger_export.h to source list
- Fixed include paths for Qt6
### Build Status
| Configuration | Status | Notes |
|---------------|--------|-------|
| BUILD_RTI=OFF | ✅ Ready | ddscore optional, all Qt6 API fixes applied |
| BUILD_RTI=ON | ⏳ Pending | Requires external RTI Connext DDS 7.7.0 |
---
**Last Updated**: 2026-08-26
**Next Auto-Update**: At next migration milestone
### Directory Differences (Expected)
qt6-after intentionally excludes:
@@ -1178,5 +1334,5 @@ qt6-after intentionally excludes:
---
**Last Updated**: 2026-08-25
**Last Updated**: 2026-08-26
**Next Auto-Update**: At next migration milestone