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