]> git.pld-linux.org Git - packages/rpm.git/blob - rpm-find-provides
- rebuild with latest rpm.macros
[packages/rpm.git] / rpm-find-provides
1 #!/bin/sh
2 cd `rpm --eval %{_builddir}`
3
4 # This script reads filenames from STDIN and outputs any relevant provides
5 # information that needs to be included in the package.
6
7 filelist=$(grep "\\.so" | grep -v "^/lib/ld.so" | xargs file -L 2>/dev/null | grep "ELF.*shared object" | cut -d: -f1)
8 if [ -f __rpm_noautoprovfiles ] ; then
9         for i in `cat __rpm_noautoprovfiles`; do
10                 filelist=`echo $filelist | sed "s![[:space:]]*$i[[:space:]]*!!g"`
11         done
12 fi
13
14 allprovides=`for f in $filelist; do
15     soname=$(objdump -p $f | awk '/SONAME/ {print $2}')
16
17     if [ "$soname" != "" ]; then
18         if [ ! -L $f ]; then
19             echo $soname
20             objdump -p $f | awk '
21                 BEGIN { START=0 ; }
22                 /Version definitions:/ { START=1; }
23                 /^[0-9]/ && (START==1) { print $4; }
24                 /^$/ { START=0; }
25             ' | \
26                 grep -v $soname | \
27                 while read symbol ; do
28                     echo "$soname($symbol)"
29                 done
30         fi
31     else
32         echo ${f##*/}
33     fi
34 done | sort -u`
35
36 if [ -f __rpm_noautoprov ] ; then
37         for i in `cat __rpm_noautoprov`; do
38                 allprovides=`echo $allprovides | sed "s!\<$i[[:space:]]*!!g"`
39         done
40 fi
41
42 echo "$allprovides"
43
44
This page took 0.04638 seconds and 3 git commands to generate.