diff --git a/rpm/kernel-binary.spec.in b/rpm/kernel-binary.spec.in index 9be2051..2855f24 100644 --- a/rpm/kernel-binary.spec.in +++ b/rpm/kernel-binary.spec.in @@ -1114,14 +1114,14 @@ fi %endif %preun %if "%build_flavor" != "zfcpdump" -/usr/lib/module-init-tools/kernel-scriptlets/rpm-preun --name "%name" \ +%run_if_exists /usr/lib/module-init-tools/kernel-scriptlets/rpm-preun --name "%name" \ --version "%version" --release "%release" --kernelrelease "%kernelrelease" \ --image "%image" --flavor "%build_flavor" --variant "%variant" \ --usrmerged "0%{?usrmerged}" --certs "%certs" "$@" %endif %postun %if "%build_flavor" != "zfcpdump" -/usr/lib/module-init-tools/kernel-scriptlets/rpm-postun --name "%name" \ +%run_if_exists /usr/lib/module-init-tools/kernel-scriptlets/rpm-postun --name "%name" \ --version "%version" --release "%release" --kernelrelease "%kernelrelease" \ --image "%image" --flavor "%build_flavor" --variant "%variant" \ --usrmerged "0%{?usrmerged}" --certs "%certs" "$@" @@ -1178,13 +1178,13 @@ This package contains additional modules not supported by SUSE. --usrmerged "0%{?usrmerged}" --certs "%certs" "$@" %preun extra -/usr/lib/module-init-tools/kernel-scriptlets/inkmp-preun --name "%name-extra" \ +%run_if_exists /usr/lib/module-init-tools/kernel-scriptlets/inkmp-preun --name "%name-extra" \ --version "%version" --release "%release" --kernelrelease "%kernelrelease" \ --image "%image" --flavor "%build_flavor" --variant "%variant" \ --usrmerged "0%{?usrmerged}" --certs "%certs" "$@" %postun extra -/usr/lib/module-init-tools/kernel-scriptlets/inkmp-postun --name "%name-extra" \ +%run_if_exists /usr/lib/module-init-tools/kernel-scriptlets/inkmp-postun --name "%name-extra" \ --version "%version" --release "%release" --kernelrelease "%kernelrelease" \ --image "%image" --flavor "%build_flavor" --variant "%variant" \ --usrmerged "0%{?usrmerged}" --certs "%certs" "$@" @@ -1242,13 +1242,13 @@ This package contains optional modules only for openSUSE Leap. --usrmerged "0%{?usrmerged}" --certs "%certs" "$@" %preun optional -/usr/lib/module-init-tools/kernel-scriptlets/inkmp-preun --name "%name-optional" \ +%run_if_exists /usr/lib/module-init-tools/kernel-scriptlets/inkmp-preun --name "%name-optional" \ --version "%version" --release "%release" --kernelrelease "%kernelrelease" \ --image "%image" --flavor "%build_flavor" --variant "%variant" \ --usrmerged "0%{?usrmerged}" --certs "%certs" "$@" %postun optional -/usr/lib/module-init-tools/kernel-scriptlets/inkmp-postun --name "%name-optional" \ +%run_if_exists /usr/lib/module-init-tools/kernel-scriptlets/inkmp-postun --name "%name-optional" \ --version "%version" --release "%release" --kernelrelease "%kernelrelease" \ --image "%image" --flavor "%build_flavor" --variant "%variant" \ --usrmerged "0%{?usrmerged}" --certs "%certs" "$@" @@ -1409,13 +1409,13 @@ Requires(post): suse-module-tools >= 12.4 --usrmerged "0%{?usrmerged}" --certs "%certs" "$@" %preun -n @KMP_NAME@-%build_flavor -/usr/lib/module-init-tools/kernel-scriptlets/inkmp-preun --name "@KMP_NAME@-%build_flavor" \ +%run_if_exists /usr/lib/module-init-tools/kernel-scriptlets/inkmp-preun --name "@KMP_NAME@-%build_flavor" \ --version "%version" --release "%release" --kernelrelease "%kernelrelease" \ --image "%image" --flavor "%build_flavor" --variant "%variant" \ --usrmerged "0%{?usrmerged}" --certs "%certs" "$@" %postun -n @KMP_NAME@-%build_flavor -/usr/lib/module-init-tools/kernel-scriptlets/inkmp-postun --name "@KMP_NAME@-%build_flavor" \ +%run_if_exists /usr/lib/module-init-tools/kernel-scriptlets/inkmp-postun --name "@KMP_NAME@-%build_flavor" \ --version "%version" --release "%release" --kernelrelease "%kernelrelease" \ --image "%image" --flavor "%build_flavor" --variant "%variant" \ --usrmerged "0%{?usrmerged}" --certs "%certs" "$@" diff --git a/rpm/kernel-cert-subpackage b/rpm/kernel-cert-subpackage index 44aaa05..04a71b3 100644 --- a/rpm/kernel-cert-subpackage +++ b/rpm/kernel-cert-subpackage @@ -7,6 +7,15 @@ Requires(postun): suse-kernel-rpm-scriptlets This package contains the UEFI Secure Boot certificate used to sign modules in the %{-n*}-kmp packages. +%define run_if_exists run_if_exists() { \ +if [ -x "$1" ] ; then \ + "$@" \ +else \ + echo Cannot execute "$1" >&2 \ +fi \ +} \ +run_if_exists + %pre -n %{-n*}-ueficert /usr/lib/module-init-tools/kernel-scriptlets/cert-pre --certs "@CERTS@" "$@" @@ -14,10 +23,10 @@ modules in the %{-n*}-kmp packages. /usr/lib/module-init-tools/kernel-scriptlets/cert-post --certs "@CERTS@" "$@" %preun -n %{-n*}-ueficert -/usr/lib/module-init-tools/kernel-scriptlets/cert-preun --certs "@CERTS@" "$@" +%run_if_exists /usr/lib/module-init-tools/kernel-scriptlets/cert-preun --certs "@CERTS@" "$@" %postun -n %{-n*}-ueficert -/usr/lib/module-init-tools/kernel-scriptlets/cert-postun --certs "@CERTS@" "$@" +%run_if_exists /usr/lib/module-init-tools/kernel-scriptlets/cert-postun --certs "@CERTS@" "$@" %posttrans -n %{-n*}-ueficert /usr/lib/module-init-tools/kernel-scriptlets/cert-posttrans --certs "@CERTS@" "$@" diff --git a/rpm/kernel-module-subpackage b/rpm/kernel-module-subpackage index d00434f..6645965 100644 --- a/rpm/kernel-module-subpackage +++ b/rpm/kernel-module-subpackage @@ -48,6 +48,16 @@ Obsoletes: %{-n*}-kmp-xen Obsoletes: %{-n*}-kmp-desktop %endif AutoReqProv: on + +%define run_if_exists run_if_exists() { \ +if [ -x "$1" ] ; then \ + "$@" \ +else \ + echo Cannot execute "$1" >&2 \ +fi \ +} \ +run_if_exists + %{-p:%{expand:%(cd %_sourcedir; cat %{-p*})}} %description -n %{-n*}-kmp-%1 %( @@ -80,11 +90,11 @@ END { exit(! good) } --version "%_this_kmp_version" --release "%{-r*}" --kernelrelease "%2" \ --flavor "%1" --usrmerged "0%{?usrmerged}" "$@" %preun -n %{-n*}-kmp-%1 -%{-b:KMP_NEEDS_MKINITRD=1} /usr/lib/module-init-tools/kernel-scriptlets/kmp-preun --name "%{-n*}-kmp-%1" \ +%{-b:KMP_NEEDS_MKINITRD=1} %run_if_exists /usr/lib/module-init-tools/kernel-scriptlets/kmp-preun --name "%{-n*}-kmp-%1" \ --version "%_this_kmp_version" --release "%{-r*}" --kernelrelease "%2" \ --flavor "%1" --usrmerged "0%{?usrmerged}" "$@" %postun -n %{-n*}-kmp-%1 -%{-b:KMP_NEEDS_MKINITRD=1} /usr/lib/module-init-tools/kernel-scriptlets/kmp-postun --name "%{-n*}-kmp-%1" \ +%{-b:KMP_NEEDS_MKINITRD=1} %run_if_exists /usr/lib/module-init-tools/kernel-scriptlets/kmp-postun --name "%{-n*}-kmp-%1" \ --version "%_this_kmp_version" --release "%{-r*}" --kernelrelease "%2" \ --flavor "%1" --usrmerged "0%{?usrmerged}" "$@" %posttrans -n %{-n*}-kmp-%1 diff --git a/rpm/kernel-spec-macros b/rpm/kernel-spec-macros index 998b337..3f087e7 100644 --- a/rpm/kernel-spec-macros +++ b/rpm/kernel-spec-macros @@ -72,4 +72,14 @@ %define kernel_module_directory /lib/modules %endif +# Very basic macro for conditional execution. +%define run_if_exists run_if_exists() { \ +if [ -x "$1" ] ; then \ + "$@" \ +else \ + echo Cannot execute "$1" >&2 \ +fi \ +} \ +run_if_exists + # vim: ft=spec