recipes
git clone https://git.paganlinux.eu/recipes.git
PaganOS Recipes
Receptury pakietów dla PaganOS. 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
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 adresachsource:
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_<lang>— to balast z formatu cards/NuTyX, któregopagbuildnigdy 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żystrip-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
pagbuild recipes/core/acl/PAGBUILD.yaml
Narzędzia
migrate-recipes.py— konwertuje recepturycards(Pkgfile) naPAGBUILD.yaml(footprinty są celowo pomijane)strip-recipes-footprints.py— usuwa polafootprint*z istniejących receptur (idempotentne;--apply, aby zapisać, domyślnie dry-run)
Polityka forków
Fork-first w całym repo: ../../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).
- 47187c9 giblib: shim imlib2-config (imlib2 1.12+ go nie instaluje); fcron: --with-sendmail=no
- 8b617c1 glibc: unset CFLAGS (bez -O glibc nie chce sie budowac)
- 1d56ee1 tllist: depends: [] (pusty depends lamal resolve_build_order)
- a3aefb9 xfce4-panel 4.20.8-2: poprawne depends (byl tylko 'bazaar'!) + fcft/foot nazwy pakietow
- e6adfae sway-desktop: kompletne srodowisko sway (11 receptur + meta z konfigiem)
- 115670e fix: 17 receptur (petla auto-deps + bledy buildow)
- 7e8f83c ghostscript: cp -r ../fonts (fonts laduia w katalogu zrodel z archiwum gs-fonts, nie w src)
- c773e0e cool-retro-term: pkgver 2.0.0 -> 2.0.0-beta2 (tag 2.0.0 nie istnieje; cache mial archiwum sphinxcontrib-qthelp - kolizja basename)
- 522cfa8 fix: 13 porazek builda - dnsmasq (sciezka patch ../), dvd+rw-tools (sys/sysmacros.h), fcron (idempotentny groupadd/useradd), flatpak (docbook_docs=disabled), foomatic-db x3 (aktualne wersje + cd bez globa), galculator (URL github), gavl (git fetch --unshallow), geoclue2/corrosion (katalog zrodlowy), cd ${pkgname}-* -> */ (glob lapat skopiowane archiwum)
- 2d8a006 alsa-plugins: fix sciezki do lokalnego alsa-plugins.conf (../ zamiast ./)
- fa5c8d2 wlroots: strip -D_GNU_SOURCE z CFLAGS i CPPFLAGS
- 010cf59 wlroots: strip -D_GNU_SOURCE z CFLAGS (redefinicja + Werror w udmabuf.c)
- e499ebb itstool: raw strings w re.sub/re.compile (fix SyntaxWarning Python 3.12+)
- c83b3e1 fix: package-phase 'cd' w 8 recepturach meson/cmake
- b901883 wlroots: patch BGR888 z liniami ---/+++