Marcus Rueckert
4b044876a1
- Generate ksym() dependencies for SLE if %is_opensuse is unset (bsc#981083). - Drop %supplements_kernel_module, as it is broken, undocumented and is not used by anybody (bsc#981083). dropped: modalias-kernel_module.diff refreshed: modalias-encode.diff - Split fileattrs for kernel and kmps, do not pass around %name and simplify the helpers refreshed: fileattrs.diff, modalias.diff dropped: symset-table, helperenv.diff, modalias-no-kgraft.diff OBS-URL: https://build.opensuse.org/request/show/523080 OBS-URL: https://build.opensuse.org/package/show/Base:System/rpm?expand=0&rev=403
77 lines
2.0 KiB
Diff
77 lines
2.0 KiB
Diff
--- macros.in.orig
|
|
+++ macros.in
|
|
@@ -487,7 +487,7 @@ package or when debugging this package.\
|
|
%__find_requires %{_rpmconfigdir}/find-requires %name
|
|
#%__find_conflicts ???
|
|
#%__find_obsoletes ???
|
|
-#%__find_supplements ???
|
|
+%__find_supplements %{_rpmconfigdir}/find-supplements %name
|
|
#%__find_enhances ???
|
|
|
|
#
|
|
--- /dev/null
|
|
+++ scripts/find-supplements
|
|
@@ -0,0 +1,14 @@
|
|
+#!/bin/bash
|
|
+
|
|
+# This script reads filenames from STDIN and outputs any relevant provides
|
|
+# information that needs to be included in the package.
|
|
+IFS=$'\n'
|
|
+filelist=($(cat))
|
|
+
|
|
+#
|
|
+# --- Kernel module hardware identifiers
|
|
+# (e.g., modalias(pci:v0000109Ed00000878sv00000070sd0000FF01bc*sc*i*)
|
|
+[ -x /usr/lib/rpm/find-supplements.ksyms ] &&
|
|
+ printf "%s\n" "${filelist[@]}" | /usr/lib/rpm/find-supplements.ksyms "$@"
|
|
+
|
|
+exit 0
|
|
--- /dev/null
|
|
+++ scripts/find-supplements.ksyms
|
|
@@ -0,0 +1,45 @@
|
|
+#!/bin/bash
|
|
+
|
|
+IFS=$'\n'
|
|
+
|
|
+print_modaliases() {
|
|
+ declare class=$1 variants=$2 pos=$3
|
|
+ if [ -n "$variants" ]; then
|
|
+ echo "${class:0:pos}[$variants]${class:pos+1}"
|
|
+ else
|
|
+ [ -z "$class" ] || echo "$class"
|
|
+ fi
|
|
+}
|
|
+
|
|
+combine_modaliases() {
|
|
+ declare tag class variants pos n
|
|
+ read class
|
|
+ while read tag; do
|
|
+ for ((n=0; n<${#class}; n++)); do
|
|
+ if [ "*" != "${class:n:1}" -a \
|
|
+ "${class:0:n}" = "${tag:0:n}" -a \
|
|
+ "${class:n+1}" = "${tag:n+1}" ] &&
|
|
+ ( [ -z "$pos" ] || [ $n = $pos ] ); then
|
|
+ variants="${variants:-${class:n:1}}${tag:n:1}"
|
|
+ pos=$n
|
|
+ break
|
|
+ fi
|
|
+ done
|
|
+ if [ $n -eq ${#class} ]; then
|
|
+ print_modaliases "$class" "$variants" "$pos"
|
|
+ variants=
|
|
+ pos=
|
|
+ class=$tag
|
|
+ fi
|
|
+ done
|
|
+ print_modaliases "$class" "$variants" "$pos"
|
|
+}
|
|
+
|
|
+for module in $(grep -E '/lib/modules/.+\.ko$' | grep -v '/lib/modules/[^/]*/kernel/'); do
|
|
+ vermagic=$(/sbin/modinfo -F vermagic "$module")
|
|
+ krel=${vermagic%% *}
|
|
+ /sbin/modinfo -F alias "$module" \
|
|
+ | sed -nre "s,(.+:.+),modalias(kernel-${krel##*-}:\\1),p"
|
|
+done \
|
|
+| sort -u \
|
|
+| combine_modaliases
|