Revert "CircleCI: Build DWARF-enabled Linux bindists"
[ghc.git] / .circleci / config.yml
index 74b88b3..f356901 100644 (file)
@@ -1,3 +1,6 @@
+# Questions about this file?
+# See https://ghc.haskell.org/trac/ghc/wiki/ContinuousIntegration/Usage.
+
 version: 2
 
 aliases:
@@ -12,7 +15,9 @@ aliases:
       name: submodules
       command: .circleci/fetch-submodules.sh
   - &buildenv
-    THREADS: 9
+    # ideally we would simply set THREADS here instead of re-detecting it every
+    # time we need it below. Unfortunately, there is no way to set an environment
+    # variable with the result of a shell script.
     SKIP_PERF_TESTS: YES
     VERBOSE: 2
   - &boot
@@ -30,12 +35,12 @@ aliases:
   - &configure_unix
     run:
       name: Configure
-      command: ./configure
+      command: ./configure $CONFIGURE_OPTS
   - &configure_unix_32
     run:
       name: Configure
       command: |
-        setarch i386 ./configure --with-ghc=/opt/ghc-i386/8.2.2/bin/ghc
+        setarch i386 ./configure --with-ghc=/opt/ghc-i386/8.4.2/bin/ghc
   - &configure_bsd
     run:
       name: Configure
@@ -47,30 +52,33 @@ aliases:
   - &make
     run:
       name: Build
-      command: "make -j$THREADS"
+      command: "make -j`mk/detect-cpu-count.sh` V=0"
   - &build_hadrian
     run:
       name: Build GHC using Hadrian
       command: |
         cabal update
-        hadrian/build.sh -j$THREADS
+        hadrian/build.sh -j`mk/detect-cpu-count.sh`
   - &test
     run:
       name: Test
       command: |
         mkdir -p test-results
-        make test SKIP_PERF_TESTS=YES JUNIT_FILE=../../test-results/junit.xml
+        make test THREADS=`mk/detect-cpu-count.sh` SKIP_PERF_TESTS=YES JUNIT_FILE=../../test-results/junit.xml
   - &store_test_results
     store_test_results:
       path: test-results
   - &slowtest
     run:
       name: Full Test
-      command: make slowtest SKIP_PERF_TESTS=YES
+      command: |
+        mkdir -p test-results
+        make slowtest SKIP_PERF_TESTS=YES THREADS=`mk/detect-cpu-count.sh` JUNIT_FILE=../../test-results/junit.xml
   - &bindist
     run:
       name: Create bindist
-      command: make binary-dist
+      # Reduce compression effort to 3
+      command: make binary-dist TAR_COMP_OPTS="-2"
       # Building bindist takes ~15 minutes without output, account for
       # that.
       no_output_timeout: "30m"
@@ -90,7 +98,7 @@ jobs:
   "validate-x86_64-linux":
     resource_class: xlarge
     docker:
-      - image: ghcci/x86_64-linux:0.0.1
+      - image: ghcci/x86_64-linux:0.0.4
     environment:
       <<: *buildenv
       GHC_COLLECTOR_FLAVOR: x86_64-linux
@@ -130,12 +138,15 @@ jobs:
     macos:
       xcode: "9.0"
     environment:
+      # Disable sphinx PDF output as MacTeX apparently doesn't provide xelatex
+      BUILD_SPHINX_PDF: "NO"
       MACOSX_DEPLOYMENT_TARGET: "10.7"
       # Only Sierra and onwards supports clock_gettime. See #12858
       ac_cv_func_clock_gettime: "no"
-    environment:
-      <<: *buildenv
       GHC_COLLECTOR_FLAVOR: x86_64-darwin
+      # Build with in-tree GMP since this isn't available on OS X by default.
+      CONFIGURE_OPTS: --with-intree-gmp
+      <<: *buildenv
     steps:
       - checkout
       - *prepare
@@ -151,7 +162,7 @@ jobs:
   "validate-hadrian-x86_64-linux":
     resource_class: xlarge
     docker:
-      - image: ghcci/x86_64-linux:0.0.1
+      - image: ghcci/x86_64-linux:0.0.4
     environment:
       <<: *buildenv
     steps:
@@ -165,7 +176,7 @@ jobs:
   "validate-x86_64-linux-unreg":
     resource_class: xlarge
     docker:
-      - image: ghcci/x86_64-linux:0.0.1
+      - image: ghcci/x86_64-linux:0.0.4
     environment:
       <<: *buildenv
     steps:
@@ -181,7 +192,7 @@ jobs:
   "validate-x86_64-linux-llvm":
     resource_class: xlarge
     docker:
-      - image: ghcci/x86_64-linux:0.0.1
+      - image: ghcci/x86_64-linux:0.0.4
     environment:
       <<: *buildenv
       BUILD_FLAVOUR: perf-llvm
@@ -189,8 +200,8 @@ jobs:
       - run:
           name: Install LLVM
           command: |
-            curl http://releases.llvm.org/5.0.0/clang+llvm-5.0.0-x86_64-linux-gnu-debian8.tar.xz | tar -xJC ..
-            echo "export PATH=`pwd`/../clang+llvm-5.0.0-x86_64-linux-gnu-debian8/bin:\$PATH" >> $BASH_ENV
+            curl http://releases.llvm.org/6.0.0/clang+llvm-6.0.0-x86_64-linux-gnu-debian8.tar.xz | tar -xJC ..
+            echo "export PATH=`pwd`/../clang+llvm-6.0.0-x86_64-linux-gnu-debian8/bin:\$PATH" >> $BASH_ENV
       - run:
           name: Verify that llc works
           command: llc
@@ -200,13 +211,13 @@ jobs:
       - *boot
       - *configure_unix
       - *make
-      - *slowtest
+      - *test
 
   # Nightly build with -DDEBUG using devel2 flavour
   "validate-x86_64-linux-debug":
     resource_class: xlarge
     docker:
-      - image: ghcci/x86_64-linux:0.0.1
+      - image: ghcci/x86_64-linux:0.0.4
     environment:
       BUILD_FLAVOUR: devel2
       <<: *buildenv
@@ -215,7 +226,7 @@ jobs:
       - *prepare
       - *submodules
       - *boot
-      - *configure_unreg
+      - *configure_unix
       - *make
       - *test
       - *store_test_results
@@ -223,7 +234,7 @@ jobs:
   "validate-i386-linux":
     resource_class: xlarge
     docker:
-      - image: ghcci/i386-linux:0.0.1
+      - image: ghcci/i386-linux:0.0.5
     environment:
       <<: *buildenv
       GHC_COLLECTOR_FLAVOR: i386-linux
@@ -242,7 +253,7 @@ jobs:
   "validate-x86_64-fedora":
     resource_class: xlarge
     docker:
-      - image: ghcci/x86_64-linux-fedora:0.0.2
+      - image: ghcci/x86_64-linux-fedora:0.0.15
     environment:
       <<: *buildenv
       GHC_COLLECTOR_FLAVOR: x86_64-fedora
@@ -258,6 +269,23 @@ jobs:
       - *test
       - *store_test_results
 
+  "slow-validate-x86_64-linux":
+    resource_class: xlarge
+    docker:
+      - image: ghcci/x86_64-linux:0.0.4
+    environment:
+      <<: *buildenv
+      GHC_COLLECTOR_FLAVOR: x86_64-linux
+    steps:
+      - checkout
+      - *prepare
+      - *submodules
+      - *boot
+      - *configure_unix
+      - *make
+      - *slowtest
+      - *store_test_results
+
 workflows:
   version: 2
   validate:
@@ -287,6 +315,7 @@ workflows:
     - validate-x86_64-linux-unreg
     - validate-x86_64-linux-llvm
     - validate-x86_64-linux-debug
+    - slow-validate-x86_64-linux
 
 notify:
   webhooks: