X-Git-Url: http://git.pld-linux.org/?p=packages%2Frpm.git;a=blobdiff_plain;f=find-java-req.sh;h=6d6106fb485c7aebbbe8bb1c950939df6a3ddac9;hp=adbeb440f0b75b7c4d0b09f048be03f6bcb6a4e1;hb=071d84964a7bb8ccb85086e0b7d6e3df86f14ee6;hpb=b99bbf2b7d6c7f5678db1ce96b134f287f544731 diff --git a/find-java-req.sh b/find-java-req.sh index adbeb44..6d6106f 100755 --- a/find-java-req.sh +++ b/find-java-req.sh @@ -1,55 +1,17 @@ #!/bin/sh -# This script reads filenames from STDIN and outputs any relevant provides +# This script reads filenames from STDIN and outputs any relevant requires # information that needs to be included in the package. +# +# Based on rpm-4.4.2/scripts/find-req.pl +# Authors: Elan Ruusamäe export PATH="/sbin:/usr/sbin:/bin:/usr/bin:/usr/X11R6/bin" -IGNORE_DEPS="@" -BUILDROOT="/" - -# Loop over all args -while :; do -# Break out if there are no more args - case $# in - 0) - break - ;; - esac - -# Get the first arg, and shuffle - option=$1 - shift - -# Make all options have two hyphens - orig_option=$option # Save original for error messages - case $option in - --*) ;; - -*) option=-$option ;; - esac - - case $option in - --buildroot) - BUILDROOT=$1 - shift - ;; - --ignore_deps) - IGNORE_DEPS=$1 - shift - ;; - --help) - echo $usage - exit 0 - ;; - *) - echo "$0: Unrecognized option: \"$orig_option\"; use --help for usage." >&2 - exit 1 - ;; - esac -done - javaclassversion() { + [ $# -gt 0 ] || return + local ver - classver=$(file "$@" | grep -o 'compiled Java class data, version [0-9.]*' | awk '{print $NF}' | sort -u) + classver=$(echo "$@" | xargs -r file | grep -o 'compiled Java class data, version [0-9.]*' | awk '{print $NF}' | sort -u) [ "$classver" ] || return for v in $classver; do echo "java(ClassDataVersion) >= $v" @@ -62,21 +24,27 @@ javajarversion() { # check only files, symlinks could point outside buildroot [ -f "$jar" -a ! -L "$jar" ] || return +# echo >&2 "find java requires: ${jar#$RPM_BUILD_ROOT}" + tmp=$(mktemp -d) unzip -q -d $tmp $jar >&2 javaclassversion $(find $tmp -type f -name '*.class') rm -rf $tmp } -for file in $(cat -); do - case $file in - *.jar) - javajarversion "$file" - unzip -p $file | javadeps --requires --rpmformat --keywords - - ;; - *.class) - javaclassversion "$file" - javadeps --requires --rpmformat --keywords $file - ;; - esac -done | sort -u | egrep -v \'$IGNORE_DEPS\' +FILES=$(cat -) + +find_requires() { + for file in $FILES; do + case $file in + *.jar) + javajarversion "$file" + ;; + *.class) + javaclassversion "$file" + ;; + esac + done +} + +find_requires | sort -u