156 lines
6.7 KiB
Markdown
156 lines
6.7 KiB
Markdown
# 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<T>() 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**
|
|
```bash
|
|
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**
|
|
```bash
|
|
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
|
|
|
|
```bash
|
|
# 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 |