From e179367f7a4aa98d2322d6e611d9e1b593036c2c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emilio=20Cobos=20=C3=81lvarez?= Date: Wed, 9 Aug 2017 12:16:37 +0200 Subject: [PATCH] ci: Cache LLVM builds. Fixes #896 --- .travis.yml | 1 + ci/before_install.sh | 22 ++++++++++++++-------- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/.travis.yml b/.travis.yml index b0a2a75f7d..639832dd02 100644 --- a/.travis.yml +++ b/.travis.yml @@ -30,6 +30,7 @@ matrix: cache: directories: - $HOME/.cargo + - $HOME/.llvm-builds before_install: . ./ci/before_install.sh diff --git a/ci/before_install.sh b/ci/before_install.sh index 719c4efe50..0a2535eaf3 100644 --- a/ci/before_install.sh +++ b/ci/before_install.sh @@ -6,25 +6,31 @@ if [ "${TRAVIS_OS_NAME}" == "osx" ]; then rvm get head || true fi -function llvm_download() { +function llvm_download_if_needed() { export LLVM_VERSION_TRIPLE="${LLVM_VERSION}" export LLVM=clang+llvm-${LLVM_VERSION_TRIPLE}-x86_64-$1 - wget http://llvm.org/releases/${LLVM_VERSION_TRIPLE}/${LLVM}.tar.xz - mkdir llvm - tar -xf ${LLVM}.tar.xz -C llvm --strip-components=1 + local llvm_build_dir="$HOME/.llvm-builds/${LLVM}" - export LLVM_CONFIG_PATH=`pwd`/llvm/bin/llvm-config + if [ -d "${llvm_build_dir}" ]; then + echo "Using cached LLVM build for ${LLVM} in ${llvm_build_dir}"; + else + wget http://llvm.org/releases/${LLVM_VERSION_TRIPLE}/${LLVM}.tar.xz + mkdir -p "${llvm_build_dir}" + tar -xf ${LLVM}.tar.xz -C "${llvm_build_dir}" --strip-components=1 + fi + + export LLVM_CONFIG_PATH="${llvm_build_dir}/bin/llvm-config" if [ "${TRAVIS_OS_NAME}" == "osx" ]; then - cp llvm/lib/libclang.dylib /usr/local/lib/libclang.dylib + cp "${llvm_build_dir}/lib/libclang.dylib" /usr/local/lib/libclang.dylib fi } if [ "${TRAVIS_OS_NAME}" == "linux" ]; then - llvm_download linux-gnu-ubuntu-14.04 + llvm_download_if_needed linux-gnu-ubuntu-14.04 else - llvm_download apple-darwin + llvm_download_if_needed apple-darwin fi popd