131 lines
3.4 KiB
Markdown
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`
|