diff options
author | jbj <devnull@localhost> | 2001-06-01 19:27:33 +0000 |
---|---|---|
committer | jbj <devnull@localhost> | 2001-06-01 19:27:33 +0000 |
commit | 25f341822c555005b79494b1a02e0c3b4d1f8f8d (patch) | |
tree | dd2fc6162b4dc0b947ae7b6eab08e32c84abcc94 /autodeps | |
parent | f5ebe3fb424b215dbd455cabd37f5ea56bd5dbff (diff) | |
download | rpm-25f341822c555005b79494b1a02e0c3b4d1f8f8d.tar.gz rpm-25f341822c555005b79494b1a02e0c3b4d1f8f8d.tar.bz2 rpm-25f341822c555005b79494b1a02e0c3b4d1f8f8d.zip |
- merge sparc64/ia64 fiddles back into linux.{req,prov}.
- automagically generate perl module dependencies always.
CVS patchset: 4825
CVS date: 2001/06/01 19:27:33
Diffstat (limited to 'autodeps')
-rw-r--r-- | autodeps/ia64-linux.prov | 30 | ||||
-rw-r--r-- | autodeps/ia64-linux.req | 90 | ||||
-rw-r--r-- | autodeps/linux.prov | 37 | ||||
-rw-r--r-- | autodeps/linux.req | 91 | ||||
-rw-r--r-- | autodeps/sparc-linux.prov | 30 | ||||
-rw-r--r-- | autodeps/sparc-linux.req | 90 |
6 files changed, 303 insertions, 65 deletions
diff --git a/autodeps/ia64-linux.prov b/autodeps/ia64-linux.prov index fa9511357..aa23cc197 100644 --- a/autodeps/ia64-linux.prov +++ b/autodeps/ia64-linux.prov @@ -3,12 +3,21 @@ # 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) +filelist=`sed "s/['\"]/\\\&/g"` -for f in $filelist; do +solist=$(echo $filelist | grep "\\.so" | grep -v "^/lib/ld.so" | \ + xargs file -L 2>/dev/null | grep "ELF.*shared object" | cut -d: -f1) +perllist=$(echo $filelist | grep "\\.pm") +pythonlist= +tcllist= + +# +# --- 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 "()(64bit)"; fi` + lib64=`if file -L $f 2>/dev/null | \ + grep "ELF 64-bit" >/dev/null; then echo "()(64bit)"; fi` if [ "$soname" != "" ]; then if [ ! -L $f ]; then echo $soname$lib64 @@ -27,3 +36,18 @@ for f in $filelist; do echo ${f##*/}$lib64 fi done | sort -u + +# +# --- Perl modules. +[ -x /usr/lib/rpm/perl.prov -a -n "$perllist" ] && + echo $perllist | tr [:blank:] \\n | /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 diff --git a/autodeps/ia64-linux.req b/autodeps/ia64-linux.req index b93b6c618..9a92d5dac 100644 --- a/autodeps/ia64-linux.req +++ b/autodeps/ia64-linux.req @@ -1,35 +1,72 @@ -#!/bin/sh +#!/bin/bash -# note this works for both a.out and ELF executables -# it also auto-generates requirment lines for shell scripts +# +# Auto-generate requirements for executables (both ELF and a.out) and library +# sonames, script interpreters, and perl modules. +# 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 ` +exelist=`echo $filelist | xargs -r file | egrep -v ":.* (commands|script) " | \ + 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` +interplist= +perllist= +pythonlist= +tcllist= + +# +# --- Executable sonames. 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 + [ -r $f -a -x $f ] || continue + 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 +# +# --- Library sonames. 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 } }' + [ -r $f ] || continue + 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 +# +# --- Script interpreters. for f in $scriptlist; do - if [ -x $f ]; then - head -1 $f | sed -e 's/^\#\![ ]*//' | cut -d" " -f1 - fi -done | sort -u + [ -r $f -a -x $f ] || continue + interp=`head -1 $f | sed -e 's/^\#\![ ]*//' | cut -d" " -f1` + interplist="$interplist $interp" + case $interp in + */perl) perllist="$perllist $f" ;; + *) [ "${f%.pm} != "${f}" ] && perllist="$perllist $f" ;; + esac +done +[ -n "$interplist" ] && { echo "$interplist" | sort -u ; } +# +# --- Weak symbol versions (from glibc). for f in $liblist $exelist ; do - lib64=`if file -L $f 2>/dev/null | grep "ELF 64-bit" >/dev/null; then echo "(64bit)"; fi` + [ -r $f ] || continue + 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; } @@ -37,7 +74,24 @@ for f in $liblist $exelist ; do sub(/:/, "", $3); LIBNAME=$3; } - (START==1) && (LIBNAME!="") && ($4!="") { print LIBNAME "(" $4 ")'$lib64'"; } + (START==1) && (LIBNAME!="") && ($4~/^GLIBC_*/) { + print LIBNAME "(" $4 ")'$lib64'"; + } /^$/ { START=0; } ' done | sort -u + +# +# --- Perl modules. +[ -x /usr/lib/rpm/perl.req -a -n "$perllist" ] && \ + echo $perllist | tr [:blank:] \\n | /usr/lib/rpm/perl.req | sort -u + +# +# --- Python modules. +[ -x /usr/lib/rpm/python.req -a -n "$pythonlist" ] && \ + echo $pythonlist | tr [:blank:] \\n | /usr/lib/rpm/python.req | sort -u + +# +# --- Tcl modules. +[ -x /usr/lib/rpm/tcl.req -a -n "$tcllist" ] && \ + echo $tcllist | tr [:blank:] \\n | /usr/lib/rpm/tcl.req | sort -u diff --git a/autodeps/linux.prov b/autodeps/linux.prov index 472d786f8..aa23cc197 100644 --- a/autodeps/linux.prov +++ b/autodeps/linux.prov @@ -3,14 +3,24 @@ # 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) +filelist=`sed "s/['\"]/\\\&/g"` -for f in $filelist; do +solist=$(echo $filelist | grep "\\.so" | grep -v "^/lib/ld.so" | \ + xargs file -L 2>/dev/null | grep "ELF.*shared object" | cut -d: -f1) +perllist=$(echo $filelist | grep "\\.pm") +pythonlist= +tcllist= + +# +# --- 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 "()(64bit)"; fi` if [ "$soname" != "" ]; then - if [ ! -L $f ]; then - echo $soname + if [ ! -L $f ]; then + echo $soname$lib64 objdump -p $f | awk ' BEGIN { START=0 ; } /Version definitions:/ { START=1; } @@ -19,10 +29,25 @@ for f in $filelist; do ' | \ grep -v $soname | \ while read symbol ; do - echo "$soname($symbol)" + echo "$soname($symbol)`echo $lib64 | sed 's/()//'`" done fi else - echo ${f##*/} + echo ${f##*/}$lib64 fi done | sort -u + +# +# --- Perl modules. +[ -x /usr/lib/rpm/perl.prov -a -n "$perllist" ] && + echo $perllist | tr [:blank:] \\n | /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 diff --git a/autodeps/linux.req b/autodeps/linux.req index fda723bdf..9a92d5dac 100644 --- a/autodeps/linux.req +++ b/autodeps/linux.req @@ -1,32 +1,72 @@ -#!/bin/sh +#!/bin/bash -# note this works for both a.out and ELF executables -# it also auto-generates requirment lines for shell scripts +# +# Auto-generate requirements for executables (both ELF and a.out) and library +# sonames, script interpreters, and perl modules. +# 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 ` +exelist=`echo $filelist | xargs -r file | egrep -v ":.* (commands|script) " | \ + 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` +interplist= +perllist= +pythonlist= +tcllist= + +# +# --- Executable sonames. for f in $exelist; do - if [ -x $f ]; then - ldd $f | awk '/=>/ { print $1 }' - fi -done | sort -u | sed "s/['\"]/\\\&/g" | xargs -r -n 1 basename | grep -v 'libNoVersion.so' | sort -u + [ -r $f -a -x $f ] || continue + 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 +# +# --- Library sonames. 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' | sort -u + [ -r $f ] || continue + 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 +# +# --- Script interpreters. for f in $scriptlist; do - if [ -x $f ]; then - head -1 $f | sed -e 's/^\#\![ ]*//' | cut -d" " -f1 - fi -done | sort -u + [ -r $f -a -x $f ] || continue + interp=`head -1 $f | sed -e 's/^\#\![ ]*//' | cut -d" " -f1` + interplist="$interplist $interp" + case $interp in + */perl) perllist="$perllist $f" ;; + *) [ "${f%.pm} != "${f}" ] && perllist="$perllist $f" ;; + esac +done +[ -n "$interplist" ] && { echo "$interplist" | sort -u ; } +# +# --- Weak symbol versions (from glibc). for f in $liblist $exelist ; do + [ -r $f ] || continue + 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 +74,24 @@ for f in $liblist $exelist ; do sub(/:/, "", $3); LIBNAME=$3; } - (START==1) && (LIBNAME!="") && ($4~/^GLIBC_*/) { print LIBNAME "(" $4 ")"; } + (START==1) && (LIBNAME!="") && ($4~/^GLIBC_*/) { + print LIBNAME "(" $4 ")'$lib64'"; + } /^$/ { START=0; } ' done | sort -u + +# +# --- Perl modules. +[ -x /usr/lib/rpm/perl.req -a -n "$perllist" ] && \ + echo $perllist | tr [:blank:] \\n | /usr/lib/rpm/perl.req | sort -u + +# +# --- Python modules. +[ -x /usr/lib/rpm/python.req -a -n "$pythonlist" ] && \ + echo $pythonlist | tr [:blank:] \\n | /usr/lib/rpm/python.req | sort -u + +# +# --- Tcl modules. +[ -x /usr/lib/rpm/tcl.req -a -n "$tcllist" ] && \ + echo $tcllist | tr [:blank:] \\n | /usr/lib/rpm/tcl.req | sort -u diff --git a/autodeps/sparc-linux.prov b/autodeps/sparc-linux.prov index fa9511357..aa23cc197 100644 --- a/autodeps/sparc-linux.prov +++ b/autodeps/sparc-linux.prov @@ -3,12 +3,21 @@ # 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) +filelist=`sed "s/['\"]/\\\&/g"` -for f in $filelist; do +solist=$(echo $filelist | grep "\\.so" | grep -v "^/lib/ld.so" | \ + xargs file -L 2>/dev/null | grep "ELF.*shared object" | cut -d: -f1) +perllist=$(echo $filelist | grep "\\.pm") +pythonlist= +tcllist= + +# +# --- 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 "()(64bit)"; fi` + lib64=`if file -L $f 2>/dev/null | \ + grep "ELF 64-bit" >/dev/null; then echo "()(64bit)"; fi` if [ "$soname" != "" ]; then if [ ! -L $f ]; then echo $soname$lib64 @@ -27,3 +36,18 @@ for f in $filelist; do echo ${f##*/}$lib64 fi done | sort -u + +# +# --- Perl modules. +[ -x /usr/lib/rpm/perl.prov -a -n "$perllist" ] && + echo $perllist | tr [:blank:] \\n | /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 diff --git a/autodeps/sparc-linux.req b/autodeps/sparc-linux.req index b93b6c618..9a92d5dac 100644 --- a/autodeps/sparc-linux.req +++ b/autodeps/sparc-linux.req @@ -1,35 +1,72 @@ -#!/bin/sh +#!/bin/bash -# note this works for both a.out and ELF executables -# it also auto-generates requirment lines for shell scripts +# +# Auto-generate requirements for executables (both ELF and a.out) and library +# sonames, script interpreters, and perl modules. +# 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 ` +exelist=`echo $filelist | xargs -r file | egrep -v ":.* (commands|script) " | \ + 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` +interplist= +perllist= +pythonlist= +tcllist= + +# +# --- Executable sonames. 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 + [ -r $f -a -x $f ] || continue + 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 +# +# --- Library sonames. 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 } }' + [ -r $f ] || continue + 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 +# +# --- Script interpreters. for f in $scriptlist; do - if [ -x $f ]; then - head -1 $f | sed -e 's/^\#\![ ]*//' | cut -d" " -f1 - fi -done | sort -u + [ -r $f -a -x $f ] || continue + interp=`head -1 $f | sed -e 's/^\#\![ ]*//' | cut -d" " -f1` + interplist="$interplist $interp" + case $interp in + */perl) perllist="$perllist $f" ;; + *) [ "${f%.pm} != "${f}" ] && perllist="$perllist $f" ;; + esac +done +[ -n "$interplist" ] && { echo "$interplist" | sort -u ; } +# +# --- Weak symbol versions (from glibc). for f in $liblist $exelist ; do - lib64=`if file -L $f 2>/dev/null | grep "ELF 64-bit" >/dev/null; then echo "(64bit)"; fi` + [ -r $f ] || continue + 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; } @@ -37,7 +74,24 @@ for f in $liblist $exelist ; do sub(/:/, "", $3); LIBNAME=$3; } - (START==1) && (LIBNAME!="") && ($4!="") { print LIBNAME "(" $4 ")'$lib64'"; } + (START==1) && (LIBNAME!="") && ($4~/^GLIBC_*/) { + print LIBNAME "(" $4 ")'$lib64'"; + } /^$/ { START=0; } ' done | sort -u + +# +# --- Perl modules. +[ -x /usr/lib/rpm/perl.req -a -n "$perllist" ] && \ + echo $perllist | tr [:blank:] \\n | /usr/lib/rpm/perl.req | sort -u + +# +# --- Python modules. +[ -x /usr/lib/rpm/python.req -a -n "$pythonlist" ] && \ + echo $pythonlist | tr [:blank:] \\n | /usr/lib/rpm/python.req | sort -u + +# +# --- Tcl modules. +[ -x /usr/lib/rpm/tcl.req -a -n "$tcllist" ] && \ + echo $tcllist | tr [:blank:] \\n | /usr/lib/rpm/tcl.req | sort -u |