diff --git a/scripts/download-core.sh b/scripts/download-core.sh index ac74df80..d619641c 100755 --- a/scripts/download-core.sh +++ b/scripts/download-core.sh @@ -5,26 +5,52 @@ set -o pipefail : ${REALM_CORE_VERSION:=0.95.6} # set to "current" to always use the current build -echo "Downloading dependency: core ${REALM_CORE_VERSION}" +download_core() { + echo "Downloading dependency: core ${REALM_CORE_VERSION}" -TMP_DIR="$TMPDIR/core_bin" -mkdir -p "${TMP_DIR}" -CORE_TMP_TAR="${TMP_DIR}/core-${REALM_CORE_VERSION}.tar.bz2.tmp" -CORE_TAR="${TMP_DIR}/core-${REALM_CORE_VERSION}.tar.bz2" + TMP_DIR="$TMPDIR/core_bin" + mkdir -p "${TMP_DIR}" + CORE_TMP_TAR="${TMP_DIR}/core-${REALM_CORE_VERSION}.tar.bz2.tmp" + CORE_TAR="${TMP_DIR}/core-${REALM_CORE_VERSION}.tar.bz2" -if [ ! -f "${CORE_TAR}" ]; then - curl -f -L -s "https://static.realm.io/downloads/core/realm-core-${REALM_CORE_VERSION}.tar.bz2" -o "${CORE_TMP_TAR}" || - (echo "Downloading core failed. Please try again once you have an Internet connection." && exit 1) - mv "${CORE_TMP_TAR}" "${CORE_TAR}" + if [ ! -f "${CORE_TAR}" ]; then + curl -f -L -s "https://static.realm.io/downloads/core/realm-core-${REALM_CORE_VERSION}.tar.bz2" -o "${CORE_TMP_TAR}" || + (echo "Downloading core failed. Please try again once you have an Internet connection." && exit 1) + mv "${CORE_TMP_TAR}" "${CORE_TAR}" + else + echo "Using cached core from TEMPDIR" + fi + + ( + cd "${TMP_DIR}" + rm -rf core + tar xjf "${CORE_TAR}" + mv core core-${REALM_CORE_VERSION} + ) + + rm -rf core-${REALM_CORE_VERSION} core + mv ${TMP_DIR}/core-${REALM_CORE_VERSION} . + ln -s core-${REALM_CORE_VERSION} core +} +if [ -d core -a -d ../realm-core -a ! -L core ]; then + # Allow newer versions than expected for local builds as testing + # with unreleased versions is one of the reasons to use a local build + if ! $(grep -i "${REALM_CORE_VERSION} Release notes" core/release_notes.txt >/dev/null); then + echo "Local build of core is out of date." + exit 1 + else + echo "The core library seems to be up to date." + fi +elif ! [ -L core ]; then + echo "core is not a symlink. Deleting..." + rm -rf core + download_core + # With a prebuilt version we only want to check the first non-empty + # line so that checking out an older commit will download the + # appropriate version of core if the already-present version is too new + elif ! $(grep -m 1 . core/release_notes.txt | grep -i "${REALM_CORE_VERSION} RELEASE NOTES" >/dev/null); then + download_core + else + echo "The core library seems to be up to date." fi -( - cd "${TMP_DIR}" - rm -rf core - tar xjf "${CORE_TAR}" - mv core core-${REALM_CORE_VERSION} -) - -rm -rf core-${REALM_CORE_VERSION} core -mv ${TMP_DIR}/core-${REALM_CORE_VERSION} . -ln -s core-${REALM_CORE_VERSION} core