Author SHA1 Message Date
torsten 882a9d57e9 b18844a20 (HEAD -> feature/migrate-lts-projects-and-application) 2026-09-25 11:43:24 +00:00
torsten 001f95695c Adds submod HEAD: Fix: Add BUILD_GROUP7-11 default initializations 2026-09-25 08:47:28 +00:00
torsten a47d5f3aa4 Merge branch 'main' of devel:lifemaps/qt6-migration-pipeline into feature/migrate-lts-projects-and-application 2026-09-25 08:45:37 +00:00
torsten ea90652fd4 Adds migration for lts/projects and lts/application (tbc)
Entire-Checkpoint: 01M3BV674BDGYRJJJCMHP5ZBCF
2026-09-25 08:33:54 +00:00
torstenandCopilot 5f59c0e5df Update qt6-migrated-legatus submodule with GROUP10/11 build groups
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Entire-Checkpoint: 01M3BS0RSZTDARGS72H96NEY8K
2026-09-25 07:55:59 +00:00
torsten b12eae9b6a Add Group 9 (R,S,T,V,W) LTS Tools migration support 2026-09-24 16:47:13 +00:00
torsten c8efdeb092 Group 8 migration: Add build script support and CTest infrastructure 2026-09-24 16:37:16 +00:00
torsten 4c30e54972 Qt6 migration: Group 7 tools (A,B,C,E,I directories) 2026-09-24 16:28:43 +00:00
torstenandCopilot 337e7533e3 Update qt-migration-legatus submodule to Group 6 migration commit
- Includes --group6 build support
- Adds CTest tests for 11 LTS Tools
- Fixes Qt6 migration bugs in DBAdministration and DBUpdate
- 3 tools (DBAdministration, DBOperatorSettingsRemover, DBUpdate) build successfully
- 8 tools blocked by pre-existing Group 3 (ExerciseManagement) errors

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Entire-Checkpoint: 01M37DQ5D9Q6860KK1AT0FWNE0
2026-09-23 15:21:32 +00:00
torsten 3e6a83285f Adds new HEAD in this developing branch feature/migrate-lts-tools-d-and-l 2026-09-23 13:20:33 +00:00
3 changed files with 782 additions and 1 deletions

No files matched your search

@@ -0,0 +1,377 @@
# Strict Qt6 Migration Prompt: CMake targets in predefined folders:
./Lts/Projects
./Lts/Application
This prompt is binding task context. Keep changes minimal, scoped, and reproducible.
## Required base prompt
Before making changes, read and apply:
- ./prompts/combined-migration-subfolder-rti-compact.prompt.md
- ./prompts/combined-migration-compact.prompt.md
If these prompts are stricter, follow them. This prompt overrides them only for build variants: use ON variants only. Do not pursue OFF variants.
## Module in scope
Migrate only:
- cmake targets under these predefined folders:
./Lts/Projects
./Lts/Application
From:
- ./qt-migration-legatus/qt5-before/qt5-legatus-legacy
To:
- ./qt-migration-legatus/qt6-after/qt6-migrated-legatus
Do not migrate sibling tools or unrelated modules.
## Mandatory build variants
Only these variants are valid:
- BUILD_RTI=ON
- BUILD_GRANTLEE=ON
- BUILD_ARCGIS=ON
Forbidden:
- BUILD_RTI=OFF
- BUILD_GRANTLEE=OFF
- BUILD_ARCGIS=OFF
Rules:
- Do not implement, fix, preserve, test, or validate OFF variants.
- Do not add CMake logic, tests, stubs, or fallbacks for OFF variants.
- Do not report OFF variants as supported or partially supported.
- Validation must use BUILD_RTI=ON and BUILD_GRANTLEE=ON and BUILD_ARCGIS=ON.
## Branches and trees
Qt6 target branch:
- feature/migrate-lts-projects-and-application
Qt5 legacy branch, if comparison is needed:
- story/qt6-migration
Legacy source tree:
- ./qt-migration-legatus/qt5-before/qt5-legatus-legacy
Qt6 target tree:
- ./qt-migration-legatus/qt6-after/qt6-migrated-legatus
Work in the Qt6 target tree only. Do not modify the Qt5 legacy tree.
## Scope rules
Touch files outside the targets directories only when directly required to configure, generate, build, link, test, or validate these targets.
Allowed outside-scope changes:
- parent CMakeLists.txt entries for these targets
- central CMake helper fixes required by these targets
- shared include path fixes required by these targets
- RTI, codegen, ndsgen, KTextTemplate, or Grantlee integration fixes required by these targets
- test infrastructure needed by tests for these targets
- new_docker_build.sh changes needed to run those tests
- minimal Jenkins CI discovery or policy updates needed for those tests
- relocation of required stubs or forward declarations to allowed directories
Not allowed:
- restoring removed modules
- reintroducing stale dependencies on removed modules
- removing or disabling active modules to hide failures
- disabling targets instead of fixing root causes
- broad refactoring, cleanup, renaming, or modernization
- warning suppression instead of fixing causes
- committing generated files
- consuming generated outputs from the source tree
- fake success, dummy files, handwritten generated replacements, mocks, placeholders, or generated-output stubs
## CMake targets
- under folder ./qt-migration-legatus/qt6-after/qt6-migrated-legatus/
./Lts/Projects
./Lts/Application
- Discover real CMake targets defined in the predefined folders.
- Learn options of script ./qt-migration-legatus/qt6-after/qt6-migrated-legatus/new_docker_build.sh to improve peformance of migration process
- Reuse prebuilt migration image as much as possible
- Add every required CMake target to ./qt-migration-legatus/qt6-after/qt6-migrated-legatus/new_docker_build.sh so the validation container builds or validates it.
- Add new --groupXYZ options for required CMake targets where XYZ refers to valid integers
- Add required apt packages to new_docker_build.sh
- Do not invent CMake targets under perdefined folders.
- Do not add targets that do not exist.
- If a folder does not exist, has no CMake targets, or a target is intentionally out of scope, report that fact and the reason.
- Do not weaken validation to make CMake targets under predefined folders pass.
## Preservation rules
Preserve module removals from commit:
- 92ad7d468, "remove all unneeded module listed from Niklas"
Do not restore removed modules, files, targets, directories, or dependencies.
Preserve LogViewer reinsert from commit:
- 1fa789767, "Added LogViewer again"
Do not remove, disable, or break LogViewer integration.
Preserve prior IDL warning fixes from commit:
- be912de9d, "Removes .IDL warnings: multiple enum definitons and builtin-type collisions"
Do not blindly replay that commit. Use it only as reference. Do not reintroduce removed modules.
IDL regressions to avoid:
- multiple enum definitions
- duplicate enumerators
- builtin type or keyword collisions
Check first for duplicate inputs, stale paths, removed-module references, source-tree generated outputs, source/build-tree confusion, and repeated IDL definitions before treating an issue as semantic IDL conflict.
## Stubs and forward declarations
Any required existing stub, compatibility declaration, or forward declaration must live only under:
- ./qt-migration-legatus/qt6-after/qt6-migrated-legatus/forward-declarations/
- ./qt-migration-legatus/qt6-after/qt6-migrated-legatus/include/
Rules:
- Do not leave such files in service directories unless they are real service source files.
- Do not create or keep stubs for forbidden OFF variants.
- Do not use stubs or forward declarations as replacements for real RTI, ndsgen, KTextTemplate, or Grantlee outputs in ON builds.
- Report every moved, removed, or newly referenced stub/forward declaration.
## Migration checks
For each cmake target, inspect and migrate only as needed:
- source and header files
- CMakeLists.txt and parent CMake registration
- ui, qrc, resource, plugin, and service metadata
- RTI IDL, ndsgen, KTextTemplate, and Grantlee inputs/templates
- tests directly tied to these targets
Fix only real Qt6/C++17 build issues, such as:
- Qt module imports and target links
- moc, uic, and rcc handling
- QRegExp to QRegularExpression when required
- QTextCodec replacement when required
- QDesktopWidget or QApplication::desktop() replacement when required
- QString, QVariant, QMetaType, QDateTime, QAction, QMenu, signal/slot, enum, plugin, or metadata compatibility issues when required
No opportunistic refactoring or style cleanup.
## Qt link rules
No active target in the Qt6 tree may link Qt5 imported targets.
Search for and fix active uses of:
- Qt5::
- find_package(Qt5
- QT5_
- Qt5Core
- Qt5Widgets
- Qt5Network
Use Qt6 equivalents. Prefer central CMake helper fixes when the issue is central.
## Code generation rules
If generated files are required:
- reconstruct the real legacy generation flow
- generate into the build tree
- consume from the build tree
- list complete OUTPUT and BYPRODUCTS
- set correct DEPENDS and MAIN_DEPENDENCY where useful
- use deterministic WORKING_DIRECTORY
- use VERBATIM
- wire generated sources with target_sources
- wire generated include dirs with target_include_directories
- ensure compilation depends on generation
- ensure incremental rebuilds trigger on input/template changes
Never commit generated .idl, .h, .hpp, or .cpp outputs. Never consume generated outputs from the source tree. Never fabricate generated outputs.
## Tests
For every C++ code change, add three meaningful CTest tests where feasible.
Rules:
- tests must validate changed behavior, not only compilation
- tests must be registered with CTest
- tests must run with BUILD_RTI=ON and BUILD_GRANTLEE=ON and BUILD_ARCGIS=ON
- do not add OFF-variant tests
- use deterministic tests without host-local paths
- if three meaningful tests are impossible, add the maximum meaningful set and explain why
- ./qt-migration-legatus/qt6-after/qt6-migrated-legatus/new_docker_build.sh changes needed to run those tests
- ./qt-migration-legatus/qt6-after/qt6-migrated-legatus/new_docker_build.sh changes needed to build or validate required CMake targets under folder ./qt-migration-legatus/qt6-after/qt6-migrated-legatus/Lts/Viewer
Preferred location:
- ./qt-migration-legatus/qt6-after/qt6-migrated-legatus/tests
Use policy-compatible names, for example:
- test_<name>.cpp
- <name>_test.cpp
- <name>test.cpp
- <name>gtest.cpp
## Docker and CI
Authoritative migration Dockerfile:
- ./app/Dockerfile
Authoritative validation script:
- ./qt-migration-legatus/qt6-after/qt6-migrated-legatus/new_docker_build.sh
Do not use other Dockerfiles as task authority.
Validation container expectations:
- repository root at /repo, or the script's documented mount path
- external dependencies under /repo/external, or the script's documented equivalent
- RTI 7.7 at /repo/external/rti_connext_dds-7.7.0, or documented equivalent
- ./rti_license.dat mounted read-only if RTI requires it
- no developer-local paths
Jenkins CI must be able to discover and run the new tests, or verify that new_docker_build.sh runs them. Inspect and minimally update only if needed:
- ./qt-migration-legatus/ci/Dockerfile.*
- ./qt-migration-legatus/ci/check_pr_policies.py
### External dependencies to be mapped into Docker container
- `./external`
- expected subfolders:
- `./external/ArcGIS`
- `./external/GeographicLib`
- `./external/rti_connext_dds-7.7.0`
### RTI license
- `./rti_license.dat`
## Required procedure
1. Inspect repository state, branch, working tree, submodules, required prompts, service paths, and forward-declaration directories.
2. Compare Qt5 source targets with Qt6 targets. Classify files as already migrated, missing, stale, generated, intentionally removed, build-only, or needing Qt6 adaptation.
3. Identify dependencies, generated inputs, Qt modules, parent CMake entries, removed-module references, LogViewer interactions, and required stub/forward-declaration relocations.
4. Apply the smallest valid migration changes.
5. Add required CTest tests for C++ changes.
6. Review RTI, ndsgen, KTextTemplate, and Grantlee generation paths.
7. Check regressions: Qt5 links, removed modules, LogViewer, IDL warnings, source-tree generated consumption, stale artifacts, and misplaced stubs.
8. Validate in Docker with BUILD_RTI=ON and BUILD_GRANTLEE=ON.
9. Run CTest in the validated build directory.
10. Check Jenkins/policy compatibility.
11. Report factual status.
Do not overwrite uncommitted user changes. If they block safe work, report the blocker.
## Required validation
From:
- ./qt-migration-legatus/qt6-after/qt6-migrated-legatus
Run:
```bash
BUILD_RTI=ON BUILD_GRANTLEE=ON BUILD_ARCGIS=ON ./new_docker_build.sh
```
CTest must run as part of validation. If a direct clean build is useful, use:
```bash
cmake -S /repo/qt-migration-legatus/qt6-after/qt6-migrated-legatus -B /repo/build-rti-on-grantlee-on -G Ninja -DCMAKE_BUILD_TYPE=Debug -DBUILD_RTI=ON -DBUILD_GRANTLEE=ON -DBUILD_ARCGIS=ON
cmake --build /repo/build-rti-on-grantlee-on --parallel
ctest --test-dir /repo/build-rti-on-grantlee-on --output-on-failure
```
Also check whether this file exists and run it only if present:
```bash
./new_docker-build.h
```
If it is absent or a typo, report that. Do not invent a replacement.
Do not run or validate OFF variants.
## Success criteria
Success requires:
- cmake targets migrated or confirmed already correct
- cmake targets included in the Qt6 build
- configure, build, and CTest pass with BUILD_RTI=ON and BUILD_GRANTLEE=ON and BUILD_ARCGIS=ON
- new_docker_build.sh runs the relevant tests and fails on test failure
- Jenkins/policy discovery accepts the new tests and validation changes
- no active Qt5 imported target links remain for these targets
- generated outputs are build-tree only and freshly produced when required
- no generated outputs are committed or consumed from the source tree
- no fake generated files, dummy files, mocks, placeholders, or stubbed generated outputs exist
- required stubs/forward declarations are only in allowed directories
- removed modules remain removed
- LogViewer remains preserved
- RTI/codegen and Grantlee/KTextTemplate success is real, not stale or faked
## If blocked
Do not fake success. Report:
- failing command
- key error output
- affected service
- category: project, path, merge, CMake, Qt API, codegen, Docker, RTI/license, Grantlee/KTextTemplate, ArcGIS, test, CTest, Jenkins CI, stub relocation, or environment
- what was fixed safely
- what remains blocked
- whether stale artifacts were ruled out
- whether generated files were involved
- exact missing files, targets, or generator step
- whether tests and CTest integration succeeded
- whether Docker validation and Jenkins discovery succeeded
## Final report
Keep it short. Include:
- status: validated, partially validated, or blocked
- cmake targets under predefined folders migrated or already correct
- files changed
- C++ files changed
- tests added per C++ change
- CTest registration changes
- CMake and generator changes
- stub/forward-declaration moves or removals
- Docker and Jenkins CI changes
- Qt5 references removed or remaining
- confirmation that removed modules were not restored
- confirmation that LogViewer was preserved
- exact validation commands and results
- result of new_docker-build.h if present
- remaining blockers or risks
+404
View File
@@ -0,0 +1,404 @@
# Strict Qt6 Migration Prompt: CMake targets in predefined folders:
./Lts/Tools/DBAdministration
./Lts/Tools/DBOperatorSettingsRemover
./Lts/Tools/DBUpdate
./Lts/Tools/DataSampleGenerator
./Lts/Tools/DataSampleReceiver
./Lts/Tools/DateTimeSyncer
./Lts/Tools/DdsView
./Lts/Tools/DotMatrixDisplay
./Lts/Tools/LicenceEditor
./Lts/Tools/LocalDomainFinder
./Lts/Tools/LogViewer
This prompt is binding task context. Keep changes minimal, scoped, and reproducible.
## Required base prompt
Before making changes, read and apply:
- ./prompts/combined-migration-subfolder-rti-compact.prompt.md
- ./prompts/combined-migration-compact.prompt.md
If these prompts are stricter, follow them. This prompt overrides them only for build variants: use ON variants only. Do not pursue OFF variants.
## Module in scope
Migrate only:
- cmake targets under these predefined folders:
./Lts/Tools/DBAdministration
./Lts/Tools/DBOperatorSettingsRemover
./Lts/Tools/DBUpdate
./Lts/Tools/DataSampleGenerator
./Lts/Tools/DataSampleReceiver
./Lts/Tools/DateTimeSyncer
./Lts/Tools/DdsView
./Lts/Tools/DotMatrixDisplay
./Lts/Tools/LicenceEditor
./Lts/Tools/LocalDomainFinder
./Lts/Tools/LogViewer
From:
- ./qt-migration-legatus/qt5-before/qt5-legatus-legacy
To:
- ./qt-migration-legatus/qt6-after/qt6-migrated-legatus
Do not migrate sibling tools or unrelated modules.
## Mandatory build variants
Only these variants are valid:
- BUILD_RTI=ON
- BUILD_GRANTLEE=ON
- BUILD_ARCGIS=OFF
- BUILD_ARCGIS=ON
Forbidden:
- BUILD_RTI=OFF
- BUILD_GRANTLEE=OFF
Rules:
- Do not implement, fix, preserve, test, or validate OFF variants.
- Do not add CMake logic, tests, stubs, or fallbacks for OFF variants.
- Do not report OFF variants as supported or partially supported.
- Validation must use BUILD_RTI=ON and BUILD_GRANTLEE=ON and BUILD_ARCGIS=ON.
## Branches and trees
Qt6 target branch:
- feature/migrate-lts-tools-d-and-l
Qt5 legacy branch, if comparison is needed:
- story/qt6-migration
Legacy source tree:
- ./qt-migration-legatus/qt5-before/qt5-legatus-legacy
Qt6 target tree:
- ./qt-migration-legatus/qt6-after/qt6-migrated-legatus
Work in the Qt6 target tree only. Do not modify the Qt5 legacy tree.
## Scope rules
Touch files outside the targets directories only when directly required to configure, generate, build, link, test, or validate these targets.
Allowed outside-scope changes:
- parent CMakeLists.txt entries for these targets
- central CMake helper fixes required by these targets
- shared include path fixes required by these targets
- RTI, codegen, ndsgen, KTextTemplate, or Grantlee integration fixes required by these targets
- test infrastructure needed by tests for these targets
- new_docker_build.sh changes needed to run those tests
- minimal Jenkins CI discovery or policy updates needed for those tests
- relocation of required stubs or forward declarations to allowed directories
Not allowed:
- restoring removed modules
- reintroducing stale dependencies on removed modules
- removing or disabling active modules to hide failures
- disabling targets instead of fixing root causes
- broad refactoring, cleanup, renaming, or modernization
- warning suppression instead of fixing causes
- committing generated files
- consuming generated outputs from the source tree
- fake success, dummy files, handwritten generated replacements, mocks, placeholders, or generated-output stubs
## CMake targets
- under folder ./qt-migration-legatus/qt6-after/qt6-migrated-legatus/
./Lts/Tools/DBAdministration
./Lts/Tools/DBOperatorSettingsRemover
./Lts/Tools/DBUpdate
./Lts/Tools/DataSampleGenerator
./Lts/Tools/DataSampleReceiver
./Lts/Tools/DateTimeSyncer
./Lts/Tools/DdsView
./Lts/Tools/DotMatrixDisplay
./Lts/Tools/LicenceEditor
./Lts/Tools/LocalDomainFinder
./Lts/Tools/LogViewer
- Discover real CMake targets defined in the predefined folders.
- Learn options of script ./qt-migration-legatus/qt6-after/qt6-migrated-legatus/new_docker_build.sh to improve peformance of migration process
- Reuse prebuilt migration image as much as possible
- Add every required CMake target to ./qt-migration-legatus/qt6-after/qt6-migrated-legatus/new_docker_build.sh so the validation container builds or validates it.
- Add new --group6 option for required CMake targets
- Add required apt packages to new_docker_build.sh
- Do not invent CMake targets under perdefined folders.
- Do not add targets that do not exist.
- If a folder does not exist, has no CMake targets, or a target is intentionally out of scope, report that fact and the reason.
- Do not weaken validation to make CMake targets under predefined folders pass.
## Preservation rules
Preserve module removals from commit:
- 92ad7d468, "remove all unneeded module listed from Niklas"
Do not restore removed modules, files, targets, directories, or dependencies.
Preserve LogViewer reinsert from commit:
- 1fa789767, "Added LogViewer again"
Do not remove, disable, or break LogViewer integration.
Preserve prior IDL warning fixes from commit:
- be912de9d, "Removes .IDL warnings: multiple enum definitons and builtin-type collisions"
Do not blindly replay that commit. Use it only as reference. Do not reintroduce removed modules.
IDL regressions to avoid:
- multiple enum definitions
- duplicate enumerators
- builtin type or keyword collisions
Check first for duplicate inputs, stale paths, removed-module references, source-tree generated outputs, source/build-tree confusion, and repeated IDL definitions before treating an issue as semantic IDL conflict.
## Stubs and forward declarations
Any required existing stub, compatibility declaration, or forward declaration must live only under:
- ./qt-migration-legatus/qt6-after/qt6-migrated-legatus/forward-declarations/
- ./qt-migration-legatus/qt6-after/qt6-migrated-legatus/include/
Rules:
- Do not leave such files in service directories unless they are real service source files.
- Do not create or keep stubs for forbidden OFF variants.
- Do not use stubs or forward declarations as replacements for real RTI, ndsgen, KTextTemplate, or Grantlee outputs in ON builds.
- Report every moved, removed, or newly referenced stub/forward declaration.
## Migration checks
For each cmake target, inspect and migrate only as needed:
- source and header files
- CMakeLists.txt and parent CMake registration
- ui, qrc, resource, plugin, and service metadata
- RTI IDL, ndsgen, KTextTemplate, and Grantlee inputs/templates
- tests directly tied to these targets
Fix only real Qt6/C++17 build issues, such as:
- Qt module imports and target links
- moc, uic, and rcc handling
- QRegExp to QRegularExpression when required
- QTextCodec replacement when required
- QDesktopWidget or QApplication::desktop() replacement when required
- QString, QVariant, QMetaType, QDateTime, QAction, QMenu, signal/slot, enum, plugin, or metadata compatibility issues when required
No opportunistic refactoring or style cleanup.
## Qt link rules
No active target in the Qt6 tree may link Qt5 imported targets.
Search for and fix active uses of:
- Qt5::
- find_package(Qt5
- QT5_
- Qt5Core
- Qt5Widgets
- Qt5Network
Use Qt6 equivalents. Prefer central CMake helper fixes when the issue is central.
## Code generation rules
If generated files are required:
- reconstruct the real legacy generation flow
- generate into the build tree
- consume from the build tree
- list complete OUTPUT and BYPRODUCTS
- set correct DEPENDS and MAIN_DEPENDENCY where useful
- use deterministic WORKING_DIRECTORY
- use VERBATIM
- wire generated sources with target_sources
- wire generated include dirs with target_include_directories
- ensure compilation depends on generation
- ensure incremental rebuilds trigger on input/template changes
Never commit generated .idl, .h, .hpp, or .cpp outputs. Never consume generated outputs from the source tree. Never fabricate generated outputs.
## Tests
For every C++ code change, add three meaningful CTest tests where feasible.
Rules:
- tests must validate changed behavior, not only compilation
- tests must be registered with CTest
- tests must run with BUILD_RTI=ON and BUILD_GRANTLEE=ON and BUILD_ARCGIS=ON
- do not add OFF-variant tests
- use deterministic tests without host-local paths
- if three meaningful tests are impossible, add the maximum meaningful set and explain why
- ./qt-migration-legatus/qt6-after/qt6-migrated-legatus/new_docker_build.sh changes needed to run those tests
- ./qt-migration-legatus/qt6-after/qt6-migrated-legatus/new_docker_build.sh changes needed to build or validate required CMake targets under folder ./qt-migration-legatus/qt6-after/qt6-migrated-legatus/Lts/Viewer
Preferred location:
- ./qt-migration-legatus/qt6-after/qt6-migrated-legatus/tests
Use policy-compatible names, for example:
- test_<name>.cpp
- <name>_test.cpp
- <name>test.cpp
- <name>gtest.cpp
## Docker and CI
Authoritative migration Dockerfile:
- ./app/Dockerfile
Authoritative validation script:
- ./qt-migration-legatus/qt6-after/qt6-migrated-legatus/new_docker_build.sh
Do not use other Dockerfiles as task authority.
Validation container expectations:
- repository root at /repo, or the script's documented mount path
- external dependencies under /repo/external, or the script's documented equivalent
- RTI 7.7 at /repo/external/rti_connext_dds-7.7.0, or documented equivalent
- ./rti_license.dat mounted read-only if RTI requires it
- no developer-local paths
Jenkins CI must be able to discover and run the new tests, or verify that new_docker_build.sh runs them. Inspect and minimally update only if needed:
- ./qt-migration-legatus/ci/Dockerfile.*
- ./qt-migration-legatus/ci/check_pr_policies.py
### External dependencies to be mapped into Docker container
- `./external`
- expected subfolders:
- `./external/ArcGIS`
- `./external/GeographicLib`
- `./external/rti_connext_dds-7.7.0`
### RTI license
- `./rti_license.dat`
## Required procedure
1. Inspect repository state, branch, working tree, submodules, required prompts, service paths, and forward-declaration directories.
2. Compare Qt5 source targets with Qt6 targets. Classify files as already migrated, missing, stale, generated, intentionally removed, build-only, or needing Qt6 adaptation.
3. Identify dependencies, generated inputs, Qt modules, parent CMake entries, removed-module references, LogViewer interactions, and required stub/forward-declaration relocations.
4. Apply the smallest valid migration changes.
5. Add required CTest tests for C++ changes.
6. Review RTI, ndsgen, KTextTemplate, and Grantlee generation paths.
7. Check regressions: Qt5 links, removed modules, LogViewer, IDL warnings, source-tree generated consumption, stale artifacts, and misplaced stubs.
8. Validate in Docker with BUILD_RTI=ON and BUILD_GRANTLEE=ON.
9. Run CTest in the validated build directory.
10. Check Jenkins/policy compatibility.
11. Report factual status.
Do not overwrite uncommitted user changes. If they block safe work, report the blocker.
## Required validation
From:
- ./qt-migration-legatus/qt6-after/qt6-migrated-legatus
Run:
```bash
BUILD_RTI=ON BUILD_GRANTLEE=ON BUILD_ARCGIS=ON ./new_docker_build.sh
```
CTest must run as part of validation. If a direct clean build is useful, use:
```bash
cmake -S /repo/qt-migration-legatus/qt6-after/qt6-migrated-legatus -B /repo/build-rti-on-grantlee-on -G Ninja -DCMAKE_BUILD_TYPE=Debug -DBUILD_RTI=ON -DBUILD_GRANTLEE=ON -DBUILD_ARCGIS=ON
cmake --build /repo/build-rti-on-grantlee-on --parallel
ctest --test-dir /repo/build-rti-on-grantlee-on --output-on-failure
```
Also check whether this file exists and run it only if present:
```bash
./new_docker-build.h
```
If it is absent or a typo, report that. Do not invent a replacement.
Do not run or validate OFF variants.
## Success criteria
Success requires:
- cmake targets migrated or confirmed already correct
- cmake targets included in the Qt6 build
- configure, build, and CTest pass with BUILD_RTI=ON and BUILD_GRANTLEE=ON and BUILD_ARCGIS=ON
- new_docker_build.sh runs the relevant tests and fails on test failure
- Jenkins/policy discovery accepts the new tests and validation changes
- no active Qt5 imported target links remain for these targets
- generated outputs are build-tree only and freshly produced when required
- no generated outputs are committed or consumed from the source tree
- no fake generated files, dummy files, mocks, placeholders, or stubbed generated outputs exist
- required stubs/forward declarations are only in allowed directories
- removed modules remain removed
- LogViewer remains preserved
- RTI/codegen and Grantlee/KTextTemplate success is real, not stale or faked
## If blocked
Do not fake success. Report:
- failing command
- key error output
- affected service
- category: project, path, merge, CMake, Qt API, codegen, Docker, RTI/license, Grantlee/KTextTemplate, ArcGIS, test, CTest, Jenkins CI, stub relocation, or environment
- what was fixed safely
- what remains blocked
- whether stale artifacts were ruled out
- whether generated files were involved
- exact missing files, targets, or generator step
- whether tests and CTest integration succeeded
- whether Docker validation and Jenkins discovery succeeded
## Final report
Keep it short. Include:
- status: validated, partially validated, or blocked
- cmake targets under predefined folders migrated or already correct
- files changed
- C++ files changed
- tests added per C++ change
- CTest registration changes
- CMake and generator changes
- stub/forward-declaration moves or removals
- Docker and Jenkins CI changes
- Qt5 references removed or remaining
- confirmation that removed modules were not restored
- confirmation that LogViewer was preserved
- exact validation commands and results
- result of new_docker-build.h if present
- remaining blockers or risks