Files
qt6-migration-pipeline/MIGRATION_STATUS.md
T
torsten ae8fd289bb MIGRATION_STATUS.md aktualisiert, Dockerfile Qt6Location
- MIGRATION_STATUS.md: RTI Target-Kollisionen behoben dokumentiert
- app/Dockerfile: Qt6Location und qtpositioning Module hinzugefügt

BUILD_RTI=ON Configure erfolgreich, Build benötigt externe Dependencies

Entire-Checkpoint: 01M193RV6S8CGZZ9ME1VTWY5XB
2026-08-30 12:34:46 +02:00

5.8 KiB

Qt5/C++11 to Qt6/C++23 Migration Status

Datum: 2026-09-30
Submodule Branch: feature/qt6-migration-basis-modules @ d176b5e
Docker-Image: migration-pipeline:ubuntu26.04


📊 Gesamtübersicht

Bereich Status BUILD_RTI=OFF BUILD_RTI=ON Notes
Lts/Common ✅ Vollständig ✅ Build OK ✅ Configure OK Tests: 1/1 bestanden
Lts/DDS 🟡 Struktur vorhanden ✅ Configure OK ✅ Configure OK Target-Kollisionen behoben
Lts/Plugins 🟡 Teilweise ⚠️ Build-Fehler ⚠️ Build-Fehler Externe Dependencies fehlen
Lts/Projects 🟡 Struktur vorhanden ✅ Configure OK ✅ Configure OK Warning: jsonschema app nicht gefunden
Lts/Proxies 🟡 Struktur vorhanden ✅ Configure OK ✅ Configure OK -
Lts/Services 🟡 Struktur vorhanden ✅ Configure OK ✅ Configure OK -
TetraIF 🟡 Teilweise ✅ Configure OK ✅ Configure OK -
Z-Module 🟡 Teilweise ⚠️ Build-Fehler ⚠️ Build-Fehler Externe Dependencies fehlen

🔧 Behobene Probleme

1. FileStatus-Enum-Konflikt (✅ Behoben)

Problem: FileStatus war bedingt definiert (int für BUILD_RTI=OFF, enum class für BUILD_RTI=ON)
Lösung: Einheitliche enum class FileStatus Definition für beide Varianten
Files: flm_enums.hpp, flm_db.h

2. QDebug operator<< für enum class (✅ Behoben)

Problem: enum class wird nicht implizit zu int konvertiert für QDebug
Lösung: Expliziter operator<< in flm_enums.hpp implementiert
Files: flm_enums.hpp

3. Qt6Location Missing (✅ Behoben)

Problem: Qt6Location Modul fehlte im Docker-Image
Lösung: qtlocation und qtpositioning zu aqt install-qt Command hinzugefügt
Files: app/Dockerfile

4. RTI Target-Kollisionen (✅ Behoben)

Problem: ALIAS Targets für ddsftc, ddsfts, ddsconnector kollidierten mit Module-level Definitions
Ursache:

  • FindRTI.cmake erstellt nur Targets für: nddscore, nddsc, nddscpp2, rtiroutingservice
  • ddsftc, ddsfts, ddsconnector existieren nicht in RTI 7.7.0
  • Lts/DDS/FTC/CMakeLists.txt erstellt eigene INTERFACE Targets für diese Libraries

Lösung:

  • ALIAS Targets nur für existierende RTI-Libraries erstellen (nddscore, nddsc, nddscpp2)
  • KEINE INTERFACE-Placeholder für nicht-existierende Libraries
  • Module definieren ihre eigenen Targets (ddsftc, ddsfts, ddsconnector)

Files: CMakeLists.txt (Zeilen 254-285)


⚠️ Bekannte Probleme

1. Externe Dependencies fehlen (BUILD_RTI=ON)

Fehler: /usr/bin/ld.bfd: cannot find -lsvcIsmCommon: No such file or directory
Betroffene Module: IsmShared, andere Module mit externen Libraries
Ursache: Externe Libraries (svcIsmCommon, etc.) sind im Docker-Container nicht verfügbar
Workaround: BUILD_RTI=OFF für Build-Tests ohne RTI-Dependencies
Lösung: CI muss externe Dependencies bereitstellen oder optional verlinken

2. NGLLogger Include-Pfad Warning

Warning: cc1plus: warning: /repo/build/Z/src/NGLLogger/Z/src/NGLLogger: No such file or directory
Ursache: Falscher Include-Pfad in CMake-Konfiguration
Status: Kosmetisch, Build läuft trotzdem

3. jsonschema Application nicht gefunden

Warning: Projects: application 'jsonschema' not found, cannot validate apps.json files
Status: Kosmetisch, beeinflusst Build nicht


📝 Letzte Änderungen

CMakeLists.txt (RTI Target-Kollisionen behoben)

# Vorher (falsch):
IF(BUILD_RTI AND TARGET RTI::nddsc)
  ADD_LIBRARY(ddsconnector INTERFACE)  # Kollision!
ENDIF()

# Nachher (korrekt):
IF(BUILD_RTI AND TARGET RTI::nddsc)
  # Nur ALIAS für existierende RTI-Libraries
  ADD_LIBRARY(RTI::nddscore ALIAS RTI::nddscore)
  ADD_LIBRARY(RTI::nddsc ALIAS RTI::nddsc)
  ADD_LIBRARY(RTI::nddscpp2 ALIAS RTI::nddscpp2)
  # ddsftc/ddsfts/ddsconnector werden von Modulen selbst erstellt
ENDIF()

flm_enums.hpp (QDebug operator<<)

#include <QDebug>

inline QDebug operator<<(QDebug debug, FileStatus status)
{
    QDebugStateSaver saver(debug);
    debug.nospace();
    switch (status) {
        case FileStatus::Valid: debug << "FileStatus::Valid"; break;
        case FileStatus::Deleted: debug << "FileStatus::Deleted"; break;
        default: debug << "FileStatus::Unknown(" << static_cast<int>(status) << ")"; break;
    }
    return debug;
}

app/Dockerfile (Qt6Location)

RUN python3 -m aqt install-qt linux desktop 6.8.3 gcc_64 \
    -m qtbase qtdeclarative qttools qtcharts qtdatavis3d \
        qtlocation qtpositioning \
    --outputdir /opt/Qt

🧪 Build-Status

BUILD_RTI=OFF

  • ✅ Configure: Erfolgreich
  • ⚠️ Build: Teilweise erfolgreich (externe Dependencies fehlen)

BUILD_RTI=ON

  • ✅ Configure: Erfolgreich (nach Target-Kollision-Fix)
  • ⚠️ Build: Teilweise erfolgreich (externe Dependencies fehlen)

📋 Nächste Schritte

  1. Externe Dependencies klären: svcIsmCommon und andere externe Libraries verfügbar machen
  2. Lts/Plugins Migration: Verbleibende Untermodule migrieren
  3. Lts/Services Migration: Verbleibende Untermodule migrieren
  4. TetraIF abschließen: Restliche Migration durchführen
  5. Vollständigen Build testen: Mit allen verfügbaren Dependencies

📌 Wichtige Hinweise

  • qt5-before/qt5-legatus-legacy: READ-ONLY, keine Änderungen erlaubt!
  • Git Hooks: entire hooks git post-commit verursacht lange Commit-Laufzeiten
  • Submodule: qt-migration-legatus zeigt auf feature/qt6-migration-basis-modules
  • Externe Dependencies: Liegen in ./external/ (RTI, ArcGIS)

Letztes Update: 2026-09-30
Nächster Checkpoint: RTI Target-Kollisionen behoben