← recipes

Commit db048b2a

16
files
+657
added
-7
deleted
@@ -0,0 +1,77 @@
1 +# Receptura PaganOS (pagbuild) — greetd, backend ekranu logowania Luna.
2 +#
3 +# greetd jest uprzywilejowanym daemonem: PAM, logind i uruchomienie sesji
4 +# zostają po jego stronie. Frontend `luna-greeter` działa jako użytkownik
5 +# `greeter` i rozmawia z greetd po gnieździe JSON (/run/greetd-ipc).
6 +#
7 +# Brak zależności GTK/Qt — greetd jest napisany w Rust i linkuje wyłącznie PAM.
8 +
9 +pkgname: greetd
10 +pkgver: '0.10.3'
11 +pkgrel: 1
12 +pkgdesc: 'greetd — minimalny menedżer logowania (PAM/logind) dla luna-greeter; bez GTK/Qt'
13 +url: 'https://git.sr.ht/~kennylevinsen/greetd'
14 +arch: x86_64
15 +license:
16 +- GPL-3.0-only
17 +depends:
18 +- pam
19 +makedepends:
20 +- rustc
21 +- scdoc
22 +source:
23 +- greetd-${pkgver}.tar.gz
24 +sha256sums:
25 +- ee5cb70e0add4ca9c9fe57e47581ab0002d44c07743fb5492469f3b570db640b
26 +hooks:
27 + post-install: |
28 + # Konto greetera: luna-greeter i agreety działają bez uprawnień roota.
29 + # Grupy video/render/input są potrzebne Selene w trybie DRM (ekran logowania).
30 + if ! getent passwd greeter >/dev/null 2>&1; then
31 + useradd -r -M -d /var/lib/greetd -s /usr/bin/nologin -c "Luna Greeter" greeter || true
32 + fi
33 + mkdir -p /var/lib/greetd
34 + chown greeter:greeter /var/lib/greetd 2>/dev/null || true
35 + for g in video render input; do
36 + if getent group "$g" >/dev/null 2>&1; then
37 + usermod -aG "$g" greeter || true
38 + fi
39 + done
40 + systemctl daemon-reload >/dev/null 2>&1 || true
41 +build: |
42 + cd ${pkgname}-${pkgver}
43 +
44 + cargo build --release --locked -p greetd -p agreety
45 +
46 + install -Dm755 target/release/greetd "${PKGDIR}/usr/bin/greetd"
47 + install -Dm755 target/release/agreety "${PKGDIR}/usr/bin/agreety"
48 +
49 + install -Dm644 greetd.service "${PKGDIR}/usr/lib/systemd/system/greetd.service"
50 + install -Dm644 config.toml "${PKGDIR}/etc/greetd/config.toml"
51 +
52 + # PAM w PaganOS: pakiet shadow dostarcza system-auth / system-account /
53 + # system-password / system-session. `greetd-greeter` obsługuje sesję
54 + # użytkownika greetera, `greetd` — docelowe konto po zalogowaniu.
55 + install -d "${PKGDIR}/etc/pam.d"
56 + cat > "${PKGDIR}/etc/pam.d/greetd" <<'EOF'
57 + #%PAM-1.0
58 + auth include system-auth
59 + account include system-account
60 + password include system-password
61 + session include system-session
62 + EOF
63 + install -m644 "${PKGDIR}/etc/pam.d/greetd" "${PKGDIR}/etc/pam.d/greetd-greeter"
64 +
65 + scdoc < man/greetd-1.scd > man/greetd.1
66 + scdoc < man/agreety-1.scd > man/agreety.1
67 + scdoc < man/greetd-5.scd > man/greetd.5
68 + scdoc < man/greetd-ipc-7.scd > man/greetd-ipc.7
69 + install -Dm644 man/greetd.1 "${PKGDIR}/usr/share/man/man1/greetd.1"
70 + install -Dm644 man/agreety.1 "${PKGDIR}/usr/share/man/man1/agreety.1"
71 + install -Dm644 man/greetd.5 "${PKGDIR}/usr/share/man/man5/greetd.5"
72 + install -Dm644 man/greetd-ipc.7 "${PKGDIR}/usr/share/man/man7/greetd-ipc.7"
73 +
74 + install -Dm644 LICENSE "${PKGDIR}/usr/share/licenses/${pkgname}/LICENSE"
75 + install -Dm644 README.md "${PKGDIR}/usr/share/doc/${pkgname}/README.md"
76 +package: |
77 + true
0 78 new file mode 100644
1 79 Binary files /dev/null and b/de/greetd/greetd-0.10.3.tar.gz differ
2 80 new file mode 100644
@@ -0,0 +1,63 @@
1 +# Receptura PaganOS (pagbuild) — libLuna (toolkit GUI + demo).
2 +#
3 +# Wspólne źródło: tarball całego workspace'u Luny (libLuna + Selene + powłoka
4 +# + greeter). Ten pakiet instaluje demo/galerię, tłumaczenia i motywy, z których
5 +# korzystają także `luna`, `selene` i `luna-greeter`.
6 +#
7 +# Bez GTK/Qt: libLuna rysuje przez tiny-skia, a Wayland obsługuje własnym
8 +# klientem (wayland-client). Jedyna zewnętrzna biblioteka runtime to
9 +# libxkbcommon.
10 +
11 +pkgname: libluna
12 +pkgver: '0.0.1'
13 +pkgrel: 1
14 +pkgdesc: 'libLuna — lekki toolkit GUI w Rust (alternatywa dla GTK4/libadwaita): widgety, render, i18n, demo i galeria'
15 +url: 'https://github.com/mijsys/libLuna'
16 +arch: x86_64
17 +license:
18 +- MPL-2.0
19 +depends:
20 +- libxkbcommon
21 +- dejavu-ttf
22 +makedepends:
23 +- rustc
24 +- librsvg
25 +source:
26 +- luna-${pkgver}.tar.gz
27 +sha256sums:
28 +- e27330f0e89605f2425300394020a0b9d0b423b3a94c6cdd8dc93a6fc8096b1d
29 +build: |
30 + cd luna-${pkgver}
31 +
32 + cargo build --release --locked -p luna-demo
33 +
34 + install -Dm755 target/release/luna-demo "${PKGDIR}/usr/bin/luna-demo"
35 + install -Dm755 target/release/gallery "${PKGDIR}/usr/bin/luna-gallery"
36 + install -Dm755 target/release/showcase "${PKGDIR}/usr/bin/luna-showcase"
37 + install -Dm644 de/session/luna-showcase.desktop \
38 + "${PKGDIR}/usr/share/applications/luna-showcase.desktop"
39 +
40 + # Ikona sesji (greeter i menu sesji). SVG + rastrowe rozmiary dla greeterów,
41 + # które nie potrafią czytać SVG.
42 + install -Dm644 assets/branding/luna.svg \
43 + "${PKGDIR}/usr/share/icons/hicolor/scalable/apps/luna.svg"
44 + for s in 16 24 32 48 64 128 256; do
45 + install -d "${PKGDIR}/usr/share/icons/hicolor/${s}x${s}/apps"
46 + rsvg-convert -w "$s" -h "$s" assets/branding/luna.svg \
47 + -o "${PKGDIR}/usr/share/icons/hicolor/${s}x${s}/apps/luna.png"
48 + done
49 + install -d "${PKGDIR}/usr/share/pixmaps"
50 + rsvg-convert -w 256 -h 256 assets/branding/luna.svg \
51 + -o "${PKGDIR}/usr/share/pixmaps/luna.png"
52 +
53 + # Tłumaczenia i motywy doładowywane w runtime z /usr/share/luna.
54 + install -d "${PKGDIR}/usr/share/luna/i18n"
55 + install -m644 crates/libluna-i18n/i18n/*.lang "${PKGDIR}/usr/share/luna/i18n/"
56 +
57 + install -d "${PKGDIR}/usr/share/luna/themes"
58 + install -m644 examples/luna/themes/*.theme "${PKGDIR}/usr/share/luna/themes/"
59 +
60 + install -Dm644 LICENSE "${PKGDIR}/usr/share/licenses/${pkgname}/LICENSE"
61 + install -Dm644 README.md "${PKGDIR}/usr/share/doc/${pkgname}/README.md"
62 +package: |
63 + true
0 64 new file mode 100644
1 65 Binary files /dev/null and b/de/libluna/luna-0.0.1.tar.gz differ
2 66 new file mode 100644
@@ -0,0 +1,69 @@
1 +# Receptura PaganOS (pagbuild) — Luna Greeter (frontend greetd).
2 +#
3 +# UI ekranu logowania zbudowane na libLunie (Rust, bez GTK/Qt). Greeter jest
4 +# nieuprzywilejowanym frontendem: PAM i start sesji wykonuje greetd.
5 +#
6 +# Po instalacji hook ustawia greetd tak, aby domyślną sesją był
7 +# `luna-greeter-session` — o ile administrator nie ma już własnej konfiguracji.
8 +
9 +pkgname: luna-greeter
10 +pkgver: '0.0.1'
11 +pkgrel: 1
12 +pkgdesc: 'Luna Greeter — ekran logowania Luna: frontend greetd na libLunie (bez GTK/Qt)'
13 +url: 'https://github.com/mijsys/libLuna'
14 +arch: x86_64
15 +license:
16 +- MPL-2.0
17 +depends:
18 +- greetd
19 +- selene
20 +- libxkbcommon
21 +- dejavu-ttf
22 +makedepends:
23 +- rustc
24 +source:
25 +- luna-${pkgver}.tar.gz
26 +sha256sums:
27 +- e27330f0e89605f2425300394020a0b9d0b423b3a94c6cdd8dc93a6fc8096b1d
28 +hooks:
29 + post-install: |
30 + # Domyślna konfiguracja greetd dla Luny. Nie nadpisujemy własnej
31 + # konfiguracji administratora — tylko brak pliku albo fabryczny agreety.
32 + if [ ! -f /etc/greetd/config.toml ] || grep -q 'agreety' /etc/greetd/config.toml; then
33 + install -d -m 0755 /etc/greetd
34 + printf '%s\n' \
35 + '[terminal]' \
36 + 'vt = 1' \
37 + '' \
38 + '[default_session]' \
39 + 'command = "luna-greeter-session"' \
40 + 'user = "greeter"' \
41 + > /etc/greetd/config.toml
42 + fi
43 + # Konto greetera i dostęp do DRM/input (Selene rysuje ekran logowania).
44 + if getent passwd greeter >/dev/null 2>&1; then
45 + mkdir -p /var/lib/greetd
46 + chown greeter:greeter /var/lib/greetd 2>/dev/null || true
47 + for g in video render input; do
48 + if getent group "$g" >/dev/null 2>&1; then
49 + usermod -aG "$g" greeter || true
50 + fi
51 + done
52 + fi
53 +build: |
54 + cd luna-${pkgver}
55 +
56 + cargo build --release --locked -p luna-greeter --bins
57 +
58 + install -Dm755 target/release/luna-greeter "${PKGDIR}/usr/bin/luna-greeter"
59 + install -Dm755 target/release/luna-greeter-config "${PKGDIR}/usr/bin/luna-greeter-config"
60 + install -Dm755 de/session/luna-greeter-session "${PKGDIR}/usr/bin/luna-greeter-session"
61 +
62 + # Przykład konfiguracji greetd (ten sam plik jest w drzewie: de/greetd/).
63 + install -Dm644 de/greetd/config.toml.example \
64 + "${PKGDIR}/usr/share/luna/greetd/config.toml.example"
65 +
66 + install -Dm644 LICENSE "${PKGDIR}/usr/share/licenses/${pkgname}/LICENSE"
67 + install -Dm644 docs/greeter.md "${PKGDIR}/usr/share/doc/${pkgname}/greeter.md"
68 +package: |
69 + true
0 70 new file mode 100644
1 71 Binary files /dev/null and b/de/luna-greeter/luna-0.0.1.tar.gz differ
2 72 new file mode 100644
@@ -0,0 +1,65 @@
1 +# Receptura PaganOS (pagbuild) — powłoka Luna (panel, launcher, OSD, aplikacje).
2 +#
3 +# Pakiet zawiera binarki powłoki oraz aplikacje Luna (Files, Settings), a także
4 +# integrację sesji (portale XDG). Działa na kompozytorze Selene — zależność
5 +# `selene` daje `luna-session` i wpis sesji, a `luna-greeter` helper zapisu
6 +# ustawień ekranu logowania używany przez Ustawienia.
7 +#
8 +# Świadomie bez GTK/Qt: wszystkie binarki to libLuna + Rust.
9 +
10 +pkgname: luna
11 +pkgver: '0.0.1'
12 +pkgrel: 1
13 +pkgdesc: 'Luna — powłoka środowiska graficznego (panel, launcher, OSD, keyring/polkit, Ustawienia, Pliki) na libLunie'
14 +url: 'https://github.com/mijsys/libLuna'
15 +arch: x86_64
16 +license:
17 +- MPL-2.0
18 +depends:
19 +- libluna
20 +- selene
21 +- luna-greeter
22 +- dbus
23 +- polkit
24 +- systemd
25 +- libxkbcommon
26 +- dejavu-ttf
27 +- glib
28 +- networkmanager
29 +- udisks2
30 +- xdg-utils
31 +- shared-mime-info
32 +makedepends:
33 +- rustc
34 +source:
35 +- luna-${pkgver}.tar.gz
36 +sha256sums:
37 +- e27330f0e89605f2425300394020a0b9d0b423b3a94c6cdd8dc93a6fc8096b1d
38 +build: |
39 + cd luna-${pkgver}
40 +
41 + cargo build --release --locked -p luna -p luna-settings -p luna-files
42 +
43 + # Powłoka: panel, launcher, OSD, keyring, agent polkit, blokada ekranu.
44 + for b in luna-shell luna-panel luna-apps luna-polkit luna-lock luna-keyring; do
45 + install -Dm755 "target/release/$b" "${PKGDIR}/usr/bin/$b"
46 + done
47 +
48 + # Aplikacje Luna.
49 + install -Dm755 target/release/luna-settings "${PKGDIR}/usr/bin/luna-settings"
50 + install -Dm755 target/release/luna-files "${PKGDIR}/usr/bin/luna-files"
51 + install -Dm755 target/release/gaminedes "${PKGDIR}/usr/bin/gaminedes"
52 +
53 + install -Dm644 de/session/eu.luna.Settings.desktop \
54 + "${PKGDIR}/usr/share/applications/eu.luna.Settings.desktop"
55 + install -Dm644 de/session/eu.luna.Files.desktop \
56 + "${PKGDIR}/usr/share/applications/eu.luna.Files.desktop"
57 +
58 + # Backend portali XDG dla Luny (bez niego xdg-desktop-portal nie wybiera backendu).
59 + install -Dm644 de/session/luna-portals.conf \
60 + "${PKGDIR}/usr/share/xdg-desktop-portal/luna-portals.conf"
61 +
62 + install -Dm644 LICENSE "${PKGDIR}/usr/share/licenses/${pkgname}/LICENSE"
63 + install -Dm644 README.md "${PKGDIR}/usr/share/doc/${pkgname}/README.md"
64 +package: |
65 + true
0 66 new file mode 100644
1 67 Binary files /dev/null and b/de/luna/luna-0.0.1.tar.gz differ
2 68 new file mode 100644
@@ -0,0 +1,43 @@
1 +# Receptura PaganOS (pagbuild) — metapakiet środowiska Luna.
2 +#
3 +# Jeden pakiet do instalacji całego środowiska:
4 +# libluna + selene + luna (powłoka/aplikacje) + luna-greeter + greetd
5 +#
6 +# Po instalacji przełącza system na greetd jako domyślny menedżer logowania
7 +# (wyłącza lightdm/gdm/sddm/ly, jeśli były włączone) i włącza greetd.
8 +# Konfigurację /etc/greetd/config.toml ustawia hook pakietu luna-greeter.
9 +
10 +pkgname: pagan-luna
11 +pkgver: '0.0.1'
12 +pkgrel: 1
13 +pkgdesc: 'PaganOS Luna — metapakiet środowiska Luna: greetd + luna-greeter + Selene + powłoka Luna + libLuna (bez GTK/Qt)'
14 +url: 'https://github.com/mijsys/libLuna'
15 +arch: x86_64
16 +license:
17 +- MPL-2.0
18 +depends:
19 +- libluna
20 +- selene
21 +- luna
22 +- luna-greeter
23 +- greetd
24 +makedepends: []
25 +source: []
26 +sha256sums: []
27 +hooks:
28 + post-install: |
29 + # Luna ma być domyślnym środowiskiem: greetd jako display-manager,
30 + # wcześniejsze menedżery logowania wyłączone.
31 + for dm in lightdm gdm sddm ly lxdm; do
32 + if systemctl is-enabled "$dm" >/dev/null 2>&1; then
33 + systemctl disable "$dm" >/dev/null 2>&1 || true
34 + fi
35 + done
36 + systemctl enable greetd >/dev/null 2>&1 || true
37 + systemctl set-default graphical.target >/dev/null 2>&1 || true
38 + systemctl daemon-reload >/dev/null 2>&1 || true
39 + echo "pagan-luna: greetd jest domyślnym menedżerem logowania (restart/reboot, aby zobaczyć Luna Greeter)"
40 +build: |
41 + true
42 +package: |
43 + true
0 44 new file mode 100644
@@ -0,0 +1,41 @@
1 +# Receptura PaganOS (pagbuild) — Selene (kompozytor Wayland Luny).
2 +#
3 +# Selene jest czystym Rust (wayland-server + własna pętla, bez smithay).
4 +# `luna-session` uruchamia Selene, a następnie powłokę `luna-shell`, jeśli jest
5 +# zainstalowana. Ten pakiet jest wspólnym kompozytorem dla sesji i greetera.
6 +
7 +pkgname: selene
8 +pkgver: '0.0.1'
9 +pkgrel: 1
10 +pkgdesc: 'Selene — kompozytor Wayland środowiska Luna (czysty Rust, bez smithay): xdg-shell, layer-shell, SSD, DRM/KMS, schowek, DnD'
11 +url: 'https://github.com/mijsys/libLuna'
12 +arch: x86_64
13 +license:
14 +- MPL-2.0
15 +depends:
16 +- libluna
17 +- libxkbcommon
18 +- dejavu-ttf
19 +- dbus
20 +makedepends:
21 +- rustc
22 +source:
23 +- luna-${pkgver}.tar.gz
24 +sha256sums:
25 +- e27330f0e89605f2425300394020a0b9d0b423b3a94c6cdd8dc93a6fc8096b1d
26 +build: |
27 + cd luna-${pkgver}
28 +
29 + cargo build --release --locked -p selene
30 +
31 + install -Dm755 target/release/selene "${PKGDIR}/usr/bin/selene"
32 +
33 + # Launcher sesji + wpis wyboru sesji (greetd czyta /usr/share/wayland-sessions).
34 + install -Dm755 de/session/luna-session "${PKGDIR}/usr/bin/luna-session"
35 + install -Dm644 de/session/selene.desktop \
36 + "${PKGDIR}/usr/share/wayland-sessions/selene.desktop"
37 +
38 + install -Dm644 LICENSE "${PKGDIR}/usr/share/licenses/${pkgname}/LICENSE"
39 + install -Dm644 README.md "${PKGDIR}/usr/share/doc/${pkgname}/README.md"
40 +package: |
41 + true
0 42 new file mode 100644
1 43 Binary files /dev/null and b/de/selene/luna-0.0.1.tar.gz differ
@@ -36,6 +36,7 @@ hooks:
36 36 post-remove: |
37 37 rm -f boot/initrd-$SUFFIX
38 38 build: |
39 + [ -c /dev/null ] || { echo "BŁĄD: brak /dev/null – wykonaj: sudo mknod -m 666 /dev/null c 1 3 (albo zrestartuj system)" >&2; exit 1; }
39 40 mkdir -p ${PKGDIR}/{boot,usr/{share/doc,src,lib/modules}}
40 41 bsdtar -p -o -C . -xf linux-7.2-rc1.tar.gz
41 42 cd linux-7.2-rc1
@@ -58,8 +59,26 @@ build: |
58 59 ZSTD_CLEVEL=19 \
59 60 make INSTALL_MOD_PATH=${PKGDIR}/usr \
60 61 INSTALL_MOD_STRIP=1 \
61 - DEPMOD=/dev/null modules_install
62 - depmod -b ${PKGDIR}/usr -a $KERNELRELEASE
62 + DEPMOD=/bin/true modules_install
63 + # ── depmod: NIE `-b ${PKGDIR}/usr` ─────────────────────────────────────
64 + # kmod na Pagan/Arch ma wkompilowane /usr/lib/modules – `-b BASE` dokłada
65 + # BASE przed CAŁĄ ścieżką, więc `-b ${PKGDIR}/usr` szuka
66 + # ${PKGDIR}/usr/usr/lib/modules/<ver> i kończy się FATAL.
67 + # `make modules_install` robi to samo (scripts/depmod.sh), dlatego w tej
68 + # recepturze jest DEPMOD=/bin/true, a depmod wołamy raz, poprawnie.
69 + # Dla hostów z kmod na /lib/modules tworzymy na czas depmod dowiązanie.
70 + _lnk=""
71 + if [ ! -e "${PKGDIR}/lib" ] && [ ! -L "${PKGDIR}/lib" ]; then
72 + ln -s usr/lib "${PKGDIR}/lib"
73 + _lnk="${PKGDIR}/lib"
74 + elif [ -d "${PKGDIR}/lib" ] && [ ! -e "${PKGDIR}/lib/modules" ]; then
75 + ln -s ../usr/lib/modules "${PKGDIR}/lib/modules"
76 + _lnk="${PKGDIR}/lib/modules"
77 + fi
78 + depmod -b "${PKGDIR}" -a "${KERNELRELEASE}"
79 + _rc=$?
80 + if [ -n "$_lnk" ]; then rm -f "$_lnk"; fi
81 + [ "$_rc" -eq 0 ] || { echo "BŁĄD: depmod nie powiódł się (${PKGDIR}/usr/lib/modules/${KERNELRELEASE})" >&2; exit 1; }
63 82
64 83 cp System.map ${PKGDIR}/boot/System.map-$KERNELRELEASE
65 84 cp .config ${PKGDIR}/boot/config-$KERNELRELEASE
66 85 new file mode 100644
@@ -0,0 +1,91 @@
1 +pkgname: kernel-mainline
2 +pkgver: '7.3-rc3'
3 +pkgrel: '3'
4 +pkgdesc: The latest development kernel version
5 +url: 'https://www.kernel.org'
6 +arch: x86_64
7 +depends:
8 +- kmod
9 +makedepends:
10 +- gmp
11 +- mpc
12 +- bison
13 +- flex
14 +- perl
15 +- libelf
16 +- diffutils
17 +- tar
18 +- rustc
19 +source:
20 +- init_path.patch
21 +- 'https://git.kernel.org/torvalds/t/linux-${pkgver}.tar.gz'
22 +- config
23 +sha256sums:
24 +- d854364371f89cd735d15a6877b4bbe4bce133cd3167edef95ba5930f81bedf1
25 +- b460e74cfa0a428416881063821ef6aae8a6a4c69891b9ab10fcf4edf770ce0d
26 +- 0a78b930f1d21a49fda20f6b50b287d146a4e9611658dd7c2cd4d04e84f950f5
27 +hooks:
28 + post-install: |
29 + # Moduly out-of-tree (NVIDIA/VirtualBox) - przebuduj pod to jadro przed initramfs.
30 + if command -v dkms >/dev/null 2>&1; then
31 + dkms autoinstall -k kernel-mainline >/dev/null 2>&1 || true
32 + fi
33 + mkinitramfs $(ls /usr/lib/modules | grep -vx 'kernel-mainline' | head -1)
34 + rm -f boot/initrd-$SUFFIX
35 + mv boot/initrd-$(ls /usr/lib/modules | grep -vx 'kernel-mainline' | head -1) boot/initrd-$SUFFIX
36 + post-remove: |
37 + rm -f boot/initrd-$SUFFIX
38 +build: |
39 + mkdir -p ${PKGDIR}/{boot,usr/{share/doc,src,lib/modules}}
40 + bsdtar -p -o -C . -xf linux-7.2-rc1.tar.gz
41 + cd linux-7.2-rc1
42 +
43 + [ -f ./patch-${pkgver}.xz ] && \
44 + xz -d -c ./patch-${pkgver}.xz | patch -Np1
45 +
46 + patch -Np1 -i ../init_path.patch
47 +
48 + echo "-pagan" > localversion
49 +
50 + cp ../config .config
51 + make olddefconfig
52 + diff -u ../config .config || true
53 + KERNELRELEASE=$(make -s kernelrelease)
54 + IMAGENAME=$(make -s image_name)
55 + # make menuconfig
56 + make
57 + cp .config /tmp/src-kernel-mainline-7.2-rc1/kernel-mainline-7.2-rc1/config
58 + ZSTD_CLEVEL=19 \
59 + make INSTALL_MOD_PATH=${PKGDIR}/usr \
60 + INSTALL_MOD_STRIP=1 \
61 + DEPMOD=/dev/null modules_install
62 + depmod -b ${PKGDIR}/usr -a $KERNELRELEASE
63 +
64 + cp System.map ${PKGDIR}/boot/System.map-$KERNELRELEASE
65 + cp .config ${PKGDIR}/boot/config-$KERNELRELEASE
66 + cp $IMAGENAME ${PKGDIR}/boot/${pkgname}
67 +
68 + # cwd jest WEWNĄTRZ linux-7.2-rc1 (po `cd linux-7.2-rc1`) – wyjdź do SRCDIR.
69 + cd ..
70 + mv linux-7.2-rc1 ${PKGDIR}/usr/src/${pkgname}
71 + ln -sv ${pkgname} ${PKGDIR}/usr/src/linux-7.2-rc1
72 + mv ${PKGDIR}/usr/src/${pkgname}/Documentation \
73 + ${PKGDIR}/usr/share/doc/${pkgname}
74 +
75 + # Reorganise files
76 + cd ${PKGDIR}/usr/lib/modules
77 + mv $KERNELRELEASE ${pkgname}
78 + ln -sv ${pkgname} $KERNELRELEASE
79 +
80 + rm $KERNELRELEASE/build
81 + ln -sv /usr/src/${pkgname} $KERNELRELEASE/build
82 +
83 + # Firmware are in linux-firmware
84 + rm -rf ${PKGDIR}/lib/firmware
85 +
86 + # post-install autogen
87 +
88 +
89 + # post-remove autogen
90 +package: |
91 + true
@@ -37,7 +37,7 @@ sha256sums:
37 37 - d854364371f89cd735d15a6877b4bbe4bce133cd3167edef95ba5930f81bedf1
38 38 - f9fef3d14c0df53819026f4be74459835c2a0b0dcbf5b5bbd9ea19f0829402b3
39 39 - 534895f65175db29e0635fecfef4d4e9cce7574bde3c144f090add61ab681817
40 -- 684fbc17f2efed00be9ef38f45e2cf180858218d25c53bb9e4bc959f267cb25b
40 +- bea7d0f7f81527a9bb253eba87310421c72d52b5542a201117cfe2276c2ac04d
41 41
42 42 # ── Automatyczne podbijanie wersji (pagsync --check-updates, cron) ──
43 43 # Nowa wersja = najnowszy patch PRZYROSTOWY w linii 7.2 (kernel.org publikuje
@@ -102,6 +102,7 @@ hooks:
102 102 fi
103 103
104 104 build: |
105 + [ -c /dev/null ] || { echo "BŁĄD: brak /dev/null – wykonaj: sudo mknod -m 666 /dev/null c 1 3 (albo zrestartuj system)" >&2; exit 1; }
105 106 # Równoległość kompilacji. pagbuild uruchamia build w chroot przez `env -i`;
106 107 # MAKEFLAGS jest tam teraz przekazywany, ale jądro to najcięższy build na
107 108 # VPS, więc jawnie ustawiamy joby na liczbę rdzeni (domyślne -j4 pagbuild
@@ -127,8 +128,26 @@ build: |
127 128 ZSTD_CLEVEL=19 \
128 129 make INSTALL_MOD_PATH=${PKGDIR}/usr \
129 130 INSTALL_MOD_STRIP=1 \
130 - DEPMOD=/dev/null modules_install
131 - depmod -b ${PKGDIR}/usr -a $KERNELRELEASE
131 + DEPMOD=/bin/true modules_install
132 + # ── depmod: NIE `-b ${PKGDIR}/usr` ─────────────────────────────────────
133 + # kmod na Pagan/Arch ma wkompilowane /usr/lib/modules – `-b BASE` dokłada
134 + # BASE przed CAŁĄ ścieżką, więc `-b ${PKGDIR}/usr` szuka
135 + # ${PKGDIR}/usr/usr/lib/modules/<ver> i kończy się FATAL.
136 + # `make modules_install` robi to samo (scripts/depmod.sh), dlatego w tej
137 + # recepturze jest DEPMOD=/bin/true, a depmod wołamy raz, poprawnie.
138 + # Dla hostów z kmod na /lib/modules tworzymy na czas depmod dowiązanie.
139 + _lnk=""
140 + if [ ! -e "${PKGDIR}/lib" ] && [ ! -L "${PKGDIR}/lib" ]; then
141 + ln -s usr/lib "${PKGDIR}/lib"
142 + _lnk="${PKGDIR}/lib"
143 + elif [ -d "${PKGDIR}/lib" ] && [ ! -e "${PKGDIR}/lib/modules" ]; then
144 + ln -s ../usr/lib/modules "${PKGDIR}/lib/modules"
145 + _lnk="${PKGDIR}/lib/modules"
146 + fi
147 + depmod -b "${PKGDIR}" -a "${KERNELRELEASE}"
148 + _rc=$?
149 + if [ -n "$_lnk" ]; then rm -f "$_lnk"; fi
150 + [ "$_rc" -eq 0 ] || { echo "BŁĄD: depmod nie powiódł się (${PKGDIR}/usr/lib/modules/${KERNELRELEASE})" >&2; exit 1; }
132 151
133 152 # ── /boot: nazwy plików DOKŁADNIE jak w obrazie ISO ──────────────────────
134 153 # GRUB (/etc/grub.d/10_linux) znajduje jądra WYŁĄCZNIE po `vmlinuz-*`.
135 154 new file mode 100644
@@ -0,0 +1,162 @@
1 +pkgname: kernel
2 +pkgver: '7.2.11'
3 +pkgrel: '1'
4 +pkgdesc: 'Pagan Linux kernel (rolling) – układ DOKŁADNIE jak w obrazie ISO: /boot/vmlinuz-<ver>-pagan + /usr/lib/modules/<ver>-pagan + źródła DKMS w /usr/src/kernel.'
5 +url: 'https://www.kernel.org'
6 +arch: x86_64
7 +license:
8 +- GPL-2.0-only
9 +depends:
10 +- kmod
11 +- pagan-initramfs
12 +
13 +# `pag install linux` musi dalej działać (stare skrypty, pagan-drivers, haki) –
14 +# tak samo nazywa ten pakiet build ISO (install_rolling_kernel w build-pagan.sh,
15 +# które ustawia provides:["linux"]).
16 +provides:
17 +- linux
18 +
19 +makedepends:
20 +- gmp
21 +- mpc
22 +- bison
23 +- flex
24 +- perl
25 +- libelf
26 +- diffutils
27 +- tar
28 +- rustc
29 +
30 +source:
31 +- 'init_path.patch'
32 +- 'https://www.kernel.org/pub/linux/kernel/v7.x/linux-7.2.tar.xz'
33 +- 'https://www.kernel.org/pub/linux/kernel/v7.x/patch-${pkgver}.xz'
34 +- 'config'
35 +
36 +sha256sums:
37 +- d854364371f89cd735d15a6877b4bbe4bce133cd3167edef95ba5930f81bedf1
38 +- f9fef3d14c0df53819026f4be74459835c2a0b0dcbf5b5bbd9ea19f0829402b3
39 +- 534895f65175db29e0635fecfef4d4e9cce7574bde3c144f090add61ab681817
40 +- 684fbc17f2efed00be9ef38f45e2cf180858218d25c53bb9e4bc959f267cb25b
41 +
42 +# ── Automatyczne podbijanie wersji (pagsync --check-updates, cron) ──
43 +# Nowa wersja = najnowszy patch PRZYROSTOWY w linii 7.2 (kernel.org publikuje
44 +# patch-<X.Y.Z>.xz, który build aplikuje na bazę linux-7.2.tar.xz).
45 +# UWAGA: przy przejściu na nową linię (np. 7.3) trzeba też zmienić bazowy
46 +# tarball w `source` i jego sumę w `sha256sums` powyżej.
47 +update: |
48 + curl -fsSL --max-time 25 https://www.kernel.org/pub/linux/kernel/v7.x/ \
49 + | grep -oE 'patch-7\.2\.[0-9]+\.xz' | sed 's/^patch-//; s/\.xz$//' | sort -V | tail -1
50 +
51 +# Hooki uruchamiają się na ŻYWYM systemie po `pag install kernel` (rolling) i
52 +# muszą zostawić /boot w stanie, który zrozumie /etc/grub.d/10_linux.
53 +hooks:
54 + 'post-install': |
55 + export LC_ALL=C LANG=C
56 + export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
57 +
58 + # 1) build/source dla każdego jądra (DKMS, moduły out-of-tree). Symlinki
59 + # WZGLĘDNE – pag blokuje absolutne ścieżki w pakiecie.
60 + for _m in /usr/lib/modules/*; do
61 + [ -d "$_m" ] || continue
62 + [ -d /usr/src/kernel ] || continue
63 + ln -sfn ../../../src/kernel "$_m/build"
64 + ln -sfn ../../../src/kernel "$_m/source"
65 + done
66 +
67 + # 1b) Moduly out-of-tree (NVIDIA, VirtualBox) - przebuduj pod NOWE jadro
68 + # ZANIM powstanie initramfs. Bez tego po `pag upgrade kernel` nvidia.ko
69 + # zostaje pod stare jadro i sterownik znika. Best-effort.
70 + if command -v dkms >/dev/null 2>&1; then
71 + for _m in /usr/lib/modules/*; do
72 + [ -d "$_m" ] || continue
73 + dkms autoinstall -k "$(basename "$_m")" >/dev/null 2>&1 || true
74 + done
75 + fi
76 +
77 + # 2) initramfs (pagan-initramfs → mkinitramfs → dracut → mkinitcpio)
78 + if command -v pagan-initramfs >/dev/null 2>&1; then
79 + pagan-initramfs || true
80 + elif command -v mkinitramfs >/dev/null 2>&1; then
81 + mkinitramfs "$(ls /usr/lib/modules | grep -vx 'kernel-lts' | head -1)" || true
82 + fi
83 +
84 + # 3) Aliasy initramfs pod nazwami z wersją. 10_linux szuka initrd WYŁĄCZNIE
85 + # jako initrd.img-<ver>/initramfs-<ver>.img; bez aliasu wpis w menu nie ma
86 + # linii `initrd` → panika jądra („VFS: Cannot open root device”).
87 + if [ -f /boot/initramfs.img ]; then
88 + for _k in /boot/vmlinuz*; do
89 + [ -e "$_k" ] || continue
90 + _v="$(basename "$_k" | sed -e 's,^[^0-9]*-,,g')"
91 + [ -n "$_v" ] || continue
92 + [ "$_v" != "$(basename "$_k")" ] || continue
93 + [ -e "/boot/initramfs-$_v.img" ] || ln -sfn initramfs.img "/boot/initramfs-$_v.img"
94 + [ -e "/boot/initrd.img-$_v" ] || ln -sfn initramfs.img "/boot/initrd.img-$_v"
95 + done
96 + fi
97 +
98 + # 4) GRUB: `pag grub-update` NIE może działać w trakcie `pag install`
99 + # (lock PAG-a jest trzymany) – dlatego sprawdzamy brak lockfile.
100 + if command -v pag >/dev/null 2>&1 && [ ! -f /var/lib/pag/pag.lock ]; then
101 + pag grub-update || true
102 + fi
103 +
104 +build: |
105 + # Równoległość kompilacji. pagbuild uruchamia build w chroot przez `env -i`;
106 + # MAKEFLAGS jest tam teraz przekazywany, ale jądro to najcięższy build na
107 + # VPS, więc jawnie ustawiamy joby na liczbę rdzeni (domyślne -j4 pagbuild
108 + # zostawiało 2 z 6 rdzeni bezczynne i build przekraczał limit czasu).
109 + export MAKEFLAGS="-j${PAGBUILD_JOBS:-$(nproc 2>/dev/null || echo 4)}"
110 + mkdir -p ${PKGDIR}/{boot,usr/{share/doc,src,lib/modules}}
111 + bsdtar -p -o -C . -xf linux-7.2.tar.xz
112 + cd linux-7.2
113 +
114 + [ -f ../patch-${pkgver}.xz ] && \
115 + xz -d -c ../patch-${pkgver}.xz | patch -Np1
116 + patch -Np1 -i ../init_path.patch
117 +
118 + # Konfiguracja: identyczna z build-pagan.sh (config = config-<ver>-pagan z ISO).
119 + # CONFIG_LOCALVERSION="-pagan" → KERNELRELEASE = <ver>-pagan (np. 7.2.5-pagan).
120 + cp ../config .config
121 + make olddefconfig
122 + diff -u ../config .config || true
123 + KERNELRELEASE=$(make -s kernelrelease)
124 + IMAGENAME=$(make -s image_name)
125 + make
126 + cp .config config
127 + ZSTD_CLEVEL=19 \
128 + make INSTALL_MOD_PATH=${PKGDIR}/usr \
129 + INSTALL_MOD_STRIP=1 \
130 + DEPMOD=/dev/null modules_install
131 + depmod -b ${PKGDIR}/usr -a $KERNELRELEASE
132 +
133 + # ── /boot: nazwy plików DOKŁADNIE jak w obrazie ISO ──────────────────────
134 + # GRUB (/etc/grub.d/10_linux) znajduje jądra WYŁĄCZNIE po `vmlinuz-*`.
135 + # Poprzednie `kernel-stable` było dla GRUB-a niewidoczne, więc po `pag upgrade`
136 + # system startował ze STARYM jądrem z obrazu (albo nie startował wcale).
137 + cp System.map ${PKGDIR}/boot/System.map-$KERNELRELEASE
138 + ln -sf System.map-$KERNELRELEASE ${PKGDIR}/boot/System.map
139 + cp .config ${PKGDIR}/boot/config-$KERNELRELEASE
140 + cp $IMAGENAME ${PKGDIR}/boot/vmlinuz-$KERNELRELEASE
141 + ln -sf vmlinuz-$KERNELRELEASE ${PKGDIR}/boot/vmlinuz-linux
142 +
143 + # ── źródła dla DKMS: /usr/src/kernel (SYSSRC dla nvidia-kernel/nvidia-dkms).
144 + cd ..
145 + mv linux-7.2 ${PKGDIR}/usr/src/kernel
146 + mv ${PKGDIR}/usr/src/kernel/Documentation ${PKGDIR}/usr/share/doc/kernel
147 + # Konwencja „linux-headers-$(uname -r)”, której szukają hooki ISO i DKMS.
148 + ln -sfn kernel ${PKGDIR}/usr/src/linux-headers-$KERNELRELEASE
149 +
150 + # ── moduły: /usr/lib/modules/<ver>-pagan (BEZ zmiany nazwy na „kernel”) ──
151 + # Ten sam katalog co w obrazie ISO → `pag upgrade` podmienia jądro W MIEJSCU,
152 + # a moduły NVIDIA/DKMS trafiają tam, gdzie faktycznie szuka ich jądro.
153 + cd ${PKGDIR}/usr/lib/modules
154 + rm -f $KERNELRELEASE/build $KERNELRELEASE/source
155 + ln -sfn ../../../src/kernel $KERNELRELEASE/build
156 + ln -sfn ../../../src/kernel $KERNELRELEASE/source
157 +
158 + # Firmware are in linux-firmware
159 + rm -rf ${PKGDIR}/lib/firmware
160 +
161 +package: |
162 + true
@@ -1,6 +1,6 @@
1 1 #
2 2 # Automatically generated file; DO NOT EDIT.
3 -# Linux/x86 7.2.8 Kernel Configuration
3 +# Linux/x86 7.2.11 Kernel Configuration
4 4 #
5 5 CONFIG_CC_VERSION_TEXT="gcc (GCC) 16.2.0"
6 6 CONFIG_CC_IS_GCC=y
@@ -24,6 +24,7 @@ CONFIG_CC_HAS_NO_PROFILE_FN_ATTR=y
24 24 CONFIG_CC_HAS_COUNTED_BY=y
25 25 CONFIG_CC_HAS_COUNTED_BY_PTR=y
26 26 CONFIG_CC_HAS_MULTIDIMENSIONAL_NONSTRING=y
27 +CONFIG_CC_OPT_INLINE_MEMSET="-finline-stringops=memset"
27 28 CONFIG_LD_CAN_USE_KEEP_IN_OVERLAY=y
28 29 CONFIG_RUSTC_HAS_SPAN_FILE=y
29 30 CONFIG_RUSTC_HAS_UNNECESSARY_TRANSMUTES=y
@@ -1064,7 +1065,7 @@ CONFIG_MODULE_FORCE_UNLOAD=y
1064 1065 CONFIG_MODULE_UNLOAD_TAINT_TRACKING=y
1065 1066 # CONFIG_MODVERSIONS is not set
1066 1067 CONFIG_MODULE_SRCVERSION_ALL=y
1067 -# CONFIG_MODULE_SIG is not set
1068 +CONFIG_MODULE_SIG=y
1068 1069 # CONFIG_MODULE_SIG_FORCE is not set
1069 1070 CONFIG_MODULE_SIG_ALL=y
1070 1071 # CONFIG_MODULE_SIG_SHA256 is not set