a76d6c30a2
Copy from Base:System/rpm based on submit request 18841 from user mlschroe OBS-URL: https://build.opensuse.org/request/show/18841 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/rpm?expand=0&rev=84
109 lines
3.1 KiB
Diff
109 lines
3.1 KiB
Diff
SUSE specific find-supplements, used for kernel builds
|
|
|
|
Index: macros.in
|
|
===================================================================
|
|
--- macros.in.orig
|
|
+++ macros.in
|
|
@@ -473,14 +473,18 @@ print (t)\
|
|
#
|
|
# Path to scripts to autogenerate package dependencies,
|
|
#
|
|
+%__set_helper_env %{lua:
|
|
+posix.setenv("RPMBUILD_SPECFILE",rpm.expand("%?_specfile"));
|
|
+posix.setenv("RPMBUILD_SOURCEDIR",rpm.expand("%?_sourcedir"));
|
|
+}
|
|
# Note: Used iff _use_internal_dependency_generator is zero.
|
|
#%__find_provides %{_rpmconfigdir}/rpmdeps --provides
|
|
#%__find_requires %{_rpmconfigdir}/rpmdeps --requires
|
|
-%__find_provides %{_rpmconfigdir}/find-provides %name
|
|
-%__find_requires %{_rpmconfigdir}/find-requires %name
|
|
+%__find_provides %{__set_helper_env}%{_rpmconfigdir}/find-provides %name
|
|
+%__find_requires %{__set_helper_env}%{_rpmconfigdir}/find-requires %name
|
|
#%__find_conflicts ???
|
|
#%__find_obsoletes ???
|
|
-#%__find_supplements ???
|
|
+%__find_supplements %{__set_helper_env}%{_rpmconfigdir}/find-supplements %name
|
|
#%__find_enhances ???
|
|
|
|
#
|
|
Index: scripts/find-supplements
|
|
===================================================================
|
|
--- /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
|
|
Index: scripts/find-supplements.ksyms
|
|
===================================================================
|
|
--- /dev/null
|
|
+++ scripts/find-supplements.ksyms
|
|
@@ -0,0 +1,56 @@
|
|
+#! /bin/sh
|
|
+
|
|
+IFS=$'\n'
|
|
+
|
|
+case "$1" in
|
|
+kernel-module-*) ;; # Fedora kernel module package names start with
|
|
+ # kernel-module.
|
|
+kernel*) is_kernel_package=1 ;;
|
|
+esac
|
|
+
|
|
+if ! [ -z "$is_kernel_package" ]; then
|
|
+ cat > /dev/null
|
|
+ exit 0
|
|
+fi
|
|
+
|
|
+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$'); 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
|