8.6 KiB
8.6 KiB
Qt6 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_RTInach} // namespace GuezMinelayerProcessinghinzugefü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: recursivekonfiguriert
Durchgeführte Änderungen (2026-08-18)
Core Header Fixes
- core_dtc.h: Namespace von
Core::zuDDS::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/OFFgesteuert - Wenn OFF: Alle RTI Connext DDS und DDSConnector Dependencies werden ausgeschlossen
- Wenn ON: Vollständige Funktionalität mit externen Dependencies
Conditional Compilation Pattern
#if BUILD_RTI
#include <rti/core/SampleIdentity.hpp>
#include <DDS/DDSConnector/dds_connector.h>
#endif
class MyClass : public QObject
#if BUILD_RTI
, public DDSGeneric::WaitSetHandler::CallbackInterface
#endif
{
#if BUILD_RTI
std::shared_ptr<DDSConnector::DdsConnector> m_ddsConnector;
#endif
public:
#if BUILD_RTI
MyClass(const std::shared_ptr<DDSConnector::DdsConnector>& 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 6erfolgreich- CTest alle Tests bestanden
- Policy-Check ohne Errors
- Signierte Commits erstellen
Nächste Schritte (Original-Plan 2026-08-18)
- Build validieren: Laufender Build im Docker-Container muss erfolgreich abschließen
- Reorder-Warnings beheben: Member-Deklarationsreihenfolge in Headern anpassen
- Tests ausführen: ctest im Docker-Container
- Commits erstellen: Signierte Commits für alle Änderungen
- 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.hwird vorDDS/Core/core_dtc.hgefunden → 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)
Letztes Update: 2026-08-21 18:14 Uhr Status: BUILD_RTI guards implementiert, Submodule synchron, Build-Validierung ausstehend