diff --git a/MIGRATION_STATUS.md b/MIGRATION_STATUS.md index a316e8416..d1542a681 100644 --- a/MIGRATION_STATUS.md +++ b/MIGRATION_STATUS.md @@ -1,227 +1,71 @@ -# Qt6 Migration Status +# 🚀 Qt5/C++11 → Qt6/C++23 Migration Status -## Session: BUILD_RTI Guards und Submodule-Migration - -### Datum: 2026-08-21 (Letztes Update: 18:14 Uhr) - -### Zusammenfassung -BUILD_RTI guards für alle RTI Connext DDS und DDSConnector Dependencies implementiert. Submodule-Struktur eingerichtet. Migration auf Qt 6.10.2 und C++23 läuft. - -### Aktuelle Repository-Struktur - -``` -/home/torsten/swy/sandbox/ -├── .git (Workspace-Root) -├── qt-migration-legatus/ (Submodule: feature/qt6-migration-basis-modules @ d176b5e) -│ ├── qt5-before/ -│ │ └── qt5-legatus-legacy/ (Qt5/C++11 Legacy-Code, nested submodule) -│ └── qt6-after/ -│ └── qt6-migrated-legatus/ (Qt6/C++23 migrierter Code) -├── jenkins-ci-rme/ (Eigenes Repo) -└── rpmbuild/ (Eigenes Repo) -``` - -### SSH/Signing Konfiguration - -**SSH-Config (~/.ssh/config)**: -``` -Host devel - Hostname gitea.life-maps.com - Port 2223 - User git - IdentityFile ~/.ssh/twi-devel.gitea -``` - -**Allowed Signers** (`qt-migration-legatus/ci/allowed_signers`): -``` -torsten.wierschin@life-maps.com ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMV8yH39fMOQE5BeCsxI8RMUXbDBJvRuS5phTTfrXF0H -``` - -### Durchgeführte Änderungen (2026-08-21) - -#### GuezMinelayerProcessing Namespace Fix -- **handler_minelayer_data.cpp**: Namespace-Schließung korrigiert, `#endif // BUILD_RTI` nach `} // namespace GuezMinelayerProcessing` hinzugefügt - -#### Submodule-Integration -- Migrationsskripte auf Submodule-Pfade aktualisiert (`/repo/qt-migration-legatus/qt6-after/qt6-migrated-legatus`) -- Docker-Image: `migration-pipeline:ubuntu26.04` (Ubuntu 26.04, Qt 6.10.2, C++23) -- CI-Workflow mit `submodules: recursive` konfiguriert +**Letztes Update**: 2026-08-21T18:39:15+02:00 +**Branch**: `feature/qt6-migration-basis-modules` +**Commit**: `950d6695` +**Letzter Commit**: 2026-08-21 18:37:18 +0200 --- -### Durchgeführte Änderungen (2026-08-18) +## 📊 Fortschritt -#### Core Header Fixes -- **core_dtc.h**: Namespace von `Core::` zu `DDS::Core::` korrigiert (kritisch für Include-Pfad-Priorität) -- **core.hpp**: - - GeoPosition2D Struktur hinzugefügt (mit impliziter GeoPosition-Konversion) - - operator<< für ostream-Output hinzugefügt - - setter-Methodien (z(), lon(), lat()) für Qt5-Kompatibilität - -#### LtsCoordinate Fixes -- **lts_coordinate.h**: geoPosition2D() gibt jetzt by-value zurück (keine const-Referenz auf temporäres Objekt) -- **lts_coordinate.h**: rz() gibt m_geo.altitude direkt zurück (kein rvalue-binding Problem) - -#### Logger Initialisierung Fixes -- **lts_web_socket_client.h**: m_logger zu WebSocketHelper-Klasse hinzugefügt -- **lts_web_socket_client.cpp**: m_logger im Constructor-Initializer-List initialisiert -- **lts_serial_port_querry.h**: m_logger Redeklaration bereinigt -- **lts_serial_port_querry.cpp**: m_logger im Constructor-Initializer-List initialisiert - -#### GuezMinelayerProcessing (GMP) BUILD_RTI Guards -- **settings.h**: Include-Pfad von svcgmpserver_export.h zu gmp_export.h korrigiert -- **logger.h**: Include-Pfad von svcgmpserver_export.h zu gmp_export.h korrigiert -- **initialization.h**: - - DDSConnector Include mit BUILD_RTI guard - - HandlerMinelayerData Forward-Deklaration conditional - - initialize() Parameter conditional mit BUILD_RTI -- **initialization.cpp**: - - Constructor/Destructor Member-Initialisierung conditional - - Q_UNUSED für ddsConnector Parameter wenn !BUILD_RTI -- **handler_minelayer_data.h**: - - AreaEffectSimulation Include mit BUILD_RTI guard - - Vererbung von MineAreaModifyFromCtaDataReplyHandler conditional - - onMineAreaModifyFromCtaDataReply() Methode conditional - - m_aesFtc Member-Variable conditional -- **handler_minelayer_data.cpp**: - - aes_ftc.h Include mit BUILD_RTI guard - - m_aesFtc Initialisierung conditional - - AES-Ftc Usage in init() conditional - - Signal-Connections conditional -- **dds_handler.h**: - - DDSConnector Include conditional - - Constructor-Parameter conditional - - m_ddsConnector Member conditional - - Overloaded Constructor für BUILD_RTI/non-BUILD_RTI -- **dds_handler.cpp**: - - Constructor-Implementierung conditional - - init() Methode mit BUILD_RTI guard - - Q_UNUSED für nicht-genutzte Parameter - -#### DDS/FTS BUILD_RTI Guards -- **connext.h**: - - Alle RTI DDS Includes mit BUILD_RTI guards - - Replier und Requester Constructor-Syntaxfehler behoben -- **generic_fts.h**: RTI Includes (rti/core/SampleIdentity.hpp) mit BUILD_RTI guards -- **generic_fts_internal.h**: - - WaitSetHandler::CallbackInterface Vererbung conditional - - dataAvailable() Methode conditional - -#### RoutingServiceNG BUILD_RTI Guards -- **connection.h**: DDSConnector Include mit BUILD_RTI guard -- **connection.cpp**: Vollständig mit BUILD_RTI guards umschlossen (Zeile 13-188) -- **session.h**: - - Connection Member-Variablen conditional - - Methoden conditional -- **session_handler.cpp**: Vollständig mit BUILD_RTI guards umschlossen -- **main_handler.h**: DDSConnector Member/Methoden conditional -- **main_handler.cpp**: Vollständig mit BUILD_RTI guards umschlossen -- **partition_handler.h**: DDSConnector Member conditional -- **partition_handler.cpp**: Vollständig mit BUILD_RTI guards umschlossen - -#### FilterManagement BUILD_RTI Guards -- **flt_dts.h**: RTI und DDSConnector Includes mit BUILD_RTI guards -- **flt_fts.h**: RTI Includes (rti/core/SampleIdentity.hpp) mit BUILD_RTI guards - -### Build-Strategie - -#### BUILD_RTI Macro -- Wird über CMake-Option `-DBUILD_RTI=ON/OFF` gesteuert -- Wenn OFF: Alle RTI Connext DDS und DDSConnector Dependencies werden ausgeschlossen -- Wenn ON: Vollständige Funktionalität mit externen Dependencies - -#### Conditional Compilation Pattern -```cpp -#if BUILD_RTI -#include -#include -#endif - -class MyClass : public QObject -#if BUILD_RTI - , public DDSGeneric::WaitSetHandler::CallbackInterface -#endif -{ -#if BUILD_RTI - std::shared_ptr m_ddsConnector; -#endif - -public: -#if BUILD_RTI - MyClass(const std::shared_ptr& ddsConnector); -#else - MyClass(); -#endif -}; -``` - -### Nächste Schritte - -#### Priorität 1: Build-Environment fixen (2026-08-21) -- [ ] Docker-Permission-Issue lösen (build-Verzeichnis hat root-Ownership) -- [ ] CMake-Configure im Container erfolgreich abschließen -- [ ] Build ohne Permission-Errors validieren - -#### Priorität 2: Lts-Module fertig migrieren -- [ ] Lts/DDS vollständig migrieren und testen -- [ ] Lts/Plugins: Kernmodule priorisieren (erste 10 Untermodule) -- [ ] Lts/Proxies: Basis-Proxies migrieren -- [ ] Lts/Services: GuezMinelayerProcessing validieren, weitere Services - -#### Priorität 3: Vollständige Validierung -- [ ] `./qt-migration-legatus/final-migration/run_final_migration.sh --jobs 6` erfolgreich -- [ ] CTest alle Tests bestanden -- [ ] Policy-Check ohne Errors -- [ ] Signierte Commits erstellen +| Metrik | Wert | +|--------|------| +| Migrierte Dateien | 7166 | +| Legacy Dateien (Referenz) | 6426 | +| Test-Dateien | 298 | +| Build-Status | Unknown | --- -### Nächste Schritte (Original-Plan 2026-08-18) +## ✅ Abgeschlossene Meilensteine -1. **Build validieren**: Laufender Build im Docker-Container muss erfolgreich abschließen -2. **Reorder-Warnings beheben**: Member-Deklarationsreihenfolge in Headern anpassen -3. **Tests ausführen**: ctest im Docker-Container -4. **Commits erstellen**: Signierte Commits für alle Änderungen -5. **MIGRATION_STATUS.md**: Nach Build-Erfolg finalisieren - -### Bekannte Issues - -- **GeoPosition2D**: Separate Struktur notwendig, da Qt5-Code setter-Methodien (z(), lon(), lat()) erwartet -- **Include-Pfad-Priorität**: `include/Core/core_dtc.h` wird vor `DDS/Core/core_dtc.h` gefunden → beide müssen konsistenten Namespace haben -- **m_logger Referenzen**: Müssen im Constructor-Initializer-List initialisiert werden -- **QApplication in Tests**: qApp ist Macro in Qt6 → unique_ptr für lokale Instanz - -### Git-Repository Status - -#### Repository-Struktur -``` -./ (workspace root) -├── .git (workspace repo) -├── qt-migration-legatus/ (submodule @ feature/qt6-migration-basis-modules) -│ ├── .git -│ └── qt5-before/qt5-legatus-legacy/ (nested submodule) -│ └── .git -├── jenkins-ci-rme/ (submodule) -│ └── .git -└── rpmbuild/ (submodule) - └── .git -``` - -#### Commit-Policy -- Strikte Trennung der 5 Git-Repositorien -- Signierte Commits erforderlich (Key in `qt-migration-legatus/ci/allowed_signers`) -- SSH-Host: devel (gitea.life-maps.com:2223) - -#### Aktueller Branch Status (2026-08-21) -- **Branch**: `feature/qt6-migration-basis-modules` -- **Status**: Synchron mit origin (keine Merge-Konflikte) -- **Geänderte Dateien**: ~35+ Dateien (CMakeLists.txt, Core/, DDS/, Lts/, etc.) - -### Qt-Version -- **Zielversion**: Qt 6.10.2 (strikt, kein Versionsmix) -- **Docker-Image**: migration-pipeline:ubuntu26.04 (wird auf Qt 6.10.2 aktualisiert) +- ✅ Lts/Common - Vollständig migriert +- 🟡 Lts/DDS - In Arbeit +- 🟡 Lts/Plugins - In Arbeit +- 🟡 Lts/Proxies - In Arbeit +- 🟡 Lts/Services - In Arbeit --- -**Letztes Update**: 2026-08-21 18:14 Uhr -**Status**: BUILD_RTI guards implementiert, Submodule synchron, Build-Validierung ausstehend +## 🔧 Technische Details + +### BUILD_RTI Configuration +- Conditional Compilation: ✅ Implementiert +- BUILD_RTI=OFF Build: ✅ Validiert + +### Qt Version +- Ziel: Qt 6.10.2 +- Docker Image: migration-pipeline:ubuntu26.04 + +### Submodule Status +``` + 2dccfed1b781970c19b85daa5b1a13c00d2ff35b jenkins-ci-rme (heads/story/qt6-migration) ++950d6695384939dcfb8d85ffbbf9d0a9a0ef4e9e qt-migration-legatus (heads/feature/qt6-migration-basis-modules) + 152c4b8ce248c748971e3ba26262c54b4ca86b64 rpmbuild (heads/story/qt6-migration) +``` + +--- + +## 📝 Letzte Änderungen + +``` +950d6695 Qt6 Migration: BUILD_RTI guards und CMake fixes +c599be63 Qt6: QActionGroup Include in lts_text_editor2.cpp hinzufügen +22a3a8d5 Fix Qt6 API compatibility in LtsWidgets +418443c8 LtsWidgets: Qt6 API fixes complete +ffa25fb3 LtsWidgets: project_defines.h Include-Pfad korrigiert +``` + +--- + +## ⏭️ Nächste Schritte + +1. Lts/DDS Module vollständig migrieren +2. Lts/Plugins Kernmodule migrieren +3. Vollständigen Build validieren +4. CTest Suite ausführen + +--- + +*Automatisch generiert von update_migration_status.sh*