diff --git a/kmod.attr b/kmod.attr new file mode 100644 index 0000000..f2a50d0 --- /dev/null +++ b/kmod.attr @@ -0,0 +1,2 @@ +%__kmod_provides %{_rpmconfigdir}/kmod.prov +%__kmod_path ^/lib/modules/.*$ diff --git a/kmod.prov b/kmod.prov new file mode 100644 index 0000000..82633e9 --- /dev/null +++ b/kmod.prov @@ -0,0 +1,17 @@ +#!/bin/sh +x + +IFS=$'\n' + +for i in $(grep -E '(/lib/modules/.*\.ko|/lib/modules/.*/modules.builtin)'); +do + kmod=$(basename $i); + + if [ $kmod == "modules.builtin" ]; then + for j in $(cat $i); do + j=$(basename $j); + echo "kmod($j)" + done + else + echo "kmod($kmod)" + fi +done diff --git a/libsymlink.attr b/libsymlink.attr new file mode 100644 index 0000000..8bb6404 --- /dev/null +++ b/libsymlink.attr @@ -0,0 +1,4 @@ +# Make libfoo.so symlinks require the soname-provide of the target library +%__libsymlink_requires %{_rpmconfigdir}/elfdeps --provides --soname-only +%__libsymlink_magic ^symbolic link to `.*lib.*\.so\..*'$ +%__libsymlink_exclude_path ^.*[[:digit:]]$ diff --git a/redhat-rpm-config.spec b/redhat-rpm-config.spec index b59004d..672275e 100644 --- a/redhat-rpm-config.spec +++ b/redhat-rpm-config.spec @@ -6,7 +6,7 @@ Summary: Red Hat specific rpm configuration files Name: redhat-rpm-config -Version: 15 +Version: 16 Release: 1%{?dist} # No version specified. License: GPL+ @@ -64,6 +64,11 @@ Source403: kmodtool Source500: config.guess Source501: config.sub +# Dependency generators & their rules +Source600: kmod.attr +Source601: kmod.prov +Source602: libsymlink.attr + BuildArch: noarch Requires: coreutils Requires: perl-srpm-macros @@ -100,11 +105,15 @@ install -p -m 755 -t %{buildroot}%{rrcdir} brp-* install -p -m 755 -t %{buildroot}%{rrcdir} find-* mkdir -p %{buildroot}%{rrcdir}/find-provides.d -install -p -m 644 -t %{buildroot}%{rrcdir}/find-provides.d *.prov +install -p -m 644 -t %{buildroot}%{rrcdir}/find-provides.d firmware.prov modalias.prov mkdir -p %{buildroot}%{_rpmconfigdir}/macros.d install -p -m 644 -t %{buildroot}%{_rpmconfigdir}/macros.d macros.* +mkdir -p %{buildroot}%{_fileattrsdir} +install -p -m 644 -t %{buildroot}%{_fileattrsdir} *.attr +install -p -m 755 -t %{buildroot}%{_rpmconfigdir} kmod.prov + %files %defattr(-,root,root) %dir %{rrcdir} @@ -114,6 +123,8 @@ install -p -m 644 -t %{buildroot}%{_rpmconfigdir}/macros.d macros.* %{rrcdir}/dist.sh %{rrcdir}/redhat-hardened-* %{rrcdir}/config.* +%{_fileattrsdir}/*.attr +%{_rpmconfigdir}/kmod.prov %{_rpmconfigdir}/macros.d/macros.*-srpm %{_rpmconfigdir}/macros.d/macros.dwz @@ -131,6 +142,9 @@ install -p -m 644 -t %{buildroot}%{_rpmconfigdir}/macros.d macros.* %{_rpmconfigdir}/macros.d/macros.kmp %changelog +* Tue Apr 14 2014 Panu Matilainen - 16-1 +- Move kmod and libsymlink dependency generators here from rpm + * Thu Apr 10 2014 Panu Matilainen - 15-1 - Drop most of the script-based dependency generation bits