[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