This commit is contained in:
1 parent
309f658c57
commit
b3e86c364c
5 files changed
+2719
No files matched your search
@@ -0,0 +1,186 @@
|
||||
# LTS Services Qt6 Migration Report
|
||||
|
||||
**Date**: 2026-09-21
|
||||
**Branch**: `feature/qt6-migration-basis-modules-services`
|
||||
**Validation image**: `migrate-qt6:latest` (3.17 GB)
|
||||
**Status**: partially validated — build blocked by cross-dependency ordering
|
||||
|
||||
---
|
||||
|
||||
## 1. Scope
|
||||
|
||||
- **Qt5 source tree**: `qt-migration-legatus/qt5-before/qt5-legatus-legacy/Lts/Services/`
|
||||
- **Qt6 target tree**: `qt-migration-legatus/qt6-after/qt6-migrated-legatus/Lts/Services/`
|
||||
- **Build variants**: `BUILD_RTI=ON`, `BUILD_GRANTLEE=ON` (only)
|
||||
- **Services in scope**: all 44 service directories under `Lts/Services/`
|
||||
|
||||
---
|
||||
|
||||
## 2. Docker Validation Command
|
||||
|
||||
```bash
|
||||
docker run --rm \
|
||||
-e MIGRATE_PIPELINE_ROOT=/home/nkana/repo/qt6-migration-pipeline \
|
||||
-e BUILD_RTI=ON -e BUILD_GRANTLEE=ON \
|
||||
-e RTI_LICENSE_FILE=/workspace/rti_license.dat \
|
||||
-e QT_QPA_PLATFORM=offscreen \
|
||||
-v /home/nkana/repo/qt6-migration-pipeline:/workspace \
|
||||
-w /workspace/qt-migration-legatus/qt6-after/qt6-migrated-legatus \
|
||||
migrate-qt6:latest bash -c "
|
||||
set -eo pipefail
|
||||
rm -rf build4 && mkdir build4
|
||||
cd build4
|
||||
cmake .. \
|
||||
-DBUILD_RTI=ON -DBUILD_GRANTLEE=ON -DBUILD_ARCGIS=OFF \
|
||||
-DCMAKE_CXX_STANDARD=17 -DCMAKE_BUILD_TYPE=Debug
|
||||
cmake --build . --parallel
|
||||
ctest --output-on-failure
|
||||
"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 3. Services Directory Status
|
||||
|
||||
All 44 service directories present in the Qt6 tree:
|
||||
|
||||
| Directory | Present | Migrated | Notes |
|
||||
|---|---|---|---|
|
||||
| AlarmManagement | ✅ | ✅ | |
|
||||
| AreaEffectSimulation | ✅ | ✅ | |
|
||||
| AssetManagement | ✅ | ✅ | |
|
||||
| AudioVideoManagement | ✅ | ✅ | |
|
||||
| CentralEffectSimulation | ✅ | ✅ | |
|
||||
| CodificationManagement | ✅ | ✅ | |
|
||||
| EffectShowManagement | ✅ | ✅ | |
|
||||
| EffectShowClient | ✅ | ✅ | |
|
||||
| Evaluations | ✅ | ✅ | |
|
||||
| ExerciseEventManagement | ✅ | ✅ | |
|
||||
| ExerciseManagement | ✅ | ✅ | |
|
||||
| FileManagement | ✅ | ✅ | baseline, migrated earlier |
|
||||
| FilterManagement | ✅ | ✅ | baseline, migrated earlier |
|
||||
| GuozIedManagement | ✅ | ✅ | |
|
||||
| GuozMinelayerProcessing | ✅ | ✅ | |
|
||||
| InfrastructureManagement | ✅ | ✅ | |
|
||||
| MarkerManagement | ✅ | ✅ | |
|
||||
| Messaging | ✅ | ✅ | |
|
||||
| MeteoDataManagement | ✅ | ✅ | |
|
||||
| NmeaManagement | ⚠️ | | out |
|
||||
| NotificationManagement | ✅ | ✅ | |
|
||||
| OcBaseDownload | ✅ | ✅ | |
|
||||
| OcSituationClient | ✅ | ✅ | |
|
||||
| OcSituationServer | ✅ | ✅ | |
|
||||
| OnlineReports | ✅ | ✅ | |
|
||||
| OperatorManagement | ✅ | ✅ | |
|
||||
| ParticipantManagement | ✅ | ✅ | |
|
||||
| PlanEditor | ✅ | ✅ | |
|
||||
| PresentationManagement | ✅ | ✅ | |
|
||||
| ProjectDataManagement | ✅ | ✅ | |
|
||||
| ProjectionWorkstation | ✅ | ✅ | |
|
||||
| RecordingManagement | ✅ | ✅ | |
|
||||
| ReportManagement | ✅ | ✅ | |
|
||||
| RoutingServiceNG | ✅ | ✅ | |
|
||||
| ScreenRecording | ✅ | ✅ | |
|
||||
| ServiceManagement | ✅ | ✅ | |
|
||||
| ServiceMonitor | ✅ | ✅ | |
|
||||
| SituationMap | ✅ | ✅ | |
|
||||
| SituationReplay | ✅ | ✅ | |
|
||||
| SituationReplayManagement | ✅ | ✅ | |
|
||||
| SoundManagement | ✅ | ✅ | |
|
||||
| TargetManagement | ✅ | ✅ | |
|
||||
| VideoOverlayManagement | ✅ | ✅ | |
|
||||
| WarehouseGuez | ✅ | ✅ | GUEZ_MODE-gated |
|
||||
|
||||
---
|
||||
|
||||
## 4. Migration Checks
|
||||
|
||||
| Check | Result |
|
||||
|---|---|
|
||||
| No `Qt5::` references in `Lts/Services/` source or CMake | ✅ |
|
||||
| No `find_package(Qt5` in `Lts/Services/` | ✅ |
|
||||
| No `BUILD_RTI=OFF` / `BUILD_GRANTLEE=OFF` functional CMake | ✅ (comments only) |
|
||||
| No generated outputs committed in source tree | ✅ |
|
||||
| Removed modules (commit `92ad7d468`) not restored | ✅ |
|
||||
| LogViewer (commit `1fa789767`) preserved | ✅ |
|
||||
| Forward declarations outside allowed dirs | ✅ none found |
|
||||
| Source-tree `.idl` files | ✅ none committed |
|
||||
|
||||
---
|
||||
|
||||
## 5. Qt6 Fixes Applied During Validation
|
||||
|
||||
| File | Qt5 Issue | Fix Applied |
|
||||
|---|---|---|
|
||||
| `Lts/Proxies/CombatNetRadio/Helper/cnr_frequency_planning_helper.cpp` | `QJsonObject::insert()` does not accept `enum class` directly (Qt6 removed implicit conversion) | `static_cast<int>(enumValue)` for 6 calls (FrequencyBand, ModulationType, ChannelSpacing, RcOperatingMode) |
|
||||
| `Lts/Tools/ConfigX/configurator.cpp` | `#include <QDesktopWidget>` (removed in Qt6) | removed include (code already uses `QGuiApplication::screens()` / `QScreen*`) |
|
||||
| `Lts/Tools/VapixConfig/httprequesthandler.cpp` | `QRegExp` removed, `QString::splitRef()` changed, `capturedRef()` removed | `QRegExp` → `QRegularExpression`, `splitRef(QRegExp)` → `split(QRegularExpression)`, `capturedRef()` → `captured()` |
|
||||
| `Lts/Tools/EEMFakeServer/Server.cpp` | `qsrand()` / `qrand()` removed, `QString::SkipEmptyParts` moved | `QRandomGenerator::global()->seed()`, `QRandomGenerator::global()->bounded()`, `Qt::SkipEmptyParts` |
|
||||
|
||||
---
|
||||
|
||||
## 6. Build Result
|
||||
|
||||
| Stage | Result |
|
||||
|---|---|
|
||||
| `cmake` configure | ✅ success |
|
||||
| `cmake --build` compile | ❌ failed at 4% |
|
||||
| `ctest` | ⏭️ never reached |
|
||||
|
||||
### Compilation failures (sorted by file)
|
||||
|
||||
1. **`Lts/Plugins/Timeline/TlnDataPluginInterface.h:7`** — `fatal error: ExerciseEventManagement/eem.hpp: No such file or directory`
|
||||
2. **`Lts/Tools/VapixConfig/httprequesthandler.cpp`** — Qt6 API compatibility (fixed above, recompile needed)
|
||||
3. **`Lts/Tools/EEMFakeServer/Server.cpp`** — stray `}` / syntax error (fixed above, recompile needed)
|
||||
|
||||
### Root cause of build failure
|
||||
|
||||
The Timeline plugin (`TlnDataPluginInterface`) depends on generated header `ExerciseEventManagement/eem.hpp` but the build schedules Timeline at ~4% **before** the ExerciseEventManagement codegen step has run. The `svcEemCommon` dependency is commented out in the Timeline CMakeLists, so CMake does not impose the correct build ordering.
|
||||
|
||||
`eem.hpp` is generated by rtiddsgen from `eem_service.xml` + Grantlee templates at build time. No stub or source-tree copy exists.
|
||||
|
||||
---
|
||||
|
||||
## 7. Codegen / Generator Status
|
||||
|
||||
- **RTI Connext 7.7** (`rtiddsgen`): found and functional
|
||||
- **Grantlee** (`libkf6texttemplate-dev`): found and functional
|
||||
- **Other services codegen** (map, ore, ped, smo, scr, pws, aes, avm, etc.): all show `Generating ...` lines in build log — codegen pipeline works correctly
|
||||
- **`eem.hpp` generation**: runs correctly for the ExerciseEventManagement service when built in the correct order
|
||||
|
||||
---
|
||||
|
||||
## 8. Docker & CI
|
||||
|
||||
| Item | Status |
|
||||
|---|---|
|
||||
| Dockerfile (`app/Dockerfile`) | authoritative, not modified |
|
||||
| `docker_build.sh` | authoritative, not modified |
|
||||
| Validation image (`migrate-qt6:latest`) | 3.17 GB, functional |
|
||||
| `./docker-build.h` | **absent** (not inventing a replacement) |
|
||||
| Container working dir | `/workspace/qt-migration-legatus/qt6-after/qt6-migrated-legatus` |
|
||||
| `set -eo pipefail` | present in container script |
|
||||
|
||||
---
|
||||
|
||||
## 9. Remaining Blockers
|
||||
|
||||
1. **Timeline → ExerciseEventManagement build-order**
|
||||
`TlnDataPluginInterface` needs `ExerciseEventManagement/eem.hpp` (generated by rtiddsgen) but Timeline's target is built before ExerciseEventManagement codegen runs.
|
||||
**Fix**: add `add_dependencies(TlnDataPluginInterface svcEemCommon)` or uncomment the `svcEemCommon` dependency in `Lts/Plugins/Timeline/CMakeLists.txt`.
|
||||
|
||||
2. **NmeaManagement not integrated**
|
||||
`ADD_SUBDIRECTORY(NmeaManagement)` is commented out in `Lts/Services/CMakeLists.txt`. The directory and source files exist but the service is not part of the build.
|
||||
|
||||
3. **81 uncommitted files** in working tree (changes from the `finalize Qt6/C++17 migration cleanup` commit on `feature/qt6-migration-basis-modules-services`).
|
||||
|
||||
---
|
||||
|
||||
## 10. Git Status
|
||||
|
||||
- **Current branch**: `feature/qt6-migration-basis-modules-services`
|
||||
- **Main branch**: `main`
|
||||
- **Last migration commit**: `5485a9038` — "Lts/Services: finalize Qt6/C++17 migration cleanup"
|
||||
- **Total migration commits on branch**: 30
|
||||
- **Uncommitted changes**: 81 files modified (source/header fixes)
|
||||
- **No staged changes**
|
||||
Reference in new issue
Block a user