255 lines
7.4 KiB
Markdown
255 lines
7.4 KiB
Markdown
# 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:
|
|
1. ProjectDataManagement module has not been migrated yet
|
|
2. The IDL file may not exist in the expected location
|
|
3. 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/` or `Lts/Services/ProjectDataManagement/`
|
|
- **Missing File:** `pdm.idl`
|
|
|
|
### Resolution Options
|
|
|
|
#### Option A: Migrate ProjectDataManagement First (Recommended)
|
|
1. Migrate ProjectDataManagement module to Qt6
|
|
2. Ensure pdm.idl is in correct location
|
|
3. Update ddsfts CMakeLists.txt to reference correct IDL path
|
|
4. Rebuild ddsfts
|
|
|
|
**Pros:** Proper long-term solution
|
|
**Cons:** Requires additional migration work
|
|
|
|
#### Option B: Create Stub pdm.idl (Temporary)
|
|
1. Create minimal pdm.idl stub in `include/DDS/FTS/` or similar
|
|
2. Define only the types needed by ddsfts
|
|
3. Document as temporary workaround
|
|
4. 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)
|
|
1. Wrap ddsfts in additional CMake conditional
|
|
2. Build other DDS targets without ddsfts
|
|
3. Document ddsfts as temporarily unavailable
|
|
|
|
**Pros:** Allows other DDS targets to be used
|
|
**Cons:** Incomplete DDS module
|
|
|
|
### Investigation Steps
|
|
|
|
1. **Search for pdm.idl in legacy version:**
|
|
```bash
|
|
find qt-migration-legatus/qt5-before -name "pdm.idl"
|
|
```
|
|
|
|
2. **Check ProjectDataManagement directories:**
|
|
```bash
|
|
ls -la Lts/Plugins/ProjectDataManagement/
|
|
ls -la Lts/Services/ProjectDataManagement/
|
|
```
|
|
|
|
3. **Check ddsfts CMakeLists.txt for IDL references:**
|
|
```bash
|
|
grep -n "pdm" Lts/DDS/FTS/CMakeLists.txt
|
|
grep -n "IDL" Lts/DDS/FTS/CMakeLists.txt
|
|
```
|
|
|
|
4. **Search for pdm references in code:**
|
|
```bash
|
|
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 with `QString::number().toLatin1()`
|
|
- `QRegExp` - Replace with `QRegularExpression`
|
|
- `QApplication::desktop()` - Replace with `QGuiApplication::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 of `Lts/`
|
|
- Check all `#include` directives 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
|
|
1. Check Q_PLUGIN_METADATA declarations
|
|
2. Verify Q_DECLARE_INTERFACE in interface classes
|
|
3. Check for missing Q_OBJECT macros
|
|
4. Verify AUTOMOC is enabled
|
|
5. Check for circular dependencies
|
|
|
|
### Investigation Commands
|
|
```bash
|
|
# 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:**
|
|
```cpp
|
|
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` |