about summary refs log tree commit diff
diff options
context:
space:
mode:
authorAlexis Beingessner <a.beingessner@gmail.com>2015-07-13 17:29:01 -0700
committerAlexis Beingessner <a.beingessner@gmail.com>2015-07-15 10:48:50 -0700
commite8a03285b724df71cbc32a96099ebe834ba09a00 (patch)
tree56fde7cb23717b85f40e32fd9fcad2af64ee4b48
parent67256dff6dd7526f0be9da5092a6b3e390654c8c (diff)
downloadrust-e8a03285b724df71cbc32a96099ebe834ba09a00.tar.gz
rust-e8a03285b724df71cbc32a96099ebe834ba09a00.zip
Ratchet up travis to build stage1 and our own LLVM.
Tidy is still run first for failing fast on the easy stuff.

To accomplish this we have travis actually persist ccache across builds. This
has LLVM built within 6 minutes, and all of stage1 built within 18.
Caching should work on fresh PRs (cache acquired from the master branch).
Because all we persist is ccache, there is minimal danger of persisting corrupt
build state.

I had to mangle `configure` a bit to make --enable-ccache work when custom
compilers are provide via CC and CXX.
-rw-r--r--.travis.yml30
-rwxr-xr-xconfigure34
2 files changed, 47 insertions, 17 deletions
diff --git a/.travis.yml b/.travis.yml
index 29d287bfb48..dc955bc2f2b 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,7 +1,9 @@
-# Use something that's not 'ruby' so we don't set up things like
-# RVM/bundler/ruby and whatnot. Right now 'rust' as a language actually
-# downloads a rust/cargo snapshot, which we don't really want for building rust.
+# ccache support is disabled unless your language is a C-derivative. However
+# `language: C` unconditionally sets `CC=compiler`. If we just set it in our
+# `env` it will be overwritten by the default (gcc 4.6).
 language: c
+compiler: /usr/bin/gcc-4.7
+cache: ccache
 sudo: false
 
 # The test suite is in general way too stressful for travis, especially in
@@ -9,12 +11,28 @@ sudo: false
 # back to only build the stage1 compiler and run a subset of tests, but this
 # didn't end up panning out very well.
 #
-# As a result, we're just using travis to run `make tidy` now. It'll help
-# everyone find out about their trailing spaces early on!
+# As a result, we're just using travis to run `make tidy` and *only* build
+# stage1 but *not* test it for now (a strict subset of the bootstrap). This will
+# catch "obvious" errors like style or not even compiling.
+#
+# We need gcc4.7 or higher to build LLVM, and travis (well, Ubuntu 12.04)
+# currently ships with 4.6. Gotta download our own.
 before_script:
-  - ./configure --llvm-root=path/to/nowhere
+  - ./configure --enable-ccache
 script:
   - make tidy
+  - make rustc-stage1 -j4
+
+env:
+  - CXX=/usr/bin/g++-4.7
+
+addons:
+  apt:
+    sources:
+    - ubuntu-toolchain-r-test
+    packages:
+    - gcc-4.7
+    - g++-4.7
 
 # Real testing happens on http://buildbot.rust-lang.org/
 #
diff --git a/configure b/configure
index 1d3611f88f0..da8630c46ff 100755
--- a/configure
+++ b/configure
@@ -1016,15 +1016,12 @@ fi
 
 if [ ! -z "$CFG_ENABLE_CCACHE" ]
 then
-    if [ -z "$CC" ]
+    if [ -z "$CFG_CCACHE" ]
     then
-        if [ -z "$CFG_CCACHE" ]
-        then
-            err "ccache requested but not found"
-        fi
-
-        CFG_CC="ccache $CFG_CC"
+        err "ccache requested but not found"
     fi
+
+    CFG_CC="ccache $CFG_CC"
 fi
 
 if [ -z "$CC" -a -z "$CFG_ENABLE_CLANG" -a -z "$CFG_GCC" ]
@@ -1513,11 +1510,26 @@ do
 
             (*)
             msg "inferring LLVM_CXX/CC from CXX/CC = $CXX/$CC"
-            LLVM_CXX_32="$CXX"
-            LLVM_CC_32="$CC"
+            if [ ! -z "$CFG_ENABLE_CCACHE" ]
+            then
+                if [ -z "$CFG_CCACHE" ]
+                then
+                    err "ccache requested but not found"
+                fi
+
+                LLVM_CXX_32="ccache $CXX"
+                LLVM_CC_32="ccache $CC"
+
+                LLVM_CXX_64="ccache $CXX"
+                LLVM_CC_64="ccache $CC"
+            else
+                LLVM_CXX_32="$CXX"
+                LLVM_CC_32="$CC"
+
+                LLVM_CXX_64="$CXX"
+                LLVM_CC_64="$CC"
+            fi
 
-            LLVM_CXX_64="$CXX"
-            LLVM_CC_64="$CC"
             ;;
         esac