diff --git a/Toolchain/BuildClang.sh b/Toolchain/BuildClang.sh index 27f6d3f3922..465a52a2dbf 100755 --- a/Toolchain/BuildClang.sh +++ b/Toolchain/BuildClang.sh @@ -115,6 +115,43 @@ then exit 1 fi +# === CHECK CACHE AND REUSE === + +pushd "$DIR" + if [ "$TRY_USE_LOCAL_TOOLCHAIN" = "y" ]; then + mkdir -p Cache + echo "Cache (before):" + ls -l Cache + CACHED_TOOLCHAIN_ARCHIVE="Cache/ToolchainBinariesGithubActions.tar.gz" + if [ -r "${CACHED_TOOLCHAIN_ARCHIVE}" ] ; then + echo "Cache at ${CACHED_TOOLCHAIN_ARCHIVE} exists!" + echo "Extracting toolchain from cache:" + if tar xzf "${CACHED_TOOLCHAIN_ARCHIVE}" ; then + echo "Done 'building' the toolchain." + echo "Cache unchanged." + exit 0 + else + echo + echo + echo + echo "Could not extract cached toolchain archive." + echo "This means the cache is broken and *should be removed*!" + echo "As Github Actions cannot update a cache, this will unnecessarily" + echo "slow down all future builds for this hash, until someone" + echo "resets the cache." + echo + echo + echo + rm -f "${CACHED_TOOLCHAIN_ARCHIVE}" + fi + else + echo "Cache at ${CACHED_TOOLCHAIN_ARCHIVE} does not exist." + echo "Will rebuild toolchain from scratch, and save the result." + fi + fi + echo "::group::Actually building Toolchain" +popd + # === DOWNLOAD AND PATCH === pushd "$DIR/Tarballs" @@ -351,3 +388,19 @@ pushd "$DIR/Build/clang/$ARCH" buildstep "binutils/install" "$MAKE" install || exit 1 popd popd + +# === SAVE TO CACHE === +pushd "$DIR" + if [ "$TRY_USE_LOCAL_TOOLCHAIN" = "y" ]; then + echo "::endgroup::" + echo "Building cache tar:" + + echo "Building cache tar:" + + rm -f "${CACHED_TOOLCHAIN_ARCHIVE}" # Just in case + + tar czf "${CACHED_TOOLCHAIN_ARCHIVE}" Local/ + echo "Cache (after):" + ls -l Cache + fi +popd