summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.travis.yml1
-rw-r--r--ci/before_install.sh22
2 files changed, 15 insertions, 8 deletions
diff --git a/.travis.yml b/.travis.yml
index b0a2a75f..639832dd 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 719c4efe..0a2535ea 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