X-Git-Url: http://git.pld-linux.org/?a=blobdiff_plain;f=find-java-req.sh;h=6d6106fb485c7aebbbe8bb1c950939df6a3ddac9;hb=82749994c822294ba52116066770dac7b4f00bc0;hp=0994ebdbbc192cfc8f2f7535ce3f57bb3fc16079;hpb=d2ddb96f3e95aa5ac6d05a701c7f825602a2ee22;p=packages%2Frpm.git diff --git a/find-java-req.sh b/find-java-req.sh index 0994ebd..6d6106f 100755 --- a/find-java-req.sh +++ b/find-java-req.sh @@ -11,7 +11,7 @@ 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" @@ -24,6 +24,8 @@ 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') @@ -37,48 +39,12 @@ find_requires() { 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 -} - -find_provides() { - for file in $FILES; do - case $file in - *.jar) - unzip -p $file | javadeps --provides --rpmformat --keywords --starprov - - ;; - *.class) - javadeps --provides --rpmformat --keywords --starprov $file ;; esac - done | sort -u + done } -REQUIRES=$(find_requires) -PROVIDES=$(find_provides) - -# This is a little magic trick to get all REQUIRES that are not -# in PROVIDES. While RPM functions correctly when such deps exist, -# they make the metadata a bit bloated. - -# Filter out dups from both lists -REQUIRES=$(echo "$REQUIRES" | sort | uniq) -PROVIDES=$(echo "$PROVIDES" | sort | uniq) - -# -# Get a list of elements that exist in exactly one of PROVIDES or REQUIRES -# -UNIQ=$(echo "$PROVIDES -$REQUIRES" | sort | uniq -u) - -# -# Of those, only choose the ones that are in REQUIRES -# -echo "$UNIQ -$REQUIRES" | sort | uniq -d +find_requires | sort -u