Browse Source

Work around Travis CI ptrace regression

Travis CI deployed a change that disables ptrace capabilities in
container builds, which prevents LeakSanitizer on clang from working
properly.  Set "sudo: required" to force non-container builds for
clang and work around this.
Taylor Yu 6 years ago
parent
commit
3bf9174fa3
1 changed files with 37 additions and 5 deletions
  1. 37 5
      .travis.yml

+ 37 - 5
.travis.yml

@@ -1,8 +1,10 @@
 language: c
 
-compiler:
-  - gcc
-  - clang
+## Comment out the compiler list for now to allow an explicit build
+## matrix.
+# compiler:
+#   - gcc
+#   - clang
 
 notifications:
   irc:
@@ -28,6 +30,10 @@ dist: trusty
 
 ## We don't need sudo. (The "apt:" stanza after this allows us to not need sudo;
 ## otherwise, we would need it for getting dependencies.)
+##
+## We override this in the explicit build matrix to work around a
+## Travis CI environment regression
+## https://github.com/travis-ci/travis-ci/issues/9033
 sudo: false
 
 ## (Linux only) Download our dependencies
@@ -55,9 +61,13 @@ env:
     ## The Travis CI environment allows us two cores, so let's use both.
     - MAKEFLAGS="-j 2"
   matrix:
+    ## Leave at least one entry here or Travis seems to generate a
+    ## matrix entry with empty matrix environment variables.  Leaving
+    ## more than one entry causes unwanted matrix entries with
+    ## unspecified compilers.
     - RUST_OPTIONS="--enable-rust --enable-cargo-online-mode"
-    - RUST_OPTIONS="--enable-rust" TOR_RUST_DEPENDENCIES=true
-    - RUST_OPTIONS=""
+    # - RUST_OPTIONS="--enable-rust" TOR_RUST_DEPENDENCIES=true
+    # - RUST_OPTIONS=""
 
 matrix:
   ## If one build in the matrix fails (e.g. if building withour Rust and Clang
@@ -65,6 +75,28 @@ matrix:
   ## entire job early and call the whole thing a failure.
   fast_finish: true
 
+  ## Create explicit matrix entries to work around a Travis CI
+  ## environment issue.  Missing keys inherit from the first list
+  ## entry under that key outside the "include" clause.
+  include:
+    - compiler: gcc
+    - compiler: gcc
+      env: RUST_OPTIONS="--enable-rust" TOR_RUST_DEPENDENCIES=true
+    - compiler: gcc
+      env: RUST_OPTIONS=""
+    ## The "sudo: required" forces non-containerized builds, working
+    ## around a Travis CI environment issue: clang LeakAnalyzer fails
+    ## because it requires ptrace and the containerized environment no
+    ## longer allows ptrace.
+    - compiler: clang
+      sudo: required
+    - compiler: clang
+      sudo: required
+      env: RUST_OPTIONS="--enable-rust" TOR_RUST_DEPENDENCIES=true
+    - compiler: clang
+      sudo: required
+      env: RUST_OPTIONS=""
+
 before_install:
   ## If we're on OSX, homebrew usually needs to updated first
   - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew update ; fi