#!/bin/bash

# If using normal root, avoid changing anything.
if [ -z "$RPM_BUILD_ROOT" -o "$RPM_BUILD_ROOT" = "/" ]; then
        exit 0
fi
if [ "$NO_BRP_CHECK_BYTECODE_VERSION" = "true" ] ; then
        echo "NO_BRP_CHECK_BYTECODE_VERSION is set: skipping check"
        exit 0
fi

#usage unjar <file> <directory>
function unjar()
{
    local file TMPDIR
    file=$1
    TMPDIR=$2

    if [[ $(type -p fastjar) ]]; then
        UNJAR=fastjar
    elif [[ $(type -p jar) ]]; then
        UNJAR=jar
    elif [[ $(type -p unzip) ]]; then
        UNJAR=unzip
    else
        echo "ERROR: jar, fastjar, or unzip is not installed (trying file $file)"
        exit 1
    fi

    case $UNJAR in
        jar|fastjar)
        pushd $TMPDIR &>/dev/null
        # echo jar -xf $file
        ${UNJAR} -xf $file
        popd &> /dev/null
        ;;
        unzip)
        unzip -oqq $file -d $TMPDIR        
        ;;
    esac
}


TMPDIR=`mktemp -d /var/tmp/brp-java-XXXXXX`
OUTFILE=$TMPDIR/.out.$$
for file in `find $RPM_BUILD_ROOT \( -name "*.jar" -o -name "*.war" \) -type f ;\
		 test -d $RPM_BUILD_ROOT/usr/share/java && find $RPM_BUILD_ROOT/usr/share/java -name "*.zip" ;\
		 test -d $RPM_BUILD_ROOT/usr/share/classpath && find $RPM_BUILD_ROOT/usr/share/classpath -name "*.zip" ` ; do
   case $file in
     *java-1.5.0-sun*|*java-1_5_0-ibm*|*groupwise/client*|*messenger/client*)
	continue
	;;
   esac
   rm -rf $TMPDIR/*
   #echo "DEBUG: unzipping $file"
   TYPE=`file $file`
   case $TYPE in
	*Zip*) ;;
	*) continue ;;
   esac

   unjar $file $TMPDIR
   #unzip -oqq $file -d $TMPDIR
   find $TMPDIR -type d -exec chmod a+rwx {} \;
   find $TMPDIR -type f -exec chmod a+r {} \;
   JARNAME=${file##*/}
   find $TMPDIR -print0 | xargs -0 file | while read line ; do
	case $line in
	    *compiled\ Java\ class\ data*)
		VERSION=${line##* }
		VMAJ=${VERSION%.*}
		VMIN=${VERSION#*.}
		NAME=${line%%: *}
		NAME=${NAME##$TMPDIR/}
		# java-1.4 : maj = 48.0
		# java-1.5 : maj = 49.0
                # java-1.6 : maj = 50.0
		if test 0$VMAJ -gt 49 ; then
		    echo "$JARNAME: $NAME" >> $TMPDIR/.out.$$
		fi
	    ;;
        esac
   done
done

if test -s $TMPDIR/.out.$$ ; then
    echo "ERROR: the files below contain java bytecode for something later than java 1.5,"
    echo "ERROR: please set the javac target to 1.5 or lower."
    cat $TMPDIR/.out.$$
    echo "ERROR: the files above contain java bytecode for something later than java 1.5,"
    echo "ERROR: please set the javac target to 1.5 or lower."
    exit 1
fi

rm -rf $TMPDIR


