Files
qt6-migration-pipeline/MIGRATION_STATUS.md
T
torstenandCopilot 121c873816 Update MIGRATION_STATUS.md with RTI 7.7 detection and Grantlee fixes
- Documented RTI 7.7.0 detection with DDS_PATH environment variable
- Recorded Grantlee template namespace resolution fixes
- Updated build status: codegen_base builds successfully (19/19 targets)
- Documented ngl_codegen build blocker (requires BUILD_GRANTLEE=ON)
- Listed remaining compilation errors to address

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Entire-Checkpoint: 01M1BQ4V7W3TFQMKRPKFQ07X66
2026-08-31 12:51:51 +02:00

189 lines
7.8 KiB
Markdown

# Qt5/C++11 to Qt6/C++17 Migration Status
**Datum**: 2026-09-30
**Submodule Branch**: `feature/qt6-migration-basis-modules` @ d176b5e
**Docker-Image**: `migration-pipeline:ubuntu26.04`
**C++ Standard**: C++17 (⚠️ RTI 7.7 kompatibel nur mit C++17, NICHT C++23)
---
## 📊 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** | 🟡 DTC-Generation | ⚠️ 45 Fehler | ⚠️ 45 Fehler | RTI Headers in MOC, ngl_codegen Build |
| **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)
### 5. Grantlee Template Namespace Resolution (✅ Behoben)
**Problem**: DTC-Generierung erzeugte falsche Namespace-Referenzen (`Core::CurrentRunningState` statt `::Core::CurrentRunningState`)
**Fehler**: `'CurrentRunningState' in namespace 'Core' does not name a type` (45 Fehler)
**Lösung**: Absolute Namespace-Resolution in Grantlee Templates (`::{{ namespace }}::{{ dt.type }}`)
**Files**: `svc_dtc.h.grantlee`, `svc_dtc_impl.cpp.grantlee`, `svc_dtc_impl.h.grantlee`
### 6. RTI Detection mit DDS_PATH (✅ Behoben)
**Problem**: CMake FindRTI.cmake fand RTI 7.7.0 nicht automatisch
**Lösung**: `DDS_PATH=/repo/external/rti_connext_dds-7.7.0/` setzen
**Status**: CMake findet RTI-Directory und Libraries (nddscore, nddsc, nddscpp2, rtiroutingservice)
**Files**: `cmake/FindRTI.cmake` (unterstützt DDS_PATH env var)
### 7. codegen_base Library Built (✅ Behoben)
**Status**: codegen_base erfolgreich als Shared Library gebaut (19/19 Targets)
**Problem**: ngl_codegen Executable nicht als separates Target gefunden
**Ursache**: ngl_codegen benötigt BUILD_GRANTLEE=ON und Grantlee5::Templates (Qt5-basiert)
**Nächster Schritt**: BUILD_GRANTLEE-Strategie entscheiden (Qt5 Grantlee oder Qt6-Alternative)
---
## ⚠️ Bekannte Probleme
### 1. ngl_codegen Build (🔴 Aktiv)
**Problem**: ngl_codegen Tool wird nicht gebaut
**Ursache**: BUILD_GRANTLEE=ON benötigt Grantlee5 (Qt5-basiert), nicht verfügbar in Qt6-Umgebung
**Optionen**:
- Option A: Grantlee5 im Docker-Image nachinstallieren (Qt5-Dependency)
- Option B: Code-Generation ohne Grantlee (manuell oder alternatives Template-System)
- Option C: ngl_codegen aus Qt5-Build kopieren
**Auswirkung**: DTC-Files können nicht neu generiert werden
### 2. 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
### 3. 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
### 4. jsonschema Application nicht gefunden
**Warning**: `Projects: application 'jsonschema' not found, cannot validate apps.json files`
**Status**: Kosmetisch, beeinflusst Build nicht
### 5. RTI Include Paths für MOC
**Problem**: MOC benötigt beide RTI Include-Pfade (ndds/hpp UND ndds)
**Status**: CMAKE_AUTOMOC_INCLUDE_DIRECTORIES korrekt konfiguriert, vererbt RTI_INCLUDE_DIRS
**Verbleibende Fehler**: 45 DTC-Compilation errors trotz Template-Fix
---
## 📝 Letzte Änderungen
### CMakeLists.txt (RTI Target-Kollisionen behoben)
```cmake
# 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<<)
```cpp
#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)
```dockerfile
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