4.6 KiB
mesa-repo
Dieses Repo baut per Gitea Actions ein eigenständiges mesa-git-Paket als .deb.
Das Paket installiert Mesa separat unter /opt/mesa-git, damit es parallel zur
System-Mesa genutzt werden kann.
Was gebaut wird
- Paketname:
mesa-git - Installationspfad:
/opt/mesa-git - Wrapper:
/usr/bin/mesa-git-env - Ausgabe:
mesa-git_<version>_amd64.deb - Versionsschema:
<mesa-version>+r<mesa-commit-count>.<mesa-sha>-<debian-revision>
Build-Profil
Standardmäßig baut das Repo Mesa für:
x11wayland
Und mit diesem Treiberprofil:
- AMD:
radeonsi,r300,r600 - Intel:
iris,crocus - NVIDIA nouveau:
nouveau - Fallback:
zink,llvmpipe,softpipe - Vulkan:
amd,intel,intel_hasvk,nouveau,swrast
Das Profil ist damit besser für Steam, Proton und Xwayland geeignet als ein hartes Wayland-only-Build.
Zusammen mit einem aktuellen libdrm-Snapshot, damit neue Mesa-Stände nicht an
zu alten Distributionspaketen scheitern.
Ablauf
- Gitea Actions startet auf dem
act_runner. scripts/build-mesa-opt.shklontlibdrmund Mesa direkt von Upstream.libdrmwird zuerst gebaut und in das spätere Prefix vorbereitet.- Mesa wird danach mit Meson/Ninja gebaut.
- Das Ergebnis wird als
.debpaketiert. - Ein Gitea Release wird erstellt oder aktualisiert.
- Das
.debwird als Release-Asset hochgeladen. - Die Release-Notes werden automatisch aus der Mesa-Upstream-History erzeugt.
- Ein apt-kompatibler Repo-Baum wird auf den Branch
aptveröffentlicht.
Release-Notes
Die Release-Notes werden automatisch erzeugt und enthalten:
- eigene Repo-Commits für dieses Release
- den verwendeten Mesa-Upstream-Commit
- das gebaute Paket
- die Mesa-Commits seit dem vorherigen
mesa-git-Release
Die beiden Bereiche werden getrennt dargestellt:
Repo ChangesMesa Upstream
Wenn kein vorheriger passender Release-Vergleich gefunden wird, nutzt der Workflow als Fallback die jüngsten Upstream-Commits.
Trigger
Der Workflow läuft bei:
- manuellem Start per
workflow_dispatch - automatischem Zeitplan alle 3 Tage
Releases werden als normale Releases angelegt, nicht als Pre-Releases.
APT-Einbindung
Der Workflow veröffentlicht zusätzlich einen einfachen Debian-Repo-Baum auf
dem Branch apt.
Wichtig: APT braucht anonym erreichbare HTTP-Dateien wie dists/stable/Release
und pool/...deb. Ein funktionierendes git ls-remote reicht dafür nicht aus.
Auf dieser Gitea-Instanz war die bisher dokumentierte Raw-URL für anonyme
HTTP-Clients nicht erreichbar und lieferte 404. Genau daran scheitert dann
apt update auf Ubuntu, obwohl der apt-Branch in Git existiert.
Deshalb gilt:
- nutze für Clients nur eine wirklich öffentlich erreichbare statische HTTP-URL
- setze diese Basis-URL in
config/mesa-opt.confalsAPT_PUBLIC_BASE_URL - der Workflow prüft dann nach dem Publish, ob
Release,Packagesund das referenzierte.debanonym abrufbar sind
Beispiel für die Konfiguration:
APT_SUITE="stable"
APT_COMPONENT="main"
APT_PUBLIC_BASE_URL="https://packages.example.tld/mesa-repo"
Die Einbindung auf dem Client sieht dann so aus:
deb [trusted=yes] https://packages.example.tld/mesa-repo stable main
Danach:
sudo apt update
sudo apt install mesa-git
Hinweis:
- das Repo ist aktuell unsigniert
- für APT wird deshalb hier
trusted=yesverwendet scripts/verify-apt-repo.sh --remoteprüft, ob die öffentliche URL wirklich APT-tauglich ist- wenn du willst, kann ich als nächsten Schritt auch noch Release-Signierung mit GPG einbauen
Wichtige Dateien
config/mesa-opt.conf: Paketname, Prefix, Plattformen und Treiberprofilscripts/build-mesa-opt.sh: Build und Paketierungscripts/generate-release-notes.sh: automatische Release-Notes aus Mesa-Commitsscripts/generate-apt-repo.sh: erzeugt den APT-Repo-Baumscripts/verify-apt-repo.sh: prüft Repo-Struktur und optional den öffentlichen APT-Endpunkt.gitea/workflows/build.yml: Gitea-Workflow
Benutzung
Nach der Installation kann das Paket über den Wrapper genutzt werden:
mesa-git-env glxinfo
mesa-git-env vkcube
Der Wrapper setzt die nötigen Mesa-Pfade für LD_LIBRARY_PATH,
LIBGL_DRIVERS_PATH, VK_LAYER_PATH und VK_ICD_FILENAMES.
Vorhandene Vulkan-ICDs aus dem Paket werden dabei automatisch eingesammelt.
Lokaler Test
Mit installierten Build-Abhängigkeiten:
./scripts/build-mesa-opt.sh
Anpassen
Die wichtigsten Schalter liegen in config/mesa-opt.conf:
UPSTREAM_GIT_REFINSTALL_PREFIXPLATFORMSGALLIUM_DRIVERSVULKAN_DRIVERSVULKAN_LAYERS