diff options
author | notting <devnull@localhost> | 2000-09-07 20:47:18 +0000 |
---|---|---|
committer | notting <devnull@localhost> | 2000-09-07 20:47:18 +0000 |
commit | 1466d06e7464af0e720d64396c83bbbb7e492329 (patch) | |
tree | 163f8468185972f99a4a20843a4df6840873b5c4 /autodeps | |
parent | f2efc7263e952cef24f2196f92d02ee0b3b9aa1e (diff) | |
download | rpm-1466d06e7464af0e720d64396c83bbbb7e492329.tar.gz rpm-1466d06e7464af0e720d64396c83bbbb7e492329.tar.bz2 rpm-1466d06e7464af0e720d64396c83bbbb7e492329.zip |
add (lib64) stuff on ia64 as well
CVS patchset: 4151
CVS date: 2000/09/07 20:47:18
Diffstat (limited to 'autodeps')
-rw-r--r-- | autodeps/ia64-linux.prov | 29 | ||||
-rw-r--r-- | autodeps/ia64-linux.req | 43 |
2 files changed, 72 insertions, 0 deletions
diff --git a/autodeps/ia64-linux.prov b/autodeps/ia64-linux.prov new file mode 100644 index 000000000..a637b874e --- /dev/null +++ b/autodeps/ia64-linux.prov @@ -0,0 +1,29 @@ +#!/bin/bash + +# This script reads filenames from STDIN and outputs any relevant provides +# information that needs to be included in the package. + +filelist=$(grep "\\.so" | grep -v "^/lib/ld.so" | xargs file -L 2>/dev/null | grep "ELF.*shared object" | cut -d: -f1) + +for f in $filelist; do + soname=$(objdump -p $f | awk '/SONAME/ {print $2}') + + if [ "$soname" != "" ]; then + lib64=`if file -L $f 2>/dev/null | grep "ELF 64-bit" >/dev/null; then echo "()(64bit)"; fi` + 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##*/} + fi +done | sort -u diff --git a/autodeps/ia64-linux.req b/autodeps/ia64-linux.req new file mode 100644 index 000000000..b93b6c618 --- /dev/null +++ b/autodeps/ia64-linux.req @@ -0,0 +1,43 @@ +#!/bin/sh + +# note this works for both a.out and ELF executables +# it also auto-generates requirment lines for shell scripts + +ulimit -c 0 + +filelist=`sed "s/['\"]/\\\&/g"` +exelist=`echo $filelist | xargs -r file | grep ":.*executable" | cut -d: -f1 ` +scriptlist=`echo $filelist | xargs -r file | egrep ":.* (commands|script) " | cut -d: -f1 ` +liblist=`echo $filelist | xargs -r file | grep ":.*shared object" | cut -d : -f1 ` + +for f in $exelist; do + lib64=`if file -L $f 2>/dev/null | grep "ELF 64-bit" >/dev/null; then echo "()(64bit)"; fi` + if [ -x $f ]; then + ldd $f | awk '/=>/ { if ($1 !~ /libNoVersion.so/ && $1 !~ /4[um]lib.so/) { gsub(/'\''"/,"\\&",$1); printf "%s'$lib64'\n", $1 } }' + fi +done | xargs -r -n 1 basename | sort -u + +for f in $liblist; do + lib64=`if file -L $f 2>/dev/null | grep "ELF 64-bit" >/dev/null; then echo "()(64bit)"; fi` + ldd $f | awk '/=>/ { if ($1 !~ /libNoVersion.so/ && $1 !~ /4[um]lib.so/) { gsub(/'\''"/,"\\&",$1); printf "%s'$lib64'\n", $1 } }' +done | xargs -r -n 1 basename | sort -u + +for f in $scriptlist; do + if [ -x $f ]; then + head -1 $f | sed -e 's/^\#\![ ]*//' | cut -d" " -f1 + fi +done | sort -u + +for f in $liblist $exelist ; do + lib64=`if file -L $f 2>/dev/null | grep "ELF 64-bit" >/dev/null; then echo "(64bit)"; fi` + objdump -p $f | awk ' + BEGIN { START=0; LIBNAME=""; } + /Version References:/ { START=1; } + /required from/ && (START==1) { + sub(/:/, "", $3); + LIBNAME=$3; + } + (START==1) && (LIBNAME!="") && ($4!="") { print LIBNAME "(" $4 ")'$lib64'"; } + /^$/ { START=0; } + ' +done | sort -u |