Files
qt6-migration-pipeline/MIGRATION_STATUS.md
T
torstenandCopilot 6f56b9d71e
Qt6 Migration CI / migrate (push) Waiting to run
Update MIGRATION_STATUS.md with BUILD_RTI progress
- Document 4 BUILD_RTI compile errors fixed
- Note RTI C++23 compatibility status
- Record ngl_codegen/Grantlee5 dependency blocker

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Entire-Checkpoint: 01M0Q5C1SC4PAK08Q7205MV3HH
2026-08-23 13:16:24 +02:00

6.6 KiB

Qt5/C++11 to Qt6/C++23 Migration Status

Last Updated: 2026-08-22 13:30 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 (BLOCKER)

Issue: ngl_codegen executable requires BUILD_GRANTLEE=ON (Grantlee5 is Qt5-based). The CODEGEN_IDL_SVC macro depends on ngl_codegen for IDL generation.

Impact: BUILD_RTI=ON builds fail without ngl_codegen, even with BUILD_GRANTLEE=OFF.

Workaround:

  • Pre-generate IDL files from Qt5 build and copy to Qt6 build
  • Migrate codegen_grantlee to Qt6/Grantlee6 (major effort)
  • Enable BUILD_GRANTLEE=ON temporarily (requires Qt5 compatibility layer)

svcPdmCommon Target Ordering

Issue: Lts/Plugins/ProjectDataManagement/Gui/PdmComboBox references svcPdmCommon target before it's defined in Lts/Services/ProjectDataManagement.

Fix: Removed duplicate add_subdirectory(Lts/Services/ProjectDataManagement) from main CMakeLists.txt line 476. Services now processed before plugins.


✅ 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: Removed duplicate add_subdirectory for ProjectDataManagement

BUILD_RTI=ON Build Error Fixes

  1. generic_base.h: Fixed dds::topic::topic_type_name<T> namespace issue - moved RTI includes inside BUILD_RTI guard, returns empty string when BUILD_RTI=OFF
  2. wait_set_handler.h: Removed duplicate m_logger declarations (3→1)
  3. pub_sub_base.cpp: Fixed constructor initializer list syntax (. → ,) and added m_logger initialization
  4. training_area_telegrams.h: Fixed BatteryAlarm::id() return type conflict (pending verification)

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
  • Changes committed and pushed

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
  • RTI compile definitions updated: RTI_LINUX;RTI_UNIX;RTI_POSIX_THREADS

📝 Recent Changes

Commit: Pending (main repo)

  • generic_base.h: RTI namespace fix
  • wait_set_handler.h: Duplicate declaration removal
  • pub_sub_base.cpp: Initializer list syntax fix
  • training_area_telegrams.h: Field rename to m_ prefix
  • PdmComboBox CMakeLists.txt: BUILD_RTI guards with TARGET check
  • PdmDataPlugin CMakeLists.txt: BUILD_RTI guards
  • CMakeLists.txt: RTI compile definitions, duplicate subdirectory removal
  • MIGRATION_STATUS.md: Updated status

Commit: c042faae (submodule)

  • Basis modules migration

🔄 Next Steps

  1. Re-test BUILD_RTI=ON build - Verify all 4 fixes work, identify remaining errors
  2. Resolve ngl_codegen dependency - Decide on pre-generated IDL files vs. Grantlee6 migration
  3. Implement automated MIGRATION_STATUS.md updates - Cron job or CI trigger every 4 hours
  4. Continue module migration - Focus on non-RTI dependent modules
  5. Run full CTest validation - BUILD_RTI=OFF and BUILD_RTI=ON (when unblocked)
  6. Commit and push all changes - Submodule and main repo

🛠️ 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 ngl_codegen + RTI C++23 issues)

# Currently fails due to:
# 1. ngl_codegen not built (requires Grantlee5/Qt5)
# 2. RTI header C++23 incompatibility
# Would require C++17 or RTI header patches + codegen workaround

📈 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 (ngl_codegen + RTI headers)
  • Test status: 1/1 tests passing (Lts/Common)
  • Build errors fixed: 4 (generic_base.h, wait_set_handler.h, pub_sub_base.cpp, training_area_telegrams.h)

Generated: 2026-08-22 13:30 Next auto-update: After 4 hours or at next milestone