X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=utils%2Fdownload_jres.sh;h=26442ea8a0c904a85669a57618d749054d0dacc6;hb=refs%2Fheads%2Fdevelop;hp=5bfc26dbd51f3a536d0c1931803869884f2123c5;hpb=f87c431823c2681b6b1e71f02b47af32121a35f1;p=jalview.git diff --git a/utils/download_jres.sh b/utils/download_jres.sh index 5bfc26d..5b8b30d 100755 --- a/utils/download_jres.sh +++ b/utils/download_jres.sh @@ -11,13 +11,19 @@ ### and ### ./tgz/jre-VERSION-OS-ARCH.tgz ### which is an archive of the _contents_ of ./jre-VERSION-OS-ARCH/jre/ and used by install4j for the installer +### bs 2021-10-26 +### Edited to use adoptium domain to gain access to Java 17 (LTS) versions. -BASE=https://api.adoptopenjdk.net/v3/binary/latest +BASE=https://api.adoptium.net/v3/binary/latest +ZULU_BASE=https://cdn.azul.com/zulu/bin RELEASE_TYPE=ga JVM_IMPL=hotspot HEAP_SIZE=normal -VENDOR=adoptopenjdk +VENDOR=eclipse IMAGE_TYPE=jre +TAR=tar +ZIP=zip +UNZIP=unzip STRIP_MAC_APP_BUNDLING=false CREATE_ARCHIVES="zip tgz" @@ -26,83 +32,145 @@ CREATE_ARCHIVES="zip tgz" RM=/bin/rm # unzip-strip from https://superuser.com/questions/518347/equivalent-to-tars-strip-components-1-in-unzip -unzip-strip() ( +unzip-strip() { local zip=$1 local dest=${2:-.} - local temp=$(mktemp -d) && unzip -qq -d "$temp" "$zip" && mkdir -p "$dest" && + local temp=$(mktemp -d) && $UNZIP -qq -d "$temp" "$zip" && mkdir -p "$dest" && shopt -s dotglob && local f=("$temp"/*) && if (( ${#f[@]} == 1 )) && [[ -d "${f[0]}" ]] ; then mv "$temp"/*/* "$dest" else mv "$temp"/* "$dest" fi && rmdir "$temp"/* "$temp" -) +} + +dl_zulu() { + local OS="$1" + local ARCH="$2" + local VERSION="$3" + local TARFILE="$4" + declare -A osmap + osmap[mac]=macosx + osmap[windows]=win + osmap[linux]=linux + ZOS="${osmap[$OS]}" + echo "- Looking for download from Azul" + LATEST_DL_URL_FILE=$(wget -q -O - "${ZULU_BASE}/" | perl -n -e 'm/]*href="(([^"]*\/)?zulu[^"]*-ca-'"${IMAGE_TYPE}""${VERSION}"'\.[^"]*-'"${ZOS}"'_'"${ARCH}"'.tar.gz)"[^"]*>/ && print "$1\n";' | tail -1) + local URL="${ZULU_BASE}/${LATEST_DL_URL_FILE}" + if [ -z "${LATEST_DL_URL_FILE}" ]; then + echo "- No ${IMAGE_TYPE}-${FEATURE_VERSION} download for ${OS}-${ARCH} '${URL}' found at Azul" + return 1 + fi + echo "- Found at Azul. Downloading '${URL}'" + wget -q -O "${TARFILE}" "${URL}" "${TARFILE}" + echo RETURN=$? + if [ "$?" != 0 ]; then + echo "- Download from Azul failed" + return 1 + fi + return 0 +} + +declare -A DOWNLOAD_SUMMARY + +for FEATURE_VERSION in 8 11 17; do + for OS_ARCH in mac:x64 mac:aarch64 windows:x64 linux:x64 linux:arm linux:aarch64; do + OS=${OS_ARCH%:*} + ARCH=${OS_ARCH#*:} + NAME="${IMAGE_TYPE}-${FEATURE_VERSION}-${OS}-${ARCH}" + TARFILE="${NAME}.tgz" + DOWNLOAD_SUMMARY["${OS_ARCH}-${IMAGE_TYPE}-${FEATURE_VERSION}"]="None" + STRIP_COMPONENTS=1 + MAC_STRIP_COMPONENTS=3 + echo "* Downloading ${TARFILE}" + URL="${BASE}/${FEATURE_VERSION}/${RELEASE_TYPE}/${OS}/${ARCH}/${IMAGE_TYPE}/${JVM_IMPL}/${HEAP_SIZE}/${VENDOR}" + wget -q -O "${TARFILE}" "${URL}" + if [ "$?" != 0 ]; then + echo "- No ${IMAGE_TYPE}-${FEATURE_VERSION} download for ${OS}-${ARCH} '${URL}' at Adoptium" + $RM -f "${TARFILE}" + + # Try Azul Zulu (not an API, a bit messier, but has Java 8 JRE for mac:aarch64 + dl_zulu "${OS}" "${ARCH}" "${FEATURE_VERSION}" "${TARFILE}" -for FEATURE_VERSION in 8 11; do - for OS in linux mac windows; do - for ARCH in x64 x32 arm; do - #for ARCH in aarch64 arm x32 x64; do - NAME="${IMAGE_TYPE}-${FEATURE_VERSION}-${OS}-${ARCH}" - TARFILE="${NAME}.tgz" - echo "* Downloading ${TARFILE}" - URL="${BASE}/${FEATURE_VERSION}/${RELEASE_TYPE}/${OS}/${ARCH}/${IMAGE_TYPE}/${JVM_IMPL}/${HEAP_SIZE}/${VENDOR}" - wget -q -O "${TARFILE}" "${URL}" if [ "$?" != 0 ]; then - echo "- No ${IMAGE_TYPE}-${FEATURE_VERSION} download for ${OS}-${ARCH} '${URL}'" - $RM -f "${TARFILE}" + DOWNLOAD_SUMMARY["${OS_ARCH}-${IMAGE_TYPE}-${FEATURE_VERSION}"]="None" continue; fi - echo "Unpacking ${TARFILE}" - JREDIR="${NAME}/${IMAGE_TYPE}" - [ x$NAME != x -a -e "${JREDIR}" ] && $RM -rf "${JREDIR}" - mkdir -p "${JREDIR}" - if [ x$OS = xwindows ]; then - echo "using unzip" - unzip-strip "${TARFILE}" "${JREDIR}" + STRIP_COMPONENTS=2 + MAC_STRIP_COMPONENTS=4 + DOWNLOAD_SUMMARY["${OS_ARCH}-${IMAGE_TYPE}-${FEATURE_VERSION}"]="Azul" + echo "Set ${OS_ARCH}-${IMAGE_TYPE}-${FEATURE_VERSION}=Azul" + else + DOWNLOAD_SUMMARY["${OS_ARCH}-${IMAGE_TYPE}-${FEATURE_VERSION}"]="Adoptium" + echo "Set ${OS_ARCH}-${IMAGE_TYPE}-${FEATURE_VERSION}=Adoptium" + fi + echo "Unpacking ${TARFILE}" + JREDIR="${NAME}/${IMAGE_TYPE}" + [ x$NAME != x -a -e "${JREDIR}" ] && $RM -rf "${JREDIR}" + mkdir -p "${JREDIR}" + if [ x$OS = xwindows ]; then + echo "using unzip" + unzip-strip "${TARFILE}" "${JREDIR}" + RET=$? + else + echo "using tar" + if [ x$OS = xmac -a x$STRIP_MAC_APP_BUNDLING = xtrue ]; then + echo "Running $TAR --strip-components=\"${MAC_STRIP_COMPONENTS}\" -C \"${JREDIR}\" -zxf \"${TARFILE}\" \"*/Contents/Home\"" + $TAR --strip-components="${MAC_STRIP_COMPONENTS}" -C "${JREDIR}" -zxf "${TARFILE}" "*/Contents/Home" RET=$? else - echo "using tar" - if [ x$OS = xmac -a x$STRIP_MAC_APP_BUNDLING = xtrue ]; then - tar --strip-components=3 -C "${JREDIR}" -zxf "${TARFILE}" "*/Contents/Home" - RET=$? - else - tar --strip-components=1 -C "${JREDIR}" -zxf "${TARFILE}" - RET=$? - fi - fi - if [ "$RET" != 0 ]; then - echo "Error unpacking ${TARFILE}" - exit 1 - fi - $RM "${TARFILE}" - if [ \! -z "$CREATE_ARCHIVES" ]; then - for CREATEARCHIVE in ${CREATE_ARCHIVES}; do - ARCHIVEDIR=$CREATEARCHIVE - case $CREATEARCHIVE in - zip) - EXT=${CREATEARCHIVE} - echo "Creating ${NAME}.${EXT} for getdown updates" - [ \! -d ${ARCHIVEDIR} ] && mkdir -p "${ARCHIVEDIR}" - ABSARCHIVEDIR="${PWD}/$ARCHIVEDIR" - ZIPFILE="${ABSARCHIVEDIR}/${NAME}.${CREATEARCHIVE}" - [ -e "${ZIPFILE}" ] && $RM "${ZIPFILE}" - cd ${NAME} - zip -X -r "${ZIPFILE}" "${IMAGE_TYPE}" - cd - - ;; - tgz) - EXT=tar.gz - echo "Creating ${NAME}.${EXT} for install4j bundling" - [ \! -d ${ARCHIVEDIR} ] && mkdir -p "${ARCHIVEDIR}" - tar -C "${JREDIR}" -zcf "${ARCHIVEDIR}/${NAME}.${EXT}" . - ;; - *) - echo "Archiving as '${CREATEARCHIVE}' file not supported" - ;; - esac - done + $TAR --strip-components="${STRIP_COMPONENTS}" -C "${JREDIR}" -zxf "${TARFILE}" + RET=$? fi - done + fi + if [ "$RET" != 0 ]; then + echo "Error unpacking ${TARFILE}" + exit 1 + fi + $RM "${TARFILE}" + if [ \! -z "$CREATE_ARCHIVES" ]; then + for CREATEARCHIVE in ${CREATE_ARCHIVES}; do + ARCHIVEDIR=$CREATEARCHIVE + case $CREATEARCHIVE in + zip) + EXT=${CREATEARCHIVE} + echo "Creating ${NAME}.${EXT} for getdown updates" + [ \! -d ${ARCHIVEDIR} ] && mkdir -p "${ARCHIVEDIR}" + ABSARCHIVEDIR="${PWD}/$ARCHIVEDIR" + ZIPFILE="${ABSARCHIVEDIR}/${NAME}.${CREATEARCHIVE}" + [ -e "${ZIPFILE}" ] && $RM "${ZIPFILE}" + cd ${NAME} + $ZIP -X -r "${ZIPFILE}" "${IMAGE_TYPE}" + cd - + ;; + tgz) + EXT=tar.gz + echo "Creating ${NAME}.${EXT} for install4j bundling" + [ \! -d ${ARCHIVEDIR} ] && mkdir -p "${ARCHIVEDIR}" + if [ x$OS = xmac ]; then + # install4j requires top level folder of "Contents" NOT "./Contents" + $TAR -C "${JREDIR}" -zcf "${ARCHIVEDIR}/${NAME}.${EXT}" Contents + else + $TAR -C "${JREDIR}" -zcf "${ARCHIVEDIR}/${NAME}.${EXT}" . + fi + # make symbolic link with _ instead of - for install4j9 + NEWNAME=${NAME//-/_} + echo "Linking from ${NEWNAME}.${EXT} for install4j9" + [ -e "${ARCHIVEDIR}/${NEWNAME}.${EXT}" ] && $RM "${ARCHIVEDIR}/${NEWNAME}.${EXT}" + ln -s "${NAME}.${EXT}" "${ARCHIVEDIR}/${NEWNAME}.${EXT}" + ;; + *) + echo "Archiving as '${CREATEARCHIVE}' file not supported" + ;; + esac + done + fi done done +echo "" +echo "Download Summary" +for OA in "${!DOWNLOAD_SUMMARY[@]}"; do + echo "$OA: ${DOWNLOAD_SUMMARY[$OA]}" +done +