Files
qt-migration-legatus/qt6-after/qt6-migrated-legatus/MIGRATION_STATUS.md
T

6.7 KiB

Qt6 Migration Status - Legatus

Zusammenfassung (Stand: 2026-08-26)

✅ Erfolgreich abgeschlossene Arbeiten

  1. Docker-Infrastructure

    • Image migration-pipeline:ubuntu26.04 mit Qt 6.10.2, CMake, Ninja
    • RTI Connext dauerhaft installiert (nicht gemappt)
    • Ubuntu 26.04 Basis
  2. 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)
    • BUILD ERFOLGREICH ABGESCHLOSSEN (2026-08-26)
  3. 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.h
      • include/AlarmManagement/svcalmcommon_export.h
      • include/MarkerManagement/svcmrkcommon_export.h
      • include/GuezNasat/svcgnaapi_export.h
  4. 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
  5. 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-legatus korrigiert
    • C++23 Reference Member Initialization Fixes (svcGmpServer)
    • QObject/QList Include-Bug gefixt (735 Dateien korrigiert von QtGui → QtCore)
  6. 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
  7. Qt6 Module Includes Korrekturen

    • ✅ QObject: QtGui/QObject → QtCore/QObject (kritischer Bugfix)
    • ✅ QList: QtGui/QList → QtCore/QList (kritischer Bugfix)
    • ✅ QSortFilterProxyModel: QtGui → QtCore (37 Dateien)
    • ✅ Qt Core Model Classes: QtGui → QtCore (159 Dateien)
    • ✅ QRegularExpressionValidator: QtCore → QtGui (3 Dateien)
    • ✅ QtContainers: QtCore/QtGui beibehalten (145 Dateien, kein QtContainers Modul)
    • ✅ Geometry Classes: QtGui beibehalten (237 Dateien, QtCore für Kompatibilität)
    • ✅ QPainterPath: QtGui bestätigt (19 Dateien)
    • ✅ QTransform: QtGui bestätigt (29 Dateien)
    • ✅ QHBoxLayout::setMargin → setContentsMargins (13 Dateien)

⚠️ Bekannte Einschränkungen

  1. 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
  2. Tests

    • 11 Tests registriert, aber nicht gebaut (BUILD_RTI=OFF)
    • Tests benötigen RTI Connext Runtime
    • Nächster Schritt: BUILD_RTI=ON Build validieren
  3. FilterManagement-Plugins

    • Temporär vom Build ausgeschlossen
    • Werden nach BUILD_RTI=ON Validierung wieder eingebunden
  4. Deprecation Warnings (nicht-blockierend)

    • QVariant::canConvert() → canConvert() template syntax
    • QSortFilterProxyModel::invalidateFilter() → begin/endFilterChange()
    • QDomDocument::setContent() deprecated overloads
    • QColor::setNamedColor() → fromString()

📊 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

  1. 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
  2. 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
    
  3. FilterManagement-Plugins wieder einbinden

    • Nach erfolgreichem BUILD_RTI=ON Build
    • CMakeLists.txt anpassen
  4. Tests mit RTI ausführen

    docker run --rm -v $(pwd):/repo migration-pipeline:ubuntu26.04 \
      ctest --test-dir /repo/build-rti --output-on-failure
    
  5. 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 Migration
  • qt5-before/qt5-legatus-legacy/ - Quellverzeichnis (Submodule)
  • app/Dockerfile - Docker-Image Definition
  • ci/check_pr_policies.py - Policy-Check Script
  • qt6-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