- merge sparc64/ia64 fiddles back into linux.{req,prov}.
[platform/upstream/rpm.git] / autodeps / linux.prov
1 #!/bin/bash
2
3 # This script reads filenames from STDIN and outputs any relevant provides
4 # information that needs to be included in the package.
5
6 filelist=`sed "s/['\"]/\\\&/g"`
7
8 solist=$(echo $filelist | grep "\\.so" | grep -v "^/lib/ld.so" | \
9         xargs file -L 2>/dev/null | grep "ELF.*shared object" | cut -d: -f1)
10 perllist=$(echo $filelist | grep "\\.pm")
11 pythonlist=
12 tcllist=
13
14 #
15 # --- Library sonames and weak symbol versions (from glibc).
16 for f in $solist; do
17     soname=$(objdump -p $f | awk '/SONAME/ {print $2}')
18
19     lib64=`if file -L $f 2>/dev/null | \
20         grep "ELF 64-bit" >/dev/null; then echo "()(64bit)"; fi`
21     if [ "$soname" != "" ]; then
22         if [ ! -L $f ]; then
23             echo $soname$lib64
24             objdump -p $f | awk '
25                 BEGIN { START=0 ; }
26                 /Version definitions:/ { START=1; }
27                 /^[0-9]/ && (START==1) { print $4; }
28                 /^$/ { START=0; }
29             ' | \
30                 grep -v $soname | \
31                 while read symbol ; do
32                     echo "$soname($symbol)`echo $lib64 | sed 's/()//'`"
33                 done
34         fi
35     else
36         echo ${f##*/}$lib64
37     fi
38 done | sort -u
39
40 #
41 # --- Perl modules.
42 [ -x /usr/lib/rpm/perl.prov -a -n "$perllist" ] &&
43     echo $perllist | tr [:blank:] \\n | /usr/lib/rpm/perl.prov | sort -u
44
45 #
46 # --- Python modules.
47 [ -x /usr/lib/rpm/python.prov -a -n "$pythonlist" ] &&
48     echo $pythonlist | tr [:blank:] \\n | /usr/lib/rpm/python.prov | sort -u
49
50 #
51 # --- Tcl modules.
52 [ -x /usr/lib/rpm/tcl.prov -a -n "$tcllist" ] &&
53     echo $tcllist | tr [:blank:] \\n | /usr/lib/rpm/tcl.prov | sort -u