From 4c68fd7e565195cdda3312a38640b26746365650 Mon Sep 17 00:00:00 2001 From: Eugene Syromiatnikov Date: Tue, 16 Nov 2021 00:20:29 +0100 Subject: [PATCH] Switch kmodtool-generated spec to internal dependency generator It leads to some regressions in requires generation precision, though, as it is no longer possible to exclude requires that are satisfied by other kmods in the package. And calling a script on each file (instead of calling it on the whole file list at once) does not make things faster, either (so much for "sanity and benefit"). * find-provides.ksyms: Check for "$@" as well. * find-requires.ksyms: Likewise. * kernel-srpm-macros.spec (Source104, Source105, Source106): New attribute files. (%install): Install firmware.prov and modalias.prov with executable bit; install provided_ksyms.attr, required_ksyms.attr, and modalias.attr into "%{buildroot}%{_fileattrsdir}". (%files -n kernel-rpm-macros): Add provided_ksyms.attr, required_ksyms.attr, and modalias.attr. kmodtool: Remove "%global _use_internal_dependency_generator 0". macros.kmp: Remove %__find_provides and %__find_requires. * modalias.attr: New file. * provided_ksyms.attr: Likewise. * required_ksyms.attr: Likewise. Resolves: #1942072 Resolves: #1942563 Signed-off-by: Eugene Syromiatnikov --- find-provides.ksyms | 2 +- find-requires.ksyms | 2 +- kernel-srpm-macros.spec | 13 +++++++++++-- kmodtool | 3 --- macros.kmp | 3 --- modalias.attr | 2 ++ provided_ksyms.attr | 2 ++ required_ksyms.attr | 4 ++++ 8 files changed, 21 insertions(+), 10 deletions(-) create mode 100644 modalias.attr create mode 100644 provided_ksyms.attr create mode 100644 required_ksyms.attr diff --git a/find-provides.ksyms b/find-provides.ksyms index a58978b..796a090 100755 --- a/find-provides.ksyms +++ b/find-provides.ksyms @@ -2,7 +2,7 @@ IFS=$'\n' -for module in $(grep -E '/lib/modules/.+\.ko(\.gz|\.bz2|\.xz)?$'); do +for module in $(grep -E '/lib/modules/.+\.ko(\.gz|\.bz2|\.xz)?$') "$@"; do tmpfile="" if [ "x${module%.ko}" = "x${module}" ]; then tmpfile=$(mktemp -t ${0##*/}.XXXXXX.ko) diff --git a/find-requires.ksyms b/find-requires.ksyms index d574681..ae45d94 100755 --- a/find-requires.ksyms +++ b/find-requires.ksyms @@ -123,7 +123,7 @@ check_kabi() { fi } -modules=($(grep -E '/lib/modules/.+\.ko(\.gz|\.bz2|\.xz)?$')) +modules=($(grep -E '/lib/modules/.+\.ko(\.gz|\.bz2|\.xz)?$') "$@") if [ ${#modules[@]} -gt 0 ]; then kernel=$(/sbin/modinfo -F vermagic "${modules[0]}" | sed -e 's: .*::' -e q) diff --git a/kernel-srpm-macros.spec b/kernel-srpm-macros.spec index 42e6e85..20e1ee8 100644 --- a/kernel-srpm-macros.spec +++ b/kernel-srpm-macros.spec @@ -16,11 +16,14 @@ Conflicts: redhat-rpm-config <= 184 Source0: macros.kernel-srpm Source1: macros.kmp -# Dependency generator scripts (deprecated) +# Dependency generator scripts Source100: find-provides.ksyms Source101: find-requires.ksyms Source102: firmware.prov Source103: modalias.prov +Source104: provided_ksyms.attr +Source105: required_ksyms.attr +Source106: modalias.attr # Dependency generators & their rules Source200: kmod.attr @@ -81,7 +84,7 @@ mkdir -p %{buildroot}%{rrcdir}/find-provides.d mkdir -p %{buildroot}%{_fileattrsdir} install -p -m 755 -t %{buildroot}%{rrcdir} kmodtool rpmsort symset-table install -p -m 755 -t %{buildroot}%{rrcdir} find-provides.ksyms find-requires.ksyms -install -p -m 644 -t %{buildroot}%{rrcdir}/find-provides.d firmware.prov modalias.prov +install -p -m 755 -t %{buildroot}%{rrcdir}/find-provides.d firmware.prov modalias.prov install -p -m 755 -t %{buildroot}%{rrcdir} brp-kmod-restore-perms brp-kmod-set-exec-bit install -p -m 644 -t %{buildroot}%{_rpmconfigdir}/macros.d macros.kmp install -p -m 644 -t %{buildroot}%{_fileattrsdir} kmod.attr @@ -89,6 +92,9 @@ install -p -m 644 -t %{buildroot}%{_fileattrsdir} kmod.attr install -p -m 644 -t "%{buildroot}%{_fileattrsdir}" kabi.attr install -p -m 755 -t "%{buildroot}%{_rpmconfigdir}" kabi.sh +install -p -m 644 -t "%{buildroot}%{_fileattrsdir}" provided_ksyms.attr required_ksyms.attr +install -p -m 644 -t "%{buildroot}%{_fileattrsdir}" modalias.attr + %files %{_rpmconfigdir}/macros.d/macros.kernel-srpm %{_fileattrsdir}/kmod.attr @@ -97,6 +103,9 @@ install -p -m 755 -t "%{buildroot}%{_rpmconfigdir}" kabi.sh %{_rpmconfigdir}/kabi.sh %{_rpmconfigdir}/macros.d/macros.kmp %{_fileattrsdir}/kabi.attr +%{_fileattrsdir}/modalias.attr +%{_fileattrsdir}/provided_ksyms.attr +%{_fileattrsdir}/required_ksyms.attr %dir %{rrcdir}/find-provides.d %{rrcdir}/brp-kmod-restore-perms %{rrcdir}/brp-kmod-set-exec-bit diff --git a/kmodtool b/kmodtool index fdb6582..6c43725 100755 --- a/kmodtool +++ b/kmodtool @@ -168,9 +168,6 @@ get_rpmtemplate () echo "Release: %{kmod_release}" fi - # Turn of the internal dep generator so we will use the kmod scripts. - echo "%global _use_internal_dependency_generator 0" - cat <= ${verrel}${dotvariant} Provides: kernel${dashvariant}-modules >= ${verrel} diff --git a/macros.kmp b/macros.kmp index 8eb6157..f8034ee 100644 --- a/macros.kmp +++ b/macros.kmp @@ -9,9 +9,6 @@ redhat_kmp_has_post_hooks 1 %__kmod_brps_added 0 -%__find_provides /usr/lib/rpm/redhat/find-provides -%__find_requires /usr/lib/rpm/redhat/find-requires - #kernel_module_package [ -n name ] [ -v version ] [ -r release ] [ -s script ] # [ -f filelist] [ -x ] [ -p preamble ] flavor flavor ... diff --git a/modalias.attr b/modalias.attr new file mode 100644 index 0000000..cb5f183 --- /dev/null +++ b/modalias.attr @@ -0,0 +1,2 @@ +%__modalias_provides /usr/lib/rpm/redhat/find-provides.d/modalias.prov +%__modalias_path .*\.(ko|ko\.gz|ko\.bz2|ko\.xz)$ diff --git a/provided_ksyms.attr b/provided_ksyms.attr new file mode 100644 index 0000000..309a06a --- /dev/null +++ b/provided_ksyms.attr @@ -0,0 +1,2 @@ +%__provided_ksyms_provides /usr/lib/rpm/redhat/find-provides.ksyms +%__provided_ksyms_path .*\.(ko|ko\.gz|ko\.bz2|ko\.xz)$ diff --git a/required_ksyms.attr b/required_ksyms.attr new file mode 100644 index 0000000..2c9e979 --- /dev/null +++ b/required_ksyms.attr @@ -0,0 +1,4 @@ +%__required_ksyms_requires /usr/lib/rpm/redhat/find-requires.ksyms +%__required_ksyms_path .*\.(ko|ko\.gz|ko\.bz2|ko\.xz)$ +# Exclude built-in kernel modules +%__required_ksyms_exclude_path ^/lib/modules/[1-9][^/]*/kernel/.*