summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Ammerlaan <andrewammerlaan@gentoo.org>2024-08-08 14:02:35 +0200
committerAndrew Ammerlaan <andrewammerlaan@gentoo.org>2024-08-08 18:44:27 +0200
commitc75b6bf3c8b84eb3a674613cf054b54b053bbd7c (patch)
tree8b67cf09d6b40b9b337b791325efe026d361a46a
parenta2db294c0aa48d06c1bfb1df039cb4710bbc2848 (diff)
downloadgentoo-c75b6bf3c8b84eb3a674613cf054b54b053bbd7c.tar.gz
gentoo-c75b6bf3c8b84eb3a674613cf054b54b053bbd7c.tar.bz2
gentoo-c75b6bf3c8b84eb3a674613cf054b54b053bbd7c.zip
(dist-)kernel-{install,utils}.eclass: fix finding config during cleanup
The source symlink does not exist on all systems. If we can't find any config at all then there will be no preferred suffix which means we fall back to the old '-nt' based cleaning. Closes: https://bugs.gentoo.org/937569 Signed-off-by: Andrew Ammerlaan <andrewammerlaan@gentoo.org> Closes: https://github.com/gentoo/gentoo/pull/38016 Signed-off-by: Andrew Ammerlaan <andrewammerlaan@gentoo.org>
-rw-r--r--eclass/dist-kernel-utils.eclass18
-rw-r--r--eclass/kernel-install.eclass2
2 files changed, 16 insertions, 4 deletions
diff --git a/eclass/dist-kernel-utils.eclass b/eclass/dist-kernel-utils.eclass
index 0b0eb0ec8818..bb058d488a13 100644
--- a/eclass/dist-kernel-utils.eclass
+++ b/eclass/dist-kernel-utils.eclass
@@ -160,7 +160,7 @@ dist-kernel_PV_to_KV() {
}
# @FUNCTION: dist-kernel_get_module_suffix
-# @USAGE: <kernel_dir>
+# @USAGE: <kernel_config>
# @DESCRIPTION:
# Returns the suffix for kernel modules based on the CONFIG_MODULES_COMPESS_*
# setting in the kernel config and USE=modules-compress.
@@ -169,7 +169,7 @@ dist-kernel_get_module_suffix() {
[[ ${#} -eq 1 ]] || die "${FUNCNAME}: invalid arguments"
- local config=${1}/.config
+ local config=${1}
if ! in_iuse modules-compress || ! use modules-compress; then
echo .ko
@@ -198,7 +198,19 @@ dist-kernel_compressed_module_cleanup() {
[[ ${#} -ne 1 ]] && die "${FUNCNAME}: invalid arguments"
local path=${1}
- local preferred=$(dist-kernel_get_module_suffix "${path}/source")
+ local config_path=/usr/src/linux-${KV_FULL}/.config
+
+ local option
+ for option in config source/.config build/.config; do
+ if [[ -f ${path}/${option} ]]; then
+ config_path=${path}/${option}
+ break
+ fi
+ done
+
+ local preferred=
+ [[ -f ${config_path} ]] && preferred=$(dist-kernel_get_module_suffix "${config_path}")
+
local basename suffix
while read -r basename; do
diff --git a/eclass/kernel-install.eclass b/eclass/kernel-install.eclass
index c64dd673084b..496e258815d2 100644
--- a/eclass/kernel-install.eclass
+++ b/eclass/kernel-install.eclass
@@ -769,7 +769,7 @@ kernel-install_compress_modules() {
if [[ -z ${KV_FULL} ]]; then
KV_FULL=${PV}${KV_LOCALVERSION}
fi
- local suffix=$(dist-kernel_get_module_suffix "${ED}/usr/src/linux-${KV_FULL}")
+ local suffix=$(dist-kernel_get_module_suffix "${ED}/usr/src/linux-${KV_FULL}/.config")
local compress=()
# Options taken from linux-mod-r1.eclass.
# We don't instruct the compressor to parallelize because it applies