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