Files
qt6-migration-pipeline/MIGRATION_STATUS.md
T
torstenandCopilot 2101c87cbd
Qt6 Migration CI / migrate (push) Waiting to run
Update MIGRATION_STATUS.md and submodule reference
- Document C++17 decision (RTI 7.7.0 hard blocker for C++20/23)
- Document BUILD_RTI DDS guard fixes completion
- Update submodule reference to 8d456c7d

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Entire-Checkpoint: 01M0QA4DXB67EY0GGRT3Y0475M
2026-08-23 14:39:37 +02:00

137 lines
5.1 KiB
Markdown

# Qt5/C++11 → Qt6/C++17 Migrationsstatus
**Letztes Update:** 2026-08-22
**C++ Standard:** C++17 (RTI Connext DDS 7.7.0 Hard Blocker für C++20/23)
---
## 🎯 Wichtige Entscheidungen
### C++ Standard: C++17 (nicht C++23)
**Begründung:** RTI Connext DDS 7.7.0 unterstützt offiziell nur C++14/C++17. C++20/C++23 verursacht Header-Kompilierungsfehler in RTI-Bibliotheken.
**Folgen:**
- CMAKE_CXX_STANDARD von 23 auf 17 gesetzt
- Alle Toolchains, Presets und CI auf C++17 vereinheitlicht
- C++23-Features können nicht verwendet werden, solange RTI verwendet wird
- RTI ist hinter `BUILD_RTI=OFF` gekapselt (stabile Guards/Stubs)
---
## ✅ Abgeschlossene Arbeiten (Session 2026-08-22)
### 1. log4qt Build-Fix
- **Problem:** 404 beim Download von axivion/log4qt
- **Lösung:** Git-Klon von MEONMedical/Log4Qt verwendet
- **C++17-Patches:**
- `level.h`: Spaceship-Operator `<=>` durch explizite Vergleiche ersetzt (mValue statt mLevel)
- `appenderskeleton.h`: `mThreshold.load()` für Thread-Safety
### 2. BUILD_RTI=OFF Build-Fixes
- **generic_data_writer.h:** M_logger Member-Deklaration hinzugefügt
- **generic_data_reader.h:** M_logger Member-Deklaration hinzugefügt
- **generic_dtc_impl.h:** M_logger Member-Deklaration hinzugefügt
- **dds_connector.h:** Duplikate entfernt, korrekte Stub-Signaturen
### 3. BUILD_RTI=ON Build-Fixes
- **publisher.h/cpp:** `#include <rti/core/xtypes/DynamicDataImpl.hpp>` für kompletten Typ
- **dds_connector.cpp:** Vollständig mit `#if BUILD_RTI` guards umschlossen
- **DynamicDataImpl:** Incomplete type errors behoben
### 4. Git Remote Korrektur
- **Alt:** Falscher origin eingetragen
- **Neu:** `git@devel:lifemaps/qt6-migration-pipeline.git` (main branch)
---
## 📊 Build-Status
| Konfiguration | Status | Probleme |
|---------------|--------|----------|
| BUILD_RTI=OFF | ❌ | QJsonObject-Fehler in training_area_telegrams.cpp (separates Qt6-Problem) |
| BUILD_RTI=ON | ❌ | QJsonObject-Fehler in training_area_telegrams.cpp (separates Qt6-Problem) |
**DDS/RTI-spezifische Fehler:** ✅ Alle behoben!
---
## 📝 Geänderte Dateien
### Submodule: qt-migration-legatus (feature/qt6-migration-basis-modules)
| Datei | Änderung | Grund |
|-------|----------|-------|
| `CMakeLists.txt` | CMAKE_CXX_STANDARD 23→17 | RTI 7.7.0 C++17 requirement |
| `Lts/DDS/Generic/generic_data_writer.h` | m_logger Member added | Missing declaration |
| `Lts/DDS/Generic/generic_data_reader.h` | m_logger Member added | Missing declaration |
| `Lts/DDS/DTC/generic_dtc_impl.h` | m_logger Member added | Missing declaration |
| `Lts/DDS/DDSConnector/publisher.h` | DynamicDataImpl.hpp include | Complete type needed |
| `Lts/DDS/DDSConnector/publisher.cpp` | DynamicDataImpl.hpp include | Complete type needed |
| `Lts/DDS/DDSConnector/dds_connector.h` | Stub signatures fixed | Match cpp impl |
| `Lts/DDS/DDSConnector/dds_connector.cpp` | #if BUILD_RTI guards | Conditional compilation |
| `Lts/DDS/Generic/generic_base.h` | Minor fixes | Build cleanup |
| `Lts/DDS/Generic/subscriber_listener.cpp` | Minor fixes | Build cleanup |
| `Lts/Plugins/ComponentMonitor/...` | Minor fixes | Build cleanup |
| `Lts/Plugins/SituationMapPlugin/...` | Minor fixes | Build cleanup |
### Hauptrepo: qt6-migration-pipeline (main)
| Datei | Änderung | Grund |
|-------|----------|-------|
| `app/build_log4qt.sh` | Git clone + C++17 patches | 404 fix, C++17 compatibility |
---
## 🚧 Verbleibende Blocker
### 1. QJsonObject::toBinaryData / fromBinaryData
**Betroffen:** `Lts/Common/LtsScriptTimeline/track_content_widget.cpp`
**Problem:** Diese Methoden existieren in Qt6 nicht mehr
**Lösung:** Auf `QJsonDocument::toJson()` / `QJsonDocument::fromJson()` umstellen
### 2. QJsonObject Initializer List
**Betroffen:** `Lts/Proxies/TrainingAreaBase/training_area_telegrams.cpp:3168`
**Problem:** Member function call `header` ohne `()` in initializer list
**Lösung:** `header()` statt `header` aufrufen
### 3. Include-Pfade
**Warnung:** `/repo/build_off/Z/src/NGLLogger/Z/src/NGLLogger: No such file or directory`
**Lösung:** CMake include-Pfade prüfen
---
## 🔄 Nächste Schritte
1. **QJsonObject-Fixes:** toBinaryData/fromBinaryData → toJson/fromJson
2. **training_area_telegrams.cpp:** header() call fixen
3. **Include-Pfade:** NGLLogger-Pfad korrigieren
4. **Vollständigen Build testen:** BUILD_RTI=OFF und ON
5. **CTest ausführen:** Tests validieren
6. **Commits pushen:** Submodule zuerst, dann Hauptrepo
---
## 📌 Automatische Updates
Diese Datei wird automatisch aktualisiert:
- Alle 4 Stunden während aktiver Migrationsarbeit
- Bei Erreichen von Meilensteinen (Build erfolgreich, Tests bestanden, etc.)
- Automatischer Commit und Push ins Remote-Repo
---
## 🔗 Repository-Struktur
```
qt6-migration-pipeline (main)
├── qt-migration-legatus (submodule @ feature/qt6-migration-basis-modules)
│ ├── qt5-before/qt5-legatus-legacy (Qt5/C++11)
│ └── qt6-after/qt6-migrated-legatus (Qt6/C++17)
├── jenkins-ci-rme (submodule @ main)
└── rpmbuild (submodule @ main)
```
**Git Remote:** `git@devel:lifemaps/qt6-migration-pipeline.git`
**SSH Config:** `devel` → `gitea.life-maps.com:2223`