Revert "CircleCI: Build DWARF-enabled Linux bindists"
[ghc.git] / .circleci / config.yml
index e42d849..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,49 +52,56 @@ 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: make test SKIP_PERF_TESTS=YES
+      command: |
+        mkdir -p test-results
+        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"
-  - &collectartifacts
+  - &storeartifacts
     run:
-      name: Collect artifacts
-      # We need this because CircleCI expects a path without
-      # wildcards but bindist archive name is not static
+      name: Store artifacts
       command: |
-        mkdir -p /tmp/artifacts
-        pwd
-        find .
-        cp ghc*.tar.xz /tmp/artifacts
-  - &storeartifacts
-    store-artifacts:
-      path: /tmp/artifacts
+        curl https://ghc-artifacts.s3.amazonaws.com/tools/ghc-artifact-collector-$GHC_COLLECTOR_FLAVOR --output ghc-artifact-collector
+        chmod +x ghc-artifact-collector
+        ./ghc-artifact-collector ghc*.tar.xz
+  - &trigger_on_tags
+    filters:
+      tags:
+        only: /^ghc-.*/
 
 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
     steps:
       - checkout
       - *prepare
@@ -97,10 +109,10 @@ jobs:
       - *boot
       - *configure_unix
       - *make
-      - *test
       - *bindist
-      - *collectartifacts
       - *storeartifacts
+      - *test
+      - *store_test_results
 
   "validate-x86_64-freebsd":
     resource_class: xlarge
@@ -109,6 +121,7 @@ jobs:
     environment:
       TARGET: FreeBSD
       <<: *buildenv
+      GHC_COLLECTOR_FLAVOR: x86_64-freebsd
     steps:
       - checkout
       - *prepare
@@ -116,19 +129,23 @@ jobs:
       - *boot
       - *configure_bsd
       - *make
-      - *test
       - *bindist
-      - *collectartifacts
       - *storeartifacts
+      - *test
+      - *store_test_results
 
   "validate-x86_64-darwin":
     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:
+      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
@@ -137,15 +154,15 @@ jobs:
       - *boot
       - *configure_unix
       - *make
-      - *test
       - *bindist
-      - *collectartifacts
       - *storeartifacts
+      - *test
+      - *store_test_results
 
   "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:
@@ -159,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:
@@ -170,11 +187,12 @@ jobs:
       - *configure_unreg
       - *make
       - *test
+      - *store_test_results
 
   "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
@@ -182,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
@@ -193,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
@@ -208,16 +226,18 @@ jobs:
       - *prepare
       - *submodules
       - *boot
-      - *configure_unreg
+      - *configure_unix
       - *make
       - *test
+      - *store_test_results
 
   "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
     steps:
       - checkout
       - *prepare
@@ -225,17 +245,18 @@ jobs:
       - *boot
       - *configure_unix_32
       - *make
-      - *test
       - *bindist
-      - *collectartifacts
       - *storeartifacts
+      - *test
+      - *store_test_results
 
   "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
     steps:
       - checkout
       - *prepare
@@ -243,23 +264,44 @@ jobs:
       - *boot
       - *configure_unix
       - *make
-      - *test
       - *bindist
-      - *collectartifacts
       - *storeartifacts
+      - *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:
     jobs:
-    - validate-x86_64-linux
+    - validate-x86_64-linux:
+        *trigger_on_tags
     # FreeBSD disabled: https://github.com/haskell/unix/issues/102
     # - validate-x86_64-freebsd
-    - validate-x86_64-darwin
+    - validate-x86_64-darwin:
+        *trigger_on_tags
     - validate-x86_64-linux-llvm
-    - validate-i386-linux
+    - validate-i386-linux:
+        *trigger_on_tags
     - validate-hadrian-x86_64-linux
-    - validate-x86_64-fedora
+    - validate-x86_64-fedora:
+        *trigger_on_tags
 
   nightly:
     triggers:
@@ -273,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: