Skip to content

Commit 99d3a34

Browse files
authored
Allow servant-0.19, drop old GHCs (#58)
* Allow servant-0.19, drop old GHCs * Restrict servant-0.19 on ghcjs
1 parent a940d3f commit 99d3a34

File tree

5 files changed

+135
-59
lines changed

5 files changed

+135
-59
lines changed

.github/workflows/haskell-ci.yml

Lines changed: 92 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
# This GitHub workflow config has been generated by a script via
22
#
3-
# haskell-ci 'github' '--config=cabal.haskell-ci' 'cabal.project'
3+
# haskell-ci 'github' 'cabal.project' '--allow-failures' '>= 9.2' '--distribution' 'focal'
44
#
55
# To regenerate the script (for example after adjusting tested-with) run
66
#
77
# haskell-ci regenerate
88
#
99
# For more information, see https://github.com/haskell-CI/haskell-ci
1010
#
11-
# version: 0.12
11+
# version: 0.14
1212
#
13-
# REGENDATA ("0.12",["github","--config=cabal.haskell-ci","cabal.project"])
13+
# REGENDATA ("0.14",["github","cabal.project","--allow-failures",">= 9.2","--distribution","focal"])
1414
#
1515
name: Haskell-CI
1616
on:
@@ -24,57 +24,91 @@ jobs:
2424
linux:
2525
name: Haskell-CI - Linux - ${{ matrix.compiler }}
2626
runs-on: ubuntu-18.04
27+
timeout-minutes:
28+
60
2729
container:
28-
image: buildpack-deps:bionic
30+
image: buildpack-deps:focal
2931
continue-on-error: ${{ matrix.allow-failure }}
3032
strategy:
3133
matrix:
3234
include:
33-
- compiler: ghc-8.10.4
35+
- compiler: ghc-9.0.2
36+
compilerKind: ghc
37+
compilerVersion: 9.0.2
38+
setup-method: ghcup
39+
allow-failure: false
40+
- compiler: ghc-8.10.7
41+
compilerKind: ghc
42+
compilerVersion: 8.10.7
43+
setup-method: ghcup
3444
allow-failure: false
3545
- compiler: ghc-8.8.4
46+
compilerKind: ghc
47+
compilerVersion: 8.8.4
48+
setup-method: hvr-ppa
3649
allow-failure: false
3750
- compiler: ghc-8.6.5
38-
allow-failure: false
39-
- compiler: ghc-8.4.4
40-
allow-failure: false
41-
- compiler: ghc-8.2.2
42-
allow-failure: false
43-
- compiler: ghc-8.0.2
51+
compilerKind: ghc
52+
compilerVersion: 8.6.5
53+
setup-method: hvr-ppa
4454
allow-failure: false
4555
fail-fast: false
4656
steps:
4757
- name: apt
4858
run: |
4959
apt-get update
50-
apt-get install -y --no-install-recommends gnupg ca-certificates dirmngr curl git software-properties-common
51-
apt-add-repository -y 'ppa:hvr/ghc'
52-
apt-get update
53-
apt-get install -y $CC cabal-install-3.4
60+
apt-get install -y --no-install-recommends gnupg ca-certificates dirmngr curl git software-properties-common libtinfo5
61+
if [ "${{ matrix.setup-method }}" = ghcup ]; then
62+
mkdir -p "$HOME/.ghcup/bin"
63+
curl -sL https://downloads.haskell.org/ghcup/0.1.17.3/x86_64-linux-ghcup-0.1.17.3 > "$HOME/.ghcup/bin/ghcup"
64+
chmod a+x "$HOME/.ghcup/bin/ghcup"
65+
"$HOME/.ghcup/bin/ghcup" install ghc "$HCVER"
66+
"$HOME/.ghcup/bin/ghcup" install cabal 3.6.2.0
67+
else
68+
apt-add-repository -y 'ppa:hvr/ghc'
69+
apt-get update
70+
apt-get install -y "$HCNAME"
71+
mkdir -p "$HOME/.ghcup/bin"
72+
curl -sL https://downloads.haskell.org/ghcup/0.1.17.3/x86_64-linux-ghcup-0.1.17.3 > "$HOME/.ghcup/bin/ghcup"
73+
chmod a+x "$HOME/.ghcup/bin/ghcup"
74+
"$HOME/.ghcup/bin/ghcup" install cabal 3.6.2.0
75+
fi
5476
env:
55-
CC: ${{ matrix.compiler }}
77+
HCKIND: ${{ matrix.compilerKind }}
78+
HCNAME: ${{ matrix.compiler }}
79+
HCVER: ${{ matrix.compilerVersion }}
5680
- name: Set PATH and environment variables
5781
run: |
5882
echo "$HOME/.cabal/bin" >> $GITHUB_PATH
59-
echo "LANG=C.UTF-8" >> $GITHUB_ENV
60-
echo "CABAL_DIR=$HOME/.cabal" >> $GITHUB_ENV
61-
echo "CABAL_CONFIG=$HOME/.cabal/config" >> $GITHUB_ENV
62-
HCDIR=$(echo "/opt/$CC" | sed 's/-/\//')
63-
HCNAME=ghc
64-
HC=$HCDIR/bin/$HCNAME
65-
echo "HC=$HC" >> $GITHUB_ENV
66-
echo "HCPKG=$HCDIR/bin/$HCNAME-pkg" >> $GITHUB_ENV
67-
echo "HADDOCK=$HCDIR/bin/haddock" >> $GITHUB_ENV
68-
echo "CABAL=/opt/cabal/3.4/bin/cabal -vnormal+nowrap" >> $GITHUB_ENV
83+
echo "LANG=C.UTF-8" >> "$GITHUB_ENV"
84+
echo "CABAL_DIR=$HOME/.cabal" >> "$GITHUB_ENV"
85+
echo "CABAL_CONFIG=$HOME/.cabal/config" >> "$GITHUB_ENV"
86+
HCDIR=/opt/$HCKIND/$HCVER
87+
if [ "${{ matrix.setup-method }}" = ghcup ]; then
88+
HC=$HOME/.ghcup/bin/$HCKIND-$HCVER
89+
echo "HC=$HC" >> "$GITHUB_ENV"
90+
echo "HCPKG=$HOME/.ghcup/bin/$HCKIND-pkg-$HCVER" >> "$GITHUB_ENV"
91+
echo "HADDOCK=$HOME/.ghcup/bin/haddock-$HCVER" >> "$GITHUB_ENV"
92+
echo "CABAL=$HOME/.ghcup/bin/cabal-3.6.2.0 -vnormal+nowrap" >> "$GITHUB_ENV"
93+
else
94+
HC=$HCDIR/bin/$HCKIND
95+
echo "HC=$HC" >> "$GITHUB_ENV"
96+
echo "HCPKG=$HCDIR/bin/$HCKIND-pkg" >> "$GITHUB_ENV"
97+
echo "HADDOCK=$HCDIR/bin/haddock" >> "$GITHUB_ENV"
98+
echo "CABAL=$HOME/.ghcup/bin/cabal-3.6.2.0 -vnormal+nowrap" >> "$GITHUB_ENV"
99+
fi
100+
69101
HCNUMVER=$(${HC} --numeric-version|perl -ne '/^(\d+)\.(\d+)\.(\d+)(\.(\d+))?$/; print(10000 * $1 + 100 * $2 + ($3 == 0 ? $5 != 1 : $3))')
70-
echo "HCNUMVER=$HCNUMVER" >> $GITHUB_ENV
71-
echo "ARG_TESTS=--enable-tests" >> $GITHUB_ENV
72-
echo "ARG_BENCH=--enable-benchmarks" >> $GITHUB_ENV
73-
echo "HEADHACKAGE=false" >> $GITHUB_ENV
74-
echo "ARG_COMPILER=--$HCNAME --with-compiler=$HC" >> $GITHUB_ENV
75-
echo "GHCJSARITH=0" >> $GITHUB_ENV
102+
echo "HCNUMVER=$HCNUMVER" >> "$GITHUB_ENV"
103+
echo "ARG_TESTS=--enable-tests" >> "$GITHUB_ENV"
104+
echo "ARG_BENCH=--enable-benchmarks" >> "$GITHUB_ENV"
105+
echo "HEADHACKAGE=false" >> "$GITHUB_ENV"
106+
echo "ARG_COMPILER=--$HCKIND --with-compiler=$HC" >> "$GITHUB_ENV"
107+
echo "GHCJSARITH=0" >> "$GITHUB_ENV"
76108
env:
77-
CC: ${{ matrix.compiler }}
109+
HCKIND: ${{ matrix.compilerKind }}
110+
HCNAME: ${{ matrix.compiler }}
111+
HCVER: ${{ matrix.compilerVersion }}
78112
- name: env
79113
run: |
80114
env
@@ -97,6 +131,10 @@ jobs:
97131
repository hackage.haskell.org
98132
url: http://hackage.haskell.org/
99133
EOF
134+
cat >> $CABAL_CONFIG <<EOF
135+
program-default-options
136+
ghc-options: $GHCJOBS +RTS -M3G -RTS
137+
EOF
100138
cat $CABAL_CONFIG
101139
- name: versions
102140
run: |
@@ -137,22 +175,23 @@ jobs:
137175
- name: generate cabal.project
138176
run: |
139177
PKGDIR_servant_multipart="$(find "$GITHUB_WORKSPACE/unpacked" -maxdepth 1 -type d -regex '.*/servant-multipart-[0-9.]*')"
140-
echo "PKGDIR_servant_multipart=${PKGDIR_servant_multipart}" >> $GITHUB_ENV
178+
echo "PKGDIR_servant_multipart=${PKGDIR_servant_multipart}" >> "$GITHUB_ENV"
141179
PKGDIR_servant_multipart_api="$(find "$GITHUB_WORKSPACE/unpacked" -maxdepth 1 -type d -regex '.*/servant-multipart-api-[0-9.]*')"
142-
echo "PKGDIR_servant_multipart_api=${PKGDIR_servant_multipart_api}" >> $GITHUB_ENV
180+
echo "PKGDIR_servant_multipart_api=${PKGDIR_servant_multipart_api}" >> "$GITHUB_ENV"
143181
PKGDIR_servant_multipart_client="$(find "$GITHUB_WORKSPACE/unpacked" -maxdepth 1 -type d -regex '.*/servant-multipart-client-[0-9.]*')"
144-
echo "PKGDIR_servant_multipart_client=${PKGDIR_servant_multipart_client}" >> $GITHUB_ENV
182+
echo "PKGDIR_servant_multipart_client=${PKGDIR_servant_multipart_client}" >> "$GITHUB_ENV"
183+
rm -f cabal.project cabal.project.local
145184
touch cabal.project
146185
touch cabal.project.local
147186
echo "packages: ${PKGDIR_servant_multipart}" >> cabal.project
148187
echo "packages: ${PKGDIR_servant_multipart_api}" >> cabal.project
149188
echo "packages: ${PKGDIR_servant_multipart_client}" >> cabal.project
150-
if [ $((HCNUMVER >= 80200)) -ne 0 ] ; then echo "package servant-multipart" >> cabal.project ; fi
151-
if [ $((HCNUMVER >= 80200)) -ne 0 ] ; then echo " ghc-options: -Werror=missing-methods" >> cabal.project ; fi
152-
if [ $((HCNUMVER >= 80200)) -ne 0 ] ; then echo "package servant-multipart-api" >> cabal.project ; fi
153-
if [ $((HCNUMVER >= 80200)) -ne 0 ] ; then echo " ghc-options: -Werror=missing-methods" >> cabal.project ; fi
154-
if [ $((HCNUMVER >= 80200)) -ne 0 ] ; then echo "package servant-multipart-client" >> cabal.project ; fi
155-
if [ $((HCNUMVER >= 80200)) -ne 0 ] ; then echo " ghc-options: -Werror=missing-methods" >> cabal.project ; fi
189+
echo "package servant-multipart" >> cabal.project
190+
echo " ghc-options: -Werror=missing-methods" >> cabal.project
191+
echo "package servant-multipart-api" >> cabal.project
192+
echo " ghc-options: -Werror=missing-methods" >> cabal.project
193+
echo "package servant-multipart-client" >> cabal.project
194+
echo " ghc-options: -Werror=missing-methods" >> cabal.project
156195
cat >> cabal.project <<EOF
157196
EOF
158197
$HCPKG list --simple-output --names-only | perl -ne 'for (split /\s+/) { print "constraints: $_ installed\n" unless /^(servant-multipart|servant-multipart-api|servant-multipart-client)$/; }' >> cabal.project.local
@@ -199,15 +238,23 @@ jobs:
199238
- name: prepare for constraint sets
200239
run: |
201240
rm -f cabal.project.local
241+
- name: constraint set servant-0.19
242+
run: |
243+
$CABAL v2-build $ARG_COMPILER --disable-tests --disable-benchmarks --constraint='servant ==0.19.*' --dependencies-only -j2 all
244+
$CABAL v2-build $ARG_COMPILER --disable-tests --disable-benchmarks --constraint='servant ==0.19.*' all
245+
- name: constraint set servant-0.18
246+
run: |
247+
$CABAL v2-build $ARG_COMPILER --disable-tests --disable-benchmarks --constraint='servant ==0.18.*' --dependencies-only -j2 all
248+
$CABAL v2-build $ARG_COMPILER --disable-tests --disable-benchmarks --constraint='servant ==0.18.*' all
202249
- name: constraint set servant-0.17
203250
run: |
251+
if [ $((HCNUMVER < 81000)) -ne 0 ] ; then $CABAL v2-build $ARG_COMPILER --disable-tests --disable-benchmarks --constraint='servant ==0.17.*' --dependencies-only -j2 all ; fi
204252
if [ $((HCNUMVER < 81000)) -ne 0 ] ; then $CABAL v2-build $ARG_COMPILER --disable-tests --disable-benchmarks --constraint='servant ==0.17.*' all ; fi
205-
- name: constraint set servant-0.16
206-
run: |
207-
if [ $((HCNUMVER < 81000)) -ne 0 ] ; then $CABAL v2-build $ARG_COMPILER --disable-tests --disable-benchmarks --constraint='servant ==0.16.*' all ; fi
208253
- name: constraint set network-3.0
209254
run: |
255+
if [ $((HCNUMVER < 80800)) -ne 0 ] ; then $CABAL v2-build $ARG_COMPILER --disable-tests --disable-benchmarks --constraint='network == 3.0.*' --dependencies-only -j2 all ; fi
210256
if [ $((HCNUMVER < 80800)) -ne 0 ] ; then $CABAL v2-build $ARG_COMPILER --disable-tests --disable-benchmarks --constraint='network == 3.0.*' all ; fi
211257
- name: constraint set network-2.8
212258
run: |
259+
if [ $((HCNUMVER < 80800)) -ne 0 ] ; then $CABAL v2-build $ARG_COMPILER --disable-tests --disable-benchmarks --constraint='network == 2.8.*' --dependencies-only -j2 all ; fi
213260
if [ $((HCNUMVER < 80800)) -ne 0 ] ; then $CABAL v2-build $ARG_COMPILER --disable-tests --disable-benchmarks --constraint='network == 2.8.*' all ; fi

cabal.haskell-ci

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,14 @@ constraint-set network-3.0
88
ghc: >= 8.0 && <8.8
99
constraints: network == 3.0.*
1010

11-
constraint-set servant-0.16
12-
ghc: >= 8.0 && <8.10
13-
constraints: servant ==0.16.*
14-
1511
constraint-set servant-0.17
1612
ghc: >= 8.0 && <8.10
1713
constraints: servant ==0.17.*
14+
15+
constraint-set servant-0.18
16+
ghc: >= 8.0 && <9.4
17+
constraints: servant ==0.18.*
18+
19+
constraint-set servant-0.19
20+
ghc: >= 8.0 && <9.4
21+
constraints: servant ==0.19.*

servant-multipart-api/servant-multipart-api.cabal

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,11 @@ category: Web, Servant
1515
build-type: Simple
1616
cabal-version: >=1.10
1717
extra-source-files: CHANGELOG.md
18-
tested-with: GHC ==8.0.2 || ==8.2.2 || ==8.4.4 || ==8.6.5 || ==8.8.4 || ==8.10.4
18+
tested-with:
19+
GHC ==8.6.5
20+
|| ==8.8.4
21+
|| ==8.10.7
22+
|| ==9.0.2
1923

2024
library
2125
default-language: Haskell2010
@@ -31,7 +35,13 @@ library
3135

3236
-- other dependencies
3337
build-depends:
34-
servant >=0.16 && <0.19
38+
servant >=0.16 && <0.20
39+
40+
-- servant-0.19 dropped support for GHC-8.4 (latest GHCJS version),
41+
-- due to QuantifiedConstraints
42+
if impl(ghcjs)
43+
build-depends:
44+
servant >=0.16 && <0.19
3545

3646
source-repository head
3747
type: git

servant-multipart-client/servant-multipart-client.cabal

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,11 @@ category: Web, Servant
1414
build-type: Simple
1515
cabal-version: >=1.10
1616
extra-source-files: CHANGELOG.md
17-
tested-with: GHC ==8.0.2 || ==8.2.2 || ==8.4.4 || ==8.6.5 || ==8.8.4 || ==8.10.4
17+
tested-with:
18+
GHC ==8.6.5
19+
|| ==8.8.4
20+
|| ==8.10.7
21+
|| ==9.0.2
1822

1923
library
2024
default-language: Haskell2010
@@ -33,8 +37,15 @@ library
3337
build-depends:
3438
servant-multipart-api == 0.12.*
3539
, http-media >=0.7.1.3 && <0.9
36-
, servant >=0.16 && <0.19
37-
, servant-client-core >=0.16 && <0.19
40+
, servant >=0.16 && <0.20
41+
, servant-client-core >=0.16 && <0.20
42+
43+
-- servant-0.19 dropped support for GHC-8.4 (latest GHCJS version),
44+
-- due to QuantifiedConstraints
45+
if impl(ghcjs)
46+
build-depends:
47+
servant >=0.16 && <0.19
48+
, servant-client-core >=0.16 && <0.19
3849

3950
executable upload
4051
hs-source-dirs: exe

servant-multipart/servant-multipart.cabal

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,11 @@ category: Web, Servant
1414
build-type: Simple
1515
cabal-version: >=1.10
1616
extra-source-files: CHANGELOG.md
17-
tested-with: GHC ==8.0.2 || ==8.2.2 || ==8.4.4 || ==8.6.5 || ==8.8.4 || ==8.10.4
17+
tested-with:
18+
GHC ==8.6.5
19+
|| ==8.8.4
20+
|| ==8.10.7
21+
|| ==9.0.2
1822

1923
library
2024
default-language: Haskell2010
@@ -33,10 +37,10 @@ library
3337
servant-multipart-api == 0.12.*
3438
, lens >=4.17 && <5.1
3539
, resourcet >=1.2.2 && <1.3
36-
, servant >=0.16 && <0.19
37-
, servant-docs >=0.10 && <0.19
38-
, servant-foreign >=0.15 && <0.19
39-
, servant-server >=0.16 && <0.19
40+
, servant >=0.16 && <0.20
41+
, servant-docs >=0.10 && <0.20
42+
, servant-foreign >=0.15 && <0.20
43+
, servant-server >=0.16 && <0.20
4044
, string-conversions >=0.4.0.1 && <0.5
4145
, wai >=3.2.1.2 && <3.3
4246
, wai-extra >=3.0.24.3 && <3.2

0 commit comments

Comments
 (0)