commit:     74b839fa53c6ebb386df6ec85e185020978d0b6c
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Fri Oct  3 12:38:19 2025 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Fri Oct  3 19:11:24 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=74b839fa

kernel-install.eclass: Fix updating symlinks with -p kernels

Closes: https://bugs.gentoo.org/963683
Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>
Part-of: https://github.com/gentoo/gentoo/pull/44021
Closes: https://github.com/gentoo/gentoo/pull/44021
Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>

 eclass/kernel-install.eclass | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)

diff --git a/eclass/kernel-install.eclass b/eclass/kernel-install.eclass
index 47afe6e75010..5d074598192f 100644
--- a/eclass/kernel-install.eclass
+++ b/eclass/kernel-install.eclass
@@ -263,10 +263,15 @@ kernel-install_can_update_symlink() {
        # strip KV_LOCALVERSION, we want to update the old kernels not using
        # KV_LOCALVERSION suffix and the new kernels using it
        symlink_ver=${symlink_ver%${KV_LOCALVERSION}}
-
-       # if ${symlink_ver} contains anything but numbers (e.g. an extra
-       # suffix), it's not our kernel, so leave it alone
-       [[ -n ${symlink_ver//[0-9.]/} ]] && return 1
+       symlink_ver=${symlink_ver/-p/_p}
+       # strip -p* revision
+       local symlink_ver_no_rev=${symlink_ver%_p[0-9]*}
+       local rev=${symlink_ver#${symlink_ver_no_rev}}
+       rev=${rev#_p}
+
+       # if ${symlink_ver} contained anything but numbers and revision (e.g.
+       # an extra suffix), it's not our kernel, so leave it alone
+       [[ -n ${symlink_ver_no_rev//[0-9.]/} || -n ${rev//[0-9]/} ]] && return 1
 
        local symlink_pkg=${CATEGORY}/${PN}-${symlink_ver}
        # if the current target is either being replaced, or still

Reply via email to