summaryrefslogtreecommitdiff
path: root/.circleci/config.yml
diff options
context:
space:
mode:
Diffstat (limited to '.circleci/config.yml')
-rw-r--r--.circleci/config.yml317
1 files changed, 317 insertions, 0 deletions
diff --git a/.circleci/config.yml b/.circleci/config.yml
new file mode 100644
index 0000000000..19780abbe9
--- /dev/null
+++ b/.circleci/config.yml
@@ -0,0 +1,317 @@
+# Questions about this file?
+# See https://ghc.haskell.org/trac/ghc/wiki/ContinuousIntegration/Usage.
+
+version: 2
+
+aliases:
+ - &defaults
+ working_directory: ~/ghc
+ - &prepare
+ run:
+ name: prepare-system
+ command: .circleci/prepare-system.sh
+ - &submodules
+ run:
+ name: submodules
+ command: .circleci/fetch-submodules.sh
+ - &buildenv
+ # 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
+ run:
+ name: Boot
+ command: |
+ ./boot
+
+ cat <<EOF >> mk/build.mk
+ BuildFlavour=$BUILD_FLAVOUR
+ ifneq "\$(BuildFlavour)" ""
+ include mk/flavours/\$(BuildFlavour).mk
+ endif
+ EOF
+ - &configure_unix
+ run:
+ name: Configure
+ command: ./configure
+ - &configure_unix_32
+ run:
+ name: Configure
+ command: |
+ setarch i386 ./configure --with-ghc=/opt/ghc-i386/8.4.2/bin/ghc
+ - &configure_bsd
+ run:
+ name: Configure
+ command: ./configure --target=x86_64-unknown-freebsd10
+ - &configure_unreg
+ run:
+ name: Configure
+ command: ./configure --enable-unregisterised
+ - &make
+ run:
+ name: Build
+ 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`mk/detect-cpu-count.sh`
+ - &test
+ run:
+ name: Test
+ 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
+ - &bindist
+ run:
+ name: Create bindist
+ # 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"
+ - &storeartifacts
+ run:
+ name: Store artifacts
+ command: |
+ 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.4
+ environment:
+ <<: *buildenv
+ GHC_COLLECTOR_FLAVOR: x86_64-linux
+ steps:
+ - checkout
+ - *prepare
+ - *submodules
+ - *boot
+ - *configure_unix
+ - *make
+ - *bindist
+ - *storeartifacts
+ - *test
+ - *store_test_results
+
+ "validate-x86_64-freebsd":
+ resource_class: xlarge
+ docker:
+ - image: ghcci/x86_64-freebsd
+ environment:
+ TARGET: FreeBSD
+ <<: *buildenv
+ GHC_COLLECTOR_FLAVOR: x86_64-freebsd
+ steps:
+ - checkout
+ - *prepare
+ - *submodules
+ - *boot
+ - *configure_bsd
+ - *make
+ - *bindist
+ - *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"
+ GHC_COLLECTOR_FLAVOR: x86_64-darwin
+ <<: *buildenv
+ steps:
+ - checkout
+ - *prepare
+ - *submodules
+ - *boot
+ - *configure_unix
+ - *make
+ - *bindist
+ - *storeartifacts
+ - *test
+ - *store_test_results
+
+ "validate-hadrian-x86_64-linux":
+ resource_class: xlarge
+ docker:
+ - image: ghcci/x86_64-linux:0.0.4
+ environment:
+ <<: *buildenv
+ steps:
+ - checkout
+ - *prepare
+ - *submodules
+ - *boot
+ - *configure_unix
+ - *build_hadrian
+
+ "validate-x86_64-linux-unreg":
+ resource_class: xlarge
+ docker:
+ - image: ghcci/x86_64-linux:0.0.4
+ environment:
+ <<: *buildenv
+ steps:
+ - checkout
+ - *prepare
+ - *submodules
+ - *boot
+ - *configure_unreg
+ - *make
+ - *test
+ - *store_test_results
+
+ "validate-x86_64-linux-llvm":
+ resource_class: xlarge
+ docker:
+ - image: ghcci/x86_64-linux:0.0.4
+ environment:
+ <<: *buildenv
+ BUILD_FLAVOUR: perf-llvm
+ steps:
+ - run:
+ name: Install LLVM
+ command: |
+ 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
+ - checkout
+ - *prepare
+ - *submodules
+ - *boot
+ - *configure_unix
+ - *make
+ - *test
+
+ # Nightly build with -DDEBUG using devel2 flavour
+ "validate-x86_64-linux-debug":
+ resource_class: xlarge
+ docker:
+ - image: ghcci/x86_64-linux:0.0.4
+ environment:
+ BUILD_FLAVOUR: devel2
+ <<: *buildenv
+ steps:
+ - checkout
+ - *prepare
+ - *submodules
+ - *boot
+ - *configure_unix
+ - *make
+ - *test
+ - *store_test_results
+
+ "validate-i386-linux":
+ resource_class: xlarge
+ docker:
+ - image: ghcci/i386-linux:0.0.5
+ environment:
+ <<: *buildenv
+ GHC_COLLECTOR_FLAVOR: i386-linux
+ steps:
+ - checkout
+ - *prepare
+ - *submodules
+ - *boot
+ - *configure_unix_32
+ - *make
+ - *bindist
+ - *storeartifacts
+ - *test
+ - *store_test_results
+
+ "validate-x86_64-fedora":
+ resource_class: xlarge
+ docker:
+ - image: ghcci/x86_64-linux-fedora:0.0.15
+ environment:
+ <<: *buildenv
+ GHC_COLLECTOR_FLAVOR: x86_64-fedora
+ steps:
+ - checkout
+ - *prepare
+ - *submodules
+ - *boot
+ - *configure_unix
+ - *make
+ - *bindist
+ - *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
+
+workflows:
+ version: 2
+ validate:
+ jobs:
+ - validate-x86_64-linux:
+ *trigger_on_tags
+ # FreeBSD disabled: https://github.com/haskell/unix/issues/102
+ # - validate-x86_64-freebsd
+ - validate-x86_64-darwin:
+ *trigger_on_tags
+ - validate-x86_64-linux-llvm
+ - validate-i386-linux:
+ *trigger_on_tags
+ - validate-hadrian-x86_64-linux
+ - validate-x86_64-fedora:
+ *trigger_on_tags
+
+ nightly:
+ triggers:
+ - schedule:
+ cron: "0 0 * * *"
+ filters:
+ branches:
+ only:
+ - master
+ jobs:
+ - validate-x86_64-linux-unreg
+ - validate-x86_64-linux-llvm
+ - validate-x86_64-linux-debug
+ - slow-validate-x86_64-linux
+
+notify:
+ webhooks:
+ - url: https://phabricator.haskell.org/harbormaster/hook/circleci/