summaryrefslogtreecommitdiff
path: root/find-requires
diff options
context:
space:
mode:
Diffstat (limited to 'find-requires')
-rwxr-xr-xfind-requires38
1 files changed, 38 insertions, 0 deletions
diff --git a/find-requires b/find-requires
new file mode 100755
index 0000000..3e61e59
--- /dev/null
+++ b/find-requires
@@ -0,0 +1,38 @@
+#!/bin/bash
+
+#
+# Auto-generate requirements for executables (both ELF and a.out) and library
+# sonames, script interpreters, and perl modules.
+#
+
+ulimit -c 0
+
+filelist=`sed "s/[]['\"*?{}]/\\\\\&/g"`
+
+[ -x /usr/lib/rpm/rpmdeps -a -n "$filelist" ] && \
+ echo $filelist | tr '[:blank:]' \\n | /usr/lib/rpm/rpmdeps --requires
+
+#
+# --- Kernel module imported symbols
+#
+# Since we don't (yet) get passed the name of the package being built, we
+# cheat a little here by looking first for a kernel, then for a kmod.
+#
+
+unset is_kmod
+
+for f in $filelist; do
+ if [ $(echo "$f" | sed -r -ne 's:^.*/lib/modules/(.*)/(.*)\.ko(\.gz|\.bz2|\.xz)?$:\2:p') ]
+ then
+ is_kmod=1;
+ elif [ $(echo "$f" | sed -r -ne 's:^.*/boot/(.*):\1:p') ]
+ then
+ unset is_kmod;
+ break;
+ fi
+done
+
+[ -x /usr/lib/rpm/@VENDOR@/find-requires.ksyms ] && [ "$is_kmod" ] &&
+ printf "%s\n" "${filelist[@]}" | /usr/lib/rpm/@VENDOR@/find-requires.ksyms
+
+exit 0