106 lines
3.2 KiB
Bash
Executable File
106 lines
3.2 KiB
Bash
Executable File
#!/bin/bash
|
|
## Compares the ant jars to the maven jars and makes sure they're the same
|
|
## (or different where/how expected)
|
|
|
|
## Note: The no_aop build doesn't compare cleanly for some reason.
|
|
## Maybe a difference between the ant & maven munge preprocessor?
|
|
|
|
RETVAL=0
|
|
|
|
function cleanAndBuild {
|
|
mvn clean > /dev/null
|
|
ant clean.all > /dev/null
|
|
#ant no_aop > /dev/null
|
|
ant dist > /dev/null
|
|
mvn package -DskipTests=true -Dmaven.javadoc.skip=true > /dev/null
|
|
#ant -f build/no_aop/build.xml dist > /dev/null
|
|
}
|
|
|
|
function findAndCompareJars {
|
|
version=4.0
|
|
for ANT in `find ./build/dist/* -name "*-snapshot.jar" `
|
|
do
|
|
if [ $ANT = "./build/dist/guice-snapshot.jar" ]; then
|
|
## Check the main build.
|
|
MVN=./core/target/guice-$version-SNAPSHOT.jar
|
|
extension=core
|
|
compareJars "$ANT" "$MVN" $extension
|
|
#compareJars "./build/no_aop/$ANT" "./core/target/guice-$version-SNAPSHOT-no_aop.jar" "no_aop: $extension"
|
|
else
|
|
## Check extensions.
|
|
extension=`echo $ANT | awk -F"-" '{print $2 }'`
|
|
MVN=./extensions/$extension/target/guice-$extension-$version-SNAPSHOT.jar
|
|
compareJars "$ANT" "$MVN" $extension
|
|
fi
|
|
|
|
done;
|
|
}
|
|
|
|
function compareJars {
|
|
ANT=$1
|
|
MVN=$2
|
|
extension=$3
|
|
curdir=`pwd`
|
|
|
|
echo Comparing $3
|
|
mkdir "tmp$$"
|
|
cp $ANT tmp$$/ant.jar
|
|
cp $MVN tmp$$/mvn.jar
|
|
cd "tmp$$"
|
|
mkdir ant
|
|
mkdir mvn
|
|
cd ant
|
|
jar -xf ../ant.jar
|
|
cd ..
|
|
cd mvn
|
|
jar -xf ../mvn.jar
|
|
cd ..
|
|
|
|
## ant puts LICENSE & NOTICE files in a different place
|
|
echo LICENSE > excludes
|
|
echo NOTICE >> excludes
|
|
## ant does not create DEPENDENCIES
|
|
echo DEPENDENCIES >> excludes
|
|
## ant/mvn slightly different in MANIFEST.MF
|
|
echo MANIFEST.MF >> excludes
|
|
|
|
## ant leaves empty directories for some jarjar'd paths --
|
|
## we grep -v instead of exclude because we want to make sure
|
|
## if any files in those directories exist, that they're diff'd.
|
|
## ant 1.8+ also creates package-info classes all the time, and
|
|
## maven doesn't -- so we just ignore the package-info classes.
|
|
diff -u --recursive -Xexcludes ant mvn | \
|
|
grep -v "^Only in ant/com/google/inject/internal/asm: signature$" | \
|
|
grep -v "^Only in ant/com/google/inject/internal/cglib: beans$" | \
|
|
grep -v "^Only in ant/com/google/inject/internal/cglib: transform$" | \
|
|
grep -v "^Only in ant/com/google/inject/internal/cglib/transform: impl$" | \
|
|
grep -v "^Only in ant/com/google/inject/internal/cglib: util$" | \
|
|
grep -v "^Only in ant: net$" | \
|
|
grep -v "^Only in ant: org$" | \
|
|
grep -v "^Only in ant/com/google/inject/.*: package-info\.class$"
|
|
# failure is 0 because we're using grep -v to filter things out
|
|
if [ $? -eq 0 ]; then
|
|
export RETVAL=1
|
|
fi
|
|
cd "$curdir"
|
|
rm -rf "tmp$$"
|
|
}
|
|
|
|
## Only bother doing this on the jdk8/mvn build (before we publish snapshots).
|
|
## Otherwise it's a waste of time building mvn+ant each time.
|
|
if [ "$TRAVIS_JDK_VERSION" == "oraclejdk8" ] && \
|
|
[ "$LABEL" == "mvn" ]; then
|
|
echo "Cleaning and building ant & maven..."
|
|
cleanAndBuild
|
|
echo "Starting to compare jars..."
|
|
echo
|
|
findAndCompareJars
|
|
if [ $RETVAL -eq 0 ]; then
|
|
echo "Everything looks good!"
|
|
exit 0
|
|
else
|
|
echo "Some things don't match -- see above for details."
|
|
exit 1
|
|
fi
|
|
fi
|