Files
qt-migration-legatus/qt6-after/qt6-migrated-legatus/GROUP10_VALIDATION_RESULTS.md
torstenandCopilot b18844a202 Document GROUP10 validation results
- 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>
2026-09-25 11:41:28 +00:00

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 (no Qt5:: 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_OBJECT macro or QObject base class in generated implementation classes
  • Type resolution issues with FunctionReplyObject (may be FunctionReply in 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:

  1. Added GROUP10_TARGETS array (9 LTS Project targets)
  2. Added GROUP11_TARGETS array (3 LTS Application targets)
  3. Added BUILD_GROUP10 and BUILD_GROUP11 configuration variables
  4. Added CLI argument parsing: --group10/--no-group10 and --group11/--no-group11
  5. Added environment variable exports for Docker container
  6. 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

  1. ✅ GROUP10 validation is complete - LTS Projects are successfully migrated to Qt6
  2. ⚠️ 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:

  1. Fix QObject inheritance in svcPdmClient:

    • Verify DtcImpl class inherits from QObject
    • Verify FtcImpl class inherits from QObject
    • Add Q_OBJECT macro where missing
  2. Update MOC-generated code for Qt6:

    • Fix QMetaObject::activate signature to match Qt6 API
    • Resolve FunctionReplyObject type (check if renamed to FunctionReply)
    • Update qt_static_metacall, qt_metacast, qt_metacall references
  3. 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::Network usage
  • 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 ON variants are valid per migration rules
  • BUILD_RTI=ON, BUILD_GRANTLEE=ON, BUILD_ARCGIS=ON

Invalid Configurations:

  • OFF variants 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