home *** CD-ROM | disk | FTP | other *** search
/ PC Welt 2006 March / PCWELT_3_2006.ISO / base / 05_common.mo / usr / lib / rpm / find-provides < prev    next >
Encoding:
Text File  |  2003-10-29  |  1.5 KB  |  62 lines

  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. pythonlist=
  11. tcllist=
  12.  
  13. #
  14. # --- Alpha does not mark 64bit dependencies
  15. case `uname -m` in
  16.   alpha*)    mark64="" ;;
  17.   *)        mark64="()(64bit)" ;;
  18. esac
  19.  
  20. #
  21. # --- Library sonames and weak symbol versions (from glibc).
  22. for f in $solist; do
  23.     soname=$(objdump -p $f | awk '/SONAME/ {print $2}')
  24.  
  25.     lib64=`if file -L $f 2>/dev/null | \
  26.     grep "ELF 64-bit" >/dev/null; then echo "$mark64"; fi`
  27.     if [ "$soname" != "" ]; then
  28.     if [ ! -L $f ]; then
  29.         echo $soname$lib64
  30.         objdump -p $f | awk '
  31.         BEGIN { START=0 ; }
  32.         /Version definitions:/ { START=1; }
  33.         /^[0-9]/ && (START==1) { print $4; }
  34.         /^$/ { START=0; }
  35.         ' | \
  36.         grep -v $soname | \
  37.         while read symbol ; do
  38.             echo "$soname($symbol)`echo $lib64 | sed 's/()//'`"
  39.         done
  40.     fi
  41.     else
  42.     echo ${f##*/}$lib64
  43.     fi
  44. done | sort -u
  45.  
  46. #
  47. # --- Perl modules.
  48. [ -x /usr/lib/rpm/perl.prov ] &&
  49.     echo $filelist | tr '[:blank:]' \\n | grep '\.pm$' | /usr/lib/rpm/perl.prov | sort -u
  50.  
  51. #
  52. # --- Python modules.
  53. [ -x /usr/lib/rpm/python.prov -a -n "$pythonlist" ] &&
  54.     echo $pythonlist | tr '[:blank:]' \\n | /usr/lib/rpm/python.prov | sort -u
  55.  
  56. #
  57. # --- Tcl modules.
  58. [ -x /usr/lib/rpm/tcl.prov -a -n "$tcllist" ] &&
  59.     echo $tcllist | tr '[:blank:]' \\n | /usr/lib/rpm/tcl.prov | sort -u
  60.  
  61. exit 0
  62.