packages: rpm/rpm-java-requires - propagate set -x to functions for verbose...

glen glen at pld-linux.org
Thu Nov 11 21:13:30 CET 2010


Author: glen                         Date: Thu Nov 11 20:13:30 2010 GMT
Module: packages                      Tag: HEAD
---- Log message:
- propagate set -x to functions for verbose debug
- for brief debug set FIND_JAVAREQ_DEBUG=true when building
- recurse into .jars inside .jar to find deps (eclipse plugins do that for example)

---- Files affected:
packages/rpm:
   rpm-java-requires (1.4 -> 1.5) 

---- Diffs:

================================================================
Index: packages/rpm/rpm-java-requires
diff -u packages/rpm/rpm-java-requires:1.4 packages/rpm/rpm-java-requires:1.5
--- packages/rpm/rpm-java-requires:1.4	Wed May 20 02:09:51 2009
+++ packages/rpm/rpm-java-requires	Thu Nov 11 21:13:25 2010
@@ -7,8 +7,16 @@
 
 export PATH="/sbin:/usr/sbin:/bin:/usr/bin"
 
+# save $- state, to enable in functions
+debug=$-
+
+# enable debug: FIND_JAVAREQ_DEBUG=true
+FIND_JAVAREQ_DEBUG=${FIND_JAVAREQ_DEBUG:-false}
+
 javaclassversion() {
+	set -$debug
 	[ $# -gt 0 ] || return 1
+	$FIND_JAVAREQ_DEBUG && echo >&2 ">> class: $*"
 
 	local classver=$(echo "$@" | xargs -r file | grep -o 'compiled Java class data, version [0-9.]*' | awk '{print $NF}' | sort -u)
 	if [ -z "$classver" ]; then
@@ -23,8 +31,10 @@
 }
 
 javajarversion() {
+	set -$debug
 	local jar="$1"
-	local ret=0
+	local tmp ret=0
+	$FIND_JAVAREQ_DEBUG && echo >&2 ">> jar: $jar"
 
 	# check only files, symlinks could point outside buildroot
 	[ -f "$jar" -a ! -L "$jar" ] || return $ret
@@ -33,16 +43,29 @@
 	unzip -q -d $tmp $jar >&2
 	# workaround for .jar files with stupid permissions
 	chmod -R u+rwX $tmp
-	javaclassversion $(find $tmp -type f -name '*.class') || {
-		echo >&2 "ERROR: Class version could not be extracted from $jar"
-		ret=1
-	}
+
+	# find .jar and .class files
+	for file in $(find $tmp -type f '(' -name '*.class' -o -name '*.jar' ')'); do
+		case "$file" in
+		*.jar)
+			# recursion!
+			javajarversion "$file" || ret=1
+		;;
+		*.class)
+			javaclassversion "$file" || {
+				echo >&2 "ERROR: Class version could not be extracted from $file"
+				ret=1
+			}
+		;;
+		esac
+	done
 	rm -rf $tmp
 
 	return $ret
 }
 
 find_requires() {
+	set -$debug
 	local ret=0
 	for file in $FILES; do
 		case $file in
@@ -65,6 +88,6 @@
 t=$(mktemp)
 ret=0
 find_requires > $t || ret=1
-cat $t
+sort -u $t
 rm -f $t
 exit $ret
================================================================

---- CVS-web:
    http://cvs.pld-linux.org/cgi-bin/cvsweb.cgi/packages/rpm/rpm-java-requires?r1=1.4&r2=1.5&f=u



More information about the pld-cvs-commit mailing list