export PATH="/sbin:/usr/sbin:/bin:/usr/bin:/usr/X11R6/bin"
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"
# 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
+FILES=$(cat -)
+
+find_requires() {
+ for file in $FILES; do
+ case $file in
+ *.jar)
+ javajarversion "$file"
+ ;;
+ *.class)
+ javaclassversion "$file"
+ ;;
+ esac
+ done
+}
+
+find_requires | sort -u