# PaganOS Recipes Receptury pakietów dla [PaganOS](https://paganlinux.eu). Każdy plik `PAGBUILD.yaml` definiuje jak zbudować pojedynczy pakiet. ## Struktura ``` recipes/ ├── core/ # pakiety bazowe (binutils, gcc, glibc, ...) ├── drivers/ # sterowniki (libinput, mesa, ...) ├── net/ # sieć (curl, wget, NetworkManager, ...) ├── gui/ # pakiety GUI (gtk, qt, xfce, ...) ├── utils/ # narzędzia (bubblewrap, ripgrep, ...) └── boot/ # bootloader (grub) ``` ## Format PAGBUILD.yaml ```yaml pkgname: acl pkgver: '2.4.0' pkgrel: 1 pkgdesc: Commands for Manipulating POSIX Access Control Lists. url: http://savannah.nongnu.org/projects/acl arch: x86_64 license: - GPL-2.0-only depends: - attr makedepends: - gcc source: - http://download.savannah.gnu.org/releases/${pkgname}/${pkgname}-${pkgver}.tar.gz sha256sums: - SKIP build: | cd "${pkgname}-${pkgver}" ./configure --prefix=/usr make -j$(nproc) package: | cd "${pkgname}-${pkgver}" make DESTDIR="${PKGDIR}" install ``` ### Zmienne dostępne w fazach build/package - `${PKGDIR}` — katalog DESTDIR (instalacja pakietu) - `${pkgname}`, `${pkgver}`, `${pkgrel}` — podstawiane też w adresach `source:` ### Model pakietu (jak Arch/Debian — bez footprintów) Receptura **nie deklaruje listy plików**. Faza `package:` instaluje wszystko do `${PKGDIR}` (DESTDIR) i z tego katalogu `pagbuild` tworzy **jeden pakiet** — dokładnie jak `PKGBUILD` w Archu czy reguły `install` w Debianie. Lista plików nie jest danymi wejściowymi, tylko **pochodną** pakietu: `pag` wylicza SHA256 dla każdego pliku przy instalacji i zapisuje je w `/var/lib/pag/files.db` (rola, którą w Debianie pełni `md5sums`/`.list`, a w Archu `.MTREE`). > **Nie używamy już pól `footprint`, `footprint_devel`, `footprint_man`, > `footprint_`** — to balast z formatu cards/NuTyX, którego `pagbuild` > nigdy nie czytał. Podpakiety deweloperskie/dokumentacyjne/językowe są scalane > z pakietem głównym (ich pliki i tak trafiają do DESTDIR). Do usuwania tych pól > z istniejących receptur służy `strip-recipes-footprints.py`. ### Pakiet wyjściowy `pagbuild` buduje pakiety **`.pag`** (tar.xz z `metadata.json` + `data.tar.xz`), gotowe do instalacji przez `pag install plik.pag`. W repo trzymamy wyłącznie aktualną wersję każdego pakietu — starsze są usuwane przez `pagsync`. ## Budowanie lokalnie ```bash pagbuild recipes/core/acl/PAGBUILD.yaml ``` ## Narzędzia - `migrate-recipes.py` — konwertuje receptury `cards` (Pkgfile) na `PAGBUILD.yaml` (footprinty są celowo pomijane) - `strip-recipes-footprints.py` — usuwa pola `footprint*` z istniejących receptur (idempotentne; `--apply`, aby zapisać, domyślnie dry-run) ## Polityka forków Fork-first w całym repo: [`../../FORK-POLICY.md`](../../FORK-POLICY.md). Krótko: co możemy zrobić forkiem, robimy forkiem — źródła w repo, pakiet `-pagan`, lokalny tarball + wyliczony sha256 (build bez sieci) i adnotacja licencyjna o statusie forka (`FORK.md` + `NOTICE`).