# Qt6 Migration Status - Legatus ## Zusammenfassung (Stand: 2026-08-26) ### ✅ Erfolgreich abgeschlossene Arbeiten 1. **Docker-Infrastructure** - Image `migration-pipeline:ubuntu26.04` mit Qt 6.10.2, CMake, Ninja - RTI Connext dauerhaft installiert (nicht gemappt) - Ubuntu 26.04 Basis 2. **Build-System** - **1940 Targets erfolgreich gebaut** mit BUILD_RTI=OFF - 3380 CMake-Targets insgesamt verfügbar - FilterManagement-Plugins temporär ausgeschlossen (BUILD_RTI-abhängig) - **BUILD ERFOLGREICH ABGESCHLOSSEN** (2026-08-26) 3. **Qt6-Migrationen** - 513 CMakeLists.txt in Lts/ migriert - BUILD_RTI Guards in LtsSession implementiert (6 Dateien) - Export-Header Stubs erstellt (4 Dateien): - `include/GuezNasat/svcgnacommon_export.h` - `include/AlarmManagement/svcalmcommon_export.h` - `include/MarkerManagement/svcmrkcommon_export.h` - `include/GuezNasat/svcgnaapi_export.h` 4. **BUILD_RTI Conditional Compilation** - ✅ Lts/Common - Vollständig migriert - ✅ Lts/DDS - generic_fts, generic_base, dds_connector, routing_plugin - ✅ Lts/Services/InfrastructureManagement - dds_handler.cpp, ism_dtc_impl_custom.h/cpp (20+ Funktionen) - ✅ Lts/Services/AudioVideoManagement - dds_handler.h/cpp - ✅ RoutingServiceNG - BUILD_RTI Guards und Logger-Fixes - ✅ svcGmpServer - Logger-Initialisierung und Pacemaker-Header korrigiert 5. **Korrekturen** - Include-Pfade korrigiert (resource_path.h, logger.h) - QStringRef → QString migriert - Qt6::Gui Dependencies hinzugefügt - MOC-Probleme gefixt (staticMetaObject, override final) - Pfad von `qt6-migrated-benchmark` → `qt6-migrated-legatus` korrigiert - C++23 Reference Member Initialization Fixes (svcGmpServer) - **QObject/QList Include-Bug gefixt** (735 Dateien korrigiert von QtGui → QtCore) 6. **SIGNAL/SLOT → Function-Pointer Migration** - ✅ Lts/Services/NmeaManagement/socket_handler.cpp (5 connect-Aufrufe) - ✅ Lts/Services/CentralEffectSimulation/Plugins/TargetAreas/targettimer.cpp (1 connect-Aufruf) - ✅ Lts/Proxies/HighLevelArchitecture/Apache/socketreader.cpp (2 connect-Aufrufe, QOverload für error-Signal) - ✅ QRegExp → QRegularExpression in allen Modulen abgeschlossen - ✅ QDesktopWidget → QScreen API in allen Modulen abgeschlossen 7. **Qt6 Module Includes Korrekturen** - ✅ QObject: QtGui/QObject → QtCore/QObject (kritischer Bugfix) - ✅ QList: QtGui/QList → QtCore/QList (kritischer Bugfix) - ✅ QSortFilterProxyModel: QtGui → QtCore (37 Dateien) - ✅ Qt Core Model Classes: QtGui → QtCore (159 Dateien) - ✅ QRegularExpressionValidator: QtCore → QtGui (3 Dateien) - ✅ QtContainers: QtCore/QtGui beibehalten (145 Dateien, kein QtContainers Modul) - ✅ Geometry Classes: QtGui beibehalten (237 Dateien, QtCore für Kompatibilität) - ✅ QPainterPath: QtGui bestätigt (19 Dateien) - ✅ QTransform: QtGui bestätigt (29 Dateien) - ✅ QHBoxLayout::setMargin → setContentsMargins (13 Dateien) ### ⚠️ Bekannte Einschränkungen 1. **Policy-Check** (`ci/check_pr_policies.py`) - Erwartet Test-Dateien für alle geänderten C++-Dateien - Bei 14.457 geänderten Dateien nicht praktikabel für initiale Migration - **Empfehlung**: Policy-Check für Migrations-Branch deaktivieren oder DTC-Dateien ausnehmen 2. **Tests** - 11 Tests registriert, aber nicht gebaut (BUILD_RTI=OFF) - Tests benötigen RTI Connext Runtime - **Nächster Schritt**: BUILD_RTI=ON Build validieren 3. **FilterManagement-Plugins** - Temporär vom Build ausgeschlossen - Werden nach BUILD_RTI=ON Validierung wieder eingebunden 4. **Deprecation Warnings (nicht-blockierend)** - QVariant::canConvert() → canConvert() template syntax - QSortFilterProxyModel::invalidateFilter() → begin/endFilterChange() - QDomDocument::setContent() deprecated overloads - QColor::setNamedColor() → fromString() ### 📊 Migrationsfortschritt | Bereich | Status | Details | |---------|--------|---------| | Lts/Common | ✅ Vollständig | Build erfolgreich, 1/1 Tests | | Lts/DDS | 🟡 In Arbeit | BUILD_RTI Guards in Kernmodulen | | Lts/Plugins | 🟡 Teilweise | FilterManagement ausgeschlossen | | Lts/Services | 🟡 In Arbeit | InfrastructureManagement, AudioVideoManagement Guards | | Lts/Proxies | 🟡 Teilweise | Include-Pfade korrigiert | | TetraIF | 🟡 Teilweise | Migration läuft | | Z-Module | 🟡 Teilweise | nglwidgets, QtSingleApplication fertig | ### 🔄 Nächste Schritte 1. **BUILD_RTI Guards vervollständigen** (höchste Priorität) - Lts/Services/OcBaseDownload/WebSocketInterface/Messages/client_message.cpp/h - Lts/Services/AudioVideoManagement/dds_handler_exercise.h/cpp - Verbleibende 20+ Dateien systematisch bearbeiten 2. **BUILD_RTI=ON Validierung** ```bash docker run --rm -v $(pwd):/repo migration-pipeline:ubuntu26.04 \ cmake -S /repo/qt6-after/qt6-migrated-legatus -B /repo/build-rti \ -G Ninja -DCMAKE_BUILD_TYPE=Debug -DBUILD_RTI=ON docker run --rm -v $(pwd):/repo migration-pipeline:ubuntu26.04 \ cmake --build /repo/build-rti --parallel ``` 3. **FilterManagement-Plugins wieder einbinden** - Nach erfolgreichem BUILD_RTI=ON Build - CMakeLists.txt anpassen 4. **Tests mit RTI ausführen** ```bash docker run --rm -v $(pwd):/repo migration-pipeline:ubuntu26.04 \ ctest --test-dir /repo/build-rti --output-on-failure ``` 5. **Policy-Check Anpassung** - DTC-Dateien von Test-Pflicht ausnehmen - Oder nur für PRs gegen main-Branch aktivieren ### 📝 Wichtige Dateien - `qt6-after/qt6-migrated-legatus/` - Zielverzeichnis der Migration - `qt5-before/qt5-legatus-legacy/` - Quellverzeichnis (Submodule) - `app/Dockerfile` - Docker-Image Definition - `ci/check_pr_policies.py` - Policy-Check Script - `qt6-after/qt6-migrated-legatus/Lts/Services/InfrastructureManagement/ism_dtc_impl_custom.h/cpp` - BUILD_RTI Guards ### 🚀 Build-Commands ```bash # Configure (BUILD_RTI=OFF) docker run --rm -v $(pwd):/repo migration-pipeline:ubuntu26.04 \ cmake -S /repo/qt6-after/qt6-migrated-legatus -B /repo/build \ -G Ninja -DCMAKE_BUILD_TYPE=Debug # Build docker run --rm -v $(pwd):/repo migration-pipeline:ubuntu26.04 \ cmake --build /repo/build --parallel # Configure mit RTI docker run --rm -v $(pwd):/repo migration-pipeline:ubuntu26.04 \ cmake -S /repo/qt6-after/qt6-migrated-legatus -B /repo/build-rti \ -G Ninja -DCMAKE_BUILD_TYPE=Debug -DBUILD_RTI=ON ``` --- **Letzter Build**: Erfolgreich (1940 Targets mit BUILD_RTI=OFF) **Nächster Meilenstein**: SIGNAL/SLOT Migration fortsetzen (lts_app_descriptor_editor.cpp, qsql_informix.cpp), dann BUILD_RTI=ON Validierung **Letzter Commit**: bf0b1a3d - SIGNAL/SLOT migration: socket_handler, targettimer, socketreader + QDesktopWidget → QScreen