Files
qt-migration-legatus/qt6-after/qt6-migrated-legatus/DDS_MIGRATION_SUMMARY.md
T

4.3 KiB

DDS Migration Summary

Completed Tasks

1. Target Discovery

Discovered all 13 DDS CMake targets in Lts/DDS/:

  • Buildable targets (7): ddscore, svcCoreClient, ddsftccore, ddsfts, ddsgen, ddsQoS, ddsconnector
  • INTERFACE libraries (6): ddsdtc, ddsdts, ddsfts_connext, topic_type_plugin, routing_plugin, ddsfts_connext

2. Build Script Updates

Updated new_docker_build.sh GROUP1_TARGETS to include all 7 buildable DDS targets.

3. Compilation Fixes Applied

NGL Logger Fixes

  • Z/src/NGLLogger/INGLLogger.h: Fixed log macros to use ::NGL::INGLLogger namespace
  • Lts/DDS/Core/logger.h: Fixed LOGGER_T typedef
  • Lts/DDS/Core/logger.cpp: Fixed getLogger() to use NGLLoggerBootstrap
  • Lts/DDS/FTS/connext.h: Added m_logger member declarations

Core Namespace Fixes

  • Lts/DDS/Core/pacemaker.h: Fixed Core::PortType → Core::CorePortType
  • Lts/DDS/Core/topic_lock_master.h/.cpp: Fixed namespace qualifications for Dtc and LockedEntity
  • Lts/DDS/Core/pacemaker.cpp: Fixed omg::types::optional usage (.value() instead of ())

Generic/FTC Fixes

  • include/DDS/DTC/generic_dtc.h: Added explicit using declarations for inherited methods
  • Lts/DDS/DTC/generic_dtc_impl.h: Fixed Qt include order (before namespace declarations)
  • Lts/DDS/Generic/generic_data_reader.h: Fixed Qt include order, added TopicType typedef
  • include/DDS/Generic/generic_data_reader.h: Wrapped stub in #ifndef BUILD_RTI guard
  • Lts/DDS/FTC/generic_ftc_impl.h: Fixed QMetaMethod::invoke() signature for Qt6

Grantlee Template Fixes

  • Lts/Common/CodeGen/svc_dtc_impl.cpp.grantlee: Fixed getKey to use direct member access for RTI structs
  • Lts/Common/CodeGen/svc_ftc_impl.cpp.grantlee: Fixed FunctionReplyObject to use method calls

Build System Fixes

  • Lts/DDS/Core/CMakeLists.txt: Added MAKE_SVCCORECLIENT_LIB compile definition
  • Lts/DDS/CMakeLists.txt: Fixed subdirectory order (DTC before DDSConnector)
  • Lts/Common/CodeGen/codegen_simple.py: Added generic_dtc.h include to DtcGenerator
  • tests/test_migration_stubs.cpp: Fixed DDS namespace errors
  • new_docker_build.sh: Added INTEGRATION_TEST default variable

4. Build Results

  • All 7 buildable DDS targets compile successfully with BUILD_RTI=ON and BUILD_GRANTLEE=ON
  • CTest: 462/498 tests passed (93%)
  • 36 tests not run (DDS unit tests require proper build configuration)

Remaining Issues

DDS Unit Tests Not Building

The DdsUnitTests subdirectory (ddsGenericDataTests, ddsDataTopicTests, ddsFunctionTopicTests) is not being built because:

  1. CMake condition requires TARGET ddsgen AND TARGET ddsdtc AND TARGET ddsfts AND TARGET ddsQoS
  2. These targets exist but the condition may not be evaluating correctly

Qt5 SIGNAL/SLOT Syntax

File Lts/DDS/DdsUnitTests/function_topic_tests.cpp lines 107-108, 132-133 still use Qt5 SIGNAL/SLOT syntax that needs migration to Qt6 QOverload syntax.

Key Technical Findings

  1. RTI Struct Member Access: RTI-generated structs use direct member access (e.g., data.entityId), NOT method calls
  2. FunctionReplyObject: Unlike RTI structs, this Qt wrapper class uses methods (id(), str(), args(), etc.)
  3. Namespace Pollution: Qt includes must come BEFORE namespace declarations to prevent conflicts
  4. Include Path Order: CMake adds include/ before Lts/, causing stub headers to be found first
  5. Logger Pattern: Use NGL::NGLLoggerBootstrap::getNGLRootLogger().getNGLLogger("name")
  6. omg::types::optional: Requires .value() or operator* to access, not function call syntax ()

Files Modified (18 total)

  1. new_docker_build.sh
  2. Z/src/NGLLogger/INGLLogger.h
  3. Lts/DDS/Core/logger.h
  4. Lts/DDS/Core/logger.cpp
  5. Lts/DDS/Core/pacemaker.h
  6. Lts/DDS/Core/topic_lock_master.h
  7. Lts/DDS/Core/topic_lock_master.cpp
  8. Lts/DDS/FTS/connext.h
  9. Lts/DDS/Core/pacemaker.cpp
  10. include/DDS/DTC/generic_dtc.h
  11. Lts/DDS/DTC/generic_dtc_impl.h
  12. Lts/DDS/Generic/generic_data_reader.h
  13. include/DDS/Generic/generic_data_reader.h
  14. Lts/DDS/FTC/generic_ftc_impl.h
  15. Lts/Common/CodeGen/svc_dtc_impl.cpp.grantlee
  16. Lts/Common/CodeGen/svc_ftc_impl.cpp.grantlee
  17. Lts/Plugins/ExerciseManagement/Gui/ExerciseEdit/exm_edit_gui_plugin.cpp
  18. Lts/Plugins/ParticipantManagement/Gui/ParticipantEdit/tactical_organisation.cpp
  19. Lts/DDS/Core/CMakeLists.txt
  20. Lts/Common/CodeGen/codegen_simple.py
  21. Lts/DDS/CMakeLists.txt
  22. tests/test_migration_stubs.cpp