On 9/13/21 12:27 PM, Mike Gilbert wrote:
> This function may fail if the version cannot be parsed from a Makefile
> found by following the /lib/modules/${KV_FULL}/{source,build} symlinks.
> Instead of failing, we should just split KV_FULL as a fallback.
> 
> Also, simplify the existance checks for the kernel Makefile; if we can't
> find the kernel source directory, there is really no point in checking
> for the kernel build directory. The latter will probably contain a
> Makefile with no version information.
> 
> Bug: https://bugs.gentoo.org/811726
> Signed-off-by: Mike Gilbert <flop...@gentoo.org>
> ---
>  eclass/linux-info.eclass | 47 +++++++++++++++++-----------------------
>  1 file changed, 20 insertions(+), 27 deletions(-)
> 
> diff --git a/eclass/linux-info.eclass b/eclass/linux-info.eclass
> index 4e08949a385..97f7b5c06a9 100644
> --- a/eclass/linux-info.eclass
> +++ b/eclass/linux-info.eclass
> @@ -629,34 +629,27 @@ get_running_version() {
>               die "${FUNCNAME}() called on non-Linux system, please fix the 
> ebuild"
>       fi
>  
> -     KV_FULL=$(uname -r)
> -
> -     if [[ -f ${ROOT%/}/lib/modules/${KV_FULL}/source/Makefile && -f 
> ${ROOT%/}/lib/modules/${KV_FULL}/build/Makefile ]]; then
> -             KERNEL_DIR=$(readlink -f 
> ${ROOT%/}/lib/modules/${KV_FULL}/source)
> -             KBUILD_OUTPUT=$(readlink -f 
> ${ROOT%/}/lib/modules/${KV_FULL}/build)
> -             unset KV_FULL
> -             get_version
> -             return $?
> -     elif [[ -f ${ROOT%/}/lib/modules/${KV_FULL}/source/Makefile ]]; then
> -             KERNEL_DIR=$(readlink -f 
> ${ROOT%/}/lib/modules/${KV_FULL}/source)
> -             unset KV_FULL
> -             get_version
> -             return $?
> -     elif [[ -f ${ROOT%/}/lib/modules/${KV_FULL}/build/Makefile ]]; then
> -             KERNEL_DIR=$(readlink -f ${ROOT%/}/lib/modules/${KV_FULL}/build)
> -             unset KV_FULL
> -             get_version
> -             return $?
> -     else
> -             # This handles a variety of weird kernel versions.  Make sure 
> to update
> -             # tests/linux-info_get_running_version.sh if you want to change 
> this.
> -             local kv_full=${KV_FULL//[-+_]*}
> -             KV_MAJOR=$(ver_cut 1 ${kv_full})
> -             KV_MINOR=$(ver_cut 2 ${kv_full})
> -             KV_PATCH=$(ver_cut 3 ${kv_full})
> -             
> KV_EXTRA="${KV_FULL#${KV_MAJOR}.${KV_MINOR}${KV_PATCH:+.${KV_PATCH}}}"
> -             : ${KV_PATCH:=0}
> +     local kv=$(uname -r)
> +
> +     if [[ -f ${ROOT%/}/lib/modules/${kv}/source/Makefile ]]; then
> +             KERNEL_DIR=$(readlink -f "${ROOT%/}/lib/modules/${kv}/source")
> +             if [[ -f ${ROOT%/}/lib/modules/${kv}/build/Makefile ]]; then
> +                     KBUILD_OUTPUT=$(readlink -f 
> "${ROOT%/}/lib/modules/${kv}/build")
> +             fi
> +             get_version && return 0
>       fi
> +
> +     KV_FULL=${kv}
> +
> +     # This handles a variety of weird kernel versions.  Make sure to update
> +     # tests/linux-info_get_running_version.sh if you want to change this.
> +     local kv_full=${KV_FULL//[-+_]*}
> +     KV_MAJOR=$(ver_cut 1 ${kv_full})
> +     KV_MINOR=$(ver_cut 2 ${kv_full})
> +     KV_PATCH=$(ver_cut 3 ${kv_full})
> +     KV_EXTRA="${KV_FULL#${KV_MAJOR}.${KV_MINOR}${KV_PATCH:+.${KV_PATCH}}}"
> +     : ${KV_PATCH:=0}
> +
>       return 0
>  }
>  
> 

-- 

LGTM, everything I've tested looks good, will continue to run with this one 
also.

Reply via email to