# mesa-repo Dieses Repo baut per Gitea Actions ein eigenstaendiges `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__amd64.deb` ## Build-Profil Standardmaessig baut das Repo Mesa mit beiden Plattformen: - `x11` - `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-Staende 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 spaetere 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` veroeffentlicht. ## Release-Notes Die Release-Notes werden automatisch erzeugt und enthalten: - den verwendeten Mesa-Upstream-Commit - das gebaute Paket - die Mesa-Commits seit dem vorherigen `mesa-git`-Release Wenn kein vorheriger passender Release-Vergleich gefunden wird, nutzt der Workflow als Fallback die juengsten Upstream-Commits. ## Trigger Der Workflow laeuft bei: - Push auf `main` - manuellem Start per `workflow_dispatch` - automatischem Zeitplan alle 3 Tage Releases werden als normale Releases angelegt, nicht als Pre-Releases. ## APT-Einbindung Der Workflow veroeffentlicht zusaetzlich einen einfachen Debian-Repo-Baum auf dem Branch `apt`. Die Einbindung ist dann ueber die Raw-URL des Branches moeglich, zum Beispiel: ```text deb [trusted=yes] https://git.mp-mueller.de/magges/mesa-repo/raw/branch/apt stable main ``` Danach: ```bash sudo apt update sudo apt install mesa-git ``` Hinweis: - das Repo ist aktuell unsigniert - fuer APT wird deshalb hier `trusted=yes` verwendet - wenn du willst, kann ich als naechsten 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 ueber den Wrapper genutzt werden: ```bash mesa-git-env glxinfo mesa-git-env vkcube ``` Der Wrapper setzt die noetigen Mesa-Pfade fuer `LD_LIBRARY_PATH`, `LIBGL_DRIVERS_PATH`, `VK_LAYER_PATH` und `VK_ICD_FILENAMES`. ## Lokaler Test Mit installierten Build-Abhaengigkeiten: ```bash ./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`