[PATCH 2/5] dist-kernel-utils.eclass: Split /lib symlink update logic

Michał Górny <[email protected]> Fri, 29 May 2026 12:43:50 +0200
Newsgroups gmane.linux.gentoo.devel
Message-ID <[email protected]>
Move the /lib merged-usr symlink update logic from inline code
in kernel-install.eclass's pkg_preinst() to a reusable helper
in dist-kernel-utils.eclass.

Signed-off-by: Michał Górny <[email protected]>
---
 eclass/dist-kernel-utils.eclass | 33 +++++++++++++++++++++++++++++++++
 eclass/kernel-install.eclass    | 20 +-------------------
 2 files changed, 34 insertions(+), 19 deletions(-)

diff --git a/eclass/dist-kernel-utils.eclass b/eclass/dist-kernel-utils.eclass
index a4a3a07d2e934..78cdd1fa2de7e 100644
--- a/eclass/dist-kernel-utils.eclass
+++ b/eclass/dist-kernel-utils.eclass
@@ -411,5 +411,38 @@ dist-kernel_update_src_symlink() {
 	fi
 }
 
+# @FUNCTION: dist-kernel_update_lib_symlinks
+# @USAGE: [<kv-full>] [<image-path>]
+# @DESCRIPTION:
+# Update the symlinks in ${ED}/lib/modules/${KV_FULL} if the system is
+# running merged-usr.  Intended to be used in pkg_preinst().
+dist-kernel_update_lib_symlinks() {
+	debug-print-function ${FUNCNAME} "$@"
+
+	[[ ${#} -gt 2 ]] && die "${FUNCNAME}: invalid arguments"
+	local version=${1:-${KV_FULL}}
+	local image_path=${2:-$(dist-kernel_get_image_path)}
+
+	if [[ -L ${EROOT}/lib && ${EROOT}/lib -ef ${EROOT}/usr/lib ]]; then
+		# Adjust symlinks for merged-usr.
+		rm "${ED}/lib/modules/${version}"/{build,source} || die
+		dosym "../../../src/linux-${version}" "/usr/lib/modules/${version}/build"
+		dosym "../../../src/linux-${version}" "/usr/lib/modules/${version}/source"
+		local file
+		for file in .config System.map; do
+			if [[ -L "${ED}/lib/modules/${version}/${file#.}" ]]; then
+				rm "${ED}/lib/modules/${version}/${file#.}" || die
+				dosym "../../../src/linux-${version}/${file}" "/usr/lib/modules/${version}/${file#.}"
+			fi
+		done
+		for file in vmlinux vmlinuz; do
+			if [[ -L "${ED}/lib/modules/${version}/${file}" ]]; then
+				rm "${ED}/lib/modules/${version}/${file}" || die
+				dosym "../../../src/linux-${version}/${image_path}" "/usr/lib/modules/${version}/${file}"
+			fi
+		done
+	fi
+}
+
 _DIST_KERNEL_UTILS=1
 fi
diff --git a/eclass/kernel-install.eclass b/eclass/kernel-install.eclass
index ae32a2cb2388b..f151c2d2f2d6b 100644
--- a/eclass/kernel-install.eclass
+++ b/eclass/kernel-install.eclass
@@ -562,25 +562,7 @@ kernel-install_pkg_preinst() {
 		fi
 	fi
 
-	if [[ -L ${EROOT}/lib && ${EROOT}/lib -ef ${EROOT}/usr/lib ]]; then
-		# Adjust symlinks for merged-usr.
-		rm "${ED}/lib/modules/${KV_FULL}"/{build,source} || die
-		dosym "../../../src/linux-${KV_FULL}" "/usr/lib/modules/${KV_FULL}/build"
-		dosym "../../../src/linux-${KV_FULL}" "/usr/lib/modules/${KV_FULL}/source"
-		local file
-		for file in .config System.map; do
-			if [[ -L "${ED}/lib/modules/${KV_FULL}/${file#.}" ]]; then
-				rm "${ED}/lib/modules/${KV_FULL}/${file#.}" || die
-				dosym "../../../src/linux-${KV_FULL}/${file}" "/usr/lib/modules/${KV_FULL}/${file#.}"
-			fi
-		done
-		for file in vmlinux vmlinuz; do
-			if [[ -L "${ED}/lib/modules/${KV_FULL}/${file}" ]]; then
-				rm "${ED}/lib/modules/${KV_FULL}/${file}" || die
-				dosym "../../../src/linux-${KV_FULL}/${image_path}" "/usr/lib/modules/${KV_FULL}/${file}"
-			fi
-		done
-	fi
+	dist-kernel_update_lib_symlinks "${KV_FULL}" "${image_path}"
 }
 
 # @FUNCTION: kernel-install_extract_from_uki