-
Notifications
You must be signed in to change notification settings - Fork 0
162 lines (162 loc) · 6.13 KB
/
Copy pathstack.yml
File metadata and controls
162 lines (162 loc) · 6.13 KB
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
######################################################
## ##
## !!!! Autogenerated YAML file, do not edit !!!! ##
## ##
## Edit source in /src/github/workflows/ instead! ##
## ##
######################################################
jobs:
auto-cancel:
if: |
!contains(github.event.head_commit.message, '[skip ci]')
&& !contains(github.event.head_commit.message, '[ci skip]')
&& !contains(github.event.head_commit.message, '[github skip]')
&& !contains(github.event.head_commit.message, '[skip github]')
runs-on: Ubuntu-latest
steps:
- uses: styfle/cancel-workflow-action@0.13.0
with:
access_token: ${{ github.token }}
stack:
defaults:
run:
shell: bash
env:
EXTRA_ARGS: --fast
NON_DEFAULT_FLAGS: --flag Agda:enable-cluster-counting --flag Agda:debug
needs: auto-cancel
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v6
- id: haskell-setup
uses: haskell-actions/setup@v2
with:
cabal-update: false
enable-stack: true
ghc-version: ${{ matrix.ghc-ver }}
stack-version: latest
- name: Environment settings based on the Haskell setup
run: |
echo "runner.os = ${{ runner.os }}"
echo "OSTYPE = ${{ env.OSTYPE }}"
echo "ghc-path = ${{ steps.haskell-setup.outputs.ghc-path }}"
echo "ghc-exe = ${{ steps.haskell-setup.outputs.ghc-exe }}"
echo "cabal-path = ${{ steps.haskell-setup.outputs.cabal-path }}"
echo "cabal-exe = ${{ steps.haskell-setup.outputs.cabal-exe }}"
echo "cabal-store = ${{ steps.haskell-setup.outputs.cabal-store }}"
echo "stack-path = ${{ steps.haskell-setup.outputs.stack-path }}"
echo "stack-exe = ${{ steps.haskell-setup.outputs.stack-exe }}"
echo "stack-root = ${{ steps.haskell-setup.outputs.stack-root }}"
echo "STACK_ROOT (orig) = ${{ env.STACK_ROOT }}"
echo "STACK_ROOT=${{ steps.haskell-setup.outputs.stack-root }}" >> "${GITHUB_ENV}"
echo "STACK_VER=$(stack --numeric-version)" >> "${GITHUB_ENV}"
GHC_VER=$(ghc --numeric-version)
echo "GHC_VER=${GHC_VER}" >> "${GITHUB_ENV}"
echo "ARGS=--stack-yaml=stack-${GHC_VER}.yaml --system-ghc --no-terminal" >> "${GITHUB_ENV}"
- if: runner.os == 'macOS'
name: Install the ICU library (macOS)
run: |
brew install icu4c
ICU4C=$(brew --prefix)/opt/icu4c
echo "PKG_CONFIG_PATH=${ICU4C}/lib/pkgconfig" >> "${GITHUB_ENV}"
- if: runner.os == 'Windows'
name: Install the ICU library (Windows)
run: |
# stack exec ${ARGS} -- pacman --noconfirm -Syuu
# stack exec ${ARGS} -- pacman --noconfirm -S msys2-keyring
# stack exec ${ARGS} -- bash -c "curl -LO ${ICU_URL} && pacman --noconfirm -U *.pkg.tar.zst"
# shellcheck disable=SC2086
stack exec ${ARGS} -- pacman --noconfirm -S mingw-w64-x86_64-icu mingw-w64-x86_64-pkgconf mingw-w64-x86_64-zlib
- name: Determine the ICU version
run: |
# shellcheck disable=SC2086
ICU_VER=$(stack exec ${ARGS} -- pkg-config --modversion icu-i18n)
echo "ICU_VER=${ICU_VER}"
echo "ICU_VER=${ICU_VER}" >> "${GITHUB_ENV}"
- name: Environment (review)
run: |
echo "STACK_ROOT (fix) = ${STACK_ROOT}"
echo "STACK_VER = ${STACK_VER}"
echo "GHC_VER = ${GHC_VER}"
echo "ICU_VER = ${ICU_VER}"
- env:
key: stack.yml-${{ runner.os }}-ghc-${{ env.GHC_VER }}-stack-${{ env.STACK_VER
}}-icu-${{ env.ICU_VER }}
id: cache
name: Restore cache from approximate key
uses: actions/cache/restore@v5
with:
key: ${{ env.key }}-plan-${{ hashFiles('Agda.cabal', format('stack-{0}.yaml',
env.GHC_VER)) }}
path: |
${{ env.STACK_ROOT }}
restore-keys: ${{ env.key}}-
- name: Install dependencies for Agda and `agda-tests` (i.e. the test suite).
run: |
# shellcheck disable=SC2086
stack build ${ARGS} ${EXTRA_ARGS} ${NON_DEFAULT_FLAGS} --test --only-dependencies
- name: Build Agda with the default flags in Agda.cabal. Also build `agda-tests`
(i.e. the test suite).
run: |
# shellcheck disable=SC2086
stack build ${ARGS} ${EXTRA_ARGS} --test --no-run-tests
- name: Run agda --version
run: |
# shellcheck disable=SC2086
stack run ${ARGS} -- --version
- name: Run agda --setup
run: |
# shellcheck disable=SC2086
stack run ${ARGS} -- --setup
- name: Run agda --help
run: |
# shellcheck disable=SC2086
stack run ${ARGS} -- --help
- name: Build Agda with the non-default flags Agda.cabal.
run: |
# shellcheck disable=SC2086
stack build ${ARGS} ${EXTRA_ARGS} ${NON_DEFAULT_FLAGS}
- if: always() && steps.cache.outputs.cache-matched-key != steps.cache.outputs.cache-primary-key
name: Save cache
uses: actions/cache/save@v5
with:
key: ${{ steps.cache.outputs.cache-primary-key }}
path: |
${{ env.STACK_ROOT }}
strategy:
fail-fast: false
matrix:
ghc-ver:
- 9.12.2
- 9.10.3
- 9.8.4
- 9.6.7
- 9.4.8
- 9.2.8
include:
- ghc-ver: 9.12.2
os: macos-15
- ghc-ver: 9.12.2
os: windows-2025
os:
- ubuntu-24.04
timeout-minutes: 60
name: Build (stack)
'on':
pull_request:
paths:
- .github/workflows/stack.yml
- Agda.cabal
- stack-*.yaml
- src/size-solver/size-solver.cabal
push:
branches:
- master
- ci-*
- release*
paths:
- .github/workflows/stack.yml
- Agda.cabal
- stack-*.yaml
- src/size-solver/size-solver.cabal
workflow_dispatch: null