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
- 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
-
Ermittle für jede Referenz die korrekte neue Zielstruktur:
qt-migration-legatus/...qt-migration-legatus/qt5-before/...qt-migration-legatus/qt6-after/...
-
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
-
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.
-
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
-
Prüfe speziell für
app/Dockerfile:COPYADDWORKDIR- Build-Argumente / Umgebungsvariablen
- Annahmen über vorhandene Verzeichnisse im Build-Kontext
- Submodule-Verfügbarkeit im Container-Build
- ggf.
.dockerignore, falls dadurchqt-migration-legatus/oder relevante Unterordner ausgeschlossen werden
-
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
-
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.
- Qt5-Altmaterial unter
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:
- 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
-
Konkrete Änderungen
- als präzise Diffs pro Datei
-
Begründung
- kurz und technisch pro wesentlicher Änderung
-
Risiken / offene Punkte
- z. B. unklare Zuordnung zwischen
qt5-beforeundqt6-after - mögliche Probleme im Docker-Build-Kontext
- Pipeline-Schritte, die vom Runner-Layout abhängen
- z. B. unklare Zuordnung zwischen
-
Validierung
- konkrete Checks, z. B.:
- Submodule erfolgreich ausgecheckt
- CMake configure/build erfolgreich
- Docker build erfolgreich
- relevante Copy-/Artifact-Pfade vorhanden
- keine Restreferenzen auf
- konkrete Checks, z. B.:
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:
- 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/
- Identifiziere alle Build-/CI-/Docker-Stellen, die
Dals Submodule korrekt einbinden müssen. - Leite pro Fundstelle den neuen Zielpfad ab.
- Schlage minimal robuste Änderungen vor.
- Liefere die Änderungen als Diffs.
- 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.