7.4 KiB
Known Issues - ddsfts and ProjectDataManagement
Overview
This document tracks known issues blocking the complete migration of the DDS module, specifically the ddsfts target and its dependency on ProjectDataManagement.
Issue #1: ddsfts Build Failure
Status
❌ Blocked - Cannot build until pdm.idl is available
Error Message
File pdm.idl not found
[Error from nddsgen codegen step]
Root Cause
The ddsfts target depends on IDL files from the ProjectDataManagement module. The file pdm.idl is not present in the migrated codebase because:
- ProjectDataManagement module has not been migrated yet
- The IDL file may not exist in the expected location
- CMake IDL search paths may not be configured correctly
Impact
- ddsfts library cannot be built
- Any code depending on ddsfts is blocked
- Complete DDS module validation is incomplete
Location
- Target:
Lts/DDS/FTS/CMakeLists.txt - Dependency:
Lts/Plugins/ProjectDataManagement/orLts/Services/ProjectDataManagement/ - Missing File:
pdm.idl
Resolution Options
Option A: Migrate ProjectDataManagement First (Recommended)
- Migrate ProjectDataManagement module to Qt6
- Ensure pdm.idl is in correct location
- Update ddsfts CMakeLists.txt to reference correct IDL path
- Rebuild ddsfts
Pros: Proper long-term solution
Cons: Requires additional migration work
Option B: Create Stub pdm.idl (Temporary)
- Create minimal pdm.idl stub in
include/DDS/FTS/or similar - Define only the types needed by ddsfts
- Document as temporary workaround
- Replace with real pdm.idl after ProjectDataManagement migration
Pros: Unblocks ddsfts build quickly
Cons: May not match actual IDL, could cause runtime issues
Option C: Exclude ddsfts from Build (Workaround)
- Wrap ddsfts in additional CMake conditional
- Build other DDS targets without ddsfts
- Document ddsfts as temporarily unavailable
Pros: Allows other DDS targets to be used
Cons: Incomplete DDS module
Investigation Steps
-
Search for pdm.idl in legacy version:
find qt-migration-legatus/qt5-before -name "pdm.idl" -
Check ProjectDataManagement directories:
ls -la Lts/Plugins/ProjectDataManagement/ ls -la Lts/Services/ProjectDataManagement/ -
Check ddsfts CMakeLists.txt for IDL references:
grep -n "pdm" Lts/DDS/FTS/CMakeLists.txt grep -n "IDL" Lts/DDS/FTS/CMakeLists.txt -
Search for pdm references in code:
grep -r "pdm" Lts/DDS/FTS/ --include="*.h" --include="*.cpp"
Issue #2: ProjectDataManagement Module Not Migrated
Status
⚠️ Not Started - Requires full Qt6 migration
Locations
Lts/Plugins/ProjectDataManagement/Lts/Services/ProjectDataManagement/
Known Dependencies
- ddsfts (blocks ddsfts build)
- ProjectEtsPlugin (likely depends on ProjectDataManagement)
- ProjectAhtcPlugin (likely depends on ProjectDataManagement)
- Other Project* plugins
Migration Checklist
Phase 1: Assessment
- Inventory all source files (.h, .cpp)
- Inventory all IDL files (.idl)
- Review CMakeLists.txt structure
- Identify Qt5 API usage
- Identify code generation requirements
Phase 2: Qt6 API Migration
- Replace QByteArray::number() → QString::number().toLatin1()
- Replace QRegExp → QRegularExpression
- Replace QDesktopWidget → QScreen
- Update signal/slot syntax if needed
- Update any deprecated Qt classes
Phase 3: CMake Configuration
- Change find_package(Qt5...) to find_package(Qt6...)
- Add qt_standardize_properties()
- Configure KTextTemplate for IDL codegen
- Fix include paths
- Set CMAKE_CXX_STANDARD to 17
Phase 4: RTI Integration
- Verify BUILD_RTI compatibility
- Check for RTI header conflicts
- Test with BUILD_RTI=ON
Phase 5: Validation
- Build without errors
- No moc warnings
- Run unit tests if available
- Verify IDL codegen output
Potential Issues
Qt5 API Usage (Expected)
Based on patterns in other modules, expect to find:
QByteArray::number()- Replace withQString::number().toLatin1()QRegExp- Replace withQRegularExpressionQApplication::desktop()- Replace withQGuiApplication::primaryScreen()
Code Generation
- May use KTextTemplate for IDL → C++ generation
- Check for AUTOMOC timing issues with generated files
- May need SKIP_AUTOMOC + manual QT6_WRAP_CPP pattern
Include Paths
- Legacy paths may reference
LtsUtils/instead ofLts/ - Check all
#includedirectives after migration
Issue #3: Project Plugin Qt6 Migration Issues
Status
⚠️ Pre-existing Issues - Unrelated to DDS/RTI migration
Affected Plugins
- ProjectEtsPlugin
- ProjectAhtcPlugin
- ProjectPluginBase
- Project*Plugin (other Project plugins)
Error Type
moc: Undefined interface
Root Cause Analysis Needed
- Check Q_PLUGIN_METADATA declarations
- Verify Q_DECLARE_INTERFACE in interface classes
- Check for missing Q_OBJECT macros
- Verify AUTOMOC is enabled
- Check for circular dependencies
Investigation Commands
# Find all Project plugins
find Lts/Plugins -name "*Project*Plugin" -type d
# Check for Q_PLUGIN_METADATA
grep -r "Q_PLUGIN_METADATA" Lts/Plugins/Project*Plugin/ --include="*.h"
# Check for Q_DECLARE_INTERFACE
grep -r "Q_DECLARE_INTERFACE" Lts/Plugins/Project*Plugin/ --include="*.h"
# Check CMakeLists.txt for AUTOMOC
grep -r "AUTOMOC" Lts/Plugins/Project*Plugin/CMakeLists.txt
Common Qt6 Plugin Issues
Issue: Q_PLUGIN_METADATA requires QJsonDocument
Qt5:
Q_PLUGIN_METADATA(IID "com.example.PluginInterface" FILE "plugin.json")
Qt6: May require additional QJsonDocument handling
Issue: Interface UUID Changes
Plugin interface UUIDs must be consistent between:
- Q_DECLARE_INTERFACE declaration
- Q_PLUGIN_METADATA IID string
- Plugin loader expectations
Issue: Plugin Loading
Qt6 may require both Q_PLUGIN_METADATA and Q_PLUGIN_IMPORT for proper plugin loading.
Resolution Priority
| Priority | Issue | Impact | Effort | Recommendation |
|---|---|---|---|---|
| 1 | ddsfts missing pdm.idl | High (blocks DDS) | Low-Medium | Create stub or migrate ProjectDataManagement |
| 2 | ProjectDataManagement migration | High (enables ddsfts) | High | Full migration required |
| 3 | Project plugin moc errors | Medium (plugins only) | Medium | Fix after DDS module complete |
Action Items
Immediate (Unblock ddsfts)
- Search for pdm.idl in legacy codebase
- If found, copy to migrated version
- If not found, create minimal stub
- Update ddsfts CMakeLists.txt if needed
- Rebuild ddsfts
Short-term (Complete DDS module)
- Migrate ProjectDataManagement module
- Verify all DDS targets build with BUILD_RTI=ON
- Document any remaining issues
Long-term (Complete Qt6 migration)
- Migrate all Project* plugins
- Fix moc "Undefined interface" errors
- Verify plugin loading at runtime
- Run full test suite
References
- BUILD_RTI Validation Report:
BUILD_RTI_VALIDATION_REPORT.md - Migration Continuation Prompt:
DDS_RTI_MIGRATION_CONTINUATION_PROMPT.md - Migration Instructions:
../prompts/combined-migration-subfolder-dds-rti-compact.prompt.md - RTI Configuration:
../cmake/FindRTI.cmake - Build Environment:
../app/Dockerfile