Document RTI Connext DDS 7.7.0 header bugs preventing C++23 build: - DDS_OctetSeq_get_contiguous_buffer (missing 's') - DDS_SEQUENCE_INITIALIZER brace initialization Workaround: BUILD_RTI=OFF until RTI provides C++23-compatible version Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Entire-Checkpoint: 01M0Q2920JAZDBK8GBJPAWCBFG
5.3 KiB
Qt5/C++11 to Qt6/C++23 Migration Status
Last Updated: 2026-08-22 12:45 Session: 9364ea1f-2ece-4ccb-8e2d-77e7a8886a06
📊 Overall Status
| Component | Status | Build | Tests | Notes |
|---|---|---|---|---|
| Lts/Common | ✅ Complete | ✅ | ✅ 1/1 | Fully migrated |
| Lts/DDS | 🟡 Structure only | ⚠️ BUILD_RTI=OFF | ? | RTI compatibility issues |
| Lts/Plugins | 🟡 Partial | ⚠️ BUILD_RTI=OFF | ? | 60 submodules |
| Lts/Projects | 🟡 Structure only | ⚠️ BUILD_RTI=OFF | ? | 5 submodules |
| Lts/Proxies | 🟡 Structure only | ⚠️ BUILD_RTI=OFF | ? | 13 submodules |
| Lts/Services | 🟡 Structure only | ⚠️ BUILD_RTI=OFF | ? | 47 submodules |
| TetraIF | 🟡 Partial | ⚠️ BUILD_RTI=OFF | ? | Migration in progress |
| Z Modules | 🟡 Partial | ⚠️ BUILD_RTI=OFF | ? | Some submodules done |
🚨 Known Issues
RTI Connext DDS 7.7.0 C++23 Compatibility (BLOCKER)
Issue: RTI Connext DDS 7.7.0 headers contain bugs incompatible with C++20+:
-
Wrong function name: Headers call
DDS_OctetSeq_get_contiguous_bufferbut correct name isDDS_OctetsSeq_get_contiguous_buffer(missing 's')- Affected files:
AckResponseData.hpp,CorePolicy.hpp
- Affected files:
-
C++20 brace initialization:
DDS_SEQUENCE_INITIALIZERrequires brace-enclosed initialization in C++20+- Affected files:
Vector.hpp,ContentFilteredTopicImpl.hpp,findImpl.hpp,discoveryImpl.hpp
- Affected files:
Workaround:
- Use C++17 standard (
-DCMAKE_CXX_STANDARD=17) - but this defeats the C++23 migration goal - Patch RTI headers (not recommended for production)
- Wait for RTI patch/newer version
Current Status: Building with BUILD_RTI=OFF to continue migration work. RTI-dependent modules will be built as stubs.
Files with RTI bugs:
/repo/external/rti_connext_dds-7.7.0/include/ndds/hpp/rti/sub/AckResponseData.hpp:162
/repo/external/rti_connext_dds-7.7.0/include/ndds/hpp/rti/core/policy/CorePolicy.hpp
/repo/external/rti_connext_dds-7.7.0/include/ndds/hpp/rti/core/Vector.hpp:68
ngl_codegen Dependency
Issue: ngl_codegen executable requires BUILD_GRANTLEE=ON (Grantlee5 is Qt5-based). The CODEGEN_IDL_SVC macro depends on ngl_codegen for IDL generation.
Workaround: Enable BUILD_GRANTLEE=ON temporarily for code generation, or pre-generate IDL files.
svcPdmCommon Target Ordering
Issue: Lts/Plugins/ProjectDataManagement/Gui/PdmComboBox references svcPdmCommon target before it's defined in Lts/Services/ProjectDataManagement.
Fix Required: Reorder CMakeLists.txt to process services before plugins when BUILD_RTI=ON.
✅ Completed Work
Build System Fixes (BUILD_RTI=OFF)
- LtsUtilsSettings export header: Changed to angle brackets include
- LtsWidgets CMakeLists.txt: Changed LtsUtilsSettings from PRIVATE to PUBLIC
- BatteryNotification: Removed unused QDesktopWidget include
- DDS Modules: Added proper BUILD_RTI guards to 6 CMakeLists.txt files
- Field naming: Renamed fields to
m_prefix intraining_area_telegrams.h - Target ordering: Added Lts/Services/ProjectDataManagement before Lts/Plugins/ProjectDataManagement for TetraIF
Git Operations
- Submodule
qt-migration-legatuson branchfeature/qt6-migration-basis-modules - Main repo remote corrected to
git@devel:lifemaps/qt6-migration-pipeline.git - Merge conflicts resolved
Infrastructure
- Docker image
migration-pipeline:ubuntu26.04with Qt 6.8.3 - RTI Connext DDS 7.7.0 installed at
/repo/external/rti_connext_dds-7.7.0 - CI workflow configured with
submodules: recursive
📝 Recent Changes
Commit: 2c0a0d3f (main repo)
- LtsUtilsSettings export header fix
- LtsWidgets PUBLIC link fix
- BatteryNotification QDesktopWidget removal
- DDS module BUILD_RTI guards
- training_area_telegrams.h field renaming
- CMakeLists.txt target ordering fix
Commit: c042faae (submodule)
- Basis modules migration
🔄 Next Steps
- Fix svcPdmCommon target ordering - Ensure services processed before plugins
- Continue module migration - Focus on non-RTI dependent modules
- Field access updates - Update all source files using renamed fields
- Automated status updates - Implement cron job for MIGRATION_STATUS.md
- RTI resolution - Contact RTI support for C++23 compatibility patch or workaround
🛠️ Build Commands
BUILD_RTI=OFF (Working)
docker run --rm -v $(pwd):/repo migration-pipeline:ubuntu26.04 \
cmake -S /repo/qt-migration-legatus/qt6-after/qt6-migrated-legatus \
-B /repo/build -G Ninja \
-DCMAKE_BUILD_TYPE=Debug \
-DCMAKE_PREFIX_PATH=/opt/Qt/6.8.3/gcc_64 \
-DBUILD_RTI=OFF
docker run --rm -v $(pwd):/repo migration-pipeline:ubuntu26.04 \
cmake --build /repo/build --parallel
BUILD_RTI=ON (Blocked by RTI C++23 issues)
# Currently fails due to RTI header bugs
# Would require C++17 or RTI header patches
📈 Migration Progress
- Modules fully migrated: 1 (Lts/Common)
- Modules with structure: 6 (DDS, Plugins, Projects, Proxies, Services, TetraIF partial)
- Build status: ✅ BUILD_RTI=OFF, ⚠️ BUILD_RTI=ON blocked
- Test status: 1/1 tests passing (Lts/Common)
Generated: 2026-08-22 12:45 Next auto-update: After 4 hours or at next milestone