Skip to content

Commit 0860c11

Browse files
authored
Upgrade to LTS 20.10 (GHC 9.2.5) (#1)
1 parent 2f1d381 commit 0860c11

File tree

2 files changed

+88
-32
lines changed

2 files changed

+88
-32
lines changed

Dockerfile

Lines changed: 87 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,57 +1,113 @@
1-
FROM debian:10
2-
# Based on https://github.com/haskell/docker-haskell/blob/fb5c774c38a7ab2e7d233d95368be0f899353496/8.8/buster/Dockerfile
3-
# LTS Haskell 16.25 (2020-12-06) GHC 8.8.4
4-
# See https://www.stackage.org/lts-16.25 for package versions
1+
FROM debian:buster-slim
2+
# Based on https://github.com/haskell/docker-haskell/blob/12cd297d7ccc2e97fe5e94548ae502b0cbb6735f/9.2/slim-buster/Dockerfile
53

64
ENV LANG=C.UTF-8
75

6+
# common haskell + stack dependencies
87
RUN set -ex; \
9-
apt-get update; \
10-
apt-get install -y --no-install-recommends gnupg ca-certificates dirmngr; \
11-
rm -rf /var/lib/apt/lists/*;
12-
13-
ENV GHC=8.8.4 CABAL_INSTALL=3.2 DEBIAN_KEY=427CB69AAC9D00F2A43CAF1CBA3CBA3FFE22B574 LTS_HASKELL=16.25
14-
RUN set -ex; \
15-
export GNUPGHOME="$(mktemp -d)"; \
16-
gpg --batch --keyserver keyserver.ubuntu.com --recv-keys ${DEBIAN_KEY}; \
17-
gpg --batch --armor --export ${DEBIAN_KEY} > /etc/apt/trusted.gpg.d/haskell.org.gpg.asc; \
18-
gpgconf --kill all; \
19-
echo 'deb http://downloads.haskell.org/debian buster main' > /etc/apt/sources.list.d/ghc.list; \
208
apt-get update; \
219
apt-get install -y --no-install-recommends \
22-
cabal-install-${CABAL_INSTALL} \
10+
ca-certificates \
2311
curl \
24-
g++ \
25-
ghc-${GHC} \
12+
dpkg-dev \
2613
git \
27-
libsqlite3-dev \
14+
gcc \
15+
gnupg \
16+
g++ \
17+
libc6-dev \
18+
libffi-dev \
19+
libgmp-dev \
20+
libnuma-dev \
2821
libtinfo-dev \
2922
make \
3023
netbase \
31-
openssh-client \
3224
xz-utils \
3325
zlib1g-dev \
34-
# regex-pcre requires pcre
26+
# for regex-pcre
3527
libpcre3 \
3628
libpcre3-dev \
29+
pkg-config \
3730
; \
38-
rm -rf "$GNUPGHOME" /var/lib/apt/lists/* /tmp/* /var/tmp/*;
31+
rm -rf /var/lib/apt/lists/*;
3932

40-
ENV STACK=2.5.1 STACK_RELEASE_KEY=C5705533DA4F78D8664B5DC0575159689BEFB442
41-
RUN set -ex; \
42-
export GNUPGHOME="$(mktemp -d)"; \
43-
gpg --batch --keyserver keyserver.ubuntu.com --recv-keys ${STACK_RELEASE_KEY}; \
44-
curl -fSL https://github.com/commercialhaskell/stack/releases/download/v${STACK}/stack-${STACK}-linux-x86_64.tar.gz -o stack.tar.gz; \
45-
curl -fSL https://github.com/commercialhaskell/stack/releases/download/v${STACK}/stack-${STACK}-linux-x86_64.tar.gz.asc -o stack.tar.gz.asc; \
33+
ENV STACK=2.9.3 STACK_RELEASE_KEY=C5705533DA4F78D8664B5DC0575159689BEFB442
34+
RUN set -eux; \
35+
cd /tmp; \
36+
STACK_URL="https://github.com/commercialhaskell/stack/releases/download/v${STACK}/stack-${STACK}-linux-x86_64.tar.gz"; \
37+
# sha256 from https://github.com/commercialhaskell/stack/releases/download/v${STACK}/stack-${STACK}-linux-x86_64.tar.gz.sha256
38+
STACK_SHA256='938f689dc45e2693ab1ca3ea215790b3786dfd531dcf6c0bf40842c24e579ae9'; \
39+
curl -sSL "$STACK_URL" -o stack.tar.gz; \
40+
echo "$STACK_SHA256 stack.tar.gz" | sha256sum --strict --check; \
41+
\
42+
curl -sSL "$STACK_URL.asc" -o stack.tar.gz.asc; \
43+
GNUPGHOME="$(mktemp -d)"; export GNUPGHOME; \
44+
gpg --batch --keyserver keyserver.ubuntu.com --receive-keys "$STACK_RELEASE_KEY"; \
4645
gpg --batch --verify stack.tar.gz.asc stack.tar.gz; \
4746
gpgconf --kill all; \
48-
tar -xf stack.tar.gz -C /usr/local/bin --strip-components=1; \
47+
\
48+
tar -xf stack.tar.gz -C /usr/local/bin --strip-components=1 "stack-$STACK-linux-x86_64/stack"; \
4949
stack config set system-ghc --global true; \
5050
stack config set install-ghc --global false; \
51-
rm -rf "$GNUPGHOME" /var/lib/apt/lists/* /stack.tar.gz.asc /stack.tar.gz;
51+
\
52+
rm -rf /tmp/*; \
53+
\
54+
stack --version;
5255

53-
ENV PATH=/opt/cabal/${CABAL_INSTALL}/bin:/opt/ghc/${GHC}/bin:$PATH
56+
ENV CABAL_INSTALL=3.8.1.0 CABAL_INSTALL_RELEASE_KEY=E9EC5616017C3EE26B33468CCE1ED8AE0B011D8C
57+
RUN set -eux; \
58+
cd /tmp; \
59+
CABAL_INSTALL_TAR="cabal-install-$CABAL_INSTALL-x86_64-linux-deb10.tar.xz"; \
60+
CABAL_INSTALL_URL="https://downloads.haskell.org/~cabal/cabal-install-$CABAL_INSTALL/$CABAL_INSTALL_TAR"; \
61+
CABAL_INSTALL_SHA256SUMS_URL="https://downloads.haskell.org/~cabal/cabal-install-$CABAL_INSTALL/SHA256SUMS"; \
62+
# sha256 from https://downloads.haskell.org/~cabal/cabal-install-$CABAL_INSTALL/SHA256SUMS
63+
CABAL_INSTALL_SHA256='c71a1a46fd42d235bb86be968660815c24950e5da2d1ff4640da025ab520424b'; \
64+
curl -fSL "$CABAL_INSTALL_URL" -o cabal-install.tar.gz; \
65+
echo "$CABAL_INSTALL_SHA256 cabal-install.tar.gz" | sha256sum --strict --check; \
66+
\
67+
curl -sSLO "$CABAL_INSTALL_SHA256SUMS_URL"; \
68+
curl -sSLO "$CABAL_INSTALL_SHA256SUMS_URL.sig"; \
69+
GNUPGHOME="$(mktemp -d)"; export GNUPGHOME; \
70+
gpg --batch --keyserver keyserver.ubuntu.com --receive-keys "$CABAL_INSTALL_RELEASE_KEY"; \
71+
gpg --batch --verify SHA256SUMS.sig SHA256SUMS; \
72+
# confirm we are verifying SHA256SUMS that matches the release + sha256
73+
grep "$CABAL_INSTALL_SHA256 $CABAL_INSTALL_TAR" SHA256SUMS; \
74+
gpgconf --kill all; \
75+
\
76+
tar -xf cabal-install.tar.gz -C /usr/local/bin; \
77+
\
78+
rm -rf /tmp/*; \
79+
\
80+
cabal --version;
81+
82+
ENV GHC=9.2.5 GHC_RELEASE_KEY=88B57FCF7DB53B4DB3BFA4B1588764FBE22D19C4
83+
RUN set -eux; \
84+
cd /tmp; \
85+
GHC_URL="https://downloads.haskell.org/~ghc/$GHC/ghc-$GHC-x86_64-deb10-linux.tar.xz"; \
86+
# sha256 from https://downloads.haskell.org/~ghc/$GHC/SHA256SUMS
87+
GHC_SHA256='89f2df47d86a45593d6ba3fd3a44b627d100588cd59be257570dbe3f92b17c48'; \
88+
curl -sSL "$GHC_URL" -o ghc.tar.xz; \
89+
echo "$GHC_SHA256 ghc.tar.xz" | sha256sum --strict --check; \
90+
\
91+
GNUPGHOME="$(mktemp -d)"; export GNUPGHOME; \
92+
curl -sSL "$GHC_URL.sig" -o ghc.tar.xz.sig; \
93+
gpg --batch --keyserver keyserver.ubuntu.com --receive-keys "$GHC_RELEASE_KEY"; \
94+
gpg --batch --verify ghc.tar.xz.sig ghc.tar.xz; \
95+
gpgconf --kill all; \
96+
\
97+
tar xf ghc.tar.xz; \
98+
cd "ghc-$GHC"; \
99+
./configure --prefix "/opt/ghc/$GHC"; \
100+
make install; \
101+
# remove profiling support to save space
102+
find "/opt/ghc/$GHC/" \( -name "*_p.a" -o -name "*.p_hi" \) -type f -delete; \
103+
# remove some docs
104+
rm -rf "/opt/ghc/$GHC/share/"; \
105+
\
106+
rm -rf /tmp/*; \
107+
\
108+
"/opt/ghc/$GHC/bin/ghc" --version;
54109

110+
ENV PATH=/opt/ghc/${GHC}/bin:$PATH
55111

56112
RUN set -ex; \
57113
useradd --create-home codewarrior; \

workspace/stack.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
resolver: lts-16.25
1+
resolver: lts-20.10
22

33
extra-deps:
44
- url: https://github.com/codewars/hspec-formatters-codewars/archive/v0.1.0.tar.gz

0 commit comments

Comments
 (0)