Toolchain: Add caching to BuildClang.sh for CI

This commit is contained in:
Daniel Bertalan 2021-08-05 23:45:07 +02:00 committed by Andreas Kling
parent 301cab188c
commit 9809e685c1
Notes: sideshowbarker 2024-07-18 07:15:49 +09:00

View file

@ -115,6 +115,43 @@ then
exit 1 exit 1
fi 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 === # === DOWNLOAD AND PATCH ===
pushd "$DIR/Tarballs" pushd "$DIR/Tarballs"
@ -351,3 +388,19 @@ pushd "$DIR/Build/clang/$ARCH"
buildstep "binutils/install" "$MAKE" install || exit 1 buildstep "binutils/install" "$MAKE" install || exit 1
popd popd
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