Files
mesa-repo/README.md
T

131 lines
3.4 KiB
Markdown

# 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:
```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
- 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:
```bash
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:
```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`