|
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
|