%package -n %{-n*}-%1 Version: %(echo %{-v*}-%2 | tr - _) Release: %{-r*} %( for spec in {%_sourcedir,%_specdir}/%name.spec /dev/null; do [ -e $spec ] && break done awk ' BEGIN { tags["summary"] = "Summary: %summary" tags["group"] = "Group: %group" } /^%%/ { in_pkg_header = \ ($0 ~ /^%%package[ \t]+KMP[ \t]*$/ || $0 ~ /^%%package[ \t]+-n[ \t]*%name-KMP[ \t]*$/) next } in_pkg_header && /^(Summary|Group):[ \t]*/ \ { tag = tolower($1) ; sub(/:$/, "", tag) tags[tag] = $0 } END { print tags["summary"] print tags["group"] } ' $spec ) Provides: %{-n*} = %(echo %{-v*}-%2 | tr - _) Requires: coreutils grep AutoReqProv: on %{-p:%{expand:%(cd %_sourcedir; cat %{-p*})}} %description -n %{-n*}-%1 %( for spec in {%_sourcedir,%_specdir}/%name.spec /dev/null; do [ -e $spec ] && break done awk ' /^%%/ { in_desc = \ ($0 ~ /^%%description[ \t]+KMP[ \t]*$/ || $0 ~ /^%%description[ \t]+-n[ \t]*%name-KMP[ \t]*$/) next } in_desc { print; good = 1 } END { exit(! good) } ' $spec || \ awk ' /^%%/ { in_desc = \ ($0 ~ /^%%description[ \t]*$/ || $0 ~ /^%%description[ \t]+-n[ \t]*%name[ \t]*$/) next } in_desc { print; good = 1 } END { exit(! good) } ' $spec ) %post -n %{-n*}-%1 version=%(echo %{-v*}-%2 | tr - _) nvr=%{-n*}-%1-$version-%{-r*} wm2=/usr/lib/module-init-tools/weak-modules2 if [ -x $wm2 ]; then /bin/bash -${-/e/} $wm2 --add-kmp $nvr fi %preun -n %{-n*}-%1 version=%(echo %{-v*}-%2 | tr - _) nvr=%{-n*}-%1-$version-%{-r*} rpm -ql $nvr | sed -n '/\.ko$/p' > /var/run/rpm-$nvr-modules %postun -n %{-n*}-%1 version=%(echo %{-v*}-%2 | tr - _) nvr=%{-n*}-%1-$version-%{-r*} modules=( $(cat /var/run/rpm-$nvr-modules) ) rm -f /var/run/rpm-$nvr-modules if [ ${#modules[*]} = 0 ]; then echo "WARNING: $nvr does not contain any kernel modules" >&2 exit 0 fi wm2=/usr/lib/module-init-tools/weak-modules2 if [ -x $wm2 ]; then printf '%s\n' "${modules[@]}" | /bin/bash -${-/e/} $wm2 --remove-kmp $nvr fi %files -n %{-n*}-%1 %{-f:%{expand:%(cd %_sourcedir; cat %{-f*})}} %{!-f:%defattr (-,root,root)} %{!-f:/lib/modules/%2-%1}