Qt6 Migration CI / migrate (push) Waiting to run
Session 009 results: - BUILD_RTI=ON DDS core components build successfully - libddsconnector.so created and linked - 6 files changed to fix RTI header includes and logger initialization - C++17 standard enforced due to RTI DDS 7.7.0 incompatibility with C++20+ Document includes: - Complete build validation summary - Technical decisions (C++17 enforcement, RTI integration pattern) - Migration progress by module - Next steps and timeline - Auto-update policy (every 4 hours / milestones) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Entire-Checkpoint: 01M0R16WYSYYXV34YR8Q4B1T3H
238 lines
7.6 KiB
Markdown
238 lines
7.6 KiB
Markdown
# Qt5/C++11 → Qt6/C++17 Migration Status
|
|
|
|
**Last Updated**: 2026-08-22 12:45
|
|
**Session**: 009-build-rti-dds-guard-fixes-comp
|
|
**Branch**: main → `qt-migration-legatus` submodule → `feature/qt6-migration-basis-modules`
|
|
|
|
---
|
|
|
|
## 📊 Current Status
|
|
|
|
### Build Validation Summary
|
|
|
|
| Configuration | Status | Notes |
|
|
|---------------|--------|-------|
|
|
| **BUILD_RTI=OFF** | ✅ **SUCCESS** (0 errors) | Completed in previous session |
|
|
| **BUILD_RTI=ON** | ✅ **DDS Core SUCCESS** | libddsconnector.so built successfully |
|
|
| **C++ Standard** | **C++17** | Enforced due to RTI DDS 7.7.0 incompatibility with C++20+ |
|
|
|
|
### Latest Commit
|
|
|
|
- **Submodule**: `d7c8c9e6` → `feature/qt6-migration-basis-modules`
|
|
- **Main Repo**: `4340d47a` → `main`
|
|
- **Changes**: BUILD_RTI=ON DDS header includes and logger initialization fixes
|
|
|
|
---
|
|
|
|
## ✅ Completed Work
|
|
|
|
### Session 009: BUILD_RTI=ON DDS Fixes
|
|
|
|
#### Fixed Files (6 files changed, 22 insertions, 20 deletions)
|
|
|
|
1. **Lts/DDS/Generic/dynamic_data_reader.h**
|
|
- Added `#include <rti/core/xtypes/DynamicDataImpl.hpp>`
|
|
- Resolved incomplete type error when deleting `DynamicDataImpl*` pointers
|
|
- Added `m_logger` member variable declaration
|
|
|
|
2. **Lts/DDS/DTS/generic_dts_impl.h**
|
|
- Added `m_logger` member variable declaration (`LOGGER_T&`)
|
|
|
|
3. **Lts/DDS/DDSConnector/pub_sub_base.cpp**
|
|
- Fixed logger initialization pattern
|
|
- Changed from non-existent `NGL::getNGLLogger()` to `NGL::NGLLoggerBootstrap::getNGLRootLogger().getNGLLogger()`
|
|
|
|
4. **Lts/Common/LtsSession/lts_session_data_dds.h**
|
|
- Added `DataPluginBase::Interface` forward declaration to both `#ifdef BUILD_RTI` and `#else` blocks
|
|
- Ensures consistent compilation across both build configurations
|
|
|
|
5. **Lts/Common/LtsUtils/LtsUtilsCore/CMakeLists.txt**
|
|
- Fixed include path from `/..` to `/../..` for `LtsUtilsCoreHeaderOnly` target
|
|
|
|
6. **tests/CMakeLists.txt**
|
|
- Moved Grantlee test filtering BEFORE executable creation
|
|
- Prevents build failures when Grantlee is disabled
|
|
|
|
#### Build Results
|
|
|
|
```
|
|
✅ BUILD_RTI=OFF: 0 errors, 0 warnings (new)
|
|
✅ BUILD_RTI=ON: DDS core components compile successfully
|
|
- libddsconnector.so created
|
|
- ddsconnector library links successfully
|
|
⚠️ Remaining errors in unrelated modules (pre-existing):
|
|
- IsmDataPluginInterface: linker error -lsvcIsmCommon
|
|
- IsmShared: linker error -lsvcIsmCommon
|
|
- BuildingControlBsm: svctabcommon_export.h not found
|
|
```
|
|
|
|
### Session 008: BUILD_RTI=OFF Validation
|
|
|
|
- Fixed Qt6 API compatibility issues (~558 QJsonObject initializer list fixes)
|
|
- Fixed Header struct member access patterns
|
|
- Fixed BatteryState/BatteryAlarm toJson()/fromJson() methods
|
|
- Fixed UAVAction, UAVStatus, and other telegram methods
|
|
- Added missing `#include <iomanip>` to lts_coordinate.cpp
|
|
- Fixed Qt6 include paths throughout codebase
|
|
- **Result**: 0 errors, only pre-existing warnings remain
|
|
|
|
---
|
|
|
|
## 🎯 Key Technical Decisions
|
|
|
|
### C++17 Standard Enforcement
|
|
|
|
**Decision**: All build configurations enforce C++17 standard.
|
|
|
|
**Rationale**: RTI Connext DDS 7.7.0 has known header bugs with C++20/C++23 that cause compilation failures. While Qt 6.10.2 fully supports C++23, the RTI dependency is a hard blocker.
|
|
|
|
| Component | C++14 | C++17 | C++20 | C++23 |
|
|
|-----------|-------|-------|-------|-------|
|
|
| RTI Connext DDS 7.7.0 | ✅ | ✅ | ❌ | ❌ |
|
|
| Qt 6.10.2 | ✅ | ✅ | ✅ | ✅ |
|
|
| **Project Standard** | - | **✅** | - | - |
|
|
|
|
**Impact**: All CMakeLists.txt, presets, toolchains, and compiler flags unified to C++17.
|
|
|
|
### RTI DDS Integration Pattern
|
|
|
|
**Strategy**: RTI Connext DDS is treated as an optional dependency with clean separation:
|
|
|
|
1. **BUILD_RTI=OFF**: All RTI code excluded via `#ifdef BUILD_RTI` guards
|
|
2. **BUILD_RTI=ON**: RTI headers included with stable guards/stubs
|
|
3. **No vendor header patches**: RTI headers used as-is, compatibility handled in wrapper code
|
|
4. **Forward declarations**: Minimize header dependencies for faster compilation
|
|
|
|
---
|
|
|
|
## 📋 Migration Progress
|
|
|
|
### Completed Modules
|
|
|
|
| Module | Status | BUILD_RTI=OFF | BUILD_RTI=ON | Notes |
|
|
|--------|--------|---------------|--------------|-------|
|
|
| Lts/Common | ✅ Complete | ✅ | ✅ | All submodules compile |
|
|
| Lts/DDS/Core | ✅ Complete | ✅ | ✅ | DDS core infrastructure |
|
|
| Lts/DDS/DTS | ✅ Complete | ✅ | ✅ | Generic DTS implementation |
|
|
| Lts/DDS/Generic | ✅ Complete | ✅ | ✅ | Dynamic data handling |
|
|
| Lts/DDS/DDSConnector | ✅ Complete | ✅ | ✅ | Pub/sub base classes |
|
|
| Lts/DDS/Discovery | 🟡 Partial | ✅ | ⏳ | Pending full validation |
|
|
| TetraIF | 🟡 Partial | ⏳ | ⏳ | Migration in progress |
|
|
| Z-Modules | 🟡 Partial | ⏳ | ⏳ | Some submodules complete |
|
|
|
|
### Remaining Modules
|
|
|
|
- Lts/Plugins (60 submodules)
|
|
- Lts/Projects (5 submodules)
|
|
- Lts/Proxies (13 submodules)
|
|
- Lts/Services (47 submodules)
|
|
- TetraIF (completion)
|
|
- Z-Modules (completion)
|
|
|
|
---
|
|
|
|
## 🔧 Infrastructure
|
|
|
|
### Git Configuration
|
|
|
|
```
|
|
Main Repo: git@devel:lifemaps/qt6-migration-pipeline.git (main)
|
|
Submodule: git@devel:lifemaps/qt-migration-legatus.git (feature/qt6-migration-basis-modules)
|
|
SSH Config: devel → gitea.life-maps.com:2223 (IdentityFile: ~/.ssh/twi-devel.gitea)
|
|
```
|
|
|
|
### Docker Build Environment
|
|
|
|
```bash
|
|
Image: migration-pipeline:ubuntu26.04
|
|
Base: Ubuntu 26.04
|
|
Qt: 6.10.2
|
|
CMake: 3.16+
|
|
C++: 17 (enforced)
|
|
RTI: Connext DDS 7.7.0
|
|
```
|
|
|
|
### Build Commands
|
|
|
|
```bash
|
|
# BUILD_RTI=OFF (default)
|
|
docker run --rm -v $(pwd):/repo migration-pipeline:ubuntu26.04 \
|
|
cmake --build /repo/build --parallel
|
|
|
|
# BUILD_RTI=ON
|
|
docker run --rm -v $(pwd):/repo migration-pipeline:ubuntu26.04 \
|
|
cmake --build /repo/build-rti --parallel
|
|
```
|
|
|
|
---
|
|
|
|
## ⏭️ Next Steps
|
|
|
|
### Immediate (Next 4 hours)
|
|
|
|
1. ⏳ **Resolve non-DDS build issues**
|
|
- IsmDataPluginInterface: Fix -lsvcIsmCommon linker dependency
|
|
- IsmShared: Fix -lsvcIsmCommon linker dependency
|
|
- BuildingControlBsm: Fix svctabcommon_export.h include path
|
|
|
|
2. ⏳ **Complete Lts/DDS module validation**
|
|
- Build and test remaining DDS submodules
|
|
- Verify integration with Qt6 event loop
|
|
|
|
3. ⏳ **Update MIGRATION_STATUS.md**
|
|
- Auto-commit every 4 hours or at milestones
|
|
- Track build status and blockers
|
|
|
|
### Short-term (This week)
|
|
|
|
4. ⏳ **Resume Lts module migration**
|
|
- Lts/Plugins: Prioritize core functionality submodules
|
|
- Lts/Proxies: Complete TrainingAreaBase and related modules
|
|
- Lts/Services: Address InfrastructureManagement dependencies
|
|
|
|
5. ⏳ **TetraIF completion**
|
|
- Finish Qt6 migration
|
|
- Validate with existing tests
|
|
|
|
6. ⏳ **Z-Modules completion**
|
|
- Identify remaining unmigrated submodules
|
|
- Complete migration and validation
|
|
|
|
### Medium-term (Next 2 weeks)
|
|
|
|
7. ⏳ **Full build validation**
|
|
- Complete BUILD_RTI=ON with all modules
|
|
- Integration testing with RTI DDS
|
|
|
|
8. ⏳ **CI/CD pipeline**
|
|
- Validate GitHub Actions workflow
|
|
- Ensure submodule checkout works correctly
|
|
- Test artifact generation
|
|
|
|
---
|
|
|
|
## 📝 Auto-Update Policy
|
|
|
|
This document is automatically updated:
|
|
- **Every 4 hours** during active migration work
|
|
- **At each milestone** (successful build, module completion, blocker resolution)
|
|
- **On every commit** to main branch or submodule
|
|
|
|
**Automation**: Manual updates committed with migration work until automation script is implemented.
|
|
|
|
---
|
|
|
|
## 📞 Contact & References
|
|
|
|
- **Repository**: `lifemaps/qt6-migration-pipeline`
|
|
- **Submodule**: `lifemaps/qt-migration-legatus`
|
|
- **Branch**: `feature/qt6-migration-basis-modules`
|
|
- **Session Log**: Checkpoints 001-009 in `.git/` directory
|
|
- **Migration Scripts**: `./migration/`, `./final-migration/`
|
|
|
|
---
|
|
|
|
**Generated**: 2026-08-22 12:45
|
|
**Session**: 009-build-rti-dds-guard-fixes-comp
|
|
**Status**: BUILD_RTI=ON DDS Core ✅ | Non-DDS Issues ⏳
|