Files
qt6-migration-pipeline/.github/prompts/moved-to-submod.prompt.md
T

10 KiB

Du arbeitest in einem bestehenden C++/Qt-Projekt, das von Qt5 nach Qt6 migriert wird. Deine Aufgabe ist, die Build- und CI/CD-Infrastruktur technisch sauber und robust an eine neue Verzeichnisstruktur anzupassen. Fokus: Linux/Ubuntu 26.04, CMake, Dockerfile, Shell-Skripte und CI-Pipeline.

Ausgangslage

Die Repository-/Build-Struktur wurde geändert:

  • Die bisherigen Folder und Files:
drwxrwxrwx  2 torsten torsten  4096 Jul 17 17:03 cmake/
-rwxrwxrwx  1 torsten torsten 15357 Jul 22 12:32 CMakeLists.txt*
-rw-rw-rw-  1 torsten torsten    92 Jul 14 13:55 CTestCustom.ctest
drwxrwxrwx  2 torsten torsten  4096 Jul 14 14:12 doxygen/
-rw-rw-rw-  1 torsten torsten     0 Aug 13 19:33 .gitkeep
drwxrwxrwx  8 torsten torsten  4096 Jul 21 15:43 Lts/
-rw-rw-rw-  1 torsten torsten 14908 Jul 21 15:45 lts-cc.conf
drwxrwxrwx  3 torsten torsten  4096 Jul 18 15:22 specs/
drwxrwxrwx  4 root    root     4096 Jul 14 21:53 strix_runs/
drwxrwxrwx  4 torsten torsten  4096 Aug 14 11:46 tests/
drwxrwxrwx  5 torsten torsten  4096 Jul 14 12:14 TetraIF/
drwxrwxrwx  2 torsten torsten  4096 Jul 14 14:45 translations/
drwxrwxrwx  3 torsten torsten  4096 Jul 14 23:50 Z/

wurden nach qt-migration-legatus/qt6-after/qt6-migrated-legatus/ verschoben.

  • qt-migration-legatus/ ist jetzt ein Git-Submodule.
  • Innerhalb von qt-migration-legatus/ gibt es zusätzlich:
    • qt5-before → enthält die bisherigen Qt5-Eingabefolder, die früher manuell schrittweise ins Projekt kopiert wurden.
    • qt6-after → enthält die bisherigen Ergebnisse bzw. Zielstände der Qt6-Portierung.

Ziel

Passe alle relevanten Build-, CI- und Container-Pfade auf die neue Struktur an, sodass der Build unter Ubuntu 26.04 reproduzierbar, robust und wartbar funktioniert.

Technischer Scope

Untersuche und aktualisiere ausschließlich technische Build-/Infra-Aspekte, insbesondere:

  • GitHub Actions / GitLab CI / andere Linux-CI-Konfigurationen
  • Shell-Skripte (.sh)
  • Dockerfile
  • .dockerignore
  • CMake-Dateien:
    • CMakeLists.txt
    • *.cmake
    • Toolchain-/Preset-Dateien, falls vorhanden
  • Qt-bezogene Ressourcen-/Include-/Source-/MOC-/UIC-/RCC-Pfade
  • Copy-/Sync-/Stage-/Artifact-Schritte
  • Submodule-Checkout und Build-Kontext
  • Relative Pfade im Repo, im Build-Verzeichnis und im Container

Nicht im Scope:

  • PowerShell
  • Windows-spezifische Anpassungen
  • Fachliche/refaktorierende Codeänderungen außerhalb buildrelevanter Pfade
  • Unnötige Modernisierung jenseits der Pfad-/Infra-Migration

Konkrete Aufgaben

  1. Suche systematisch nach allen Referenzen auf die alten Folder
drwxrwxrwx  2 torsten torsten  4096 Jul 17 17:03 cmake/
-rwxrwxrwx  1 torsten torsten 15357 Jul 22 12:32 CMakeLists.txt*
-rw-rw-rw-  1 torsten torsten    92 Jul 14 13:55 CTestCustom.ctest
drwxrwxrwx  2 torsten torsten  4096 Jul 14 14:12 doxygen/
-rw-rw-rw-  1 torsten torsten     0 Aug 13 19:33 .gitkeep
drwxrwxrwx  8 torsten torsten  4096 Jul 21 15:43 Lts/
-rw-rw-rw-  1 torsten torsten 14908 Jul 21 15:45 lts-cc.conf
drwxrwxrwx  3 torsten torsten  4096 Jul 18 15:22 specs/
drwxrwxrwx  4 root    root     4096 Jul 14 21:53 strix_runs/
drwxrwxrwx  4 torsten torsten  4096 Aug 14 11:46 tests/
drwxrwxrwx  5 torsten torsten  4096 Jul 14 12:14 TetraIF/
drwxrwxrwx  2 torsten torsten  4096 Jul 14 14:45 translations/
drwxrwxrwx  3 torsten torsten  4096 Jul 14 23:50 Z/

in:

  • CI-Konfigurationen
  • CMake-Dateien
  • Dockerfile
  • Shell-Skripten
  • Copy-/Install-/Packaging-Schritten
  1. Ermittle für jede Referenz die korrekte neue Zielstruktur:

    • qt-migration-legatus/...
    • qt-migration-legatus/qt5-before/...
    • qt-migration-legatus/qt6-after/...
  2. Stelle sicher, dass das Git-Submodule qt-migration-legatus/ in allen relevanten Build-Kontexten korrekt berücksichtigt wird:

    • lokaler CI-Checkout
    • Container-Build-Kontext
    • reproduzierbarer Checkout in der Pipeline
  3. Aktualisiere Build-Logik und Pfade so, dass:

    • keine impliziten Annahmen über alte Repo-Layouts bestehen,
    • keine fragilen ../..-Konstruktionen ohne Not bestehen bleiben,
    • Pfade zentralisiert oder klar abgeleitet werden, wo sinnvoll.
  4. Prüfe speziell für CMake:

    • add_subdirectory(...)
    • include(...)
    • target_include_directories(...)
    • target_sources(...)
    • configure_file(...)
    • file(COPY ...), file(GLOB ...), install(...)
    • Pfade zu .ui, .qrc, Headern, Quellen und generierten Assets
    • Variablen, die noch auf alte Layouts zeigen
  5. Prüfe speziell für app/Dockerfile:

    • COPY
    • ADD
    • WORKDIR
    • Build-Argumente / Umgebungsvariablen
    • Annahmen über vorhandene Verzeichnisse im Build-Kontext
    • Submodule-Verfügbarkeit im Container-Build
    • ggf. .dockerignore, falls dadurch qt-migration-legatus/ oder relevante Unterordner ausgeschlossen werden
  6. Prüfe speziell für CI/CD:

    • Submodule-Checkout/Init/Update
    • Cache-Pfade
    • Artifact-Pfade
    • Test-/Packaging-/Deploy-Stages mit alten Pfadannahmen
    • Script-Schritte mit Copy-/Move-/Sync-Operationen
    • Container-Build-Aufrufe mit korrektem Context
  7. Trenne logisch zwischen:

    • Qt5-Altmaterial unter qt-migration-legatus/qt5-before
    • Qt6-Portierungsstand unter qt-migration-legatus/qt6-after

    Diese beiden Bereiche dürfen nicht versehentlich vermischt werden. Wenn die aktuelle Pipeline beides nutzt, dokumentiere die Entscheidung explizit.

Technische Qualitätsanforderungen

  • Zielplattform ist Ubuntu 26.04.
  • Bevorzuge POSIX-nahe Shell-Lösungen (bash), keine PowerShell.
  • Änderungen sollen minimal-invasiv, aber strukturell robust sein.
  • Keine stillen Magic Paths.
  • Wo sinnvoll:
    • zentrale Pfadvariablen in CMake,
    • klare ENV-/ARG-Namen im Dockerfile,
    • explizite Submodule-Schritte in CI.
  • Keine unnötigen Refactorings ohne direkten Nutzen für die Migration.
  • Bestehendes Verhalten möglichst erhalten.
  • Wenn Annahmen nötig sind, markiere sie klar.

Erwartete Ausgabe

Liefere in dieser Reihenfolge:

  1. Analyse
    • Welche Dateien/Build-Stellen noch auf
drwxrwxrwx  2 torsten torsten  4096 Jul 17 17:03 cmake/
-rwxrwxrwx  1 torsten torsten 15357 Jul 22 12:32 CMakeLists.txt*
-rw-rw-rw-  1 torsten torsten    92 Jul 14 13:55 CTestCustom.ctest
drwxrwxrwx  2 torsten torsten  4096 Jul 14 14:12 doxygen/
-rw-rw-rw-  1 torsten torsten     0 Aug 13 19:33 .gitkeep
drwxrwxrwx  8 torsten torsten  4096 Jul 21 15:43 Lts/
-rw-rw-rw-  1 torsten torsten 14908 Jul 21 15:45 lts-cc.conf
drwxrwxrwx  3 torsten torsten  4096 Jul 18 15:22 specs/
drwxrwxrwx  4 root    root     4096 Jul 14 21:53 strix_runs/
drwxrwxrwx  4 torsten torsten  4096 Aug 14 11:46 tests/
drwxrwxrwx  5 torsten torsten  4096 Jul 14 12:14 TetraIF/
drwxrwxrwx  2 torsten torsten  4096 Jul 14 14:45 translations/
drwxrwxrwx  3 torsten torsten  4096 Jul 14 23:50 Z/
verweisen
  • Welche Stellen wegen des neuen Submodules qt-migration-legatus/ kritisch sind
  • Welche Stellen speziell für Qt5-/Qt6-Trennung relevant sind
  1. Konkrete Änderungen

    • als präzise Diffs pro Datei
  2. Begründung

    • kurz und technisch pro wesentlicher Änderung
  3. Risiken / offene Punkte

    • z. B. unklare Zuordnung zwischen qt5-before und qt6-after
    • mögliche Probleme im Docker-Build-Kontext
    • Pipeline-Schritte, die vom Runner-Layout abhängen
  4. Validierung

    • konkrete Checks, z. B.:
      • Submodule erfolgreich ausgecheckt
      • CMake configure/build erfolgreich
      • Docker build erfolgreich
      • relevante Copy-/Artifact-Pfade vorhanden
      • keine Restreferenzen auf
drwxrwxrwx  2 torsten torsten  4096 Jul 17 17:03 cmake/
-rwxrwxrwx  1 torsten torsten 15357 Jul 22 12:32 CMakeLists.txt*
-rw-rw-rw-  1 torsten torsten    92 Jul 14 13:55 CTestCustom.ctest
drwxrwxrwx  2 torsten torsten  4096 Jul 14 14:12 doxygen/
-rw-rw-rw-  1 torsten torsten     0 Aug 13 19:33 .gitkeep
drwxrwxrwx  8 torsten torsten  4096 Jul 21 15:43 Lts/
-rw-rw-rw-  1 torsten torsten 14908 Jul 21 15:45 lts-cc.conf
drwxrwxrwx  3 torsten torsten  4096 Jul 18 15:22 specs/
drwxrwxrwx  4 root    root     4096 Jul 14 21:53 strix_runs/
drwxrwxrwx  4 torsten torsten  4096 Aug 14 11:46 tests/
drwxrwxrwx  5 torsten torsten  4096 Jul 14 12:14 TetraIF/
drwxrwxrwx  2 torsten torsten  4096 Jul 14 14:45 translations/
drwxrwxrwx  3 torsten torsten  4096 Jul 14 23:50 Z/

Arbeitsweise

Gehe in dieser Reihenfolge vor:

  1. Finde alle Referenzen auf
drwxrwxrwx  2 torsten torsten  4096 Jul 17 17:03 cmake/
-rwxrwxrwx  1 torsten torsten 15357 Jul 22 12:32 CMakeLists.txt*
-rw-rw-rw-  1 torsten torsten    92 Jul 14 13:55 CTestCustom.ctest
drwxrwxrwx  2 torsten torsten  4096 Jul 14 14:12 doxygen/
-rw-rw-rw-  1 torsten torsten     0 Aug 13 19:33 .gitkeep
drwxrwxrwx  8 torsten torsten  4096 Jul 21 15:43 Lts/
-rw-rw-rw-  1 torsten torsten 14908 Jul 21 15:45 lts-cc.conf
drwxrwxrwx  3 torsten torsten  4096 Jul 18 15:22 specs/
drwxrwxrwx  4 root    root     4096 Jul 14 21:53 strix_runs/
drwxrwxrwx  4 torsten torsten  4096 Aug 14 11:46 tests/
drwxrwxrwx  5 torsten torsten  4096 Jul 14 12:14 TetraIF/
drwxrwxrwx  2 torsten torsten  4096 Jul 14 14:45 translations/
drwxrwxrwx  3 torsten torsten  4096 Jul 14 23:50 Z/
  1. Identifiziere alle Build-/CI-/Docker-Stellen, die D als Submodule korrekt einbinden müssen.
  2. Leite pro Fundstelle den neuen Zielpfad ab.
  3. Schlage minimal robuste Änderungen vor.
  4. Liefere die Änderungen als Diffs.
  5. Formuliere am Ende eine kurze Validierungs-Checkliste für Ubuntu-26.04-CI.

Zusätzliche Vorgaben

  • Wenn du alte Pfade durch neue ersetzt, tue das nicht blind global, sondern kontextabhängig.
  • Wenn CMake- oder Dockerfile-Logik bisher auf manuell kopierte Inhalte ausgelegt ist, passe sie so an, dass die neue Struktur explizit und nachvollziehbar verwendet wird.
  • Wenn ein Build-Schritt semantisch eher auf „Eingabe vor Portierung“ verweist, nutze bevorzugt qt-migration-legatus/qt5-before.
  • Wenn ein Build-Schritt auf bereits portierte Qt6-Artefakte oder Zielstände verweist, nutze bevorzugt qt-migration-legatus/qt6-after.
  • Wenn die vorhandene Logik diese Entscheidung nicht eindeutig macht, dokumentiere die Annahme direkt bei der Änderung.
  • Ergänze nur dort knappe Kommentare, wo die neue Struktur sonst schwer verständlich wäre.

Beginne mit einer vollständigen Bestandsaufnahme aller relevanten Pfadreferenzen und liefere danach die minimalen robusten Änderungen für CI/CD, CMake und Dockerfile unter Ubuntu 26.04.