Skip to content

Commit c0c1e4e

Browse files
committed
Add bullseye variant of 9.6 images
1 parent 65b8848 commit c0c1e4e

File tree

3 files changed

+266
-0
lines changed

3 files changed

+266
-0
lines changed

.github/workflows/debian.yml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,9 @@ on:
55
branches:
66
- master
77
paths:
8+
- '**/bullseye/Dockerfile'
89
- '**/buster/Dockerfile'
10+
- '**/slim-bullseye/Dockerfile'
911
- '**/slim-buster/Dockerfile'
1012
- '.github/workflows/debian.yml'
1113

@@ -35,6 +37,12 @@ jobs:
3537
ghc_minor: '9.10'
3638
- ghc: '9.8.2'
3739
ghc_minor: '9.8'
40+
- ghc: '9.6.6'
41+
ghc_minor: '9.6'
42+
deb: 'slim-bullseye'
43+
- ghc: '9.6.6'
44+
ghc_minor: '9.6'
45+
deb: 'bullseye'
3846
- ghc: '9.6.6'
3947
ghc_minor: '9.6'
4048
- ghc: '9.4.8'

9.6/bullseye/Dockerfile

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

9.6/slim-bullseye/Dockerfile

Lines changed: 137 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,137 @@
1+
FROM debian:bullseye-slim
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+
ARG STACK=2.15.5
27+
ARG STACK_RELEASE_KEY=C5705533DA4F78D8664B5DC0575159689BEFB442
28+
29+
RUN set -eux; \
30+
cd /tmp; \
31+
ARCH="$(dpkg-architecture --query DEB_BUILD_GNU_CPU)"; \
32+
STACK_URL="https://github.com/commercialhaskell/stack/releases/download/v${STACK}/stack-${STACK}-linux-$ARCH.tar.gz"; \
33+
# sha256 from https://github.com/commercialhaskell/stack/releases/download/v${STACK}/stack-${STACK}-linux-$ARCH.tar.gz.sha256
34+
case "$ARCH" in \
35+
'aarch64') \
36+
STACK_SHA256='52cd9d9c2ee4dbf2841bba856f5fca15fbf6ba23fced7256aa3f7c8b76381c91'; \
37+
;; \
38+
'x86_64') \
39+
STACK_SHA256='d55f8554932aad23f7b1198e0d5ebe332073d73fe60e3f324d0b315c156d8c43'; \
40+
;; \
41+
*) echo >&2 "error: unsupported architecture '$ARCH'" ; exit 1 ;; \
42+
esac; \
43+
curl -sSL "$STACK_URL" -o stack.tar.gz; \
44+
echo "$STACK_SHA256 stack.tar.gz" | sha256sum --strict --check; \
45+
\
46+
curl -sSL "$STACK_URL.asc" -o stack.tar.gz.asc; \
47+
GNUPGHOME="$(mktemp -d)"; export GNUPGHOME; \
48+
gpg --batch --keyserver keyserver.ubuntu.com --receive-keys "$STACK_RELEASE_KEY"; \
49+
gpg --batch --verify stack.tar.gz.asc stack.tar.gz; \
50+
gpgconf --kill all; \
51+
\
52+
tar -xf stack.tar.gz -C /usr/local/bin --strip-components=1 "stack-$STACK-linux-$ARCH/stack"; \
53+
stack config set system-ghc --global true; \
54+
stack config set install-ghc --global false; \
55+
\
56+
rm -rf /tmp/*; \
57+
\
58+
stack --version;
59+
60+
ARG CABAL_INSTALL=3.10.3.0
61+
ARG CABAL_INSTALL_RELEASE_KEY=EAF2A9A722C0C96F2B431CA511AAD8CEDEE0CAEF
62+
63+
RUN set -eux; \
64+
cd /tmp; \
65+
ARCH="$(dpkg-architecture --query DEB_BUILD_GNU_CPU)"; \
66+
CABAL_INSTALL_TAR="cabal-install-$CABAL_INSTALL-$ARCH-linux-deb11.tar.xz"; \
67+
CABAL_INSTALL_URL="https://downloads.haskell.org/~cabal/cabal-install-$CABAL_INSTALL/$CABAL_INSTALL_TAR"; \
68+
CABAL_INSTALL_SHA256SUMS_URL="https://downloads.haskell.org/~cabal/cabal-install-$CABAL_INSTALL/SHA256SUMS"; \
69+
# sha256 from https://downloads.haskell.org/~cabal/cabal-install-$CABAL_INSTALL/SHA256SUMS
70+
case "$ARCH" in \
71+
'aarch64') \
72+
CABAL_INSTALL_SHA256='c14e8198407f37f7276c77b5cefef60ee6a929b4c22d7316577ce8e2301a758e'; \
73+
;; \
74+
'x86_64') \
75+
CABAL_INSTALL_SHA256='4f60cf1c72f4ad4d82d668839ac61ae15ae4faf6c4b809395799e8a3ee622051'; \
76+
;; \
77+
*) echo >&2 "error: unsupported architecture '$ARCH'"; exit 1 ;; \
78+
esac; \
79+
curl -fSL "$CABAL_INSTALL_URL" -o cabal-install.tar.gz; \
80+
echo "$CABAL_INSTALL_SHA256 cabal-install.tar.gz" | sha256sum --strict --check; \
81+
\
82+
curl -sSLO "$CABAL_INSTALL_SHA256SUMS_URL"; \
83+
curl -sSLO "$CABAL_INSTALL_SHA256SUMS_URL.sig"; \
84+
GNUPGHOME="$(mktemp -d)"; export GNUPGHOME; \
85+
gpg --batch --keyserver keyserver.ubuntu.com --receive-keys "$CABAL_INSTALL_RELEASE_KEY"; \
86+
gpg --batch --verify SHA256SUMS.sig SHA256SUMS; \
87+
# confirm we are verifying SHA256SUMS that matches the release + sha256
88+
grep "$CABAL_INSTALL_SHA256 $CABAL_INSTALL_TAR" SHA256SUMS; \
89+
gpgconf --kill all; \
90+
\
91+
tar -xf cabal-install.tar.gz -C /usr/local/bin; \
92+
\
93+
rm -rf /tmp/*; \
94+
\
95+
cabal --version
96+
97+
ARG GHC=9.6.6
98+
ARG GHC_RELEASE_KEY=88B57FCF7DB53B4DB3BFA4B1588764FBE22D19C4
99+
100+
RUN set -eux; \
101+
cd /tmp; \
102+
ARCH="$(dpkg-architecture --query DEB_BUILD_GNU_CPU)"; \
103+
GHC_URL="https://downloads.haskell.org/~ghc/$GHC/ghc-$GHC-$ARCH-deb11-linux.tar.xz"; \
104+
# sha256 from https://downloads.haskell.org/~ghc/$GHC/SHA256SUMS
105+
case "$ARCH" in \
106+
# TODO 'aarch64' not available in https://downloads.haskell.org/~ghc/9.6.6/
107+
# 'aarch64') \
108+
# GHC_SHA256='58d5ce65758ec5179b448e4e1a2f835924b4ada96cf56af80d011bed87d91fef'; \
109+
# ;; \
110+
'x86_64') \
111+
GHC_SHA256='a34bdfc1f65b000135d9c8eb12d69670026a64043a8b33ef5ba24b0f8e28d046'; \
112+
;; \
113+
*) echo >&2 "error: unsupported architecture '$ARCH'" ; exit 1 ;; \
114+
esac; \
115+
curl -sSL "$GHC_URL" -o ghc.tar.xz; \
116+
echo "$GHC_SHA256 ghc.tar.xz" | sha256sum --strict --check; \
117+
\
118+
GNUPGHOME="$(mktemp -d)"; export GNUPGHOME; \
119+
curl -sSL "$GHC_URL.sig" -o ghc.tar.xz.sig; \
120+
gpg --batch --keyserver keyserver.ubuntu.com --receive-keys "$GHC_RELEASE_KEY"; \
121+
gpg --batch --verify ghc.tar.xz.sig ghc.tar.xz; \
122+
gpgconf --kill all; \
123+
\
124+
tar xf ghc.tar.xz; \
125+
cd "ghc-$GHC-$ARCH-unknown-linux"; \
126+
./configure --prefix "/opt/ghc/$GHC"; \
127+
make install; \
128+
# remove profiling support to save space
129+
find "/opt/ghc/$GHC/" \( -name "*_p.a" -o -name "*.p_hi" \) -type f -delete; \
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"]

0 commit comments

Comments
 (0)