From f9fcd7463c689ec2db468f06f06772de1dd4f4db Mon Sep 17 00:00:00 2001 From: Eugene Syromiatnikov Date: Tue, 16 Nov 2021 00:19:11 +0100 Subject: [PATCH] kmod.attr: add compressed kmod support * kmod.attr (%__kmod_path): Add ".*\.ko\.gz|.*\.ko\.bz2|.*\.ko\.xz" to he module path matching regular expression endings. (%__kmod_provides) : New function. (%__kmod_provides): Generate dependencies with module file name without compressed extension (just ".ko") for compressed modules. Resolves: #1942537 Signed-off-by: Eugene Syromiatnikov --- kmod.attr | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/kmod.attr b/kmod.attr index 44a8d56..993777e 100644 --- a/kmod.attr +++ b/kmod.attr @@ -1,21 +1,31 @@ -%__kmod_path ^/lib/modules/.*/(modules.builtin|.*ko) +%__kmod_path ^/lib/modules/.*/(modules.builtin|.*\.ko|.*\.ko\.gz|.*\.ko\.bz2|.*\.ko\.xz)$ %__kmod_provides() %{lua: function basename(fn) return string.gsub(fn, "(.*/)(.*)", "%2") end + function strip_compress_sfx(fn) + return string.gsub(fn, "(.*)(\.gz|\.bz2|\.xz)?$", "%1") + end function printdep(mod) - print("kmod("..mod..")") + print("kmod("..mod..") ") end local fn = rpm.expand("%{1}") local bn = basename(fn) if bn == "modules.builtin" then for l in io.lines(fn) do - printdep(basename(l)) + local builtin_mod = basename(l) + printdep(builtin_mod) + if strip_compress_sfx(builtin_mod) ~= builtin_mod then + printdep(strip_compress_sfx(builtin_mod)) + end end else local mod = string.match(bn, "%g+.ko") if mod then printdep(mod) + if strip_compress_sfx(mod) ~= mod then + printdep(strip_compress_sfx(mod)) + end end end }