commit: c75b6bf3c8b84eb3a674613cf054b54b053bbd7c
Author: Andrew Ammerlaan <andrewammerlaan <AT> gentoo <DOT> org>
AuthorDate: Thu Aug 8 12:02:35 2024 +0000
Commit: Andrew Ammerlaan <andrewammerlaan <AT> gentoo <DOT> org>
CommitDate: Thu Aug 8 16:44:27 2024 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=c75b6bf3
(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 <AT> gentoo.org>
Closes: https://github.com/gentoo/gentoo/pull/38016
Signed-off-by: Andrew Ammerlaan <andrewammerlaan <AT> gentoo.org>
eclass/dist-kernel-utils.eclass | 18 +++++++++++++++---
eclass/kernel-install.eclass | 2 +-
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