summaryrefslogtreecommitdiff
path: root/autodeps
diff options
context:
space:
mode:
authorewt <devnull@localhost>1998-03-23 16:26:10 +0000
committerewt <devnull@localhost>1998-03-23 16:26:10 +0000
commitc456ea27e587d0845a1dd19eecedede6d13c4352 (patch)
tree5ac7a5770de9a8289f86e7317fa2de2e12d09fa9 /autodeps
parent4c80f87f14034a7f451efbe05c4df1d4f57388c1 (diff)
downloadlibrpm-tizen-c456ea27e587d0845a1dd19eecedede6d13c4352.tar.gz
librpm-tizen-c456ea27e587d0845a1dd19eecedede6d13c4352.tar.bz2
librpm-tizen-c456ea27e587d0845a1dd19eecedede6d13c4352.zip
*** empty log message ***
CVS patchset: 2042 CVS date: 1998/03/23 16:26:10
Diffstat (limited to 'autodeps')
-rw-r--r--autodeps/hpux.prov145
-rw-r--r--autodeps/hpux.req72
2 files changed, 217 insertions, 0 deletions
diff --git a/autodeps/hpux.prov b/autodeps/hpux.prov
new file mode 100644
index 000000000..c07b6b3ee
--- /dev/null
+++ b/autodeps/hpux.prov
@@ -0,0 +1,145 @@
+#! /usr/bin/ksh
+
+# Original Author: Tim Mooney (mooney@plains.nodak.edu)
+# This file is distributed under the terms of the GNU Public License
+#
+# find-provides is part of RPM, the RedHat Package Manager. find-provides
+# reads a list of full pathnames (in a package) on stdin, and outputs all
+# shared libraries provided by (contained in) the package.
+#
+#
+# On HP-UX, use `chatr' to find what libraries a package provides
+#
+# Example chatr output:
+#
+#$chatr /usr/lib/libc.sl
+#
+#/usr/lib/libc.sl:
+# shared library
+# shared library dynamic path search:
+# SHLIB_PATH disabled second
+# embedded path disabled first Not Defined
+# internal name:
+# libc.1
+# shared library list:
+# dynamic /usr/lib/libdld.1
+# static branch prediction disabled
+# kernel assisted branch predictionenabled
+# lazy swap allocationdisabled
+# text segment lockingdisabled
+# data segment lockingdisabled
+# data page size: 4K
+# instruction page size: 4K
+#
+
+for f in `cat -`
+do
+ chatr $f 2>/dev/null | awk '
+
+ BEGIN {
+ FS = " ";
+ RS = "\n";
+
+ in_internal_name = 0;
+
+ #
+ # We have seen the internal name: section (yet)?
+ #
+ found_internal_name = 0;
+
+ #
+ # assume it is a shared library, until record 2 proves us wrong.
+ #
+ isa_shared_library = 1;
+ }
+
+ # Uncomment the next line for some debugging info.
+ #{ print NR , ":", $0 }
+
+ #
+ # save the first line in case there is no internal name built
+ # into this object.
+ #
+ NR == 1 {
+ my_name = $0
+ opened_something = 1;
+ }
+
+ #
+ # Check the second line (record). Clear the flag if it is not a
+ # shared library.
+ #
+ NR == 2 && $0 !~ /^[ ]+shared library[ ]*$/ {
+ # It is not a shared library. Bow out early
+ isa_shared_library = 0;
+ exit
+ }
+
+ #
+ # If we see this, we know we have passed all the information we care
+ # about, so exit.
+ #
+ /^ +shared library list: *$/ || /^ +static branch prediction/ {
+ in_internal_name = 0
+ exit
+ }
+
+ in_internal_name == 1 {
+
+ # We found the library internal name. If it does not contain
+ # a path, print it. At least a couple of the system libraries
+ # have a full path as the internal name (this is probably a bug).
+
+ if ( $0 ~ /\// ) {
+ numfields = split($0, internal_name, "/")
+ print internal_name[numfields]
+ } else {
+ print $1
+ }
+
+ #
+ # Set a flag for the EXIT section, to indicate that we found
+ # an internal name
+ #
+ found_internal_name = 1;
+ }
+
+ #
+ # we have hit the internal name section. Set the flag
+ #
+ /^ +internal name: *$/ {
+ in_internal_name = 1
+ }
+
+ END {
+ # Uncomment the next line for debugging info
+ #{ print "END: NR: ", NR }
+ if ( (isa_shared_library == 0) || (NR < 2) ) {
+ # both of these indicate error conditions, for which we
+ # should not generate any output.
+ exit;
+ } else {
+ if (found_internal_name == 1) {
+ exit;
+ } else {
+ #
+ # chop the : off the end of the line
+ #
+ colon = index(my_name, ":")
+ colon = colon - 1
+ temp = substr(my_name, 1, colon)
+ #
+ # get the basename
+ #
+ numfields = split(temp, basename, "/")
+ # Uncomment the next line for debugging info
+ #print "In END:", numfields, ":", temp
+ print basename[numfields]
+ exit
+ }
+ }
+ }
+ ' # end of awk
+done | sort -u
+#comment out the previous line and uncomment the next line when debugging
+#done
diff --git a/autodeps/hpux.req b/autodeps/hpux.req
new file mode 100644
index 000000000..cacb35ddd
--- /dev/null
+++ b/autodeps/hpux.req
@@ -0,0 +1,72 @@
+#! /usr/bin/ksh
+
+# Original Author: Tim Mooney (mooney@plains.nodak.edu)
+# This file is distributed under the terms of the GNU Public License
+#
+# find-requires is part of RPM, the RedHat Package Manager. find-requires
+# reads a list of full pathnames (in a package) on stdin, and outputs all
+# shared libraries the package requires to run correctly.
+#
+# On HP-UX, use `chatr' to find the library dependencies for an executable
+#
+# Example chatr output:
+#
+#$chatr /usr/bin/chatr
+#/usr/bin/chatr:
+# shared executable
+# shared library dynamic path search:
+# SHLIB_PATH disabled second
+# embedded path disabled first Not Defined
+# internal name:
+# chatr
+# shared library list:
+# dynamic /usr/lib/libc.1
+# shared library binding:
+# deferred
+# static branch prediction disabled
+# kernel assisted branch predictionenabled
+# lazy swap allocationdisabled
+# text segment lockingdisabled
+# data segment lockingdisabled
+# data page size: 4K
+# instruction page size: 4K
+
+#
+# TVM: it might be better to re-write this so that `file' isn't used, since
+# it can all be done with `chatr' (note the second line of chatr output tells
+# whether it's a shared executable or not), but this works.
+#
+filelist=`sed "s/['\"]/\\\&/g" | xargs file | grep executable | cut -d: -f1`
+
+for f in $filelist
+do
+ chatr $f | awk '
+
+ #
+ # For you non-awk-ers, no single quotes in comments -- the shell
+ # sees them and things get hosed.
+ #
+
+ BEGIN {
+ in_shlib_list = 0;
+ FS = " ";
+ RS = "\n";
+ }
+
+ in_shlib_list == 1 && /dynamic[ ]+\// {
+
+ # split the line on "/" and print out the last element
+ numfields = split($0,fields,"/")
+ print fields[numfields]
+
+ }
+
+ /^ +shared library list: *$/ {
+ in_shlib_list = 1
+ }
+
+ /^ +shared library binding: *$/ {
+ exit
+ }
+ ' # end of awk
+done | sort -u