diff options
Diffstat (limited to 'autodeps/osf.req')
-rw-r--r-- | autodeps/osf.req | 142 |
1 files changed, 142 insertions, 0 deletions
diff --git a/autodeps/osf.req b/autodeps/osf.req new file mode 100644 index 0000000..39d00c3 --- /dev/null +++ b/autodeps/osf.req @@ -0,0 +1,142 @@ +#! /usr/bin/ksh + +# Original Author: Tim Mooney <mooney@golem.phys.ndsu.NoDak.edu> +# $Id: osf.req,v 1.9 2001/09/15 13:49:11 jbj Exp $ +# +# This file is distributed under the terms of the GNU Public License +# +# find-requires is part of RPM, the Red Hat Package Manager. find-requires +# reads a list of full pathnames (in a package) on stdin, and outputs all +# shared libraries the package requires to execute. +# +# On Digital/Tru64 Unix (OSF1), use `odump -Dl' to find the library +# dependencies for an executable. `odump -D' does most of what we need, +# but it doesn't give us library version information, so you must use +# `odump -Dl'. Note that Tru64 5.x and on have `ldd', but this works just +# as well, and works on older versions of the OS. +# +# Example `odump -Dl' output: +# +#$odump -Dl /usr/bin/X11/xterm +# +# +# +# +# ***LIBRARY LIST SECTION*** +# Name Time-Stamp CheckSum Flags Version +#/usr/bin/X11/xterm: +# libXaw.so Dec 9 00:15:35 1997 0x285006d0 0 6.0 +# libXmu.so Dec 9 00:13:36 1997 0x3bf3a33d 0 +# libXt.so Dec 9 00:12:18 1997 0x10dd9a17 0 +# libSM.so Dec 9 00:08:11 1997 0xb64c7082 0 +# libICE.so Dec 9 00:07:52 1997 0x1199be32 0 +# libXext.so Dec 9 00:08:51 1997 0xafcb84d5 0 +# libX11.so Dec 9 00:06:05 1997 0xaa1bf091 0 +# libc.so Dec 8 18:41:11 1997 0x5e955f9b 0 osf.1 + +PATH=/usr/bin:/usr/sbin:/sbin:/usr/ccs/bin +export PATH + +# +# TVM: Marc Stephenson (marc@austin.ibm.com) points out we run things +# like `file', et. al. and expect the output to be what we see in the +# C/POSIX locale. Make sure it is so. +# +LANG=C +export LANG + +# +# TVM: switch to using `while read ...' instead of `for f in ...', because +# packages with a large number of files could be too big for one shell variable +# to hold. +# +IFS="" +while read f +do + + # + # Uncomment the next line for addtional debugging: + # echo "read ->$f<-" + + # + # Only run file once per file: + # + file_output=`file $f` + + # + # handle shell scripts first + # + is_shell_script=`echo "$file_output" | grep 'shell script' | \ + cut -d: -f 2 | awk '{ print $1 }'` + + # + # If it's a script... + # + if test X"$is_shell_script" != X ; then + echo "$is_shell_script" + # + # use `continue' to skip back up to the top of the loop. + # We have already done as much as we need to for this + # file, and this saves me from having to have an else, + # and another indent level... ;-) + # + continue + fi + + # + # The `else' here is implied by the `continue' above... + # + + # + # it might be a shared library. + # + + maybe_shared_lib=`echo "$file_output" | grep 'executable'` + if test X"$maybe_shared_lib" != X ; then + + odump -Dl $f 2>/dev/null \ + | awk ' + + # + # Since this entire awk script is enclosed in single quotes, + # you need to be careful to not use single quotes, even in awk + # comments, if you modify this script. + # + + BEGIN { + found_program_name = 0; + FS = " "; + RS = "\n"; + OFS=""; + } + + # uncomment the next line for debugging information + #{ print "Saw input:", $0 } + + found_program_name == 1 && $0 !~ /^$/ { + + # uncomment for debugging information + #print "found shared library: $0" + + # get the library name (field 1) and the library version + # (field 8) if present. + numfields = split($0,fields) + if (numfields == 7) { + print fields[1] + } else if (numfields == 8) { + print fields[1], "(", fields[8], ")" + } + } + + /^.*: *$/ { + found_program_name = 1 + # + # uncomment the next line for debugging information + #print "found the program name: ", $1 + } + + ' # end of awk + fi +done | sort -u +# comment out the previous line and uncomment the next when debugging +# done |