]> git.pld-linux.org Git - packages/rpm.git/commitdiff
- temporary (until find-requires becomes more flexible)
authorSebastian Zagrodzki <sebek@zagrodzki.net>
Tue, 23 May 2000 17:59:11 +0000 (17:59 +0000)
committercvs2git <feedback@pld-linux.org>
Sun, 24 Jun 2012 12:13:13 +0000 (12:13 +0000)
Changed files:
    rpm-find-requires -> 1.1

rpm-find-requires [new file with mode: 0755]

diff --git a/rpm-find-requires b/rpm-find-requires
new file mode 100755 (executable)
index 0000000..135e491
--- /dev/null
@@ -0,0 +1,76 @@
+#!/bin/sh
+
+# note this works for both a.out and ELF executables
+# it also auto-generates requirment lines for shell scripts
+
+ulimit -c 0
+
+filelist=`sed "s/['\"]/\\\&/g"`
+for i in /usr/src/examples /usr/local/src/examples /usr/share/doc /usr/local/share/doc; do
+filelist=`echo $filelist | sed "s!\<$i[^[:space:]]*[[:space:]]*!!g"`
+done
+exelist=`echo $filelist | xargs -r file | grep ":.*executable" | cut -d: -f1 `
+elfexelist=`echo $exelist | xargs -r file | egrep  ":.* ELF" | cut -d: -f1 `
+aoutexelist=`echo $exelist | xargs -r file | egrep  -v ":.* ELF" | cut -d: -f1 `
+scriptlist=`echo $filelist | xargs -r file | egrep ":.* (commands|script) " | cut -d: -f1 `
+liblist=`echo $filelist | xargs -r file | grep ":.*shared object" | cut -d : -f1 `
+elfliblist=`echo $liblist | xargs -r file | egrep  ":.* ELF" | cut -d: -f1 `
+aoutliblist=`echo $liblist | xargs -r file | egrep  -v ":.* ELF" | cut -d: -f1 `
+
+aoutexerequires=`for f in $aoutexelist; do
+    if [ -x $f ]; then
+       ldd $f | awk '/=>/ { print $1 }'
+    fi
+done | sort -u | sed "s/['\"]/\\\&/g" | xargs -r -n 1 basename | grep -v 'libNoVersion.so' | sort -u
+`
+
+elfexerequires=`for f in $elfexelist; do 
+    if [ -x $f ]; then
+       objdump -p $f|awk '/NEEDED/ {print $2}'
+    fi
+done | sed "s/['\"]/\\\&/g" | grep -v 'libNoVersion.so' | sort -u
+`
+               
+aoutlibrequires=`for f in $aoutliblist; do
+    ldd $f | awk '/=>/ { print $1 }'
+done | sort -u | sed "s/['\"]/\\\&/g" | xargs -r -n 1 basename | grep -v 'libNoVersion.so' | sort -u
+`
+
+elflibrequires=`for f in $elfliblist; do
+       objdump -p $f|awk '/NEEDED/ {print $2}'
+done | sed "s/['\"]/\\\&/g" | grep -v 'libNoVersion.so' | sort -u
+`
+    
+for f in $scriptlist; do
+    if [ -x $f ]; then
+       head -1 $f | sed -ne '/^\#\!/p' | sed -e 's/^\#\![      ]*//' | cut -d" " -f1
+    fi
+done | sort -u
+
+for f in $liblist $exelist ; do
+    objdump -p $f | awk '
+       BEGIN { START=0; LIBNAME=""; }
+       /Version References:/ { START=1; }
+       /required from/ && (START==1) {
+           sub(/:/, "", $3);
+           LIBNAME=$3;
+       }
+       (START==1) && (LIBNAME!="") && ($4~/^GLIBC_*/) { print LIBNAME "(" $4 ")"; }
+       /^$/ { START=0; }
+    '
+done | sort -u
+# Generate name of rpm package provides library
+
+
+echo "$aoutexerequires
+$elfexerequires
+$aoutlibrequires
+$elflibrequires" \
+       | sort -u
+
+echo "$aoutexerequires
+$elfexerequires
+$aoutlibrequires
+$elflibrequires" \
+       | xargs -r -- rpm -q --whatprovides --qf "%{NAME}\n"  2>/dev/null \
+       | sort -u
This page took 0.053099 seconds and 4 git commands to generate.