1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- #!/bin/bash
- # find-provides-texlive.sh
- # based on /usr/lib/rpm/find-provides
- # This script reads filenames from STDIN and outputs any relevant provides
- # information that needs to be included in the package.
- # VINE: newer objdump (in binutils) has translated messages,
- # so at a moment we need to set LANG to C
- LANG=C
- filelist=`sed "s/['\"]/\\\&/g"`
- solist=$(echo $filelist | grep "\\.so" | grep -v "^/lib/ld.so" | \
- xargs file -L 2>/dev/null | grep "ELF.*shared object" | cut -d: -f1)
- pythonlist=
- tcllist=
- #
- # --- Alpha does not mark 64bit dependencies
- case `uname -m` in
- alpha*) mark64="" ;;
- *) mark64="()(64bit)" ;;
- esac
- #
- # --- Library sonames and weak symbol versions (from glibc).
- for f in $solist; do
- soname=$(objdump -p $f | awk '/SONAME/ {print $2}')
- lib64=`if file -L $f 2>/dev/null | \
- grep "ELF 64-bit" >/dev/null; then echo "$mark64"; fi`
- if [ "$soname" != "" ]; then
- if [ ! -L $f ]; then
- echo $soname$lib64
- objdump -p $f | awk '
- BEGIN { START=0 ; }
- /Version definitions:/ { START=1; }
- /^[0-9]/ && (START==1) { print $4; }
- /^$/ { START=0; }
- ' | \
- grep -v $soname | \
- while read symbol ; do
- echo "$soname($symbol)`echo $lib64 | sed 's/()//'`"
- done
- fi
- else
- echo ${f##*/}$lib64
- fi
- done | sort -u
- # #
- # # --- Perl modules.
- # [ -x /usr/lib/rpm/perl.prov ] &&
- # echo $filelist | tr '[:blank:]' \\n | grep '\.pm$' | /usr/lib/rpm/perl.prov | sort -u
- # #
- # # --- Python modules.
- # [ -x /usr/lib/rpm/python.prov -a -n "$pythonlist" ] &&
- # echo $pythonlist | tr '[:blank:]' \\n | /usr/lib/rpm/python.prov | sort -u
- # #
- # # --- Tcl modules.
- # [ -x /usr/lib/rpm/tcl.prov -a -n "$tcllist" ] &&
- # echo $tcllist | tr '[:blank:]' \\n | /usr/lib/rpm/tcl.prov | sort -u
- # #
- # # --- Mono modules.
- # [ -x /usr/lib/rpm/mono-find-provides -a -n "$filelist" ] &&
- # echo $filelist | tr '[:blank:]' \\n | /usr/lib/rpm/mono-find-provides | sort -u
- exit 0
|