|
1 | | -# This GitHub workflow config has been generated by a script via |
2 | | -# |
3 | | -# haskell-ci 'github' 'mat-chalmers.cabal' |
4 | | -# |
5 | | -# To regenerate the script (for example after adjusting tested-with) run |
6 | | -# |
7 | | -# haskell-ci regenerate |
8 | | -# |
9 | | -# For more information, see https://github.com/haskell-CI/haskell-ci |
10 | | -# |
11 | | -# version: 0.16.6 |
12 | | -# |
13 | | -# REGENDATA ("0.16.6",["github","mat-chalmers.cabal"]) |
14 | | -# |
15 | | -name: Haskell-CI |
| 1 | +name: review |
16 | 2 | on: |
17 | | - - push |
18 | 3 | - pull_request |
19 | 4 | jobs: |
20 | | - linux: |
21 | | - name: Haskell-CI - Linux - ${{ matrix.compiler }} |
| 5 | + check: |
| 6 | + name: Compile and test |
22 | 7 | runs-on: ubuntu-20.04 |
23 | | - timeout-minutes: |
24 | | - 60 |
25 | | - container: |
26 | | - image: buildpack-deps:bionic |
27 | | - continue-on-error: ${{ matrix.allow-failure }} |
28 | | - strategy: |
29 | | - matrix: |
30 | | - include: |
31 | | - - compiler: ghc-9.4.5 |
32 | | - compilerKind: ghc |
33 | | - compilerVersion: 9.4.5 |
34 | | - setup-method: ghcup |
35 | | - allow-failure: false |
36 | | - fail-fast: false |
| 8 | + timeout-minutes: 60 |
37 | 9 | steps: |
38 | | - - name: apt |
39 | | - run: | |
40 | | - apt-get update |
41 | | - apt-get install -y --no-install-recommends gnupg ca-certificates dirmngr curl git software-properties-common libtinfo5 |
42 | | - mkdir -p "$HOME/.ghcup/bin" |
43 | | - curl -sL https://downloads.haskell.org/ghcup/0.1.19.2/x86_64-linux-ghcup-0.1.19.2 > "$HOME/.ghcup/bin/ghcup" |
44 | | - chmod a+x "$HOME/.ghcup/bin/ghcup" |
45 | | - "$HOME/.ghcup/bin/ghcup" install ghc "$HCVER" || (cat "$HOME"/.ghcup/logs/*.* && false) |
46 | | - "$HOME/.ghcup/bin/ghcup" install cabal 3.10.1.0 || (cat "$HOME"/.ghcup/logs/*.* && false) |
47 | | - env: |
48 | | - HCKIND: ${{ matrix.compilerKind }} |
49 | | - HCNAME: ${{ matrix.compiler }} |
50 | | - HCVER: ${{ matrix.compilerVersion }} |
51 | | - - name: Set PATH and environment variables |
52 | | - run: | |
53 | | - echo "$HOME/.cabal/bin" >> $GITHUB_PATH |
54 | | - echo "LANG=C.UTF-8" >> "$GITHUB_ENV" |
55 | | - echo "CABAL_DIR=$HOME/.cabal" >> "$GITHUB_ENV" |
56 | | - echo "CABAL_CONFIG=$HOME/.cabal/config" >> "$GITHUB_ENV" |
57 | | - HCDIR=/opt/$HCKIND/$HCVER |
58 | | - HC=$HOME/.ghcup/bin/$HCKIND-$HCVER |
59 | | - echo "HC=$HC" >> "$GITHUB_ENV" |
60 | | - echo "HCPKG=$HOME/.ghcup/bin/$HCKIND-pkg-$HCVER" >> "$GITHUB_ENV" |
61 | | - echo "HADDOCK=$HOME/.ghcup/bin/haddock-$HCVER" >> "$GITHUB_ENV" |
62 | | - echo "CABAL=$HOME/.ghcup/bin/cabal-3.10.1.0 -vnormal+nowrap" >> "$GITHUB_ENV" |
63 | | - HCNUMVER=$(${HC} --numeric-version|perl -ne '/^(\d+)\.(\d+)\.(\d+)(\.(\d+))?$/; print(10000 * $1 + 100 * $2 + ($3 == 0 ? $5 != 1 : $3))') |
64 | | - echo "HCNUMVER=$HCNUMVER" >> "$GITHUB_ENV" |
65 | | - echo "ARG_TESTS=--enable-tests" >> "$GITHUB_ENV" |
66 | | - echo "ARG_BENCH=--enable-benchmarks" >> "$GITHUB_ENV" |
67 | | - echo "HEADHACKAGE=false" >> "$GITHUB_ENV" |
68 | | - echo "ARG_COMPILER=--$HCKIND --with-compiler=$HC" >> "$GITHUB_ENV" |
69 | | - echo "GHCJSARITH=0" >> "$GITHUB_ENV" |
70 | | - env: |
71 | | - HCKIND: ${{ matrix.compilerKind }} |
72 | | - HCNAME: ${{ matrix.compiler }} |
73 | | - HCVER: ${{ matrix.compilerVersion }} |
74 | | - - name: env |
75 | | - run: | |
76 | | - env |
77 | | - - name: write cabal config |
78 | | - run: | |
79 | | - mkdir -p $CABAL_DIR |
80 | | - cat >> $CABAL_CONFIG <<EOF |
81 | | - remote-build-reporting: anonymous |
82 | | - write-ghc-environment-files: never |
83 | | - remote-repo-cache: $CABAL_DIR/packages |
84 | | - logs-dir: $CABAL_DIR/logs |
85 | | - world-file: $CABAL_DIR/world |
86 | | - extra-prog-path: $CABAL_DIR/bin |
87 | | - symlink-bindir: $CABAL_DIR/bin |
88 | | - installdir: $CABAL_DIR/bin |
89 | | - build-summary: $CABAL_DIR/logs/build.log |
90 | | - store-dir: $CABAL_DIR/store |
91 | | - install-dirs user |
92 | | - prefix: $CABAL_DIR |
93 | | - repository hackage.haskell.org |
94 | | - url: http://hackage.haskell.org/ |
95 | | - EOF |
96 | | - cat >> $CABAL_CONFIG <<EOF |
97 | | - program-default-options |
98 | | - ghc-options: $GHCJOBS +RTS -M3G -RTS |
99 | | - EOF |
100 | | - cat $CABAL_CONFIG |
101 | | - - name: versions |
102 | | - run: | |
103 | | - $HC --version || true |
104 | | - $HC --print-project-git-commit-id || true |
105 | | - $CABAL --version || true |
| 10 | + - uses: haskell-actions/setup@v2 |
| 11 | + with: |
| 12 | + ghc-version: '9.4.5' # Exact version of ghc to use |
| 13 | + |
106 | 14 | - name: update cabal index |
107 | 15 | run: | |
108 | | - $CABAL v2-update -v |
109 | | - - name: install cabal-plan |
110 | | - run: | |
111 | | - mkdir -p $HOME/.cabal/bin |
112 | | - curl -sL https://github.com/haskell-hvr/cabal-plan/releases/download/v0.7.3.0/cabal-plan-0.7.3.0-x86_64-linux.xz > cabal-plan.xz |
113 | | - echo 'f62ccb2971567a5f638f2005ad3173dba14693a45154c1508645c52289714cb2 cabal-plan.xz' | sha256sum -c - |
114 | | - xz -d < cabal-plan.xz > $HOME/.cabal/bin/cabal-plan |
115 | | - rm -f cabal-plan.xz |
116 | | - chmod a+x $HOME/.cabal/bin/cabal-plan |
117 | | - cabal-plan --version |
| 16 | + cabal v2-update -v |
| 17 | +
|
118 | 18 | - name: checkout |
119 | 19 | uses: actions/checkout@v3 |
120 | | - with: |
121 | | - path: source |
122 | | - - name: initial cabal.project for sdist |
123 | | - run: | |
124 | | - touch cabal.project |
125 | | - echo "packages: $GITHUB_WORKSPACE/source/." >> cabal.project |
126 | | - cat cabal.project |
127 | | - - name: sdist |
128 | | - run: | |
129 | | - mkdir -p sdist |
130 | | - $CABAL sdist all --output-dir $GITHUB_WORKSPACE/sdist |
131 | | - - name: unpack |
132 | | - run: | |
133 | | - mkdir -p unpacked |
134 | | - find sdist -maxdepth 1 -type f -name '*.tar.gz' -exec tar -C $GITHUB_WORKSPACE/unpacked -xzvf {} \; |
135 | | - - name: generate cabal.project |
136 | | - run: | |
137 | | - PKGDIR_mat_chalmers="$(find "$GITHUB_WORKSPACE/unpacked" -maxdepth 1 -type d -regex '.*/mat-chalmers-[0-9.]*')" |
138 | | - echo "PKGDIR_mat_chalmers=${PKGDIR_mat_chalmers}" >> "$GITHUB_ENV" |
139 | | - rm -f cabal.project cabal.project.local |
140 | | - touch cabal.project |
141 | | - touch cabal.project.local |
142 | | - echo "packages: ${PKGDIR_mat_chalmers}" >> cabal.project |
143 | | - echo "package mat-chalmers" >> cabal.project |
144 | | - echo " ghc-options: -Werror=missing-methods" >> cabal.project |
145 | | - cat >> cabal.project <<EOF |
146 | | - EOF |
147 | | - $HCPKG list --simple-output --names-only | perl -ne 'for (split /\s+/) { print "constraints: $_ installed\n" unless /^(mat-chalmers)$/; }' >> cabal.project.local |
148 | | - cat cabal.project |
149 | | - cat cabal.project.local |
150 | | - - name: dump install plan |
151 | | - run: | |
152 | | - $CABAL v2-build $ARG_COMPILER $ARG_TESTS $ARG_BENCH --dry-run all |
153 | | - cabal-plan |
| 20 | + |
154 | 21 | - name: restore cache |
155 | 22 | uses: actions/cache/restore@v3 |
156 | 23 | with: |
157 | | - key: ${{ runner.os }}-${{ matrix.compiler }}-${{ github.sha }} |
| 24 | + key: ${{ runner.os }}-${{ github.sha }} |
158 | 25 | path: ~/.cabal/store |
159 | | - restore-keys: ${{ runner.os }}-${{ matrix.compiler }}- |
| 26 | + restore-keys: ${{ runner.os }}- |
| 27 | + |
160 | 28 | - name: install dependencies |
161 | | - run: | |
162 | | - $CABAL v2-build $ARG_COMPILER --disable-tests --disable-benchmarks --dependencies-only -j2 all |
163 | | - $CABAL v2-build $ARG_COMPILER $ARG_TESTS $ARG_BENCH --dependencies-only -j2 all |
164 | | - - name: build w/o tests |
165 | | - run: | |
166 | | - $CABAL v2-build $ARG_COMPILER --disable-tests --disable-benchmarks all |
167 | | - - name: build |
168 | | - run: | |
169 | | - $CABAL v2-build $ARG_COMPILER $ARG_TESTS $ARG_BENCH all --write-ghc-environment-files=always |
| 29 | + run: cabal v2-build -v --enable-tests all --dependencies-only -j2 all |
| 30 | + |
170 | 31 | - name: tests |
171 | | - run: | |
172 | | - $CABAL v2-test $ARG_COMPILER $ARG_TESTS $ARG_BENCH all --test-show-details=direct |
173 | | - - name: cabal check |
174 | | - run: | |
175 | | - cd ${PKGDIR_mat_chalmers} || false |
176 | | - ${CABAL} -vnormal check |
177 | | - - name: haddock |
178 | | - run: | |
179 | | - $CABAL v2-haddock --disable-documentation --haddock-all $ARG_COMPILER --with-haddock $HADDOCK $ARG_TESTS $ARG_BENCH all |
180 | | - - name: unconstrained build |
181 | | - run: | |
182 | | - rm -f cabal.project.local |
183 | | - $CABAL v2-build $ARG_COMPILER --disable-tests --disable-benchmarks all |
| 32 | + run: cabal v2-test --enable-tests all --test-show-details=direct |
| 33 | + |
184 | 34 | - name: save cache |
185 | 35 | uses: actions/cache/save@v3 |
186 | 36 | if: always() |
187 | 37 | with: |
188 | | - key: ${{ runner.os }}-${{ matrix.compiler }}-${{ github.sha }} |
| 38 | + key: ${{ runner.os }}-${{ github.sha }} |
189 | 39 | path: ~/.cabal/store |
0 commit comments