Files
qt6-migration-pipeline/MIGRATION_STATUS.md
T
torsten 75f927baec
Qt6 Migration CI / migrate (push) Waiting to run
Updates current qt6 migration status
2026-08-21 15:13:21 +02:00

7.3 KiB

Qt6 Migration Status Report

Aktueller Stand (2026-08-21 15:09 CET)

🏗️ Build-Fortschritt

  • Gesamt-Targets: 1854
  • Aktueller Fortschritt: 114/1854 (6%)
  • Build-System: Ninja, Debug, BUILD_RTI=OFF
  • Qt-Version: Qt 6.10.2 (fest, kein Versions-Mix)
  • C++-Standard: C++23
  • Build-Umgebung: Docker-Container (migration-pipeline:ubuntu26.04-qt6)

✅ Erfolgreich abgeschlossene Arbeiten

1. Build-Infrastructure

  • Docker-Build-Infrastructure validiert
  • CMake-Cache-Permission-Problem behoben (als root löschen)
  • CMake-Konfiguration erfolgreich abgeschlossen
  • NGLLogger Export-Macro konfiguriert
  • GuezNasat Include-Pfade konfiguriert

2. Plugin-System Migration (43 Module)

Kategorie Anzahl Status
DataPlugins 38 ✅ AUTOMOC ON + Q_INTERFACES() entfernt
Plugin-Interfaces 5 ✅ AUTOMOC ON
Gesamt 43 ✅ Fertig

Wichtigste Erkenntnis: Q_INTERFACES() ist inkombatibel mit QObject-Vererbung in Qt6 - muss entfernt werden.

3. LtsTimelineClassic Module

  • Export-Macro konfiguriert (generate_export_header)
  • AUTOUIC_SEARCH_PATHS für Ui-Verzeichnis hinzugefügt
  • BUILD_RTI-Guard entfernt (immer benötigtes Target)
  • Target-Abhängigkeit für Tests hinzugefügt
  • Include-Pfad in test_abstracttimelinemodel.cpp korrigiert

4. NGLLogger Integration

  • Export-Macro Include-Pfad im Haupt-CMakeLists.txt (${CMAKE_BINARY_DIR}/Z/src/NGLLogger)
  • Source-Pfad zu globalen Include-Pfaden hinzugefügt
  • Include-Pfad korrigiert: <NGLLoggerBootstrap.h> (nicht <NGLLogger/NGLLoggerBootstrap.h>)
  • API-Change: getLogger() → getNGLRootLogger() in 4 Dateien
    • Event.cpp
    • Event.h
    • AbstractTimelineModel.cpp
    • TimelineWidget.cpp
    • TimelineIndicator.cpp

5. Qt6 API-Changes

Datei Change Status
TimelineView.cpp angle() → angleDelta() ✅
TimelineView.cpp globalPos() → globalPosition().toPoint() ✅
lts_msec_date_time_edit.cpp fromMSecsSinceEpoch() deprecated (Warnung akzeptiert) ⚠️
lts_text_editor.cpp setFontFamily() deprecated (Warnung akzeptiert) ⚠️

6. Event-Constructor Migration

Problem: Event-Klasse hat nur 14-Argument Constructor, keinen Default-Constructor (wegen Referenz-Member m_logger)

Betroffene Test-Dateien:

  • test_event.cpp (2 Tests: DurationCalculation, VisibilityToggle)
  • test_eventgraphic.cpp (3 Tests)
  • test_eventtools.cpp (2 Tests)
  • test_eventlist.cpp (3 Tests, 6 Constructor-Aufrufe)

Constructor-Signatur:

Event(quint64 uniqueId, quint32 typeId, qint64 startTime, qint64 endTime,
      quint32 playerId, quint32 partyId, quint64 equipmentId,
      const QString& path, EventPaintFunc paintFunc,
      const QColor& paintColor, const QVariant& detailData,
      quint64 subEventId, const QPointF& pos, quint64 session)

7. GuezNasat Module

  • Include-Pfad: LtsUtilsCore/data_modification_enum.h → LtsUtils/LtsUtilsCore/data_modification_enum.h
  • test_item.cpp: Include für gna_dtc.h hinzugefügt
  • operator<< ambiguous overload Fix: friend-Deklaration in NasatAircraft und NasatAircraftParticipant
  • operator<< aus globalem Scope in Namespace GuezNasat verschoben (ADL-konform)

8. Enum- und Type-Fixes

  • avm_enums.hpp: #include <cstdint> für int32_t
  • test_asm_enums.cpp: enum class Vergleiche mit static_cast
  • test_asm_dtc.cpp: Include für asm_dtc.h hinzugefügt

9. Export-Header Problem behoben (aus vorheriger Session)

  • 87 CMakeLists.txt von NGL_ADD_LIBRARY auf NGL_ADD_LIBRARY2 konvertiert
  • 44 Source-Dateien: Export-Header Include-Pfade korrigiert
  • Root Cause: NGL_ADD_LIBRARY2 benötigt für GENERATE_EXPORT_HEADER

10. DDS-Stub-Header generiert (aus vorheriger Session)

  • 81 DDS-Stub-Header erstellt (*_dtc.h, *_fts.h, *_dts.h, *_ftc.h)
  • Include-Pfade korrigiert mit PREFIX_TO_MODULE Mapping
  • Ermöglicht Build ohne RTI DDS Codegenerierung

11. FilterManagement DDS-Stubs (aus vorheriger Session)

  • flt_fts.h: AesFilter und AesFilterUpdateRequestHandler
  • flt_dts.h: Dts und Fts Interface-Classes
  • flt_dts.cpp: Stub-Implementation
  • flt_ftc.h: Ftc Interface mit ReplyHandler (neu erstellt)

12. InfrastructureManagement DDS-Stubs (aus vorheriger Session)

  • ism.hpp, ism_enums.hpp Stub-Header erstellt
  • IsmShared Kompilierung erfolgreich

⚠️ Aktuelle Build-Situation

NGLLogger: ✅ Baut erfolgreich ohne RTI

FilterManagement: ⚠️ Benötigt BUILD_RTI=ON

  • FltDataPlugin hängt von svcFltClient ab
  • svcFltClient wird nur mit BUILD_RTI=ON gebaut
  • RTI Connext ist in Ubuntu 26.04 nicht installiert

Lösungsoptionen:

  1. RTI Connext in Docker-Image installieren (aufwändig, Lizenz)
  2. BUILD_RTI=OFF und FilterManagement-Plugins temporär deaktivieren
  3. svcFltClient als Header-Only Library behandeln (wenn möglich)

📝 Git Submodule Status

Frage: Warum ist git submodule im HEAD detach state?

Antwort: Das Submodule ist NICHT im detached HEAD state!

$ git submodule status
+010f91928acfe8e775acdacc5eb0b38f613fa3e5 qt-migration-legatus (heads/feature/qt6-migration-basis-modules)
  • Branch: feature/qt6-migration-basis-modules ✅
  • Commit: 010f919 (lokale Änderungen, noch nicht gepusht)
  • Das + Zeichen: Zeigt uncommitted changes im Submodule an

🔄 Nächste Schritte

  1. FilterManagement Build-Strategie klären

    • Option A: BUILD_RTI=ON mit RTI-Installation
    • Option B: FilterManagement-Plugins temporär ausschließen
    • Option C: svcFltClient als Header-Only behandeln
  2. Tests erstellen (gemäß combined-migration-compact.prompt.md)

    • Für migrierte Module: Lts/Common, NGLLogger
    • Teststruktur: ./qt-migration-legatus/qt6-after/qt6-migrated-legatus/tests/
  3. ./rpmbuild und ./jenkins migrieren

    • Von openSUSE nach Ubuntu 26.04
    • Dockerfiles anpassen
    • Jenkins-Pipelines aktualisieren
  4. Vollständige Migration fortsetzen

    • Z-Module → TetraIF → Lts/Services → Lts/Proxies → Lts/Plugins → Lts/Projects

📊 Build-Statistik

Modul Build-Status RTI benötigt Notes
NGLLogger ✅ Erfolg ❌ Nein Basis-Logging
IsmShared ✅ Erfolg ❌ Nein InfrastructureManagement
FltDataPlugin ⚠️ Pending ✅ Ja Benötigt svcFltClient
svcFltCommon ⚠️ Pending ✅ Ja BUILD_RTI=ON required
svcFltClient ⚠️ Pending ✅ Ja BUILD_RTI=ON required
svcFltServer ⚠️ Pending ✅ Ja BUILD_RTI=ON required

🛠️ Wichtige Files

Stub-Header erstellt:

  • /include/FilterManagement/flt_fts.h
  • /include/FilterManagement/flt_dts.h
  • /include/FilterManagement/flt_dts.cpp
  • /include/FilterManagement/flt_ftc.h (neu)
  • /include/InfrastructureManagement/ism.hpp
  • /include/InfrastructureManagement/ism_enums.hpp

Skripte erstellt:

  • fix_add_library2.py (87 Fixes)
  • fix_export_includes.py (44 Fixes)
  • create_dds_stubs.py (81 Header)
  • move_dds_headers.py (Pfad-Korrektur)
  • remove_logger_members.py (~100+ Dateien)
  • fix_logging_macros.py (variadische Parameter)

Empfehlung: User sollte entscheiden ob RTI Connext installiert werden soll oder ob FilterManagement-Plugins temporär aus dem Build ausgeschlossen werden können.