summaryrefslogtreecommitdiff
path: root/.gitlab-ci.yml
blob: b0cf24dbc871870c0f3299795443cb4a539c6789 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
variables:
  GIT_SSL_NO_VERIFY: "1"

before_script:
  - python .gitlab/fix-submodules.py
  - git submodule sync --recursive
  - git submodule update --init --recursive
  - git checkout .gitmodules

############################################################
# Validation via Pipelines (hadrian)
############################################################

.validate-hadrian:
  script:
    - bash .circleci/prepare-system.sh
    - if [[ -d ./cabal-cache ]]; then cp -R ./.cabal-cache ~/.cabal-cache; fi
    - ./boot
    - ./configure
    - hadrian/build.cabal.sh -j`mk/detect-cpu-count.sh`
  cache:
    key: hadrian
    paths:
      - cabal-cache
  image: ghcci/x86_64-linux-deb8:0.1

.validate-x86_64-linux-hadrian:
  extends: .validate-hadrian
  before_script:
    # workaround for docker permissions
    - sudo chown ghc:ghc -R .
  tags:
    - x86_64-linux

############################################################
# Validation via Pipelines (make)
############################################################

.validate:
  script:
    - make clean || true
    - ./boot
    - ./configure
    - |
      THREADS=`mk/detect-cpu-count.sh`
      make V=0 -j$THREADS HADDOCK_DOCS=NO
    - |
      make binary-dist TAR_COMP_OPTS="-1"
      mv ghc-*.tar.xz ghc.tar.xz
    - |
      THREADS=`mk/detect-cpu-count.sh`
      make test THREADS=$THREADS JUNIT_FILE=../../junit.xml
  image: ghcci/x86_64-linux-deb8:0.1
  artifacts:
    when: always
    reports:
      junit: junit.xml
    paths:
      - ghc.tar.xz
      - junit.xml

.validate-x86_64-darwin:
  extends: .validate
  tags:
    - x86_64-darwin
  variables:
    GHC_VERSION: 8.6.2
    MACOSX_DEPLOYMENT_TARGET: "10.7"
    # Only Sierra and onwards supports clock_gettime. See #12858
    ac_cv_func_clock_gettime: "no"
  before_script:
    - python .gitlab/fix-submodules.py
    - git submodule sync --recursive
    - git submodule update --init --recursive
    - git checkout .gitmodules

    - bash .gitlab/darwin-init.sh
    - PATH="`pwd`/toolchain/bin:$PATH"
      # Disable sphinx PDF output as MacTeX apparently doesn't provide xelatex
    - echo "BUILD_SPHINX_PDF=NO" >> mk/build.mk
  after_script:
    - cp -Rf $HOME/.cabal cabal-cache
  cache:
    key: darwin
    paths:
      - cabal-cache
      - toolchain

validate-x86_64-linux:
  extends: .validate
  tags:
    - x86_64-linux
  before_script:
    - python .gitlab/fix-submodules.py
    - git submodule sync --recursive
    - git submodule update --init --recursive
    - git checkout .gitmodules

    - bash .circleci/prepare-system.sh
    # workaround for docker permissions
    - sudo chown ghc:ghc -R .
  after_script:
    - cp -Rf $HOME/.cabal cabal-cache
  cache:
    key: darwin
    paths:
      - cabal-cache
      - toolchain

############################################################
# Validation via Pipelines (make, Windows)
############################################################

.validate-x86_64-windows:
  variables:
    GHC_VERSION: "8.6.2"
  script:
    - bash -e .gitlab/win32-init.sh
    - |
      set MSYSTEM=MINGW64
      python boot
      bash -c './configure --with-ghc=`pwd`/toolchain/bin/ghc --enable-tarballs-autodownload HappyCmd=`pwd`/toolchain/bin/happy AlexCmd=`pwd`/toolchain/bin/alex'
      mkdir -p _build
      cp -R inplace/mingw _build/mingw
    - bash -c "PATH=`pwd`/toolchain/bin:$PATH hadrian/build.cabal.sh -j`mk/detect-cpu-count.sh` --flavour=Quick"
    - bash -c "PATH=`pwd`/toolchain/bin:$PATH hadrian/build.cabal.sh binary-dist"
    - mv ghc-*.tar.xz ghc.tar.xz
    - bash -c 'make V=0 -j`mk/detect-cpu-count.sh` HADDOCK_DOCS=NO test THREADS=$THREADS JUNIT_FILE=../../junit.xml'
    - cp -Rf $APPDATA/cabal cabal-cache
  cache:
    key: windows
    paths:
      - cabal-cache
      - ghc-8.6.2
      - ghc-tarballs
  tags:
    - x86_64-windows


############################################################
# Validation via CircleCI
############################################################

.circleci:
  image: ghcci/x86_64-linux-deb8:0.1
  artifacts:
    when: always
    reports:
      junit: junit.xml
    paths:
      - ghc.tar.xz
      - junit.xml
  tags:
    - circleci

# All validation jobs keep the bindists and test results are artifacts,
# when we get far enough to generate them.
#
# This requires updating the maximum artifacts size limit in Gitlab to
# something like 200MB.

circleci-validate-x86_64-linux:
  extends: .circleci
  script: ".gitlab/circle-ci-job.sh validate-x86_64-linux"

circleci-validate-i386-linux:
  extends: .circleci
  script: ".gitlab/circle-ci-job.sh validate-i386-linux"

# circleci-validate-x86_64-freebsd:
#   extends: .circleci
#   script: ".gitlab/circle-ci-job.sh validate-x86_64-freebsd"

circleci-validate-x86_64-darwin:
  extends: .circleci
  script: ".gitlab/circle-ci-job.sh validate-x86_64-darwin"