Skip to content

Commit 507dcd5

Browse files
authored
feat: introducing GHC 9.14 (#170)
1 parent ad127b1 commit 507dcd5

File tree

10 files changed

+650
-2
lines changed

10 files changed

+650
-2
lines changed

.github/workflows/debian.yml

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,21 @@ jobs:
2626
strategy:
2727
fail-fast: false
2828
matrix:
29-
ghc: ['9.12.2', '9.10.3', '9.8.4', '9.6.7']
29+
ghc: ['9.14.1', '9.12.2', '9.10.3', '9.8.4', '9.6.7']
3030
deb: ['bullseye', 'slim-bullseye']
3131
include:
32+
- ghc: '9.14.1'
33+
ghc_minor: '9.14'
34+
deb: 'bookworm'
35+
- ghc: '9.14.1'
36+
ghc_minor: '9.14'
37+
deb: 'slim-bookworm'
38+
- ghc: '9.14.1'
39+
ghc_minor: '9.14'
40+
deb: 'bullseye'
41+
- ghc: '9.14.1'
42+
ghc_minor: '9.14'
43+
deb: 'slim-bullseye'
3244
- ghc: '9.12.2'
3345
ghc_minor: '9.12'
3446
deb: 'bookworm'
@@ -73,10 +85,13 @@ jobs:
7385
strategy:
7486
fail-fast: false
7587
matrix:
76-
ghc: ['9.6.7', '9.8.4', '9.10.3', '9.12.2']
88+
ghc: ['9.6.7', '9.8.4', '9.10.3', '9.12.2', '9.14.1']
7789
# native arm runner; still avoid slim variants here
7890
deb: ['bullseye']
7991
include:
92+
- ghc: '9.14.1'
93+
ghc_minor: '9.14'
94+
deb: 'bookworm'
8095
# bookworm (debian 12)
8196
- ghc: '9.12.2'
8297
ghc_minor: '9.12'
@@ -91,6 +106,8 @@ jobs:
91106
exclude:
92107
- ghc: '9.12.2'
93108
deb: 'bullseye'
109+
- ghc: '9.14.1'
110+
deb: 'bullseye'
94111

95112
steps:
96113
- uses: actions/checkout@v4

9.14/_globals.yaml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
stack:
2+
version: "3.3.1"
3+
release_key: "C5705533DA4F78D8664B5DC0575159689BEFB442"
4+
sha256sum:
5+
"aarch64": 'bdd618ea5a9c921417727011f2ecd78987dffa5cee5e741108baf65a9b5b58ab'
6+
"x86_64": '88d7e517342c125b0a098d9d578fe53e590618ae4b2427283a27408a1ebd06d8'
7+
cabal_install:
8+
version: "3.16.1.0"
9+
release_key: "1E07C9A1A3088BAD47F74A3E227EE1942B0BDB95"

9.14/bookworm.yaml

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
---
2+
distro:
3+
codename: 'bookworm'
4+
abbr: 'deb12'
5+
image: 'debian:bookworm'
6+
ghc:
7+
version: "9.14.1"
8+
release_key: "88B57FCF7DB53B4DB3BFA4B1588764FBE22D19C4"
9+
sha256sum:
10+
"aarch64": '6aa27a377451851c851eefdd869e8f5a9217b02ce66c6ca9b418b72efee28427'
11+
"x86_64": '60f7ab75f28df892729fbaff3a54f58ee3ad7e731929f1b2f3eb0208f73de841'
12+
cabal_install:
13+
sha256sum:
14+
"aarch64": '41d8fc43de1c652c00d85799d0273f8b6600bc71603126bc651ca4e3917a1b84'
15+
"x86_64": '209987f6abdd1119f6b2674a0d1012857a783464774708cb4f3fd9e156ea7bea'
16+
_globals: !include '_globals.yaml'

9.14/bookworm/Dockerfile

Lines changed: 136 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,136 @@
1+
FROM debian:bookworm
2+
3+
ENV LANG=C.UTF-8
4+
5+
# common haskell + stack dependencies
6+
RUN apt-get update && \
7+
apt-get install -y --no-install-recommends \
8+
ca-certificates \
9+
curl \
10+
dpkg-dev \
11+
git \
12+
gcc \
13+
gnupg \
14+
g++ \
15+
libc6-dev \
16+
libffi-dev \
17+
libgmp-dev \
18+
libnuma-dev \
19+
libtinfo-dev \
20+
make \
21+
netbase \
22+
xz-utils \
23+
zlib1g-dev && \
24+
rm -rf /var/lib/apt/lists/*
25+
26+
27+
ARG STACK='3.3.1'
28+
ARG STACK_RELEASE_KEY='C5705533DA4F78D8664B5DC0575159689BEFB442'
29+
30+
RUN set -eux; \
31+
cd /tmp; \
32+
ARCH="$(dpkg-architecture --query DEB_BUILD_GNU_CPU)"; \
33+
STACK_URL="https://github.com/commercialhaskell/stack/releases/download/v${STACK}/stack-${STACK}-linux-$ARCH.tar.gz"; \
34+
# sha256 from https://github.com/commercialhaskell/stack/releases/download/v${STACK}/stack-${STACK}-linux-$ARCH.tar.gz.sha256 \
35+
case "$ARCH" in \
36+
'aarch64') \
37+
STACK_SHA256='bdd618ea5a9c921417727011f2ecd78987dffa5cee5e741108baf65a9b5b58ab'; \
38+
;; \
39+
'x86_64') \
40+
STACK_SHA256='88d7e517342c125b0a098d9d578fe53e590618ae4b2427283a27408a1ebd06d8'; \
41+
;; \
42+
*) echo >&2 "error: unsupported architecture '$ARCH'"; exit 1 ;; \
43+
esac; \
44+
curl -sSL "$STACK_URL" -o stack.tar.gz; \
45+
echo "$STACK_SHA256 stack.tar.gz" | sha256sum --strict --check; \
46+
\
47+
curl -sSL "$STACK_URL.asc" -o stack.tar.gz.asc; \
48+
GNUPGHOME="$(mktemp -d)"; \
49+
export GNUPGHOME; \
50+
gpg --batch --keyserver keyserver.ubuntu.com --receive-keys "$STACK_RELEASE_KEY"; \
51+
gpg --batch --verify stack.tar.gz.asc stack.tar.gz; \
52+
gpgconf --kill all; \
53+
\
54+
tar -xf stack.tar.gz -C /usr/local/bin --strip-components=1 "stack-$STACK-linux-$ARCH/stack"; \
55+
stack config set system-ghc --global true; \
56+
stack config set install-ghc --global false; \
57+
\
58+
rm -rf /tmp/*; \
59+
\
60+
stack --version;
61+
62+
ARG CABAL_INSTALL='3.16.1.0'
63+
ARG CABAL_INSTALL_RELEASE_KEY='1E07C9A1A3088BAD47F74A3E227EE1942B0BDB95'
64+
65+
RUN set -eux; \
66+
cd /tmp; \
67+
ARCH="$(dpkg-architecture --query DEB_BUILD_GNU_CPU)"; \
68+
CABAL_INSTALL_TAR="cabal-install-$CABAL_INSTALL-$ARCH-linux-deb12.tar.xz"; \
69+
CABAL_INSTALL_URL="https://downloads.haskell.org/~cabal/cabal-install-$CABAL_INSTALL/$CABAL_INSTALL_TAR"; \
70+
CABAL_INSTALL_SHA256SUMS_URL="https://downloads.haskell.org/~cabal/cabal-install-$CABAL_INSTALL/SHA256SUMS"; \
71+
# sha256 from https://downloads.haskell.org/~cabal/cabal-install-$CABAL_INSTALL/SHA256SUMS \
72+
case "$ARCH" in \
73+
'aarch64') \
74+
CABAL_INSTALL_SHA256='41d8fc43de1c652c00d85799d0273f8b6600bc71603126bc651ca4e3917a1b84'; \
75+
;; \
76+
'x86_64') \
77+
CABAL_INSTALL_SHA256='209987f6abdd1119f6b2674a0d1012857a783464774708cb4f3fd9e156ea7bea'; \
78+
;; \
79+
*) echo >&2 "error: unsupported architecture '$ARCH'"; exit 1 ;; \
80+
esac; \
81+
curl -fSL "$CABAL_INSTALL_URL" -o cabal-install.tar.gz; \
82+
echo "$CABAL_INSTALL_SHA256 cabal-install.tar.gz" | sha256sum --strict --check; \
83+
\
84+
curl -sSLO "$CABAL_INSTALL_SHA256SUMS_URL"; \
85+
curl -sSLO "$CABAL_INSTALL_SHA256SUMS_URL.sig"; \
86+
GNUPGHOME="$(mktemp -d)"; export GNUPGHOME; \
87+
gpg --batch --keyserver keyserver.ubuntu.com --receive-keys "$CABAL_INSTALL_RELEASE_KEY"; \
88+
gpg --batch --verify SHA256SUMS.sig SHA256SUMS; \
89+
# confirm we are verifying SHA256SUMS that matches the release + sha256 \
90+
grep "$CABAL_INSTALL_SHA256 $CABAL_INSTALL_TAR" SHA256SUMS; \
91+
gpgconf --kill all; \
92+
\
93+
tar -xf cabal-install.tar.gz -C /usr/local/bin; \
94+
\
95+
rm -rf /tmp/*; \
96+
\
97+
cabal --version
98+
99+
ARG GHC='9.14.1'
100+
ARG GHC_RELEASE_KEY='88B57FCF7DB53B4DB3BFA4B1588764FBE22D19C4'
101+
102+
RUN set -eux; \
103+
cd /tmp; \
104+
ARCH="$(dpkg-architecture --query DEB_BUILD_GNU_CPU)"; \
105+
GHC_URL="https://downloads.haskell.org/~ghc/$GHC/ghc-$GHC-$ARCH-deb12-linux.tar.xz"; \
106+
# sha256 from https://downloads.haskell.org/~ghc/$GHC/SHA256SUMS \
107+
case "$ARCH" in \
108+
'aarch64') \
109+
GHC_SHA256='6aa27a377451851c851eefdd869e8f5a9217b02ce66c6ca9b418b72efee28427'; \
110+
;; \
111+
'x86_64') \
112+
GHC_SHA256='60f7ab75f28df892729fbaff3a54f58ee3ad7e731929f1b2f3eb0208f73de841'; \
113+
;; \
114+
*) echo >&2 "error: unsupported architecture '$ARCH'" ; exit 1 ;; \
115+
esac; \
116+
curl -sSL "$GHC_URL" -o ghc.tar.xz; \
117+
echo "$GHC_SHA256 ghc.tar.xz" | sha256sum --strict --check; \
118+
\
119+
GNUPGHOME="$(mktemp -d)"; export GNUPGHOME; \
120+
curl -sSL "$GHC_URL.sig" -o ghc.tar.xz.sig; \
121+
gpg --batch --keyserver keyserver.ubuntu.com --receive-keys "$GHC_RELEASE_KEY"; \
122+
gpg --batch --verify ghc.tar.xz.sig ghc.tar.xz; \
123+
gpgconf --kill all; \
124+
\
125+
tar xf ghc.tar.xz; \
126+
cd "ghc-$GHC-$ARCH-unknown-linux"; \
127+
./configure --prefix "/opt/ghc/$GHC"; \
128+
make install; \
129+
\
130+
rm -rf /tmp/*; \
131+
\
132+
"/opt/ghc/$GHC/bin/ghc" --version
133+
134+
ENV PATH=/root/.cabal/bin:/root/.local/bin:/opt/ghc/${GHC}/bin:$PATH
135+
136+
CMD ["ghci"]

9.14/bullseye.yaml

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
---
2+
distro:
3+
codename: 'bullseye'
4+
abbr: 'deb11'
5+
image: 'debian:bullseye'
6+
ghc:
7+
version: "9.14.1"
8+
release_key: "88B57FCF7DB53B4DB3BFA4B1588764FBE22D19C4"
9+
sha256sum:
10+
"aarch64": '526c352cceddbf6c580e17ade7e782e3b21b4182d328b2d454c9f13ca7c08992' # hash from deb10 bindist
11+
"x86_64": '98f42ba5b44e50d680434b9d3c7ad51b257678899cf7f806a0c85cf63b6d1095'
12+
cabal_install:
13+
sha256sum:
14+
"aarch64": '6c5b74781d64266fa060099502d33b1f8297f269a5f71eda871b7db7fb3bf8e4'
15+
"x86_64": '0af41eac80718dc4396340cffa2dbf525e777ec3e877f689718a9ef5aedcb6ab'
16+
overrides:
17+
ghc:
18+
"aarch64":
19+
# GHC 9.14.1 doesn't have a deb11 bindist for aarch64 for some reason, so we're using the deb10 one instead
20+
url: "https://downloads.haskell.org/~ghc/9.14.1/ghc-9.14.1-aarch64-deb10-linux.tar.xz"
21+
_globals: !include '_globals.yaml'
22+

9.14/bullseye/Dockerfile

Lines changed: 137 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,137 @@
1+
FROM debian:bullseye
2+
3+
ENV LANG=C.UTF-8
4+
5+
# common haskell + stack dependencies
6+
RUN apt-get update && \
7+
apt-get install -y --no-install-recommends \
8+
ca-certificates \
9+
curl \
10+
dpkg-dev \
11+
git \
12+
gcc \
13+
gnupg \
14+
g++ \
15+
libc6-dev \
16+
libffi-dev \
17+
libgmp-dev \
18+
libnuma-dev \
19+
libtinfo-dev \
20+
make \
21+
netbase \
22+
xz-utils \
23+
zlib1g-dev && \
24+
rm -rf /var/lib/apt/lists/*
25+
26+
27+
ARG STACK='3.3.1'
28+
ARG STACK_RELEASE_KEY='C5705533DA4F78D8664B5DC0575159689BEFB442'
29+
30+
RUN set -eux; \
31+
cd /tmp; \
32+
ARCH="$(dpkg-architecture --query DEB_BUILD_GNU_CPU)"; \
33+
STACK_URL="https://github.com/commercialhaskell/stack/releases/download/v${STACK}/stack-${STACK}-linux-$ARCH.tar.gz"; \
34+
# sha256 from https://github.com/commercialhaskell/stack/releases/download/v${STACK}/stack-${STACK}-linux-$ARCH.tar.gz.sha256 \
35+
case "$ARCH" in \
36+
'aarch64') \
37+
STACK_SHA256='bdd618ea5a9c921417727011f2ecd78987dffa5cee5e741108baf65a9b5b58ab'; \
38+
;; \
39+
'x86_64') \
40+
STACK_SHA256='88d7e517342c125b0a098d9d578fe53e590618ae4b2427283a27408a1ebd06d8'; \
41+
;; \
42+
*) echo >&2 "error: unsupported architecture '$ARCH'"; exit 1 ;; \
43+
esac; \
44+
curl -sSL "$STACK_URL" -o stack.tar.gz; \
45+
echo "$STACK_SHA256 stack.tar.gz" | sha256sum --strict --check; \
46+
\
47+
curl -sSL "$STACK_URL.asc" -o stack.tar.gz.asc; \
48+
GNUPGHOME="$(mktemp -d)"; \
49+
export GNUPGHOME; \
50+
gpg --batch --keyserver keyserver.ubuntu.com --receive-keys "$STACK_RELEASE_KEY"; \
51+
gpg --batch --verify stack.tar.gz.asc stack.tar.gz; \
52+
gpgconf --kill all; \
53+
\
54+
tar -xf stack.tar.gz -C /usr/local/bin --strip-components=1 "stack-$STACK-linux-$ARCH/stack"; \
55+
stack config set system-ghc --global true; \
56+
stack config set install-ghc --global false; \
57+
\
58+
rm -rf /tmp/*; \
59+
\
60+
stack --version;
61+
62+
ARG CABAL_INSTALL='3.16.1.0'
63+
ARG CABAL_INSTALL_RELEASE_KEY='1E07C9A1A3088BAD47F74A3E227EE1942B0BDB95'
64+
65+
RUN set -eux; \
66+
cd /tmp; \
67+
ARCH="$(dpkg-architecture --query DEB_BUILD_GNU_CPU)"; \
68+
CABAL_INSTALL_TAR="cabal-install-$CABAL_INSTALL-$ARCH-linux-deb11.tar.xz"; \
69+
CABAL_INSTALL_URL="https://downloads.haskell.org/~cabal/cabal-install-$CABAL_INSTALL/$CABAL_INSTALL_TAR"; \
70+
CABAL_INSTALL_SHA256SUMS_URL="https://downloads.haskell.org/~cabal/cabal-install-$CABAL_INSTALL/SHA256SUMS"; \
71+
# sha256 from https://downloads.haskell.org/~cabal/cabal-install-$CABAL_INSTALL/SHA256SUMS \
72+
case "$ARCH" in \
73+
'aarch64') \
74+
CABAL_INSTALL_SHA256='6c5b74781d64266fa060099502d33b1f8297f269a5f71eda871b7db7fb3bf8e4'; \
75+
;; \
76+
'x86_64') \
77+
CABAL_INSTALL_SHA256='0af41eac80718dc4396340cffa2dbf525e777ec3e877f689718a9ef5aedcb6ab'; \
78+
;; \
79+
*) echo >&2 "error: unsupported architecture '$ARCH'"; exit 1 ;; \
80+
esac; \
81+
curl -fSL "$CABAL_INSTALL_URL" -o cabal-install.tar.gz; \
82+
echo "$CABAL_INSTALL_SHA256 cabal-install.tar.gz" | sha256sum --strict --check; \
83+
\
84+
curl -sSLO "$CABAL_INSTALL_SHA256SUMS_URL"; \
85+
curl -sSLO "$CABAL_INSTALL_SHA256SUMS_URL.sig"; \
86+
GNUPGHOME="$(mktemp -d)"; export GNUPGHOME; \
87+
gpg --batch --keyserver keyserver.ubuntu.com --receive-keys "$CABAL_INSTALL_RELEASE_KEY"; \
88+
gpg --batch --verify SHA256SUMS.sig SHA256SUMS; \
89+
# confirm we are verifying SHA256SUMS that matches the release + sha256 \
90+
grep "$CABAL_INSTALL_SHA256 $CABAL_INSTALL_TAR" SHA256SUMS; \
91+
gpgconf --kill all; \
92+
\
93+
tar -xf cabal-install.tar.gz -C /usr/local/bin; \
94+
\
95+
rm -rf /tmp/*; \
96+
\
97+
cabal --version
98+
99+
ARG GHC='9.14.1'
100+
ARG GHC_RELEASE_KEY='88B57FCF7DB53B4DB3BFA4B1588764FBE22D19C4'
101+
102+
RUN set -eux; \
103+
cd /tmp; \
104+
ARCH="$(dpkg-architecture --query DEB_BUILD_GNU_CPU)"; \
105+
GHC_URL="https://downloads.haskell.org/~ghc/$GHC/ghc-$GHC-$ARCH-deb11-linux.tar.xz"; \
106+
# sha256 from https://downloads.haskell.org/~ghc/$GHC/SHA256SUMS \
107+
case "$ARCH" in \
108+
'aarch64') \
109+
GHC_SHA256='526c352cceddbf6c580e17ade7e782e3b21b4182d328b2d454c9f13ca7c08992'; \
110+
GHC_URL='https://downloads.haskell.org/~ghc/9.14.1/ghc-9.14.1-aarch64-deb10-linux.tar.xz'; \
111+
;; \
112+
'x86_64') \
113+
GHC_SHA256='98f42ba5b44e50d680434b9d3c7ad51b257678899cf7f806a0c85cf63b6d1095'; \
114+
;; \
115+
*) echo >&2 "error: unsupported architecture '$ARCH'" ; exit 1 ;; \
116+
esac; \
117+
curl -sSL "$GHC_URL" -o ghc.tar.xz; \
118+
echo "$GHC_SHA256 ghc.tar.xz" | sha256sum --strict --check; \
119+
\
120+
GNUPGHOME="$(mktemp -d)"; export GNUPGHOME; \
121+
curl -sSL "$GHC_URL.sig" -o ghc.tar.xz.sig; \
122+
gpg --batch --keyserver keyserver.ubuntu.com --receive-keys "$GHC_RELEASE_KEY"; \
123+
gpg --batch --verify ghc.tar.xz.sig ghc.tar.xz; \
124+
gpgconf --kill all; \
125+
\
126+
tar xf ghc.tar.xz; \
127+
cd "ghc-$GHC-$ARCH-unknown-linux"; \
128+
./configure --prefix "/opt/ghc/$GHC"; \
129+
make install; \
130+
\
131+
rm -rf /tmp/*; \
132+
\
133+
"/opt/ghc/$GHC/bin/ghc" --version
134+
135+
ENV PATH=/root/.cabal/bin:/root/.local/bin:/opt/ghc/${GHC}/bin:$PATH
136+
137+
CMD ["ghci"]

9.14/slim-bookworm.yaml

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
---
2+
distro:
3+
codename: 'bookworm'
4+
abbr: 'deb12'
5+
image: 'debian:bookworm-slim'
6+
ghc:
7+
version: "9.14.1"
8+
release_key: "88B57FCF7DB53B4DB3BFA4B1588764FBE22D19C4"
9+
sha256sum:
10+
"aarch64": '6aa27a377451851c851eefdd869e8f5a9217b02ce66c6ca9b418b72efee28427'
11+
"x86_64": '60f7ab75f28df892729fbaff3a54f58ee3ad7e731929f1b2f3eb0208f73de841'
12+
cabal_install:
13+
sha256sum:
14+
"aarch64": '41d8fc43de1c652c00d85799d0273f8b6600bc71603126bc651ca4e3917a1b84'
15+
"x86_64": '209987f6abdd1119f6b2674a0d1012857a783464774708cb4f3fd9e156ea7bea'
16+
_globals: !include '_globals.yaml'

0 commit comments

Comments
 (0)