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

188 lines
7.3 KiB
Markdown

# 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
- [x] Docker-Build-Infrastructure validiert
- [x] CMake-Cache-Permission-Problem behoben (als root löschen)
- [x] CMake-Konfiguration erfolgreich abgeschlossen
- [x] NGLLogger Export-Macro konfiguriert
- [x] 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
- [x] Export-Macro konfiguriert (generate_export_header)
- [x] AUTOUIC_SEARCH_PATHS für Ui-Verzeichnis hinzugefügt
- [x] BUILD_RTI-Guard entfernt (immer benötigtes Target)
- [x] Target-Abhängigkeit für Tests hinzugefügt
- [x] Include-Pfad in test_abstracttimelinemodel.cpp korrigiert
### 4. NGLLogger Integration
- [x] Export-Macro Include-Pfad im Haupt-CMakeLists.txt (`${CMAKE_BINARY_DIR}/Z/src/NGLLogger`)
- [x] Source-Pfad zu globalen Include-Pfaden hinzugefügt
- [x] Include-Pfad korrigiert: `<NGLLoggerBootstrap.h>` (nicht `<NGLLogger/NGLLoggerBootstrap.h>`)
- [x] 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**:
- [x] test_event.cpp (2 Tests: DurationCalculation, VisibilityToggle)
- [x] test_eventgraphic.cpp (3 Tests)
- [x] test_eventtools.cpp (2 Tests)
- [x] test_eventlist.cpp (3 Tests, 6 Constructor-Aufrufe)
**Constructor-Signatur**:
```cpp
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
- [x] Include-Pfad: `LtsUtilsCore/data_modification_enum.h` → `LtsUtils/LtsUtilsCore/data_modification_enum.h`
- [x] test_item.cpp: Include für gna_dtc.h hinzugefügt
- [x] **operator<< ambiguous overload Fix**: friend-Deklaration in NasatAircraft und NasatAircraftParticipant
- [x] operator<< aus globalem Scope in Namespace GuezNasat verschoben (ADL-konform)
### 8. Enum- und Type-Fixes
- [x] avm_enums.hpp: `#include <cstdint>` für int32_t
- [x] test_asm_enums.cpp: enum class Vergleiche mit static_cast
- [x] 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.