File modalias-kernel_module.diff of Package python3-rpm

Index: scripts/find-supplements.ksyms
===================================================================
--- scripts/find-supplements.ksyms.orig
+++ scripts/find-supplements.ksyms
@@ -1,6 +1,8 @@
 #! /bin/sh
 
+SPECFILE=${RPMBUILD_SPECFILE:-/usr/src/packages/SOURCES/$1.spec}
 IFS=$'\n'
+PACKAGE=$1
 
 case "$1" in
 kernel-module-*)    ;; # Fedora kernel module package names start with
@@ -46,11 +48,54 @@ combine_modaliases() {
     print_modaliases "$class" "$variants" "$pos"
 }
 
-for module in $(grep -E '/lib/modules/.+\.ko$'); do
-    vermagic=$(/sbin/modinfo -F vermagic "$module")
-    krel=${vermagic%% *}
-    /sbin/modinfo -F alias "$module" \
-    | sed -nre "s,(.+:.+),modalias(kernel-${krel##*-}:\\1),p"
-done \
+aliases_of_filelist() {
+    modlist=$(mktemp)
+    have_module=1
+    for module in $(grep -E '/lib/modules/.+\.ko$'); do
+	vermagic=$(/sbin/modinfo -F vermagic "$module")
+	krel=${vermagic%% *}
+	if ! test -x /sbin/modinfo; then
+		echo "ERROR: add module-init-tools to BuildRequires" >&2
+		exit 1
+	fi
+	have_module=0
+	/sbin/modinfo -F alias "$module" \
+	| sed -nre "s,(.+:.+),modalias(kernel-${krel##*-}:\\1),p" | tee -a $modlist
+    done
+    if ! test -s "$modlist" && test $have_module = 0; then
+        echo "packageand(kernel-${krel##*-}:$PACKAGE)"
+    fi
+    rm -f $modlist
+}
+
+aliases_of_specfile_macro() {
+    declare regex
+
+    regex=$(
+	set -o noglob
+	set -- $(sed -ne 's:^%supplements_kernel_module[ \t]::p' \
+		     $SPECFILE)
+	while [ $# -ge 1 ]; do
+	    regex=$(echo "$1" \
+		    | sed -e 's:[.]:\\.:g' \
+			  -e 's:?:.:g' \
+			  -e 's:\*:.*:g' \
+			  -e 's:\\:\\\\:g')
+	    echo -n "^$regex\$"
+	    [ $# -ge 2 ] && echo -n "|"
+	    shift
+	done
+    )
+
+    if [ -n "$regex" ]; then
+	awk '
+	$1 == "alias" && $3 ~ regex { print $2 }
+	' regex="$regex" /lib/modules/*/modules.alias
+    fi
+}
+
+(   aliases_of_filelist
+    aliases_of_specfile_macro "$1"
+) \
 | sort -u \
 | combine_modaliases