#! /usr/bin/ksh # Original Author: Ralph Goers(rgoer@Candle.Com) # Borrowed heavily from Tim Mooney's HP version. # This file is distributed under the terms of the GNU General 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. # find_prov_ia64() { # On AIX for IA64, use the file command to find shared modules # # Example file output: # #$file /usr/lib/ia64l32/libc.so #/usr/lib/ia64l32/libc.so: ELF 32-bit LSB version 1 AIX shared obj IA-64 # # # # Search for shared objects - the file command on AIX for IA64 reports # shared objects sed -e "s/['\"]/\\\&/g" -e "s/$/\//g" | LANG=C xargs file | grep -e ":.*shared obj" | cut -d: -f1 | sed "s/\/$//g" | xargs -i basename {} | sort -u } find_prov_power() { # # Example dump output: # #$dump -H /usr/bin/dump # #/usr/bin/dump: # # ***Loader Section*** # Loader Header Information #VERSION# #SYMtableENT #RELOCent LENidSTR #0x00000001 0x00000021 0x0000006c 0x0000002f # ##IMPfilID OFFidSTR LENstrTBL OFFstrTBL #0x00000002 0x00000848 0x00000049 0x00000877 # # # ***Import File Strings*** #INDEX PATH BASE MEMBER #0 /usr/lib:/lib:/usr/lpp/xlC/lib #1 libc.a shr.o # # # Search executables, archives, and symlinks to those types for shared # objects sed -e "s/['\"]/\\\&/g" -e "s/$/\//g" | LANG=C xargs file | grep -e ":.*executable" -e ":.*archive" | cut -d: -f1 | sed "s/\/$//g" | # Use the verbose version of dump to find the sharable objects while read f do LANG=C /usr/bin/dump -ov $f/ 2>/dev/null | grep -E "^Flags.*SHROBJ|:$" | awk 'match($1,":$") { member=$1 } !match($1,":$") {print member} ' done | sed -e 's/:$//' -e 's/\/\[/\(/g' -e 's/\]/)/g' | xargs -i basename {} | sort -u } PATH=/usr/bin machinetype=`uname -m` if [[ $machinetype = "ia64" ]] then find_prov_ia64 else find_prov_power fi