]> git.pld-linux.org Git - packages/rpm.git/blob - rpm-find-provides
- include --x-libraries=/usr/X11R6/%{_lib} in %configure 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 case `uname -m` in
15     alpha*)       mark64="" ;;
16     *)            mark64="()(64bit)" ;;
17 esac
18     
19 allprovides=`for f in $filelist; do
20     soname=$(objdump -p $f 2> /dev/null | awk '/SONAME/ {print $2}')
21
22     lib64=`if file -L $f 2>/dev/null | \
23         grep "ELF 64-bit" >/dev/null; then echo "$mark64"; fi`
24         
25     if [ "$soname" != "" ]; then
26         if [ ! -L $f ]; then
27             echo $soname$lib64
28             objdump -p $f 2> /dev/null | awk '
29                 BEGIN { START=0 ; }
30                 /Version definitions:/ { START=1; }
31                 /^[0-9]/ && (START==1) { print $4; }
32                 /^$/ { START=0; }
33             ' | \
34                 grep -v $soname | \
35                 while read symbol ; do
36                     echo "$soname($symbol)`echo $lib64 | sed 's/()//'`"
37                 done
38         fi
39     else
40         echo ${f##*/}$lib64
41     fi
42 done | sort -u`
43
44 if [ -f __rpm_noautoprov ] ; then
45         for i in `cat __rpm_noautoprov`; do
46                 allprovides=`echo $allprovides | sed "s!\<$i[[:space:]]*!!g"`
47         done
48 fi
49
50 echo "$allprovides"
51
52
This page took 0.028751 seconds and 3 git commands to generate.