sparc: 64bit find-{provides,requires}.
authorjbj <devnull@localhost>
Tue, 22 Feb 2000 13:08:35 +0000 (13:08 +0000)
committerjbj <devnull@localhost>
Tue, 22 Feb 2000 13:08:35 +0000 (13:08 +0000)
CVS patchset: 3577
CVS date: 2000/02/22 13:08:35

autodeps/sparc-linux.prov [new file with mode: 0644]
autodeps/sparc-linux.req

diff --git a/autodeps/sparc-linux.prov b/autodeps/sparc-linux.prov
new file mode 100644 (file)
index 0000000..a637b87
--- /dev/null
@@ -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
index 937efa5..b93b6c6 100644 (file)
@@ -11,14 +11,16 @@ scriptlist=`echo $filelist | xargs -r file | egrep ":.* (commands|script) " | cu
 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 '/=>/ { print $1 }'
+       ldd $f | awk '/=>/ { if ($1 !~ /libNoVersion.so/ && $1 !~ /4[um]lib.so/) { gsub(/'\''"/,"\\&",$1); printf "%s'$lib64'\n", $1 } }'
     fi
-done | sort -u | sed "s/['\"]/\\\&/g" | xargs -r -n 1 basename | grep -v 'libNoVersion.so' | grep -v '4[um]lib.so' | sort -u
+done | xargs -r -n 1 basename | sort -u
 
 for f in $liblist; do
-    ldd $f | awk '/=>/ { print $1 }'
-done | sort -u | sed "s/['\"]/\\\&/g" | xargs -r -n 1 basename | grep -v 'libNoVersion.so' | grep -v '4[um]lib.so' | sort -u
+    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
@@ -27,6 +29,7 @@ for f in $scriptlist; do
 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; }
@@ -34,7 +37,7 @@ for f in $liblist $exelist ; do
            sub(/:/, "", $3);
            LIBNAME=$3;
        }
-       (START==1) && (LIBNAME!="") && ($4!="") { print LIBNAME "(" $4 ")"; }
+       (START==1) && (LIBNAME!="") && ($4!="") { print LIBNAME "(" $4 ")'$lib64'"; }
        /^$/ { START=0; }
     '
 done | sort -u