feat(ci): poort op de systeembibliotheken die de Linux-build nodig heeft #1764
No reviewers
Labels
No labels
accepted
bug
declined
docs
duplicate
enhancement
good first issue
in-progress
needs-info
privacy
security
triage
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
LibreKAT/Ocideck!1764
Loading…
Reference in a new issue
No description provided.
Delete branch "fix/linux-deps-poort"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Waarom
v0.4.9 kreeg geen release. Niet omdat er iets stuk was dat een poort had kunnen
zien, maar omdat niets de Linux-desktop bouwt tussen een merge en een tag:
make check(-no-coverage)draaitflutter test, enflutter build linuxkomtpas in de releaseketen langs. De nativeapi-migratie (#1741) bracht
cnativeapimee, dat op Linux
ayatana-appindicator3-0.1opeist — de enige van zijn vierpkg-config-modules die
libgtk-3-devniet meebrengt. CMake viel om vóórdat eriets gecompileerd werd, de job
linuxfaalde,publicerenneedt hem, en de tagleverde niets op. Van de merge tot de tag stond alles groen.
De reparatie zelf zit in #1762. Dit is de poort eromheen.
Twee lagen, bewust gescheiden
1.
make check-linux-deps(in deSTATIC_GATES, dus op elke PR). Leest élkepkg_check_modules(... REQUIRED ...)uit de opgeloste plugin-bronnen en legt dienaast
.github/linux-pkgconfig-modules.json: welk apt-pakket levert de module,welke buildomgevingen moeten dat installeren, en welke runtime-bibliotheek
moeten het
.deben de AUR-PKGBUILD noemen.hierboven; een pakket dat geen plugin meer vraagt laten we gebruikers voor
niets installeren.
installeert een deel en erft de rest van het voorgebakken image, dus elke
omgeving noemt alle bestanden die het pakket mogen dragen.
die het installeert — zonder die regel houd je de poort groen door alleen het
apt-argument te schrappen.
precies het moment van #1741) en een apt-regel zonder het pakket. Allebei rood,
met een melding die het bestand noemt dat bijgewerkt moet worden.
2.
linux-build.ymldraait weer na een merge naarmain— maar alleen alspubspec.yaml/pubspec.lock,linux/,third_party/of het CI-imageveranderde. Laag 1 ziet alleen wat via pkg-config wordt gevraagd;
find_library,een header of een build-script dat een tool aanroept blijven onzichtbaar, en
daarvoor moet er echt gebouwd worden.
Dit kost runnertijd — dat is de afweging in deze PR. #790 zette deze
workflow uit omdat hij bij élke push 17,5 minuten kostte en
release.ymltoch albouwde. Dat argument klopt nog steeds voor het inpakken; het klopte niet voor het
bouwen zelf, en die vergissing kostte een release. Het padfilter is het
compromis: bij gewoon Dart-werk zwijgt hij, dus dit valt een paar keer per maand.
Wil je die minuten niet, schrap dan de
push:-trekker en houd laag 1 — zeg het,dan haal ik hem eruit.
Toetsing
make checkgroen (exit 0).test/linux_pkgconfig_manifest_test.dartdraait de tekstelijke helft van hetmanifest ook in de suite, zodat een scheefgegroeid manifest ook faalt waar de
pub-cache niet gevuld is.
docs/CHECKS.md, inclusief het plafond van laag 1.Bewaker
Overgeslagen, expliciet: poorten en documentatie, geen formaat-, opslag- of
beloftewijziging. Wat het wél raakt is een afhankelijkheid van buiten die we
gebruikers opleggen — en dat is precies wat de poort zichtbaar maakt in plaats
van verbergt.