mirror of
https://github.com/archr-linux/Arch-R.git
synced 2026-07-12 18:19:42 -07:00
update: stop the linux package from wiping out-of-tree modules
Installing the linux package through pacman overwrote modules.dep with the copy generated at kernel build time, which predates every out-of-tree module: the joypad and the WiFi drivers vanished from the index and the console booted with dead input and no network (reproduced on real hardware). Two independent layers fix it: the repo generator no longer ships any depmod-generated index inside packages (modules.builtin*/order stay, they are kernel-owned depmod inputs), and a new alpm hook rebuilds the index over the full overlay tree after any transaction that touches kernel modules. linux goes to rel 3 so updated devices pick the clean package.
This commit is contained in:
@@ -0,0 +1,11 @@
|
|||||||
|
[Trigger]
|
||||||
|
Operation = Install
|
||||||
|
Operation = Upgrade
|
||||||
|
Operation = Remove
|
||||||
|
Type = Path
|
||||||
|
Target = usr/lib/kernel-overlays/*/lib/modules/*
|
||||||
|
|
||||||
|
[Action]
|
||||||
|
Description = Rebuilding the kernel module index (full tree)...
|
||||||
|
When = PostTransaction
|
||||||
|
Exec = /usr/bin/archr-depmod
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# SPDX-License-Identifier: GPL-2.0
|
||||||
|
# Copyright (C) 2026-present ArchR (https://github.com/archr-linux/Arch-R)
|
||||||
|
#
|
||||||
|
# Regenerate the module dependency index over the FULL module tree after
|
||||||
|
# a pacman transaction touches kernel modules. The linux package used to
|
||||||
|
# ship the modules.dep generated at kernel build time, which predates
|
||||||
|
# every out-of-tree module (joypad, WiFi drivers); installing it wiped
|
||||||
|
# them from the index and the console came up with dead input and no
|
||||||
|
# WiFi. The repo no longer ships those index files, and this hook keeps
|
||||||
|
# the index honest on the device no matter what changed.
|
||||||
|
set -u
|
||||||
|
rc=0
|
||||||
|
for verdir in /usr/lib/kernel-overlays/*/lib/modules/*/; do
|
||||||
|
[ -d "${verdir}kernel" ] || continue
|
||||||
|
base="${verdir%/lib/modules/*}"
|
||||||
|
ver="$(basename "${verdir}")"
|
||||||
|
echo "archr-depmod: indexing ${ver} under ${base}"
|
||||||
|
depmod -a -b "${base}" "${ver}" || rc=1
|
||||||
|
done
|
||||||
|
exit ${rc}
|
||||||
@@ -3,7 +3,7 @@
|
|||||||
# Copyright (C) 2017-present Team LibreELEC (https://libreelec.tv)
|
# Copyright (C) 2017-present Team LibreELEC (https://libreelec.tv)
|
||||||
|
|
||||||
PKG_NAME="linux"
|
PKG_NAME="linux"
|
||||||
PKG_REV="2"
|
PKG_REV="3"
|
||||||
PKG_LICENSE="GPL"
|
PKG_LICENSE="GPL"
|
||||||
PKG_SITE="http://www.kernel.org"
|
PKG_SITE="http://www.kernel.org"
|
||||||
PKG_DEPENDS_HOST="ccache:host openssl:host"
|
PKG_DEPENDS_HOST="ccache:host openssl:host"
|
||||||
|
|||||||
@@ -144,7 +144,25 @@ EOF
|
|||||||
# /.image on every kernel update for nothing.
|
# /.image on every kernel update for nothing.
|
||||||
find . -mindepth 1 -maxdepth 1 -not -name '.PKGINFO' -not -name '.image' -printf '%P\n'
|
find . -mindepth 1 -maxdepth 1 -not -name '.PKGINFO' -not -name '.image' -printf '%P\n'
|
||||||
} > "${filelist}"
|
} > "${filelist}"
|
||||||
tar --zstd -cf "${outfile}" --owner=0 --group=0 -T "${filelist}"
|
# The depmod-generated indexes are stale by construction inside a
|
||||||
|
# package (the kernel builds them before any out-of-tree module
|
||||||
|
# exists); shipping them wiped the joypad and WiFi drivers from
|
||||||
|
# modules.dep on every linux update. The device rebuilds them via
|
||||||
|
# the archr-depmod hook; modules.builtin*/order stay (kernel-owned
|
||||||
|
# depmod inputs).
|
||||||
|
tar --zstd -cf "${outfile}" --owner=0 --group=0 \
|
||||||
|
--exclude='*/modules/*/modules.dep' \
|
||||||
|
--exclude='*/modules/*/modules.dep.bin' \
|
||||||
|
--exclude='*/modules/*/modules.alias' \
|
||||||
|
--exclude='*/modules/*/modules.alias.bin' \
|
||||||
|
--exclude='*/modules/*/modules.symbols' \
|
||||||
|
--exclude='*/modules/*/modules.symbols.bin' \
|
||||||
|
--exclude='*/modules/*/modules.devname' \
|
||||||
|
--exclude='*/modules/*/modules.softdep' \
|
||||||
|
--exclude='*/modules/*/modules.weakdep' \
|
||||||
|
--exclude='*/modules/*/modules.builtin.bin' \
|
||||||
|
--exclude='*/modules/*/modules.builtin.alias.bin' \
|
||||||
|
-T "${filelist}"
|
||||||
rm -f "${filelist}"
|
rm -f "${filelist}"
|
||||||
)
|
)
|
||||||
rm -f "${pkginfo}"
|
rm -f "${pkginfo}"
|
||||||
|
|||||||
Reference in New Issue
Block a user