Files
qt6-migration-pipeline/MIGRATION_STATUS.md
T
torstenandCopilot 256cfb6d87
Qt6 Migration CI / migrate (push) Waiting to run
Update MIGRATION_STATUS.md with RTI C++23 compatibility blocker
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
2026-08-23 12:22:20 +02:00

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+:

  1. Wrong function name: Headers call DDS_OctetSeq_get_contiguous_buffer but correct name is DDS_OctetsSeq_get_contiguous_buffer (missing 's')

    • Affected files: AckResponseData.hpp, CorePolicy.hpp
  2. C++20 brace initialization: DDS_SEQUENCE_INITIALIZER requires brace-enclosed initialization in C++20+

    • Affected files: Vector.hpp, ContentFilteredTopicImpl.hpp, findImpl.hpp, discoveryImpl.hpp

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)

  1. LtsUtilsSettings export header: Changed to angle brackets include
  2. LtsWidgets CMakeLists.txt: Changed LtsUtilsSettings from PRIVATE to PUBLIC
  3. BatteryNotification: Removed unused QDesktopWidget include
  4. DDS Modules: Added proper BUILD_RTI guards to 6 CMakeLists.txt files
  5. Field naming: Renamed fields to m_ prefix in training_area_telegrams.h
  6. Target ordering: Added Lts/Services/ProjectDataManagement before Lts/Plugins/ProjectDataManagement for TetraIF

Git Operations

  • Submodule qt-migration-legatus on branch feature/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.04 with 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

  1. Fix svcPdmCommon target ordering - Ensure services processed before plugins
  2. Continue module migration - Focus on non-RTI dependent modules
  3. Field access updates - Update all source files using renamed fields
  4. Automated status updates - Implement cron job for MIGRATION_STATUS.md
  5. 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