- Migrated old SIGNAL/SLOT connect syntax to function-pointer syntax - socket_handler.cpp: timeout, connected, disconnected, readyRead, bytesWritten - targettimer.cpp: timeout → MyTimerSlot - socketreader.cpp: readyRead, error (with QOverload for overloaded signal) - Updated MIGRATION_STATUS.md with migration progress - Part of Qt5→Qt6 migration with C++17 constraint (RTI 7.7.0 compatibility)
5.6 KiB
5.6 KiB
Qt6 Migration Status - Legatus
Zusammenfassung (Stand: 2026-08-24)
✅ Erfolgreich abgeschlossene Arbeiten
-
Docker-Infrastructure
- Image
migration-pipeline:ubuntu26.04mit Qt 6.10.2, CMake, Ninja - RTI Connext dauerhaft installiert (nicht gemappt)
- Ubuntu 26.04 Basis
- Image
-
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)
-
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.hinclude/AlarmManagement/svcalmcommon_export.hinclude/MarkerManagement/svcmrkcommon_export.hinclude/GuezNasat/svcgnaapi_export.h
-
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
-
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-legatuskorrigiert - C++23 Reference Member Initialization Fixes (svcGmpServer)
-
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
⚠️ Bekannte Einschränkungen
-
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
-
Tests
- 11 Tests registriert, aber nicht gebaut (BUILD_RTI=OFF)
- Tests benötigen RTI Connext Runtime
- Nächster Schritt: BUILD_RTI=ON Build validieren
-
FilterManagement-Plugins
- Temporär vom Build ausgeschlossen
- Werden nach BUILD_RTI=ON Validierung wieder eingebunden
📊 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
-
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
-
BUILD_RTI=ON Validierung
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 -
FilterManagement-Plugins wieder einbinden
- Nach erfolgreichem BUILD_RTI=ON Build
- CMakeLists.txt anpassen
-
Tests mit RTI ausführen
docker run --rm -v $(pwd):/repo migration-pipeline:ubuntu26.04 \ ctest --test-dir /repo/build-rti --output-on-failure -
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 Migrationqt5-before/qt5-legatus-legacy/- Quellverzeichnis (Submodule)app/Dockerfile- Docker-Image Definitionci/check_pr_policies.py- Policy-Check Scriptqt6-after/qt6-migrated-legatus/Lts/Services/InfrastructureManagement/ism_dtc_impl_custom.h/cpp- BUILD_RTI Guards
🚀 Build-Commands
# 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