summaryrefslogtreecommitdiff
path: root/autodeps/osf.req
diff options
context:
space:
mode:
Diffstat (limited to 'autodeps/osf.req')
-rw-r--r--autodeps/osf.req142
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