Files
qt6-migration-pipeline/MIGRATION_STATUS.md
T
torsten 1995939af3
Qt6 Migration CI / migrate (push) Waiting to run
Adds migration status next stage
2026-08-21 18:33:33 +02:00

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_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

Durchgeführte Änderungen (2026-08-18)

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

#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 6 erfolgreich
  • CTest alle Tests bestanden
  • Policy-Check ohne Errors
  • Signierte Commits erstellen

Nächste Schritte (Original-Plan 2026-08-18)

  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)

Letztes Update: 2026-08-21 18:14 Uhr Status: BUILD_RTI guards implementiert, Submodule synchron, Build-Validierung ausstehend