on master help sign in
Update CIs, use fail-fast
a79ca83Harendra Kumar
.github/workflows/haskell.yml+88−62
@@ -8,7 +8,7 @@ on:
8
8
9jobs:
9jobs:
10 build:
10 build:
11− name: GHC ${{ matrix.name }}
11+ name: GHC ${{matrix.name}}
12 env:
12 env:
13 # packcheck environment variables
13 # packcheck environment variables
14 LC_ALL: C.UTF-8
14 LC_ALL: C.UTF-8
@@ -47,106 +47,115 @@ jobs:
47 DOCTEST: ${{ matrix.doctest }}
47 DOCTEST: ${{ matrix.doctest }}
48
48
49 runs-on: ${{ matrix.runner }}
49 runs-on: ${{ matrix.runner }}
50+ continue-on-error: ${{ matrix.ignore_error }}
50 strategy:
51 strategy:
51− fail-fast: false
52+ fail-fast: true
52 matrix:
53 matrix:
54+ # The order is important to optimize fail-fast.
53 name:
55 name:
56+ - 8.10.7-sdist-fusion-inspection-Werror
54− - 9.2.1
57+ - 9.2.1-docspec
55− - 9.0.1
56− - 8.10.7+stack
57− - 8.10.7+macOS
58− - 8.10.7+linux+coverage+cabal
58+ - 8.10.7-coverage
59− - 8.10.7+docspec
59+
60− - 8.8.4
60+ # Note: if cabal.project is not specified benchmarks and tests won't
61− - 8.8.4+inspection+fusion-plugin+Werror
61+ # run. But we need at least one test where we test without
62− - 8.6.5+fusion-plugin
62+ # cabal.project because that is how hackage would build it.
63− - 8.6.5+streamk
64− - 8.4.4+debug
65 include:
63 include:
64+ - name: head
65+ ghc_version: head
66+ runner: ubuntu-latest
67+ build: cabal
68+ cabal_version: latest
69+ cabal_project: cabal.project.ghc-head
70+ disable_sdist_build: "y"
71+ ignore_error: true
66 - name: 9.2.1
72 - name: 9.2.1
67 ghc_version: 9.2.1
73 ghc_version: 9.2.1
74+ runner: ubuntu-latest
68− build: cabal-v2
75+ build: cabal
69− cabal_build_options: "--allow-newer=hsc2hs"
76+ cabal_project: cabal.project
77+ cabal_version: 3.6
70 disable_sdist_build: "y"
78 disable_sdist_build: "y"
79+ ignore_error: false
80+ - name: 9.2.1-docspec
81+ ghc_version: 9.2.1
71 runner: ubuntu-latest
82 runner: ubuntu-latest
83+ doctest: "y"
72 cabal_version: 3.6
84 cabal_version: 3.6
85+ ignore_error: false
73 - name: 9.0.1
86 - name: 9.0.1
74 ghc_version: 9.0.1
87 ghc_version: 9.0.1
88+ runner: ubuntu-latest
75− build: cabal-v2
89+ build: cabal
76− cabal_build_options: "--allow-newer=hsc2hs"
90+ cabal_version: 3.6
91+ cabal_project: cabal.project
77 disable_sdist_build: "y"
92 disable_sdist_build: "y"
93+ ignore_error: false
94+ - name: 8.10.7-sdist-stack
78 runner: ubuntu-latest
95 runner: ubuntu-latest
79− cabal_version: 3.4
80− - name: 8.10.7+stack
81 build: stack
96 build: stack
82− resolver: lts-18.18
97+ resolver: lts-18.23
83 stack_yaml: stack.yaml
98 stack_yaml: stack.yaml
84 sdist_options: "--ignore-check"
99 sdist_options: "--ignore-check"
85 stack_build_options: "--flag streamly-benchmarks:-opt"
100 stack_build_options: "--flag streamly-benchmarks:-opt"
86− runner: ubuntu-latest
87− cabal_version: 3.4
101+ cabal_version: 3.6
102+ ignore_error: false
88− - name: 8.10.7+macOS
103+ - name: 8.10.7-macos
89 ghc_version: 8.10.7
104 ghc_version: 8.10.7
90− build: cabal-v2
91− disable_sdist_build: "y"
92 runner: macos-latest
105 runner: macos-latest
106+ build: cabal
93− cabal_version: 3.4
107+ cabal_version: 3.6
108+ cabal_project: cabal.project
109+ disable_sdist_build: "y"
110+ ignore_error: false
94− - name: 8.10.7+linux+coverage+cabal
111+ - name: 8.10.7-coverage
95 ghc_version: 8.10.7
112 ghc_version: 8.10.7
113+ runner: ubuntu-latest
96 coverage: "y"
114 coverage: "y"
115+ cabal_version: 3.6
116+ ignore_error: false
117+ - name: 8.10.7-sdist-fusion-inspection-Werror
118+ ghc_version: 8.10.7
97 runner: ubuntu-latest
119 runner: ubuntu-latest
98− cabal_version: 3.4
99− - name: 8.8.4+inspection+fusion-plugin+Werror
100− ghc_version: 8.8.4
101− build: cabal-v2
120+ build: cabal
121+ cabal_version: 3.6
102 cabal_project: cabal.project.Werror
122 cabal_project: cabal.project.Werror
103 cabal_build_options: "--flag fusion-plugin --flag inspection"
123 cabal_build_options: "--flag fusion-plugin --flag inspection"
104− runner: ubuntu-latest
124+ ignore_error: false
105− cabal_version: 3.4
106− - name: 8.8.4
125+ - name: 8.8.4-sdist-fusion
107 ghc_version: 8.8.4
126 ghc_version: 8.8.4
127+ runner: ubuntu-latest
108 build: cabal
128 build: cabal
129+ cabal_version: 3.6
109 cabal_project: cabal.project
130 cabal_project: cabal.project
110− cabal_build_options: "--flag -opt"
131+ cabal_build_options: "--flag fusion-plugin"
111− runner: ubuntu-latest
132+ ignore_error: false
112− cabal_version: 3.4
113− - name: 8.6.5+streamk
133+ - name: 8.6.5-sdist-streamk-unoptimized
114 ghc_version: 8.6.5
134 ghc_version: 8.6.5
135+ runner: ubuntu-latest
115− build: cabal-v2
136+ build: cabal
137+ cabal_version: 3.6
116 cabal_project: cabal.project
138 cabal_project: cabal.project
117 cabal_build_options: "--flag streamk --flag -opt"
139 cabal_build_options: "--flag streamk --flag -opt"
118− runner: ubuntu-latest
140+ ignore_error: false
119− cabal_version: 3.4
141+ - name: 8.6.5-sdist-debug-unoptimized
120− - name: 8.6.5+fusion-plugin
121 ghc_version: 8.6.5
142 ghc_version: 8.6.5
122− build: cabal-v2
123− cabal_project: cabal.project
124− cabal_build_options: "--flag fusion-plugin"
125− # haddock generation does not work with 8.6.5+fusion-plugin
126− disable_docs: "y"
127 runner: ubuntu-latest
143 runner: ubuntu-latest
128− cabal_version: 3.4
129− - name: 8.4.4+debug
130− ghc_version: 8.4.4
131− build: cabal-v2
144+ build: cabal
145+ cabal_version: 3.6
132 cabal_project: cabal.project
146 cabal_project: cabal.project
133 cabal_build_options: "--flag debug --flag -opt"
147 cabal_build_options: "--flag debug --flag -opt"
148+ ignore_error: false
149+ - name: 8.4.4-sdist
150+ ghc_version: 8.4.4
134 runner: ubuntu-latest
151 runner: ubuntu-latest
135− cabal_version: 3.4
152+ build: cabal
136− - name: 8.10.7+docspec
153+ cabal_version: 3.6
137− ghc_version: 8.10.7
154+ ignore_error: false
138− doctest: "y"
139− runner: ubuntu-latest
140− cabal_version: 3.4
141
155
142 steps:
156 steps:
143 - uses: actions/checkout@v2
157 - uses: actions/checkout@v2
144
158
145− - uses: haskell/actions/setup@v1
146− with:
147− ghc-version: ${{ matrix.ghc_version }}
148− cabal-version: ${{ matrix.cabal_version }}
149−
150 - uses: actions/cache@v1
159 - uses: actions/cache@v1
151 name: Cache ~/.cabal
160 name: Cache ~/.cabal
152 with:
161 with:
@@ -162,6 +171,23 @@ jobs:
162 if test ! -e "$PACKCHECK_LOCAL_PATH"; then $CURL -sL -o "$PACKCHECK_LOCAL_PATH" $PACKCHECK_URL; fi;
171 if test ! -e "$PACKCHECK_LOCAL_PATH"; then $CURL -sL -o "$PACKCHECK_LOCAL_PATH" $PACKCHECK_URL; fi;
163 chmod +x $PACKCHECK_LOCAL_PATH
172 chmod +x $PACKCHECK_LOCAL_PATH
164
173
174+ os=$(uname -s -m)
175+ case "$os" in
176+ "Linux x86_64") GHCUP_ARCH="x86_64-linux" ;;
177+ "Darwin x86_64") GHCUP_ARCH="x86_64-apple-darwin" ;;
178+ *) echo "Unknown OS/Arch: $os"; exit 1;;
179+ esac
180+
181+ $CURL -sL -o ./ghcup https://downloads.haskell.org/~ghcup/0.1.17.4/${GHCUP_ARCH}-ghcup-0.1.17.4
182+ chmod +x ./ghcup
183+ if test "$GHCVER" = "head"
184+ then
185+ ./ghcup install ghc -u https://gitlab.haskell.org/ghc/ghc/-/jobs/artifacts/master/raw/ghc-x86_64-deb10-linux-integer-simple.tar.xz?job=validate-x86_64-linux-deb10-integer-simple head
186+ else
187+ ./ghcup install ghc $GHCVER
188+ fi
189+ ./ghcup set ghc $GHCVER
190+
165 - name: Run tests
191 - name: Run tests
166 run: |
192 run: |
167 if test -n "$DOCTEST"
193 if test -n "$DOCTEST"