diff --git a/tools/check-java-versions.sh b/tools/check-java-versions.sh new file mode 100755 index 0000000..5058c3c --- /dev/null +++ b/tools/check-java-versions.sh @@ -0,0 +1,16 @@ +#!/bin/bash + +TMP=$(mktemp --directory) + +pushd build + for JAR in $(find . -name "*.jar" -a -not -name "*-sources.jar" -a -not -name "*-javadoc.jar") + do + echo "Checking ${JAR}..." + unzip -qq -d ${TMP} ${JAR} + find ${TMP} -name "*.class" | xargs file -b | sort -u + rm -rf ${TMP}/* + echo + done +popd + +rm -rf ${TMP} diff --git a/tools/retrolambda-2.5.6.jar b/tools/retrolambda-2.5.6.jar new file mode 100644 index 0000000..2c7a740 Binary files /dev/null and b/tools/retrolambda-2.5.6.jar differ diff --git a/tools/retrolambda.sh b/tools/retrolambda.sh new file mode 100755 index 0000000..aac7883 --- /dev/null +++ b/tools/retrolambda.sh @@ -0,0 +1,40 @@ +#!/bin/sh + +set -x + +if [ $# -ne 1 ] +then + echo Provide on jar file to convert on the command line. + exit 1 +fi + +REALPATH=$(realpath $0) +BIN_DIR=`dirname "$REALPATH"` +LIB_DIR=$BIN_DIR + +JAR_TO_CONVERT="$1" +INPUT_DIR="$JAR_TO_CONVERT".inputdir +OUTPUT_DIR="$JAR_TO_CONVERT".outputdir + +rm -rf "$INPUT_DIR" +rm -rf "$OUTPUT_DIR" +mkdir "$INPUT_DIR" +mkdir "$OUTPUT_DIR" +(cd "$INPUT_DIR"; jar -xvf $OLDPWD/"$JAR_TO_CONVERT") + +java \ + -Dretrolambda.bytecodeVersion=49 \ + -Dretrolambda.defaultMethods=true \ + -Dretrolambda.inputDir="$INPUT_DIR" \ + -Dretrolambda.outputDir="$OUTPUT_DIR" \ + -Dretrolambda.classpath="$JAR_TO_CONVERT" \ + -Dretrolambda.javacHacks=true \ + -Dretrolambda.quiet=false \ + -jar "$LIB_DIR"/retrolambda-2.5.6.jar + +# The order of the "m" and "f" must match the order that the +# corresponding files appear in the argument list. This is +# so stupid... +jar -cvfm "$JAR_TO_CONVERT".java5.jar \ + "$OUTPUT_DIR"/META-INF/MANIFEST.MF \ + -C "$OUTPUT_DIR" .