Entire-Checkpoint: 01M2K24NN3G8GTV4E49KJ6C0SR
This commit is contained in:
2 files changed
+602
-1
No files matched your search
@@ -0,0 +1,601 @@
|
||||
Use all rules, hard requirements, and diagnostic guidance from this prompt as binding task context.
|
||||
|
||||
Work autonomously, minimally, and reproducibly. Do not stop after the first edit. Continue through analysis, implementation, validation, and final reporting. Ask for confirmation only if the task is impossible, destructive, or blocked by missing source material.
|
||||
|
||||
# Context
|
||||
|
||||
A Qt5-to-Qt6 migration is in progress.
|
||||
|
||||
During the migration, Qt5 development continues. The current Qt5 development snapshot is located at:
|
||||
|
||||
- ./qt-migration-legatus/qt5-before/dlbo
|
||||
|
||||
The existing Qt5 legacy baseline is located at:
|
||||
|
||||
- ./qt-migration-legatus/qt5-before/qt5-legatus-legacy
|
||||
|
||||
The Qt6 migration tree is located at:
|
||||
|
||||
- ./qt-migration-legatus/qt6-after/qt6-migrated-legatus
|
||||
|
||||
# Branch Context
|
||||
|
||||
Work on the existing branches:
|
||||
|
||||
- Qt5 legacy target branch:
|
||||
- story/qt6-migration
|
||||
|
||||
- Qt6 migration target branch:
|
||||
- feature/qt6-migration-basis-modules
|
||||
|
||||
If the current branch is already correct, continue there. If not, switch minimally to the appropriate branch. Do not create new branches unless technically necessary and clearly justified.
|
||||
|
||||
# Main Task
|
||||
|
||||
1. Merge the content from:
|
||||
|
||||
- ./qt-migration-legatus/qt5-before/dlbo
|
||||
|
||||
into:
|
||||
|
||||
- ./qt-migration-legatus/qt5-before/qt5-legatus-legacy
|
||||
|
||||
on branch:
|
||||
|
||||
- story/qt6-migration
|
||||
|
||||
2. Identify all source code, CMake, generator, template, IDL, and build-system parts that are newly added or changed by this merge.
|
||||
|
||||
3. Migrate only those newly added or changed relevant parts to Qt6 in:
|
||||
|
||||
- ./qt-migration-legatus/qt6-after/qt6-migrated-legatus
|
||||
|
||||
on branch:
|
||||
|
||||
- feature/qt6-migration-basis-modules
|
||||
|
||||
4. Preserve all existing Qt6 migration fixes. Previously fixed errors and warnings must not reappear.
|
||||
|
||||
5. In particular, previous fixes for .IDL warnings, RTI code generation problems, KTextTemplate problems, include path problems, build-folder code generation problems, and stale artifact problems must not regress.
|
||||
|
||||
# Strict Scope
|
||||
|
||||
Migrate only what is new or changed as a result of the merge from dlbo.
|
||||
|
||||
Do not migrate:
|
||||
|
||||
- untouched old modules
|
||||
- deleted modules
|
||||
- sibling modules
|
||||
- unrelated modules
|
||||
- opportunistic refactorings
|
||||
- general modernization
|
||||
- cleanup changes without direct relevance
|
||||
- legacy-tree changes beyond the required merge
|
||||
- generated files into the repository
|
||||
|
||||
If the new changes affect Lts/DDS, the strict Lts/DDS rules below also apply.
|
||||
|
||||
# Hard Preservation Boundary for Removed Modules
|
||||
|
||||
Respect the previous module removal:
|
||||
|
||||
- commit 92ad7d468
|
||||
- "remove all unneeded module listed from Niklas"
|
||||
|
||||
These module removals must remain fully preserved.
|
||||
|
||||
Not allowed:
|
||||
|
||||
- restoring removed modules
|
||||
- restoring removed files, targets, or directories
|
||||
- introducing dependencies on removed modules
|
||||
- blindly replaying old fixes if they touch removed modules
|
||||
|
||||
# Hard Preservation Boundary for Reinserted LogViewer Module
|
||||
|
||||
Observe the module reinsert in submodule ./qt-migration-legatus/qt6-after/qt6-migrated-legatus:
|
||||
|
||||
- commit 1fa789767
|
||||
- Merge pull request 'Added LogViewer again' (#2) from feature/qt6-migration-added-logview into feature/qt6-migration-basis-modules
|
||||
|
||||
This module must remain fully preserved.
|
||||
|
||||
# Previous .IDL Warning Fixes Must Not Regress
|
||||
|
||||
Relevant commits:
|
||||
|
||||
- 44fdf2ac9
|
||||
- current HEAD / merge baseline
|
||||
- contains the module removals from the merge context
|
||||
|
||||
- 92ad7d468
|
||||
- remove all unneeded module listed from Niklas
|
||||
|
||||
- be912de9d
|
||||
- Removes .IDL warnings: multiple enum definitons and builtin-type collisions
|
||||
|
||||
Treat this as a regression investigation.
|
||||
|
||||
Required:
|
||||
|
||||
1. Check whether changes from be912de9d were discarded, overwritten, or made ineffective by the new dlbo merge, by 92ad7d468, or by the current merge baseline.
|
||||
|
||||
2. Restore the intended .IDL warning fix from be912de9d in the current state, but without bringing back modules removed by 92ad7d468.
|
||||
|
||||
3. be912de9d is only a reference fix. Do not blindly replay it.
|
||||
|
||||
4. Adopt only the parts of be912de9d that are still functionally and technically relevant in the current tree.
|
||||
|
||||
5. If paths, CMake structure, generator paths, or module lists changed, adapt the previous solution minimally to the current tree.
|
||||
|
||||
6. If previous fixes touch files or modules removed by 92ad7d468:
|
||||
- do not restore them
|
||||
- do not apply patch parts that bring removed modules back
|
||||
- extract only the still-relevant fix intent and apply it to remaining modules
|
||||
|
||||
# Warning Regression Checks
|
||||
|
||||
Required:
|
||||
|
||||
- analyze the current warning baseline before changes
|
||||
- cluster warnings by root cause
|
||||
- compare the new build output after changes against the previous warning baseline
|
||||
- do not suppress warnings instead of fixing the real cause
|
||||
|
||||
Concrete warning context:
|
||||
|
||||
- multiple enum definitions
|
||||
- duplicate enumerators
|
||||
- builtin-type / keyword collisions
|
||||
|
||||
Example types:
|
||||
|
||||
- On
|
||||
- Off
|
||||
- Normal
|
||||
- Undefined
|
||||
- bitMask
|
||||
- typeId
|
||||
- eventType
|
||||
|
||||
First strictly check whether warnings are caused by:
|
||||
|
||||
- duplicate inputs
|
||||
- old paths
|
||||
- duplicate code generation sources
|
||||
- wrong include/import order
|
||||
- stale artifacts
|
||||
- removed but still referenced modules
|
||||
- incorrect build-folder/source-folder separation
|
||||
- wrong generator outputs
|
||||
- .idl definitions being fed multiple times
|
||||
|
||||
Only after that, treat them as genuine semantic IDL/XTypes conflicts.
|
||||
|
||||
# Lts/DDS Scope Rules
|
||||
|
||||
If the dlbo merge creates changes in or dependencies on Lts/DDS, migrate and validate strictly only:
|
||||
|
||||
- from:
|
||||
- ./qt-migration-legatus/qt5-before/qt5-legatus-legacy/Lts/DDS
|
||||
|
||||
- to:
|
||||
- ./qt-migration-legatus/qt6-after/qt6-migrated-legatus/Lts/DDS
|
||||
|
||||
Do not overreach:
|
||||
|
||||
- do not migrate sibling modules
|
||||
- do not change legacy files outside the merge target
|
||||
- touch other files only if Lts/DDS cannot be configured, generated, compiled, linked, or validated without a minimal directly related fix
|
||||
- no refactorings
|
||||
- no opportunistic modernization
|
||||
|
||||
# Qt5-to-Qt6 Migration Checks
|
||||
|
||||
For newly merged and migrated source code parts, check and minimally fix:
|
||||
|
||||
- Qt5 to Qt6 API compatibility
|
||||
- C++17 compatibility
|
||||
- local CMakeLists.txt
|
||||
- parent CMakeLists.txt
|
||||
- target inclusion
|
||||
- include paths
|
||||
- generated source/header registration
|
||||
- RTI/codegen/KTextTemplate wiring
|
||||
- generation-to-compilation dependency order
|
||||
- build-tree output placement
|
||||
- incremental rebuild triggers
|
||||
|
||||
# RTI / Codegen / KTextTemplate Rules
|
||||
|
||||
If migrated parts depend on generated files:
|
||||
|
||||
1. Reconstruct the legacy generation flow.
|
||||
2. Verify that the Qt6 port preserves that flow correctly.
|
||||
3. Ensure required generated .idl, .h, and .cpp files are produced automatically.
|
||||
4. Ensure they exist before consuming targets start compilation.
|
||||
5. Ensure generated .cpp files are registered in targets.
|
||||
6. Ensure generated headers are reachable through build-folder include paths.
|
||||
7. Ensure no stale source-tree or developer-local artifacts are required.
|
||||
|
||||
Generated files from RTI / ndsgen / KTextTemplate:
|
||||
|
||||
- must be created in the build folder
|
||||
- must be included and consumed from the build folder
|
||||
- must not be checked into the source repository
|
||||
- must not be consumed from the source tree
|
||||
- must not be created as stubs, dummies, placeholders, mocks, or handwritten replacement files
|
||||
|
||||
Inspect and fix if needed:
|
||||
|
||||
- add_custom_command(OUTPUT ...)
|
||||
- BYPRODUCTS
|
||||
- DEPENDS
|
||||
- MAIN_DEPENDENCY
|
||||
- WORKING_DIRECTORY
|
||||
- COMMAND
|
||||
- VERBATIM
|
||||
- target_sources(...)
|
||||
- target_include_directories(...)
|
||||
- add_dependencies(...)
|
||||
- GENERATED
|
||||
- build-tree include directories
|
||||
- generator input lists
|
||||
- duplicate generator inputs
|
||||
- removed module references
|
||||
- stale generated outputs
|
||||
|
||||
Prefer output paths under:
|
||||
|
||||
- ${CMAKE_CURRENT_BINARY_DIR}
|
||||
|
||||
unless the repository structure clearly requires otherwise.
|
||||
|
||||
# No Stubs / No Fake Success
|
||||
|
||||
If required generated files are missing and cannot be produced by the real build-integrated generator flow:
|
||||
|
||||
- do not create stub files
|
||||
- do not create dummy files
|
||||
- do not create placeholder files
|
||||
- do not create mock-generated files
|
||||
- do not create handwritten replacement files
|
||||
- do not remove or weaken dependencies just so the build continues
|
||||
- do not claim validation success
|
||||
|
||||
Instead, report exactly:
|
||||
|
||||
- missing generated files
|
||||
- blocked generator step
|
||||
- root cause
|
||||
- whether the blocker is project, path, artifact, merge, or environment related
|
||||
- which safe fixes were applied
|
||||
- which validation was not possible
|
||||
|
||||
Any build that requires invented stand-in files is considered:
|
||||
|
||||
- not validated
|
||||
|
||||
# Docker Authority
|
||||
|
||||
There are many Dockerfiles in the repository.
|
||||
|
||||
For the migration environment, only this Dockerfile is authoritative:
|
||||
|
||||
- ./app/Dockerfile
|
||||
|
||||
For the validation environment, this script is authoritative:
|
||||
|
||||
- ./qt-migration-legatus/qt6-after/qt6-migrated-legatus/docker_build.sh
|
||||
|
||||
The migration must remain possible with:
|
||||
|
||||
- ./app/Dockerfile
|
||||
|
||||
Validation must be done with:
|
||||
|
||||
- ./qt-migration-legatus/qt6-after/qt6-migrated-legatus/docker_build.sh
|
||||
|
||||
# Container and Mount Rules
|
||||
|
||||
Observe both container mount contexts.
|
||||
|
||||
For general Docker/CMake migration rules:
|
||||
|
||||
- repository root inside the container:
|
||||
- /repo
|
||||
|
||||
- external dependencies:
|
||||
- /repo/external
|
||||
|
||||
- RTI 7.7:
|
||||
- /repo/external/rti_connext_dds-7.7.0
|
||||
|
||||
- license file:
|
||||
- ./rti_license.dat
|
||||
- mounted read-only
|
||||
|
||||
For the existing validation container:
|
||||
|
||||
- relevant mount path:
|
||||
- /workspace
|
||||
|
||||
If RTI requires environment variables or explicit license path configuration:
|
||||
|
||||
- set them minimally and explicitly
|
||||
- do not rely on host-specific assumptions
|
||||
- do not introduce hardcoded developer paths
|
||||
|
||||
# BUILD_RTI Rules
|
||||
|
||||
If BUILD_RTI is supported, validate both variants:
|
||||
|
||||
- BUILD_RTI=ON
|
||||
- BUILD_RTI=OFF
|
||||
|
||||
For BUILD_RTI=ON, success may only be reported if all of the following are proven:
|
||||
|
||||
- build ran inside Docker
|
||||
- old generated artifacts relevant to migrated parts were removed, invalidated, or proven irrelevant
|
||||
- generator actually ran during the Docker build
|
||||
- new generated files were created in the current build
|
||||
- consuming targets compiled against those newly generated files
|
||||
- success did not depend on stale source-tree, stale build-tree, or developer-local artifacts
|
||||
- /repo/external/rti_connext_dds-7.7.0, or the corresponding container path, worked
|
||||
- ./rti_license.dat was correctly mounted if needed
|
||||
|
||||
If not all of this is proven, report:
|
||||
|
||||
- BUILD_RTI=ON not fully validated
|
||||
|
||||
For BUILD_RTI=OFF, verify:
|
||||
|
||||
- build does not require RTI
|
||||
- build does not require an RTI license
|
||||
- optional RTI codegen parts are cleanly disabled or not consumed
|
||||
- no stale generated RTI artifacts are required
|
||||
|
||||
# Procedure
|
||||
|
||||
## Phase 1: Repository and Branch State
|
||||
|
||||
- Check the current branch.
|
||||
- Check that these branches exist:
|
||||
- story/qt6-migration
|
||||
- feature/qt6-migration-basis-modules
|
||||
- Check the current working tree.
|
||||
- Do not overwrite local changes.
|
||||
- If uncommitted local changes exist, analyze them and avoid overwriting them.
|
||||
|
||||
## Phase 2: Qt5 Merge Analysis
|
||||
|
||||
Compare:
|
||||
|
||||
- ./qt-migration-legatus/qt5-before/dlbo
|
||||
- ./qt-migration-legatus/qt5-before/qt5-legatus-legacy
|
||||
|
||||
Identify:
|
||||
|
||||
- new files
|
||||
- changed files
|
||||
- removed files
|
||||
- relevant CMake/generator/IDL/template changes
|
||||
- relevant source code changes
|
||||
- new or changed DDS/RTI/KTextTemplate paths
|
||||
|
||||
Merge only the required changes into:
|
||||
|
||||
- ./qt-migration-legatus/qt5-before/qt5-legatus-legacy
|
||||
|
||||
No unrelated cleanup changes.
|
||||
|
||||
## Phase 3: Regression Against Previous Fixes
|
||||
|
||||
Analyze:
|
||||
|
||||
- be912de9d
|
||||
- 92ad7d468
|
||||
- current state / HEAD
|
||||
|
||||
Determine:
|
||||
|
||||
- which parts of be912de9d fixed .IDL warnings
|
||||
- which parts were deleted or made irrelevant by 92ad7d468
|
||||
- which parts are missing or overwritten again because of the dlbo merge
|
||||
- which warning groups from the previous warning baseline are affected
|
||||
- whether warnings are caused by path/codegen/artifact issues rather than real IDL content issues
|
||||
|
||||
Do not blindly cherry-pick.
|
||||
|
||||
If the same cause as before exists, but with a different or smaller module set:
|
||||
|
||||
- partially and manually adapt be912de9d
|
||||
|
||||
If the old fix affects removed modules:
|
||||
|
||||
- do not apply that part
|
||||
|
||||
If the current problem is primarily a build/generator/path issue:
|
||||
|
||||
- fix the root cause in the build/generator setup
|
||||
|
||||
## Phase 4: Qt6 Migration of New Parts
|
||||
|
||||
Migrate the relevant parts newly added or changed by the Qt5 dlbo merge into:
|
||||
|
||||
- ./qt-migration-legatus/qt6-after/qt6-migrated-legatus
|
||||
|
||||
Observe:
|
||||
|
||||
- Qt6 API compatibility
|
||||
- C++17
|
||||
- CMake target registration
|
||||
- generated files only from the build tree
|
||||
- no source-tree generated artifacts
|
||||
- no stale artifact dependency
|
||||
- no removed module resurrection
|
||||
- no warning suppression as a fix
|
||||
|
||||
## Phase 5: Codegen and Build-System Review
|
||||
|
||||
For all affected generator flows, check:
|
||||
|
||||
- are inputs unique and passed only once?
|
||||
- do paths point only to current existing modules?
|
||||
- are removed modules still referenced?
|
||||
- are outputs generated in the build folder?
|
||||
- are BYPRODUCTS complete?
|
||||
- are DEPENDS and MAIN_DEPENDENCY correct?
|
||||
- does CMake enforce the correct order between generation and compilation?
|
||||
- are generated .cpp files included in target_sources?
|
||||
- are generated headers reachable through target_include_directories?
|
||||
- do incremental rebuilds work when a generator input, template, or dependency changes?
|
||||
|
||||
# Required Validation
|
||||
|
||||
Before final validation:
|
||||
|
||||
- use empty build directories
|
||||
- rule out stale build/codegen artifacts
|
||||
- remove or invalidate relevant old generated artifacts, or prove they are irrelevant
|
||||
- do not consume source-tree generated files
|
||||
- ensure generators actually run in the current build if required
|
||||
|
||||
Run at least the following commands where present and supported.
|
||||
|
||||
## Suggested Base CMake Commands
|
||||
|
||||
From repository root:
|
||||
|
||||
cmake -S /repo/qt-migration-legatus/qt6-after/qt6-migrated-legatus \
|
||||
-B /repo/build \
|
||||
-G Ninja \
|
||||
-DCMAKE_BUILD_TYPE=Debug
|
||||
|
||||
cmake --build /repo/build --parallel
|
||||
|
||||
ctest --test-dir /repo/build --output-on-failure
|
||||
|
||||
If BUILD_RTI is supported:
|
||||
|
||||
cmake -S /repo/qt-migration-legatus/qt6-after/qt6-migrated-legatus \
|
||||
-B /repo/build-rti-on \
|
||||
-G Ninja \
|
||||
-DCMAKE_BUILD_TYPE=Debug \
|
||||
-DBUILD_RTI=ON
|
||||
|
||||
cmake --build /repo/build-rti-on --parallel
|
||||
|
||||
ctest --test-dir /repo/build-rti-on --output-on-failure
|
||||
|
||||
cmake -S /repo/qt-migration-legatus/qt6-after/qt6-migrated-legatus \
|
||||
-B /repo/build-rti-off \
|
||||
-G Ninja \
|
||||
-DCMAKE_BUILD_TYPE=Debug \
|
||||
-DBUILD_RTI=OFF
|
||||
|
||||
cmake --build /repo/build-rti-off --parallel
|
||||
|
||||
ctest --test-dir /repo/build-rti-off --output-on-failure
|
||||
|
||||
## Project-Specific Required Commands
|
||||
|
||||
Also run, if present:
|
||||
|
||||
./docker-build.h
|
||||
|
||||
and:
|
||||
|
||||
BUILD_RTI=OFF ./docker_build.sh
|
||||
|
||||
For the validation container:
|
||||
|
||||
cd ./qt-migration-legatus/qt6-after/qt6-migrated-legatus
|
||||
BUILD_RTI=OFF ./docker_build.sh
|
||||
|
||||
If BUILD_RTI=ON is supported by docker_build.sh:
|
||||
|
||||
cd ./qt-migration-legatus/qt6-after/qt6-migrated-legatus
|
||||
BUILD_RTI=ON ./docker_build.sh
|
||||
|
||||
If RTI license and external mounts are needed, use the project-provided mechanisms or Docker invocation so that the following are available:
|
||||
|
||||
- repository root
|
||||
- ./external
|
||||
- ./external/rti_connext_dds-7.7.0
|
||||
- ./rti_license.dat read-only
|
||||
|
||||
Do not introduce host-specific assumptions.
|
||||
|
||||
# Success Criteria
|
||||
|
||||
The task is successful only if:
|
||||
|
||||
- dlbo was minimally integrated into the Qt5 legacy tree
|
||||
- newly added or changed relevant source/build/generator parts were migrated to Qt6
|
||||
- existing Qt6 migration fixes are preserved
|
||||
- .IDL warning fixes from be912de9d do not regress
|
||||
- module removals from 92ad7d468 remain fully preserved
|
||||
- LogViewer reinsert from 1fa789767 remains fully preserved
|
||||
- no removed modules were reintroduced
|
||||
- generated .idl, .h, and .cpp files are consumed only from the build folder
|
||||
- no generated artifacts were added to the repository
|
||||
- no stub/dummy/mock codegen files were created
|
||||
- build does not depend on stale artifacts
|
||||
- BUILD_RTI=OFF does not require RTI or a license
|
||||
- BUILD_RTI=ON is reported as successful only if real generator execution and real new outputs are proven
|
||||
|
||||
# If Not Fully Solvable
|
||||
|
||||
Do not fake success.
|
||||
|
||||
Report exactly:
|
||||
|
||||
- which parts from dlbo were merged
|
||||
- which parts were migrated to Qt6
|
||||
- which parts could not be migrated
|
||||
- which parts of be912de9d were still relevant
|
||||
- which parts of be912de9d could not be directly adopted because of 92ad7d468
|
||||
- which warning groups from the previous warning baseline were fixed
|
||||
- which warning groups remain
|
||||
- whether the blocker is project, path, artifact, merge, license, RTI, Docker, or environment related
|
||||
- which safe, reviewable fixes were applied
|
||||
- which validation was not possible and why
|
||||
|
||||
# Final Report
|
||||
|
||||
Keep the final report short and factual.
|
||||
|
||||
Report:
|
||||
|
||||
- validated, partially validated, or blocked
|
||||
- what was merged from dlbo into Qt5 legacy
|
||||
- what was migrated from that into Qt6
|
||||
- whether changes from be912de9d were effectively restored or adapted
|
||||
- confirmation that modules removed by 92ad7d468 were not brought back
|
||||
- confirmation that LogViewer reinsert from 1fa789767 was preserved
|
||||
- .IDL warning count before/after based on previous warning baseline and new build output
|
||||
- root causes
|
||||
- whether RTI/codegen/KTextTemplate was involved
|
||||
- whether generation timing was correct
|
||||
- whether output placement in the build folder was correct
|
||||
- whether BUILD_RTI=ON succeeded, was unsupported, or was not fully validated
|
||||
- whether BUILD_RTI=OFF succeeded
|
||||
- whether /repo/external/rti_connext_dds-7.7.0, or the corresponding container path, worked
|
||||
- whether ./rti_license.dat mapping worked
|
||||
- exact Docker/build commands used
|
||||
- result of:
|
||||
- ./docker-build.h
|
||||
- BUILD_RTI=OFF ./docker_build.sh
|
||||
- if run: BUILD_RTI=ON ./docker_build.sh
|
||||
- files changed
|
||||
- changed CMake/generator invocations
|
||||
- whether ./app/Dockerfile was changed
|
||||
- whether ./qt-migration-legatus/qt6-after/qt6-migrated-legatus/docker_build.sh was changed
|
||||
- each remaining failure with:
|
||||
- command
|
||||
- key output / key error
|
||||
- classification: environment vs project
|
||||
- applied or recommended fix
|
||||
- remaining blockers or risks
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
Hier ist ein **robuster Copilot-CLI-Prompt**, in den ich die nötigen Entscheidungs- und Interpretationshinweise direkt eingebaut habe:
|
||||
|
||||
```text
|
||||
Nutze die Prompts, harten Regeln und Diagnosehinweise aus diesem Chat als verbindlichen Detailkontext und bearbeite folgende Aufgabe robust, minimal und reproduzierbar.
|
||||
Nutze die harten Regeln und Diagnosehinweise aus diesem Chat als verbindlichen Detailkontext und bearbeite folgende Aufgabe robust, minimal und reproduzierbar.
|
||||
|
||||
Git-Kontext:
|
||||
- Zielbranch:
|
||||
|
||||
Reference in new issue
Block a user