- GROUP10 (9 LTS Projects): All targets built successfully - GROUP11 (3 LTS Applications): Blocked by svcPdmClient dependency - svcPdmClient has pre-existing Qt6 MOC compatibility issues - Issues outside LTS Projects/Applications migration scope Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
5.7 KiB
Qt6 Migration - LTS Projects and Applications Validation Results
Date: 2026-09-25
Validation Scope: GROUP10 (LTS Projects) and GROUP11 (LTS Applications)
Build Configuration: BUILD_RTI=ON, BUILD_GRANTLEE=ON, BUILD_ARCGIS=ON
Executive Summary
✅ GROUP10 (LTS Projects): VALIDATION COMPLETE - SUCCESS
⚠️ GROUP11 (LTS Applications): BLOCKED - Pre-existing dependency issues
GROUP10 - LTS Projects (9 Targets)
Build Status: ✅ SUCCESS
All 9 LTS Project targets compiled successfully:
| # | Target | Status |
|---|---|---|
| 1 | ProjectGuezPlugin | ✅ Built |
| 2 | ProjectQatarMOUTPlugin | ✅ Built |
| 3 | ProjectQatarPlugin | ✅ Built |
| 4 | ProjectLegatusPlugin | ✅ Built |
| 5 | ProjectDemoPlugin | ✅ Built |
| 6 | ProjectL400P2Plugin | ✅ Built |
| 7 | ProjectComMasterPlugin | ✅ Built |
| 8 | ProjectAhtcPlugin | ✅ Built |
| 9 | ProjectEtsPlugin | ✅ Built |
Qt6 Migration Verification
- ✅ All CMakeLists.txt files use
Qt6::namespace (noQt5::references) - ✅ MOC generation successful for all project targets
- ✅ No compilation errors in project-specific code
- ✅ All targets link against Qt6 libraries correctly
GROUP11 - LTS Applications (3 Targets)
Build Status: ⚠️ BLOCKED
Blocking Issue: Dependency build failure in svcPdmClient (Services/ProjectDataManagement)
Affected Targets
| # | Target | Status | Blocker |
|---|---|---|---|
| 1 | OperatorApplication | ⚠️ Blocked | svcPdmClient |
| 2 | thp_viewer | ⚠️ Blocked | svcPdmClient |
| 3 | aarApp | ⚠️ Blocked | svcPdmClient |
Root Cause Analysis
The Applications depend on svcPdmClient library, which has pre-existing Qt6 MOC compatibility issues:
Error Location: build4/Lts/Services/ProjectDataManagement/pdm_dtc_impl.h and pdm_ftc_impl.h
Compilation Errors:
error: no type named 'FunctionReplyObject' in namespace 'ProjectDataManagement::Core'
error: no member named 'qt_static_metacall' in 'ProjectDataManagement::Core::Ftc'
error: no member named 'qt_metacast' in 'ProjectDataManagement::Core::Ftc'
error: no member named 'qt_metacall' in 'ProjectDataManagement::Core::Ftc'
error: member reference base type 'DtcImpl' is not a structure or union
error: member reference base type 'FtcImpl' is not a structure or union
Technical Details:
QMetaObject::activate<void>calls failing due to incorrect QObject inheritance- Missing
Q_OBJECTmacro or QObject base class in generated implementation classes - Type resolution issues with
FunctionReplyObject(may beFunctionReplyin Qt6) - MOC-generated code incompatible with Qt6 API changes
Scope Note: These issues exist in the Services layer (ProjectDataManagement), which is outside the scope of LTS Projects and Applications migration.
Docker Build Script Changes
File: new_docker_build.sh
Changes Made:
- Added
GROUP10_TARGETSarray (9 LTS Project targets) - Added
GROUP11_TARGETSarray (3 LTS Application targets) - Added
BUILD_GROUP10andBUILD_GROUP11configuration variables - Added CLI argument parsing:
--group10/--no-group10and--group11/--no-group11 - Added environment variable exports for Docker container
- Fixed unbound variable errors for BUILD_GROUP7-11
Validation Command:
cd qt-migration-legatus/qt6-after/qt6-migrated-legatus
BUILD_RTI=ON BUILD_GRANTLEE=ON BUILD_ARCGIS=ON \
./new_docker_build.sh --group10 --group11
Recommendations
Immediate Actions
- ✅ GROUP10 validation is complete - LTS Projects are successfully migrated to Qt6
- ⚠️ GROUP11 requires Services layer fixes - Address svcPdmClient MOC issues before Applications can be validated
Next Steps for GROUP11
To unblock LTS Applications validation, the following must be resolved:
-
Fix QObject inheritance in svcPdmClient:
- Verify
DtcImplclass inherits fromQObject - Verify
FtcImplclass inherits fromQObject - Add
Q_OBJECTmacro where missing
- Verify
-
Update MOC-generated code for Qt6:
- Fix
QMetaObject::activatesignature to match Qt6 API - Resolve
FunctionReplyObjecttype (check if renamed toFunctionReply) - Update
qt_static_metacall,qt_metacast,qt_metacallreferences
- Fix
-
Re-run validation:
BUILD_RTI=ON BUILD_GRANTLEE=ON BUILD_ARCGIS=ON \ ./new_docker_build.sh --group10 --group11
Technical Notes
Qt6 Migration Patterns Observed
Successful Patterns (GROUP10):
- Direct
Qt6::Core,Qt6::Widgets,Qt6::Networkusage - Standard MOC generation with Qt6 tools
- CMake
find_package(Qt6 COMPONENTS ...)working correctly
Problematic Patterns (Services Layer):
- Generated code from pdm_service.xml may need template updates
- Custom QObject-derived classes may need inheritance review
- Signal/slot connections may need syntax updates for Qt6
Build Configuration
Valid Build Variants:
- Only
ONvariants are valid per migration rules BUILD_RTI=ON,BUILD_GRANTLEE=ON,BUILD_ARCGIS=ON
Invalid Configurations:
OFFvariants not tested (not part of migration scope)
Conclusion
GROUP10 (LTS Projects) validation is COMPLETE and SUCCESSFUL. All 9 project targets compile and link correctly with Qt6.
GROUP11 (LTS Applications) validation is BLOCKED by pre-existing issues in the Services layer (svcPdmClient). These issues are outside the scope of the LTS Projects and Applications migration task and require separate attention to the ProjectDataManagement service code generation templates.
Generated by: Qt6 Migration Validation Pipeline
Validation Date: 2026-09-25
Script Version: new_docker_build.sh with GROUP10/11 support