@@ -0,0 +1,126 @@
|
||||
# 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_<version>_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`
|
||||
Reference in New Issue
Block a user