config.yml 2.76 KB
Newer Older
Mathieu Boespflug's avatar
Mathieu Boespflug committed
1
version: 2
2
3
4

aliases:
  - &defaults
Mathieu Boespflug's avatar
Mathieu Boespflug committed
5
    working_directory: ~/ghc
6
7
8
9
10
11
12
13
14
15

  # Make sure we have proper openssh before checkout: CircleCI git
  # does not check the repository out properly without it and also
  # takes 20 times longer than it should be.
  - &precheckout
    run:
      name: Install OpenSSH client
      command: |
        apt-get update -qq
        apt-get install -qy openssh-client
16
17
18
19
20
21
22
23
  - &prepare
    run:
      name: prepare-system
      command: .circleci/prepare-system.sh
  - &submodules
    run:
      name: submodules
      command: .circleci/fetch-submodules.sh
24
  - &buildenv
Ben Gamari's avatar
Ben Gamari committed
25
    THREADS: 3
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
    SKIP_PERF_TESTS: YES
    VERBOSE: 2
  - &boot
    run:
      name: Boot
      command: ./boot
  - &configure_unix
    run:
      name: Configure
      command: ./configure
  - &configure_bsd
    run:
      name: Configure
      command: ./configure --target=x86_64-unknown-freebsd10
  - &make
41
    run:
42
43
44
45
46
47
48
49
50
51
      name: Build
      command: "make -j$THREADS"
  - &test
    run:
      name: Test
      command: make test
  - &bindist
    run:
      name: Create bindist
      command: make binary-dist
52
53
54
55
56
      # Building bindist takes ~15 minutes without output, account for
      # that.
      no_output_timeout: "30m"
  - &collectartifacts
    run:
57
      name: Collect artifacts
58
59
60
61
62
63
64
      # We need this because CircleCI expects a path without
      # wildcards but bindist archive name is not static
      command: |
        mkdir -p /tmp/artifacts
        pwd
        find .
        cp ghc*.tar.xz /tmp/artifacts
65
66
67
  - &storeartifacts
    store-artifacts:
      path: /tmp/artifacts
68
69
70
71

jobs:
  "validate-x86_64-linux":
    resource_class: xlarge
Mathieu Boespflug's avatar
Mathieu Boespflug committed
72
    docker:
73
      - image: haskell:8.2
74
75
    environment:
      <<: *buildenv
76
    steps:
77
      - *precheckout
78
79
80
      - checkout
      - *prepare
      - *submodules
81
82
83
84
85
      - *boot
      - *configure_unix
      - *make
      - *test
      - *bindist
86
      - *collectartifacts
87
      - *storeartifacts
88
89

  "validate-x86_64-freebsd":
Mathieu Boespflug's avatar
Mathieu Boespflug committed
90
    resource_class: xlarge
91
92
93
94
    docker:
      - image: tweag/toolchain-x86_64-freebsd
    environment:
      TARGET: FreeBSD
95
      <<: *buildenv
96
    steps:
97
      - *precheckout
98
99
100
      - checkout
      - *prepare
      - *submodules
101
102
103
104
105
106
107
      - *boot
      - *configure_bsd
      - *make
      - *test
      - *bindist
      - *collectartifacts
      - *storeartifacts
108
109
110
111

  "validate-x86_64-darwin":
    macos:
      xcode: "9.0"
112
113
    environment:
      <<: *buildenv
Mathieu Boespflug's avatar
Mathieu Boespflug committed
114
    steps:
115
116
117
      - checkout
      - *prepare
      - *submodules
118
119
120
121
122
      - *boot
      - *configure_unix
      - *make
      - *test
      - *bindist
123
      - *collectartifacts
124
      - *storeartifacts
125
126
127
128
129
130
131
132
133

workflows:
  version: 2
  validate:
    jobs:
    - validate-x86_64-linux
    # FreeBSD disabled: https://github.com/haskell/unix/issues/102
    # - validate-x86_64-freebsd
    - validate-x86_64-darwin