Files
mesa-repo/README.md
T

3.4 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

Build-Profil

Standardmäßig baut das Repo Mesa für:

  • wayland

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

Zusammen mit einem aktuellen libdrm-Snapshot, damit neue Mesa-Stände nicht an zu alten Distributionspaketen scheitern.

Ablauf

  1. Gitea Actions startet auf dem act_runner.
  2. scripts/build-mesa-opt.sh klont libdrm und Mesa direkt von Upstream.
  3. libdrm wird zuerst gebaut und in das spätere Prefix vorbereitet.
  4. Mesa wird danach mit Meson/Ninja gebaut.
  5. Das Ergebnis wird als .deb paketiert.
  6. Ein Gitea Release wird erstellt oder aktualisiert.
  7. Das .deb wird als Release-Asset hochgeladen.
  8. Die Release-Notes werden automatisch aus der Mesa-Upstream-History erzeugt.
  9. Ein apt-kompatibler Repo-Baum wird auf den Branch apt verö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 Changes
  • Mesa 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.

Die Einbindung ist dann über die Raw-URL des Branches möglich, zum Beispiel:

deb [trusted=yes] https://git.mp-mueller.de/magges/mesa-repo/raw/branch/apt stable main

Danach:

sudo apt update
sudo apt install mesa-git

Hinweis:

  • das Repo ist aktuell unsigniert
  • für APT wird deshalb hier trusted=yes verwendet
  • 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 Treiberprofil
  • scripts/build-mesa-opt.sh: Build und Paketierung
  • scripts/generate-release-notes.sh: automatische Release-Notes aus Mesa-Commits
  • scripts/generate-apt-repo.sh: erzeugt den APT-Repo-Baum
  • .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.

Lokaler Test

Mit installierten Build-Abhängigkeiten:

./scripts/build-mesa-opt.sh

Anpassen

Die wichtigsten Schalter liegen in config/mesa-opt.conf:

  • UPSTREAM_GIT_REF
  • INSTALL_PREFIX
  • PLATFORMS
  • GALLIUM_DRIVERS
  • VULKAN_DRIVERS
  • VULKAN_LAYERS