Jeremy Katz e053cec
#!/bin/sh
Jeremy Katz e053cec
Jeremy Katz e053cec
# If using normal root, avoid changing anything.
Jeremy Katz e053cec
if [ -z "$RPM_BUILD_ROOT" -o "$RPM_BUILD_ROOT" = "/" ]; then
Jeremy Katz e053cec
	exit 0
Jeremy Katz e053cec
fi
Jeremy Katz e053cec
Jeremy Katz e053cec
# If zip is not installed, we can't repack the jars.
Jeremy Katz e053cec
if [ ! -x /usr/bin/zip ]; then
Jeremy Katz e053cec
	exit 0
Jeremy Katz e053cec
fi
Jeremy Katz e053cec
if [ ! -x /usr/bin/unzip ]; then
Jeremy Katz e053cec
	exit 0
Jeremy Katz e053cec
fi
Jeremy Katz e053cec
afe4595
JARS=`find $RPM_BUILD_ROOT -type f -name \*.jar -not -size 0`
20a4569
if [ ! -z "$JARS" ]; then
20a4569
Jeremy Katz e053cec
	# make $RPM_BUILD_ROOT/tmp if it doesn't exist
Jeremy Katz e053cec
	rmtmp=0
Jeremy Katz e053cec
	if [ ! -x "$RPM_BUILD_ROOT/tmp" ]; then
Jeremy Katz e053cec
		mkdir -p $RPM_BUILD_ROOT/tmp
Jeremy Katz e053cec
		rmtmp=1
Jeremy Katz e053cec
	fi
20a4569
20a4569
	# unpack every jar, set the date of the files and directories and
Jeremy Katz e053cec
	# repack the jar
d22596b
	OLD_IFS="$IFS"
d22596b
	IFS=$(printf '\n\t')
Jeremy Katz e053cec
	for j in $JARS ; do
d22596b
		JARNAME=`basename "$j"`
d22596b
		JTMPDIR=`mktemp -d -p $RPM_BUILD_ROOT/tmp "$JARNAME.tmpdir.XXXXXXXXXX"` || exit 1
d22596b
		JARDIR=`mktemp -d -p $RPM_BUILD_ROOT/tmp "$JARNAME.jardir.XXXXXXXXXX"` || exit 1
d22596b
		TIMEREF=`mktemp -p $RPM_BUILD_ROOT/tmp "$JARNAME.timeref.XXXXXXXXXX"` || exit 1
20a4569
d22596b
		pushd "$JTMPDIR" > /dev/null
d22596b
		/usr/bin/unzip -qq -o "$j"
76c839e
		find -type d -exec chmod a+rx,u+w {} \;
76c839e
		find -type f -exec chmod a+r,u+w {} \;
d22596b
		rm -f "$j"
20a4569
Jeremy Katz e053cec
		# Create the directories first.
ab53232
		find -type d | LC_ALL=C sort | while read d; do
ab53232
			mkdir -p "$JARDIR/$d"
20a4569
        	done
Jeremy Katz e053cec
Jeremy Katz e053cec
		# Get the modtime from the newest ChangeLog. If the project
Jeremy Katz e053cec
		# doesn't have a ChangeLog, Jan 1, 1970 will be used.
Jeremy Katz e053cec
		DATE="1970-01-01 UTC"
Jeremy Katz e053cec
Jeremy Katz e053cec
		if [ -z $_PACKAGE_BUILD_DIR ]; then
Jeremy Katz e053cec
			_PACKAGE_BUILD_DIR=$RPM_BUILD_DIR/$RPM_PACKAGE_NAME-$RPM_PACKAGE_VERSION
Jeremy Katz e053cec
		fi
Jeremy Katz e053cec
Jeremy Katz e053cec
		if [ -d $_PACKAGE_BUILD_DIR ]; then
Jeremy Katz e053cec
			CHANGELOGS=`find $_PACKAGE_BUILD_DIR -type f -name ChangeLog`
Jeremy Katz e053cec
			if [ ! -z "$CHANGELOGS" ]; then
Jeremy Katz e053cec
				for c in $CHANGELOGS; do
Jeremy Katz e053cec
					TMPDATE=`stat -c %y $c | cut -d " " -f 1-2`
Jeremy Katz e053cec
					if [ `date --date="$TMPDATE" +%s` -gt `date --date="$DATE" +%s` ]; then
Jeremy Katz e053cec
						DATE="$TMPDATE"
Jeremy Katz e053cec
					fi
Jeremy Katz e053cec
				done
20a4569
			fi
Jeremy Katz e053cec
		fi
Jeremy Katz e053cec
Jeremy Katz e053cec
		# move the contents over to the a new directory in order and set
ab53232
		# the times.
ab53232
		find -type f | LC_ALL=C sort | while read f; do
ab53232
			cp "$f" "$JARDIR/$f"
ab53232
			touch --date="$DATE" "$JARDIR/$f"
Jeremy Katz e053cec
        	done
Jeremy Katz e053cec
		popd > /dev/null
Jeremy Katz e053cec
Jeremy Katz e053cec
		# Set the times of the directories.
ab53232
		find "$JARDIR" -type d | while read d; do
ab53232
			touch --date="$DATE" "$d"
ab53232
		done
Jeremy Katz e053cec
Jeremy Katz e053cec
		# make the jar
d22596b
		pushd "$JARDIR" > /dev/null
Jeremy Katz e053cec
Jeremy Katz e053cec
		if [ -n "`find -not -name '.'`" ]; then
be607b5
			if [ -e META-INF/MANIFEST.MF ]; then
d22596b
			    /usr/bin/zip -q -X -9 "$j" META-INF/MANIFEST.MF
be607b5
			fi
d22596b
			find * -not -name '.' | LC_ALL=C sort | /usr/bin/zip -u -q -X -9 "$j" -@
Jeremy Katz e053cec
		else
Jeremy Katz e053cec
			# Put the empty jar back
d22596b
			touch "$j"
Jeremy Katz e053cec
		fi
Jeremy Katz e053cec
		popd > /dev/null
Jeremy Katz e053cec
Jeremy Katz e053cec
		# Cleanup.
d22596b
		rm -rf "$JTMPDIR"
d22596b
		rm -rf "$JARDIR"
d22596b
		rm -f "$TIMEREF"
Jeremy Katz e053cec
	done
d22596b
	IFS="$OLD_IFS"
Jeremy Katz e053cec
Jeremy Katz e053cec
	# remove $RPM_BUILD_ROOT/tmp if we created it
Jeremy Katz e053cec
	if [ $rmtmp -eq 1 ]; then
Jeremy Katz e053cec
		rm -rf $RPM_BUILD_ROOT/tmp
Jeremy Katz e053cec
	fi
Jeremy Katz e053cec
fi