diff --git a/bin/build-launcher.sh b/bin/build-launcher.sh index 138c2ea..075ac3f 100755 --- a/bin/build-launcher.sh +++ b/bin/build-launcher.sh @@ -27,34 +27,35 @@ echo "*** Packaging GUI as a modular jar" "$JAVA_HOME"/bin/jar --create --file "$basedir/target/org.getmonero.i2p.zero.gui.jar" --main-class org.getmonero.i2p.zero.gui.Gui -C "$basedir/target/classes/org.getmonero.i2p.zero.gui" . normalizeZip "$basedir/target/org.getmonero.i2p.zero.gui.jar" -rm -fr "$basedir/dist" -for i in linux mac win linux-gui mac-gui win-gui; do mkdir -p "$basedir/dist/$i"; done +for target in ${TARGETS}; do + for i in ${target} ${target}-gui; do + rm -fr "$basedir/dist/$i" + mkdir -p "$basedir/dist/$i" + done +done # create OS specific launchers which will bundle together the code and a minimal JVM -for i in linux mac win; do +for i in ${TARGETS}; do echo "*** Performing jlink ($i)" - case $i in - linux ) - JAVA_HOME_VARIANT=${JAVA_HOME_LINUX} ;; - mac ) - JAVA_HOME_VARIANT=${JAVA_HOME_MAC} ;; - win ) - JAVA_HOME_VARIANT=${JAVA_HOME_WIN} ;; - esac + JAVA_HOME_VARIANT=$basedir/import/jdks/${i}/${variables["JAVA_HOME_$i"]} echo "Using JAVA_HOME_VARIANT: $JAVA_HOME_VARIANT" "$JAVA_HOME"/bin/jlink --module-path "${JAVA_HOME_VARIANT}/jmods":"$basedir/target/modules":"$basedir/target/org.getmonero.i2p.zero.jar" --add-modules combined,org.getmonero.i2p.zero --output "$basedir/dist/$i/router" --compress 2 --no-header-files --no-man-pages --order-resources=**/module-info.class,/java.base/java/lang/**,**javafx** "$JAVA_HOME"/bin/jlink --module-path "${JAVA_HOME_VARIANT}/jmods":"$basedir/import/javafx-jmods/$i/javafx-jmods-${JAVAFX_VERSION}":"$basedir/target/modules":"$basedir/target/org.getmonero.i2p.zero.jar":"$basedir/target/org.getmonero.i2p.zero.gui.jar" --add-modules combined,org.getmonero.i2p.zero,org.getmonero.i2p.zero.gui,javafx.controls,javafx.fxml,java.desktop --output "$basedir/dist/$i-gui/router" --compress 2 --no-header-files --no-man-pages --order-resources=**/module-info.class,/java.base/java/lang/**,**javafx** done -for i in mac-gui; do - cp "$basedir/resources/launch-gui.sh" "$basedir/dist/$i/router/bin/" -done +if [[ "$TARGETS" =~ "mac" ]]; then + cp "$basedir/resources/launch-gui.sh" "$basedir/dist/mac-gui/router/bin/" +fi -for i in linux mac win linux-gui mac-gui win-gui; do cp -r "$basedir/import/i2p.base" "$basedir/dist/$i/router/"; done +for target in ${TARGETS}; do + for i in ${target} ${target}-gui; do + cp -r "$basedir/import/i2p.base" "$basedir/dist/$i/router/"; + done +done # remove unnecessary native libs from jbigi.jar -for i in linux mac win; do +for i in ${TARGETS}; do for j in freebsd linux mac win; do if [ "$i" != "$j" ]; then if [ "$j" = "mac" ]; then j="osx"; fi @@ -67,45 +68,55 @@ for i in linux mac win; do done - # build mac gui app structure -mv "$basedir/dist/mac-gui/router" "$basedir/dist/mac-gui/router-tmp" -mkdir -p "$basedir/dist/mac-gui/router/i2p-zero.app/Contents/MacOS/" -cp -R "$basedir/resources/i2p-zero.app" "$basedir/dist/mac-gui/router/" -mv "$basedir/dist/mac-gui/router-tmp"/* "$basedir/dist/mac-gui/router/i2p-zero.app/Contents/MacOS/" -rm -fr "$basedir/dist/mac-gui/router-tmp" +if [[ "$TARGETS" =~ "mac" ]]; then + mv "$basedir/dist/mac-gui/router" "$basedir/dist/mac-gui/router-tmp" + mkdir -p "$basedir/dist/mac-gui/router/i2p-zero.app/Contents/MacOS/" + cp -R "$basedir/resources/i2p-zero.app" "$basedir/dist/mac-gui/router/" + mv "$basedir/dist/mac-gui/router-tmp"/* "$basedir/dist/mac-gui/router/i2p-zero.app/Contents/MacOS/" + rm -fr "$basedir/dist/mac-gui/router-tmp" +fi # build linux and linux-gui app structure -for i in linux linux-gui; do - mv "$basedir/dist/$i/router" "$basedir/dist/$i/router-tmp" - mkdir -p "$basedir/dist/$i/router/bin" - mkdir -p "$basedir/dist/$i/router/lib" - cp "$basedir/import/jpackage/linux/classes/jdk/incubator/jpackage/internal/resources/jpackageapplauncher" "$basedir/dist/$i/router/bin/i2p-zero" - chmod +x "$basedir/dist/$i/router/bin/i2p-zero" - mkdir -p "$basedir/dist/$i/router/lib/app" - cp "$basedir/resources/i2p-zero.$i.cfg" "$basedir/dist/$i/router/lib/app/i2p-zero.cfg" - mv "$basedir/dist/$i/router-tmp" "$basedir/dist/$i/router/lib/runtime" - cp "$basedir/import/jpackage/linux/classes/jdk/incubator/jpackage/internal/resources/libapplauncher.so" "$basedir/dist/$i/router/lib/" -done +if [[ "$TARGETS" =~ "linux" ]]; then + for i in linux linux-gui; do + mv "$basedir/dist/$i/router" "$basedir/dist/$i/router-tmp" + mkdir -p "$basedir/dist/$i/router/bin" + mkdir -p "$basedir/dist/$i/router/lib" + cp "$basedir/import/jpackage/linux/classes/jdk/incubator/jpackage/internal/resources/jpackageapplauncher" "$basedir/dist/$i/router/bin/i2p-zero" + chmod +x "$basedir/dist/$i/router/bin/i2p-zero" + mkdir -p "$basedir/dist/$i/router/lib/app" + cp "$basedir/resources/i2p-zero.$i.cfg" "$basedir/dist/$i/router/lib/app/i2p-zero.cfg" + mv "$basedir/dist/$i/router-tmp" "$basedir/dist/$i/router/lib/runtime" + cp "$basedir/import/jpackage/linux/classes/jdk/incubator/jpackage/internal/resources/libapplauncher.so" "$basedir/dist/$i/router/lib/" + done + + cp "$basedir/i2p-zero.png" "$basedir/dist/linux-gui/router/lib/" +fi -cp "$basedir/i2p-zero.png" "$basedir/dist/linux-gui/router/lib/" # build win and win-gui app structure -for i in win win-gui; do - mv "$basedir/dist/$i/router" "$basedir/dist/$i/router-tmp" - mkdir -p "$basedir/dist/$i/router/app" - cp "$basedir/resources/i2p-zero.$i.cfg" "$basedir/dist/$i/router/app/i2p-zero.cfg" - mv "$basedir/dist/$i/router-tmp" "$basedir/dist/$i/router/runtime" - cp "$basedir/resources/launcher.exe" "$basedir/dist/$i/router/i2p-zero.exe" - cp "$basedir/import/jpackage/win/classes/jdk/incubator/jpackage/internal/resources/applauncher.dll" "$basedir/dist/$i/router/" -done +if [[ "$TARGETS" =~ "win" ]]; then + for i in win win-gui; do + mv "$basedir/dist/$i/router" "$basedir/dist/$i/router-tmp" + mkdir -p "$basedir/dist/$i/router/app" + cp "$basedir/resources/i2p-zero.$i.cfg" "$basedir/dist/$i/router/app/i2p-zero.cfg" + mv "$basedir/dist/$i/router-tmp" "$basedir/dist/$i/router/runtime" + cp "$basedir/resources/launcher.exe" "$basedir/dist/$i/router/i2p-zero.exe" + cp "$basedir/import/jpackage/win/classes/jdk/incubator/jpackage/internal/resources/applauncher.dll" "$basedir/dist/$i/router/" + done +fi -for i in linux mac; do - cp "$basedir/resources/tunnel-control.sh" "$basedir/dist/$i/router/bin/" +for i in ${TARGETS}; do + if [ ${i} != "win" ]; then + cp "$basedir/resources/tunnel-control.sh" "$basedir/dist/$i/router/bin/" + fi done -cp "$basedir/resources/launch.sh" "$basedir/dist/mac/router/bin/" +if [[ "$TARGETS" =~ "mac" ]]; then + cp "$basedir/resources/launch.sh" "$basedir/dist/mac/router/bin/" +fi # show distribution sizes du -sk "$basedir/dist/"* | awk '{printf "%.1f MB %s\n",$1/1024,$2}' diff --git a/bin/import-packages.sh b/bin/import-packages.sh index a8014b3..1637a68 100755 --- a/bin/import-packages.sh +++ b/bin/import-packages.sh @@ -29,17 +29,15 @@ else fi -if [ ! -d "$basedir/import/jdks" ]; then - mkdir -p jdks - mkdir -p jdks/linux jdks/mac jdks/win - wget --directory-prefix=jdks/linux $JDK_DOWNLOAD_URL_LINUX - wget --directory-prefix=jdks/mac $JDK_DOWNLOAD_URL_MAC - wget --directory-prefix=jdks/win $JDK_DOWNLOAD_URL_WIN +for target in ${TARGETS};do + if [ ! -d "$basedir/import/jdks/${target}" ]; then + mkdir -p jdks/${target} - tar zxf jdks/linux/$JDK_DOWNLOAD_FILENAME_LINUX -C jdks/linux/ - tar zxf jdks/mac/$JDK_DOWNLOAD_FILENAME_MAC -C jdks/mac/ - unzip -q jdks/win/$JDK_DOWNLOAD_FILENAME_WIN -d jdks/win/ -fi + JDK_FILENAME=${variables["JDK_DOWNLOAD_FILENAME_$target"]} + wget --directory-prefix=jdks/${target} "https://github.com/AdoptOpenJDK/openjdk${JDK_MAJOR_VERSION}-binaries/releases/download/jdk-${JDK_VERSION_URL_ENC}/${JDK_FILENAME}" + ${variables["DECOMPRESS_$target"]} jdks/${target}/${JDK_FILENAME} + fi +done; if [ ! -d "$basedir/import/apache-ant-1.10.7" ]; then wget https://archive.apache.org/dist/ant/binaries/apache-ant-1.10.7-bin.tar.gz @@ -68,38 +66,30 @@ if [ ! -d "$basedir/import/jetty-lib" ]; then wget --directory-prefix=jetty-lib https://repo1.maven.org/maven2/org/eclipse/jetty/jetty-jmx/9.4.26.v20200117/jetty-jmx-9.4.26.v20200117.jar fi -if [ ! -d "$basedir/import/javafx-sdks" ]; then - mkdir -p javafx-sdks - mkdir -p javafx-sdks/linux javafx-sdks/mac javafx-sdks/win - - wget --directory-prefix=javafx-sdks/linux $JAVAFX_SDK_DOWNLOAD_URL_LINUX - wget --directory-prefix=javafx-sdks/mac $JAVAFX_SDK_DOWNLOAD_URL_MAC - wget --directory-prefix=javafx-sdks/win $JAVAFX_SDK_DOWNLOAD_URL_WIN - - unzip -q javafx-sdks/linux/`basename $JAVAFX_SDK_DOWNLOAD_URL_LINUX` -d javafx-sdks/linux/ - unzip -q javafx-sdks/mac/`basename $JAVAFX_SDK_DOWNLOAD_URL_MAC` -d javafx-sdks/mac/ - unzip -q javafx-sdks/win/`basename $JAVAFX_SDK_DOWNLOAD_URL_WIN` -d javafx-sdks/win/ -fi - -if [ ! -d "$basedir/import/javafx-jmods" ]; then - mkdir -p javafx-jmods - mkdir -p javafx-jmods/linux javafx-jmods/mac javafx-jmods/win - wget --directory-prefix=javafx-jmods/linux $JAVAFX_JMODS_DOWNLOAD_URL_LINUX - wget --directory-prefix=javafx-jmods/mac $JAVAFX_JMODS_DOWNLOAD_URL_MAC - wget --directory-prefix=javafx-jmods/win $JAVAFX_JMODS_DOWNLOAD_URL_WIN - - set +e - unzip -q javafx-jmods/linux/$JAVAFX_JMODS_DOWNLOAD_FILENAME_LINUX -d javafx-jmods/linux/ - unzip -q javafx-jmods/mac/$JAVAFX_JMODS_DOWNLOAD_FILENAME_MAC -d javafx-jmods/mac/ - unzip -q javafx-jmods/win/$JAVAFX_JMODS_DOWNLOAD_FILENAME_WIN -d javafx-jmods/win/ - set -e -fi - -if [ ! -d "$basedir/import/jpackage" ]; then - mkdir -p jpackage/linux jpackage/win - set +e - unzip -q $JAVA_HOME_LINUX/jmods/jdk.incubator.jpackage.jmod -d jpackage/linux/ - unzip -q $JAVA_HOME_WIN/jmods/jdk.incubator.jpackage.jmod -d jpackage/win/ - set -e -fi - +for target in ${TARGETS};do + if [ ! -d "$basedir/import/javafx-sdks/${target}" ]; then + mkdir -p javafx-sdks/${target} + SDK_FILENAME=${variables["JAVAFX_SDK_FILENAME_$target"]} + wget --directory-prefix=javafx-sdks/${target} https://download2.gluonhq.com/openjfx/$JAVAFX_VERSION/${SDK_FILENAME} + unzip -q javafx-sdks/${target}/${SDK_FILENAME} -d javafx-sdks/${target}/ + fi +done; + +for target in ${TARGETS};do + if [ ! -d "$basedir/import/javafx-jmods/${target}" ]; then + mkdir -p javafx-jmods/${target} + wget --directory-prefix=javafx-jmods/${target} https://download2.gluonhq.com/openjfx/$JAVAFX_VERSION/${variables["JAVAFX_JMODS_FILENAME_$target"]} + set +e + unzip -q javafx-jmods/${target}/${variables["JAVAFX_JMODS_FILENAME_$target"]} -d javafx-jmods/${target}/ + set -e + fi +done; + +for target in ${TARGETS};do + if [ ${target} != "mac" ] && [ ! -d "$basedir/import/jpackage/${target}" ]; then + mkdir -p jpackage/${target} + set +e + unzip -q jdks/${target}/${variables["JAVA_HOME_$target"]}/jmods/jdk.incubator.jpackage.jmod -d jpackage/${target}/ + set -e + fi +done; diff --git a/bin/java-config.sh b/bin/java-config.sh index f462cd6..3356fa0 100644 --- a/bin/java-config.sh +++ b/bin/java-config.sh @@ -10,43 +10,42 @@ fi export JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF8 +: "${TARGETS:="linux mac win"}" +declare -A variables=() + # Get latest JDK version from https://adoptopenjdk.net/releases.html?variant=openjdk15&jvmVariant=hotspot JDK_VERSION=14.0.2+12 JDK_MAJOR_VERSION=`echo $JDK_VERSION | cut -f1 -d"." | cut -f1 -d+` JDK_VERSION_URL_ENC=`echo "$JDK_VERSION" | sed 's/+/%2B/g'` JDK_VERSION_URL_ENC2=`echo "$JDK_VERSION" | sed 's/+/_/g'` -JDK_DOWNLOAD_URL_LINUX=https://github.com/AdoptOpenJDK/openjdk${JDK_MAJOR_VERSION}-binaries/releases/download/jdk-${JDK_VERSION_URL_ENC}/OpenJDK${JDK_MAJOR_VERSION}U-jdk_x64_linux_hotspot_${JDK_VERSION_URL_ENC2}.tar.gz -JDK_DOWNLOAD_URL_MAC=https://github.com/AdoptOpenJDK/openjdk${JDK_MAJOR_VERSION}-binaries/releases/download/jdk-${JDK_VERSION_URL_ENC}/OpenJDK${JDK_MAJOR_VERSION}U-jdk_x64_mac_hotspot_${JDK_VERSION_URL_ENC2}.tar.gz -JDK_DOWNLOAD_URL_WIN=https://github.com/AdoptOpenJDK/openjdk${JDK_MAJOR_VERSION}-binaries/releases/download/jdk-${JDK_VERSION_URL_ENC}/OpenJDK${JDK_MAJOR_VERSION}U-jdk_x64_windows_hotspot_${JDK_VERSION_URL_ENC2}.zip -JDK_DOWNLOAD_FILENAME_LINUX="${JDK_DOWNLOAD_URL_LINUX##*/}" -JDK_DOWNLOAD_FILENAME_MAC="${JDK_DOWNLOAD_URL_MAC##*/}" -JDK_DOWNLOAD_FILENAME_WIN="${JDK_DOWNLOAD_URL_WIN##*/}" +variables["JDK_DOWNLOAD_FILENAME_linux"]="OpenJDK${JDK_MAJOR_VERSION}U-jdk_x64_linux_hotspot_${JDK_VERSION_URL_ENC2}.tar.gz" +variables["JDK_DOWNLOAD_FILENAME_mac"]="OpenJDK${JDK_MAJOR_VERSION}U-jdk_x64_mac_hotspot_${JDK_VERSION_URL_ENC2}.tar.gz" +variables["JDK_DOWNLOAD_FILENAME_win"]="OpenJDK${JDK_MAJOR_VERSION}U-jdk_x64_windows_hotspot_${JDK_VERSION_URL_ENC2}.zip" -JAVA_HOME_LINUX=$basedir/import/jdks/linux/jdk-$JDK_VERSION -JAVA_HOME_MAC=$basedir/import/jdks/mac/jdk-$JDK_VERSION/Contents/Home -JAVA_HOME_WIN=$basedir/import/jdks/win/jdk-$JDK_VERSION +variables["JAVA_HOME_linux"]="jdk-$JDK_VERSION" +variables["JAVA_HOME_mac"]="jdk-$JDK_VERSION/Contents/Home" +variables["JAVA_HOME_win"]="jdk-$JDK_VERSION" -# JavaFX from https://gluonhq.com/products/javafx/ -JAVAFX_VERSION=15.0.1 -JAVAFX_SDK_DOWNLOAD_URL_LINUX=https://download2.gluonhq.com/openjfx/$JAVAFX_VERSION/openjfx-${JAVAFX_VERSION}_linux-x64_bin-sdk.zip -JAVAFX_SDK_DOWNLOAD_URL_MAC=https://download2.gluonhq.com/openjfx/$JAVAFX_VERSION/openjfx-${JAVAFX_VERSION}_osx-x64_bin-sdk.zip -JAVAFX_SDK_DOWNLOAD_URL_WIN=https://download2.gluonhq.com/openjfx/$JAVAFX_VERSION/openjfx-${JAVAFX_VERSION}_windows-x64_bin-sdk.zip +JAVAFX_VERSION="15.0.1" -JAVAFX_JMODS_DOWNLOAD_URL_LINUX=https://download2.gluonhq.com/openjfx/$JAVAFX_VERSION/openjfx-${JAVAFX_VERSION}_linux-x64_bin-jmods.zip -JAVAFX_JMODS_DOWNLOAD_URL_MAC=https://download2.gluonhq.com/openjfx/$JAVAFX_VERSION/openjfx-${JAVAFX_VERSION}_osx-x64_bin-jmods.zip -JAVAFX_JMODS_DOWNLOAD_URL_WIN=https://download2.gluonhq.com/openjfx/$JAVAFX_VERSION/openjfx-${JAVAFX_VERSION}_windows-x64_bin-jmods.zip +variables["JAVAFX_SDK_FILENAME_linux"]="openjfx-${JAVAFX_VERSION}_linux-x64_bin-sdk.zip" +variables["JAVAFX_SDK_FILENAME_mac"]="openjfx-${JAVAFX_VERSION}_osx-x64_bin-sdk.zip" +variables["JAVAFX_SDK_FILENAME_win"]="openjfx-${JAVAFX_VERSION}_windows-x64_bin-sdk.zip" -JAVAFX_JMODS_DOWNLOAD_FILENAME_LINUX=openjfx-${JAVAFX_VERSION}_linux-x64_bin-jmods.zip -JAVAFX_JMODS_DOWNLOAD_FILENAME_MAC=openjfx-${JAVAFX_VERSION}_osx-x64_bin-jmods.zip -JAVAFX_JMODS_DOWNLOAD_FILENAME_WIN=openjfx-${JAVAFX_VERSION}_windows-x64_bin-jmods.zip +variables["JAVAFX_JMODS_FILENAME_linux"]="openjfx-${JAVAFX_VERSION}_linux-x64_bin-jmods.zip" +variables["JAVAFX_JMODS_FILENAME_mac"]="openjfx-${JAVAFX_VERSION}_osx-x64_bin-jmods.zip" +variables["JAVAFX_JMODS_FILENAME_win"]="openjfx-${JAVAFX_VERSION}_windows-x64_bin-jmods.zip" +variables["DECOMPRESS_linux"]="tar -C jdks/linux -zxf" +variables["DECOMPRESS_mac"]="tar -C jdks/mac -zxf" +variables["DECOMPRESS_win"]="unzip -q -d jdks/win" OS=`uname -s` if [ $OS = "Darwin" ]; then - export JAVA_HOME=$JAVA_HOME_MAC + export JAVA_HOME=$basedir/import/jdks/mac/${variables["JAVA_HOME_mac"]} else - export JAVA_HOME=$JAVA_HOME_LINUX + export JAVA_HOME=$basedir/import/jdks/linux/${variables["JAVA_HOME_linux"]} fi # get the SHA-256 hash of the specified file diff --git a/bin/zip-all.sh b/bin/zip-all.sh index 1fe56cb..8f8e838 100755 --- a/bin/zip-all.sh +++ b/bin/zip-all.sh @@ -20,7 +20,10 @@ mkdir -p "$basedir/dist-zip" cd "$basedir/dist" -for i in linux linux-gui mac mac-gui win win-gui; do cp -r ${i} "$basedir"/dist-zip-staging/i2p-zero-${i}.v${VERSION}; done +for i in ${TARGETS}; do + cp -r ${i} "$basedir"/dist-zip-staging/i2p-zero-${i}.v${VERSION} + cp -r ${i}-gui "$basedir"/dist-zip-staging/i2p-zero-${i}-gui.v${VERSION} +done versionDate=`date -r "$basedir"/org.getmonero.i2p.zero/src/org/getmonero/i2p/zero/VERSION +"%Y%m%d%H%M.%S"` @@ -28,9 +31,11 @@ find "$basedir"/dist-zip-staging -exec touch -t $versionDate {} \; cd "$basedir/dist-zip-staging" -for i in linux linux-gui mac mac-gui win win-gui; do - zip -r9 "$basedir"/dist-zip/i2p-zero-${i}.v${VERSION}.zip i2p-zero-${i}.v${VERSION} - normalizeZip "$basedir"/dist-zip/i2p-zero-${i}.v${VERSION}.zip +for i in ${TARGETS}; do + for j in "" "-gui"; do + zip -r9 "$basedir"/dist-zip/i2p-zero-${i}${j}.v${VERSION}.zip i2p-zero-${i}${j}.v${VERSION} + normalizeZip "$basedir"/dist-zip/i2p-zero-${i}${j}.v${VERSION}.zip + done done cd .. @@ -49,12 +54,10 @@ getFileSizeMB () { print4ColsJustified "OS" "Uncompressed size (MB)" "Compressed size (MB)" "v$VERSION Reproducible build SHA-256" print4ColsJustified "------------------------" "------------------------" "------------------------" "------------------------------------------------------------------" -print4ColsJustified "Mac" "`getFileSizeMB $basedir/dist/mac`" "`getFileSizeMB $basedir/dist-zip/i2p-zero-mac.v${VERSION}.zip`" "\``getHash $basedir/dist-zip/i2p-zero-mac.v${VERSION}.zip`\`" -print4ColsJustified "Windows" "`getFileSizeMB $basedir/dist/win`" "`getFileSizeMB $basedir/dist-zip/i2p-zero-win.v${VERSION}.zip`" "\``getHash $basedir/dist-zip/i2p-zero-win.v${VERSION}.zip`\`" -print4ColsJustified "Linux" "`getFileSizeMB $basedir/dist/linux`" "`getFileSizeMB $basedir/dist-zip/i2p-zero-linux.v${VERSION}.zip`" "\``getHash $basedir/dist-zip/i2p-zero-linux.v${VERSION}.zip`\`" -print4ColsJustified "Mac GUI" "`getFileSizeMB $basedir/dist/mac-gui`" "`getFileSizeMB $basedir/dist-zip/i2p-zero-mac-gui.v${VERSION}.zip`" "\``getHash $basedir/dist-zip/i2p-zero-mac-gui.v${VERSION}.zip`\`" -print4ColsJustified "Windows GUI" "`getFileSizeMB $basedir/dist/win-gui`" "`getFileSizeMB $basedir/dist-zip/i2p-zero-win-gui.v${VERSION}.zip`" "\``getHash $basedir/dist-zip/i2p-zero-win-gui.v${VERSION}.zip`\`" -print4ColsJustified "Linux GUI" "`getFileSizeMB $basedir/dist/linux-gui`" "`getFileSizeMB $basedir/dist-zip/i2p-zero-linux-gui.v${VERSION}.zip`" "\``getHash $basedir/dist-zip/i2p-zero-linux-gui.v${VERSION}.zip`\`" +for i in ${TARGETS}; do + print4ColsJustified "${i}" "`getFileSizeMB $basedir/dist/${i}`" "`getFileSizeMB $basedir/dist-zip/i2p-zero-${i}.v${VERSION}.zip`" "\``getHash $basedir/dist-zip/i2p-zero-${i}.v${VERSION}.zip`\`" + print4ColsJustified "${i} GUI" "`getFileSizeMB $basedir/dist/${i}-gui`" "`getFileSizeMB $basedir/dist-zip/i2p-zero-${i}-gui.v${VERSION}.zip`" "\``getHash $basedir/dist-zip/i2p-zero-${i}-gui.v${VERSION}.zip`\`" +done echo "" echo "Note: Reproducible builds are currently experimental. Due to JDK differences, Builds on Mac will consistently have different hashes than builds on Linux. Official releases will always be built using Docker." \ No newline at end of file