← recipes

Commit 9d7cba3a

0
files
+0
added
-0
deleted
@@ -1,147 +1,156 @@
1 -pkgname: kernel
2 -pkgver: '7.2.5'
3 -pkgrel: '3'
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 -
12 -# `pag install linux` musi dalej działać (stare skrypty, pagan-drivers, haki) –
13 -# tak samo nazywa ten pakiet build ISO (install_rolling_kernel w build-pagan.sh,
14 -# które ustawia provides:["linux"]).
15 -provides:
16 -- linux
17 -
18 -makedepends:
19 -- gmp
20 -- mpc
21 -- bison
22 -- flex
23 -- perl
24 -- libelf
25 -- diffutils
26 -- tar
27 -- rustc
28 -
29 -source:
30 -- 'init_path.patch'
31 -- 'https://www.kernel.org/pub/linux/kernel/v7.x/linux-7.2.tar.xz'
32 -- 'https://www.kernel.org/pub/linux/kernel/v7.x/patch-${pkgver}.xz'
33 -- config
34 -
35 -sha256sums:
36 -- d854364371f89cd735d15a6877b4bbe4bce133cd3167edef95ba5930f81bedf1
37 -- f9fef3d14c0df53819026f4be74459835c2a0b0dcbf5b5bbd9ea19f0829402b3
38 -- 12398c7d02541f75cc91cb1103bbafa4faa32e04c49d71120229afc3ea13e5bd
39 -- b85e9b289ab6a6487e4eebb0c6cb1b342fa4530e7ff8bfbb54194c79eb1fe480
40 -
41 -# Hooki uruchamiają się na ŻYWYM systemie po `pag install kernel` (rolling) i
42 -# muszą zostawić /boot w stanie, który zrozumie /etc/grub.d/10_linux.
43 -hooks:
44 - 'post-install': |
45 - export LC_ALL=C LANG=C
46 - export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
47 -
48 - # 1) build/source dla każdego jądra (DKMS, moduły out-of-tree). Symlinki
49 - # WZGLĘDNE – pag blokuje absolutne ścieżki w pakiecie.
50 - for _m in /usr/lib/modules/*; do
51 - [ -d "$_m" ] || continue
52 - [ -d /usr/src/kernel ] || continue
53 - ln -sfn ../../../src/kernel "$_m/build"
54 - ln -sfn ../../../src/kernel "$_m/source"
55 - done
56 -
57 - # 1b) Moduly out-of-tree (NVIDIA, VirtualBox) - przebuduj pod NOWE jadro
58 - # ZANIM powstanie initramfs. Bez tego po `pag upgrade kernel` nvidia.ko
59 - # zostaje pod stare jadro i sterownik znika. Best-effort.
60 - if command -v dkms >/dev/null 2>&1; then
61 - for _m in /usr/lib/modules/*; do
62 - [ -d "$_m" ] || continue
63 - dkms autoinstall -k "$(basename "$_m")" >/dev/null 2>&1 || true
64 - done
65 - fi
66 -
67 - # 2) initramfs (pagan-initramfs → mkinitramfs → dracut → mkinitcpio)
68 - if command -v pagan-initramfs >/dev/null 2>&1; then
69 - pagan-initramfs || true
70 - elif command -v mkinitramfs >/dev/null 2>&1; then
71 - mkinitramfs "$(ls /usr/lib/modules | grep -vx 'kernel-lts' | head -1)" || true
72 - fi
73 -
74 - # 3) Aliasy initramfs pod nazwami z wersją. 10_linux szuka initrd WYŁĄCZNIE
75 - # jako initrd.img-<ver>/initramfs-<ver>.img; bez aliasu wpis w menu nie ma
76 - # linii `initrd` → panika jądra („VFS: Cannot open root device”).
77 - if [ -f /boot/initramfs.img ]; then
78 - for _k in /boot/vmlinuz*; do
79 - [ -e "$_k" ] || continue
80 - _v="$(basename "$_k" | sed -e 's,^[^0-9]*-,,g')"
81 - [ -n "$_v" ] || continue
82 - [ "$_v" != "$(basename "$_k")" ] || continue
83 - [ -e "/boot/initramfs-$_v.img" ] || ln -sfn initramfs.img "/boot/initramfs-$_v.img"
84 - [ -e "/boot/initrd.img-$_v" ] || ln -sfn initramfs.img "/boot/initrd.img-$_v"
85 - done
86 - fi
87 -
88 - # 4) GRUB: `pag grub-update` NIE może działać w trakcie `pag install`
89 - # (lock PAG-a jest trzymany) – dlatego sprawdzamy brak lockfile.
90 - if command -v pag >/dev/null 2>&1 && [ ! -f /var/lib/pag/pag.lock ]; then
91 - pag grub-update || true
92 - fi
93 -
94 -build: |
95 - mkdir -p ${PKGDIR}/{boot,usr/{share/doc,src,lib/modules}}
96 - bsdtar -p -o -C . -xf linux-7.2.tar.xz
97 - cd linux-7.2
98 -
99 - [ -f ../patch-${pkgver}.xz ] && \
100 - xz -d -c ../patch-${pkgver}.xz | patch -Np1
101 - patch -Np1 -i ../init_path.patch
102 -
103 - # Konfiguracja: identyczna z build-pagan.sh (config = config-<ver>-pagan z ISO).
104 - # CONFIG_LOCALVERSION="-pagan" → KERNELRELEASE = <ver>-pagan (np. 7.2.5-pagan).
105 - cp ../config .config
106 - make olddefconfig
107 - diff -u ../config .config || true
108 - KERNELRELEASE=$(make -s kernelrelease)
109 - IMAGENAME=$(make -s image_name)
110 - make
111 - cp .config config
112 - ZSTD_CLEVEL=19 \
113 - make INSTALL_MOD_PATH=${PKGDIR}/usr \
114 - INSTALL_MOD_STRIP=1 \
115 - DEPMOD=/dev/null modules_install
116 - depmod -b ${PKGDIR}/usr -a $KERNELRELEASE
117 -
118 - # ── /boot: nazwy plików DOKŁADNIE jak w obrazie ISO ──────────────────────
119 - # GRUB (/etc/grub.d/10_linux) znajduje jądra WYŁĄCZNIE po `vmlinuz-*`.
120 - # Poprzednie `kernel-stable` było dla GRUB-a niewidoczne, więc po `pag upgrade`
121 - # system startował ze STARYM jądrem z obrazu (albo nie startował wcale).
122 - cp System.map ${PKGDIR}/boot/System.map-$KERNELRELEASE
123 - ln -sf System.map-$KERNELRELEASE ${PKGDIR}/boot/System.map
124 - cp .config ${PKGDIR}/boot/config-$KERNELRELEASE
125 - cp $IMAGENAME ${PKGDIR}/boot/vmlinuz-$KERNELRELEASE
126 - ln -sf vmlinuz-$KERNELRELEASE ${PKGDIR}/boot/vmlinuz-linux
127 -
128 - # ── źródła dla DKMS: /usr/src/kernel (SYSSRC dla nvidia-kernel/nvidia-dkms).
129 - cd ..
130 - mv linux-7.2 ${PKGDIR}/usr/src/kernel
131 - mv ${PKGDIR}/usr/src/kernel/Documentation ${PKGDIR}/usr/share/doc/kernel
132 - # Konwencja „linux-headers-$(uname -r)”, której szukają hooki ISO i DKMS.
133 - ln -sfn kernel ${PKGDIR}/usr/src/linux-headers-$KERNELRELEASE
134 -
135 - # ── moduły: /usr/lib/modules/<ver>-pagan (BEZ zmiany nazwy na „kernel”) ──
136 - # Ten sam katalog co w obrazie ISO → `pag upgrade` podmienia jądro W MIEJSCU,
137 - # a moduły NVIDIA/DKMS trafiają tam, gdzie faktycznie szuka ich jądro.
138 - cd ${PKGDIR}/usr/lib/modules
139 - rm -f $KERNELRELEASE/build $KERNELRELEASE/source
140 - ln -sfn ../../../src/kernel $KERNELRELEASE/build
141 - ln -sfn ../../../src/kernel $KERNELRELEASE/source
142 -
143 - # Firmware are in linux-firmware
144 - rm -rf ${PKGDIR}/lib/firmware
145 -
146 -package: |
147 - true
1 +pkgname: kernel
2 +pkgver: '7.2.5'
3 +pkgrel: '3'
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 +
12 +# `pag install linux` musi dalej działać (stare skrypty, pagan-drivers, haki) –
13 +# tak samo nazywa ten pakiet build ISO (install_rolling_kernel w build-pagan.sh,
14 +# które ustawia provides:["linux"]).
15 +provides:
16 +- linux
17 +
18 +makedepends:
19 +- gmp
20 +- mpc
21 +- bison
22 +- flex
23 +- perl
24 +- libelf
25 +- diffutils
26 +- tar
27 +- rustc
28 +
29 +source:
30 +- 'init_path.patch'
31 +- 'https://www.kernel.org/pub/linux/kernel/v7.x/linux-7.2.tar.xz'
32 +- 'https://www.kernel.org/pub/linux/kernel/v7.x/patch-${pkgver}.xz'
33 +- config
34 +
35 +sha256sums:
36 +- d854364371f89cd735d15a6877b4bbe4bce133cd3167edef95ba5930f81bedf1
37 +- f9fef3d14c0df53819026f4be74459835c2a0b0dcbf5b5bbd9ea19f0829402b3
38 +- 12398c7d02541f75cc91cb1103bbafa4faa32e04c49d71120229afc3ea13e5bd
39 +- b85e9b289ab6a6487e4eebb0c6cb1b342fa4530e7ff8bfbb54194c79eb1fe480
40 +
41 +# ── Automatyczne podbijanie wersji (pagsync --check-updates, cron) ──
42 +# Nowa wersja = najnowszy patch PRZYROSTOWY w linii 7.2 (kernel.org publikuje
43 +# patch-<X.Y.Z>.xz, który build aplikuje na bazę linux-7.2.tar.xz).
44 +# UWAGA: przy przejściu na nową linię (np. 7.3) trzeba też zmienić bazowy
45 +# tarball w `source` i jego sumę w `sha256sums` powyżej.
46 +update: |
47 + curl -fsSL --max-time 25 https://www.kernel.org/pub/linux/kernel/v7.x/ \
48 + | grep -oE 'patch-7\.2\.[0-9]+\.xz' | sed 's/^patch-//; s/\.xz$//' | sort -V | tail -1
49 +
50 +# Hooki uruchamiają się na ŻYWYM systemie po `pag install kernel` (rolling) i
51 +# muszą zostawić /boot w stanie, który zrozumie /etc/grub.d/10_linux.
52 +hooks:
53 + 'post-install': |
54 + export LC_ALL=C LANG=C
55 + export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
56 +
57 + # 1) build/source dla każdego jądra (DKMS, moduły out-of-tree). Symlinki
58 + # WZGLĘDNE – pag blokuje absolutne ścieżki w pakiecie.
59 + for _m in /usr/lib/modules/*; do
60 + [ -d "$_m" ] || continue
61 + [ -d /usr/src/kernel ] || continue
62 + ln -sfn ../../../src/kernel "$_m/build"
63 + ln -sfn ../../../src/kernel "$_m/source"
64 + done
65 +
66 + # 1b) Moduly out-of-tree (NVIDIA, VirtualBox) - przebuduj pod NOWE jadro
67 + # ZANIM powstanie initramfs. Bez tego po `pag upgrade kernel` nvidia.ko
68 + # zostaje pod stare jadro i sterownik znika. Best-effort.
69 + if command -v dkms >/dev/null 2>&1; then
70 + for _m in /usr/lib/modules/*; do
71 + [ -d "$_m" ] || continue
72 + dkms autoinstall -k "$(basename "$_m")" >/dev/null 2>&1 || true
73 + done
74 + fi
75 +
76 + # 2) initramfs (pagan-initramfs → mkinitramfs → dracut → mkinitcpio)
77 + if command -v pagan-initramfs >/dev/null 2>&1; then
78 + pagan-initramfs || true
79 + elif command -v mkinitramfs >/dev/null 2>&1; then
80 + mkinitramfs "$(ls /usr/lib/modules | grep -vx 'kernel-lts' | head -1)" || true
81 + fi
82 +
83 + # 3) Aliasy initramfs pod nazwami z wersją. 10_linux szuka initrd WYŁĄCZNIE
84 + # jako initrd.img-<ver>/initramfs-<ver>.img; bez aliasu wpis w menu nie ma
85 + # linii `initrd` → panika jądra („VFS: Cannot open root device”).
86 + if [ -f /boot/initramfs.img ]; then
87 + for _k in /boot/vmlinuz*; do
88 + [ -e "$_k" ] || continue
89 + _v="$(basename "$_k" | sed -e 's,^[^0-9]*-,,g')"
90 + [ -n "$_v" ] || continue
91 + [ "$_v" != "$(basename "$_k")" ] || continue
92 + [ -e "/boot/initramfs-$_v.img" ] || ln -sfn initramfs.img "/boot/initramfs-$_v.img"
93 + [ -e "/boot/initrd.img-$_v" ] || ln -sfn initramfs.img "/boot/initrd.img-$_v"
94 + done
95 + fi
96 +
97 + # 4) GRUB: `pag grub-update` NIE może działać w trakcie `pag install`
98 + # (lock PAG-a jest trzymany) – dlatego sprawdzamy brak lockfile.
99 + if command -v pag >/dev/null 2>&1 && [ ! -f /var/lib/pag/pag.lock ]; then
100 + pag grub-update || true
101 + fi
102 +
103 +build: |
104 + mkdir -p ${PKGDIR}/{boot,usr/{share/doc,src,lib/modules}}
105 + bsdtar -p -o -C . -xf linux-7.2.tar.xz
106 + cd linux-7.2
107 +
108 + [ -f ../patch-${pkgver}.xz ] && \
109 + xz -d -c ../patch-${pkgver}.xz | patch -Np1
110 + patch -Np1 -i ../init_path.patch
111 +
112 + # Konfiguracja: identyczna z build-pagan.sh (config = config-<ver>-pagan z ISO).
113 + # CONFIG_LOCALVERSION="-pagan" → KERNELRELEASE = <ver>-pagan (np. 7.2.5-pagan).
114 + cp ../config .config
115 + make olddefconfig
116 + diff -u ../config .config || true
117 + KERNELRELEASE=$(make -s kernelrelease)
118 + IMAGENAME=$(make -s image_name)
119 + make
120 + cp .config config
121 + ZSTD_CLEVEL=19 \
122 + make INSTALL_MOD_PATH=${PKGDIR}/usr \
123 + INSTALL_MOD_STRIP=1 \
124 + DEPMOD=/dev/null modules_install
125 + depmod -b ${PKGDIR}/usr -a $KERNELRELEASE
126 +
127 + # ── /boot: nazwy plików DOKŁADNIE jak w obrazie ISO ──────────────────────
128 + # GRUB (/etc/grub.d/10_linux) znajduje jądra WYŁĄCZNIE po `vmlinuz-*`.
129 + # Poprzednie `kernel-stable` było dla GRUB-a niewidoczne, więc po `pag upgrade`
130 + # system startował ze STARYM jądrem z obrazu (albo nie startował wcale).
131 + cp System.map ${PKGDIR}/boot/System.map-$KERNELRELEASE
132 + ln -sf System.map-$KERNELRELEASE ${PKGDIR}/boot/System.map
133 + cp .config ${PKGDIR}/boot/config-$KERNELRELEASE
134 + cp $IMAGENAME ${PKGDIR}/boot/vmlinuz-$KERNELRELEASE
135 + ln -sf vmlinuz-$KERNELRELEASE ${PKGDIR}/boot/vmlinuz-linux
136 +
137 + # ── źródła dla DKMS: /usr/src/kernel (SYSSRC dla nvidia-kernel/nvidia-dkms).
138 + cd ..
139 + mv linux-7.2 ${PKGDIR}/usr/src/kernel
140 + mv ${PKGDIR}/usr/src/kernel/Documentation ${PKGDIR}/usr/share/doc/kernel
141 + # Konwencja „linux-headers-$(uname -r)”, której szukają hooki ISO i DKMS.
142 + ln -sfn kernel ${PKGDIR}/usr/src/linux-headers-$KERNELRELEASE
143 +
144 + # ── moduły: /usr/lib/modules/<ver>-pagan (BEZ zmiany nazwy na „kernel”) ──
145 + # Ten sam katalog co w obrazie ISO → `pag upgrade` podmienia jądro W MIEJSCU,
146 + # a moduły NVIDIA/DKMS trafiają tam, gdzie faktycznie szuka ich jądro.
147 + cd ${PKGDIR}/usr/lib/modules
148 + rm -f $KERNELRELEASE/build $KERNELRELEASE/source
149 + ln -sfn ../../../src/kernel $KERNELRELEASE/build
150 + ln -sfn ../../../src/kernel $KERNELRELEASE/source
151 +
152 + # Firmware are in linux-firmware
153 + rm -rf ${PKGDIR}/lib/firmware
154 +
155 +package: |
156 + true