Follow-up to #13887, for promoted infix constructors
[ghc.git] / .travis.yml
index dd4606f..218f5ba 100644 (file)
@@ -1,41 +1,60 @@
+# The following enables container-based travis instances
+sudo: false
+
 git:
   submodules: false
 
-notifications:
-  email:
-    - mail@joachim-breitner.de
-    - ghc-builds@haskell.org
-
 env:
  - DEBUG_STAGE2=YES
  - DEBUG_STAGE2=NO
 
+# TODO. Install llvm once llvm's APT repository is working again.
+# See http://lists.llvm.org/pipermail/llvm-dev/2016-May/100303.html.
+addons:
+  apt:
+    sources:
+    - hvr-ghc
+    #- llvm-toolchain-precise-3.7
+    - ubuntu-toolchain-r-test
+    packages:
+    - cabal-install-1.18
+    - ghc-7.10.3
+    - alex-3.1.3
+    - happy-1.19.4
+    - python3
+    #- llvm-3.7
+
 before_install:
- - travis_retry sudo add-apt-repository -y ppa:hvr/ghc
- - travis_retry sudo add-apt-repository -y ppa:h-rayflood/gcc-upper
- - travis_retry sudo add-apt-repository -y ppa:h-rayflood/llvm-upper
- - travis_retry sudo apt-get update
- - travis_retry sudo apt-get install cabal-install-1.18 ghc-7.6.3 alex-3.1.3 happy-1.19.4 llvm-3.5
- - export PATH=/opt/ghc/7.6.3/bin:/opt/cabal/1.18/bin:/opt/alex/3.1.3/bin:/opt/happy/1.19.4/bin:/usr/lib/llvm-3.5/bin:$PATH
- - git config --global url."git://github.com/ghc/packages-".insteadOf     git://github.com/ghc/packages/
- - git config --global url."http://github.com/ghc/packages-".insteadOf    http://github.com/ghc/packages/
- - git config --global url."https://github.com/ghc/packages-".insteadOf   https://github.com/ghc/packages/
- - git config --global url."ssh://git@github.com/ghc/packages-".insteadOf ssh://git@github.com/ghc/packages/
- - git config --global url."git@github.com:/ghc/packages-".insteadOf      git@github.com:/ghc/packages/
- - git submodule update --init --recursive
-install:
-# - sudo apt-get update
-# - sudo apt-get install haskell-platform autoconf libtool make ncurses-dev g++ dblatex docbook-xsl docbook-utils
-# - cabal update
+ - export PATH=/opt/ghc/7.10.3/bin:/opt/cabal/1.18/bin:/opt/alex/3.1.3/bin:/opt/happy/1.19.4/bin:/usr/lib/llvm-3.7/bin:$PATH
+
+# Be explicit about which protocol to use, such that we don't have to repeat the rewrite command for each.
+ - git config remote.origin.url git://github.com/${TRAVIS_REPO_SLUG}.git
+ - git config --global url."git://github.com/${TRAVIS_REPO_SLUG%/*}/packages-".insteadOf "git://github.com/${TRAVIS_REPO_SLUG%/*}/packages/"
+ - git submodule --quiet init # Be quiet about these urls, as we may override them later.
+
+# Check if submodule repositories exist.
+ - git config --get-regexp submodule.*.url | while read entry url; do git ls-remote "$url" dummyref 2>/dev/null && echo "$entry = $url" || git config --unset-all "$entry" ; done
+
+# Use github.com/ghc for those submodule repositories we couldn't connect to.
+ - git config remote.origin.url git://github.com/ghc/ghc.git
+ - git config --global url."git://github.com/ghc/packages-".insteadOf git://github.com/ghc/packages/
+ - git submodule init # Don't be quiet, we want to show these urls.
+ - git submodule --quiet update --recursive # Now we can be quiet again.
+
 script:
- - echo 'V = 0' >> mk/validate.mk # otherwise we hit log file limits on travis.
  # do  not build docs
  - echo 'HADDOCK_DOCS       = NO' >> mk/validate.mk
- - echo 'BUILD_DOCBOOK_HTML = NO' >> mk/validate.mk
- - echo 'BUILD_DOCBOOK_PS   = NO' >> mk/validate.mk
- - echo 'BUILD_DOCBOOK_PDF  = NO' >> mk/validate.mk
+ - echo 'BUILD_SPHINX_HTML  = NO' >> mk/validate.mk
+ - echo 'BUILD_SPHINX_PDF   = NO' >> mk/validate.mk
  # do not build dynamic libraries
  - echo 'DYNAMIC_GHC_PROGRAMS = NO' >> mk/validate.mk
  - echo 'GhcLibWays = v' >> mk/validate.mk
- - if [ "$DEBUG_STAGE" = "YES" ]; then echo 'GhcStage2HcOpts += -DDEBUG' >> mk/validate.mk; fi
- - CPUS=2 SKIP_PERF_TESTS=YES ./validate --fast
+ - if [ "$DEBUG_STAGE2" = "YES" ]; then echo 'GhcStage2HcOpts += -DDEBUG' >> mk/validate.mk; fi
+ # * Use --quiet, otherwise the build log might exceed the limit of 4
+ # megabytes, causing Travis to kill our job.
+ # * But use VERBOSE=2 (the default, but not when using --quiet) otherwise
+ # the testsuite might not print output for over 10 minutes (more likely so
+ # when DEBUG_STAGE2=NO), causing Travis to again kill our job.
+ # * Use --fast, to stay within the time limits set by Travis.
+ # See Note [validate and testsuite speed] in toplevel Makefile.
+ - THREADS=3 SKIP_PERF_TESTS=YES VERBOSE=2 ./validate --fast --quiet