90e2578
#!/bin/sh
90e2578
90e2578
# If using normal root, avoid changing anything.
90e2578
if [ -z "$RPM_BUILD_ROOT" -o "$RPM_BUILD_ROOT" = "/" ]; then
90e2578
	exit 0
90e2578
fi
90e2578
90e2578
# If zip is not installed, we can't repack the jars.
90e2578
if [ ! -x /usr/bin/zip ]; then
90e2578
	exit 0
90e2578
fi
90e2578
if [ ! -x /usr/bin/unzip ]; then
90e2578
	exit 0
90e2578
fi
90e2578
90e2578
JARS=`find $RPM_BUILD_ROOT -type f -name \*.jar`
90e2578
if [ ! -z "$JARS" ]; then 
90e2578
	
90e2578
	# make $RPM_BUILD_ROOT/tmp if it doesn't exist
90e2578
	rmtmp=0
90e2578
	if [ ! -x "$RPM_BUILD_ROOT/tmp" ]; then
90e2578
		mkdir -p $RPM_BUILD_ROOT/tmp
90e2578
		rmtmp=1
90e2578
	fi
90e2578
	
90e2578
	# unpack every jar, set the date of the files and directories and 
90e2578
	# repack the jar
90e2578
	for j in $JARS ; do
90e2578
		JARNAME=`basename $j`
90e2578
		TMPDIR=`mktemp -d -p $RPM_BUILD_ROOT/tmp $JARNAME.tmpdir.XXXXXXXXXX` || exit 1
90e2578
		JARDIR=`mktemp -d -p $RPM_BUILD_ROOT/tmp $JARNAME.jardir.XXXXXXXXXX` || exit 1
90e2578
		TIMEREF=`mktemp -p $RPM_BUILD_ROOT/tmp $JARNAME.timeref.XXXXXXXXXX` || exit 1
90e2578
		
90e2578
		pushd $TMPDIR > /dev/null
90e2578
		/usr/bin/unzip -qq -o $j
90e2578
		rm -f $j
90e2578
		
90e2578
		# Create the directories first.
90e2578
		for d in `find -type d | LC_ALL=C sort`; do
90e2578
            		mkdir -p $JARDIR/$d
90e2578
        	done 
90e2578
90e2578
		# Get the modtime from the newest ChangeLog. If the project
90e2578
		# doesn't have a ChangeLog, Jan 1, 1970 will be used.
90e2578
		CHANGELOGS=`find $RPM_BUILD_DIR/$RPM_PACKAGE_NAME-$RPM_PACKAGE_VERSION -type f -name ChangeLog`
90e2578
		DATE="1970-01-01 UTC"
90e2578
		if [ ! -z "$CHANGELOGS" ]; then
90e2578
			for c in $CHANGELOGS; do
90e2578
				TMPDATE=`stat -c %y $c | cut -d " " -f 1-2`
90e2578
				if [ `date --date="$TMPDATE" +%s` -gt `date --date="$DATE" +%s` ]; then
90e2578
					DATE="$TMPDATE"
90e2578
				fi
90e2578
			done
90e2578
		fi 
90e2578
90e2578
		# move the contents over to the a new directory in order and set
90e2578
		# the times. 
90e2578
		for f in `find -type f | LC_ALL=C sort`; do 
90e2578
            		cp $f $JARDIR/$f
90e2578
            		touch --date="$DATE" $JARDIR/$f
90e2578
        	done
90e2578
		popd > /dev/null
90e2578
90e2578
		# Set the times of the directories.
90e2578
		touch --date="$DATE" `find $JARDIR -type d`
90e2578
90e2578
		# make the jar
90e2578
		pushd $JARDIR > /dev/null
83a5b2c
		find . -type f -print | LC_ALL=C sort | /usr/bin/zip -q -X -9 $j -@
90e2578
		popd > /dev/null
90e2578
90e2578
		# Cleanup.
90e2578
		rm -rf $TMPDIR
90e2578
		rm -rf $JARDIR
90e2578
		rm -f $TIMEREF
90e2578
	done
90e2578
90e2578
	# remove $RPM_BUILD_ROOT/tmp if we created it
90e2578
	if [ $rmtmp -eq 1 ]; then
90e2578
		rm -rf $RPM_BUILD_ROOT/tmp
90e2578
	fi
90e2578
fi