Skip to content

Commit f73d48b

Browse files
committed
Install GHC directly + bumps
Bump ghc to 8.10.5. Bump cabal to 3.6.0.0. Also sha256 verify GHC + stack and other minor clean up.
1 parent 3dbe069 commit f73d48b

File tree

5 files changed

+202
-92
lines changed

5 files changed

+202
-92
lines changed

.github/workflows/ci.yml

+2-2
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,10 @@ jobs:
1313
strategy:
1414
fail-fast: false
1515
matrix:
16-
ghc: ['8.10.4', '9.0.1']
16+
ghc: ['8.10.5', '9.0.1']
1717
deb: ['stretch', 'buster']
1818
include:
19-
- ghc: '8.10.4'
19+
- ghc: '8.10.5'
2020
ghc_minor: '8.10'
2121
- ghc: '9.0.1'
2222
ghc_minor: '9.0'

8.10/buster/Dockerfile

+50-23
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,18 @@ FROM debian:buster
22

33
ENV LANG C.UTF-8
44

5+
# common haskell + stack dependencies
56
RUN apt-get update && \
67
apt-get install -y --no-install-recommends \
78
ca-certificates \
89
curl \
9-
dirmngr \
10-
g++ \
1110
git \
11+
gcc \
1212
gnupg \
13+
g++ \
14+
libc6-dev \
15+
libffi-dev \
16+
libgmp-dev \
1317
libsqlite3-dev \
1418
libtinfo-dev \
1519
make \
@@ -19,36 +23,59 @@ RUN apt-get update && \
1923
zlib1g-dev && \
2024
rm -rf /var/lib/apt/lists/*
2125

22-
ARG GHC=8.10.4
23-
ARG DEBIAN_KEY=427CB69AAC9D00F2A43CAF1CBA3CBA3FFE22B574
24-
ARG CABAL_INSTALL=3.4
26+
ARG CABAL_INSTALL=3.6.0.0
27+
ARG CABAL_INSTALL_RELEASE_KEY=A970DF3AC3B9709706D74544B3D9F94B8DCAE210
28+
# get from https://downloads.haskell.org/~cabal/cabal-install-$CABAL_INSTALL/SHA256SUMS
29+
ARG CABAL_INSTALL_RELEASE_SHA256=BFCB7350966DAFE95051B5FC9FCB989C5708AB9E78191E71FC04647061668A11
2530

26-
RUN export GNUPGHOME="$(mktemp -d)" && \
27-
gpg --batch --keyserver keyserver.ubuntu.com --recv-keys ${DEBIAN_KEY} && \
28-
gpg --batch --armor --export ${DEBIAN_KEY} > /etc/apt/trusted.gpg.d/haskell.org.gpg.asc && \
29-
gpgconf --kill all && \
30-
echo 'deb http://downloads.haskell.org/debian buster main' > /etc/apt/sources.list.d/ghc.list && \
31-
apt-get update && \
32-
apt-get install -y --no-install-recommends \
33-
cabal-install-${CABAL_INSTALL} \
34-
ghc-${GHC} && \
35-
rm -rf "$GNUPGHOME" /var/lib/apt/lists/*
31+
RUN cd /tmp && \
32+
export GNUPGHOME="$(mktemp -d)" && \
33+
gpg --batch --keyserver keyserver.ubuntu.com --recv-keys ${CABAL_INSTALL_RELEASE_KEY} && \
34+
curl -fSLO https://downloads.haskell.org/~cabal/cabal-install-$CABAL_INSTALL/SHA256SUMS && \
35+
curl -fSLO https://downloads.haskell.org/~cabal/cabal-install-$CABAL_INSTALL/SHA256SUMS.sig && \
36+
gpg --batch --trusted-key B3D9F94B8DCAE210 --verify SHA256SUMS.sig SHA256SUMS && \
37+
curl -fSL https://downloads.haskell.org/~cabal/cabal-install-$CABAL_INSTALL/cabal-install-$CABAL_INSTALL-x86_64-linux.tar.xz -o cabal-install.tar.gz && \
38+
echo "$CABAL_INSTALL_RELEASE_SHA256 cabal-install.tar.gz" | sha256sum --strict --check && \
39+
tar -xf cabal-install.tar.gz -C /usr/local/bin && \
40+
rm -rf "$GNUPGHOME" /var/lib/apt/lists/* /tmp/*
41+
42+
ARG GHC=8.10.5
43+
ARG GHC_RELEASE_KEY=88B57FCF7DB53B4DB3BFA4B1588764FBE22D19C4
44+
# get from https://downloads.haskell.org/~ghc/$GHC/SHA256SUMS
45+
ARG GHC_RELEASE_SHA256=BC623C20CA4C5C18E952071BA14AA0CFC5C94D34219BFFAA615F7B491F376787
46+
47+
RUN cd /tmp && \
48+
export GNUPGHOME="$(mktemp -d)" && \
49+
curl -sSL https://downloads.haskell.org/~ghc/$GHC/ghc-$GHC-x86_64-deb10-linux.tar.xz -o ghc.tar.xz && \
50+
curl -sSL https://downloads.haskell.org/~ghc/$GHC/ghc-$GHC-x86_64-deb10-linux.tar.xz.sig -o ghc.tar.xz.sig && \
51+
gpg --batch --keyserver keyserver.ubuntu.com --receive-keys ${GHC_RELEASE_KEY} && \
52+
gpg --batch --trusted-key 588764FBE22D19C4 --verify ghc.tar.xz.sig ghc.tar.xz && \
53+
echo "$GHC_RELEASE_SHA256 ghc.tar.xz" | sha256sum --strict --check && \
54+
tar xf ghc.tar.xz && \
55+
cd ghc-$GHC && \
56+
./configure --prefix /opt/ghc/$GHC && \
57+
make install && \
58+
find /opt/ghc/$GHC/ \( -name "*_p.a" -o -name "*.p_hi" \) -type f -delete && \
59+
rm -rf /opt/ghc/$GHC/share/ && \
60+
rm -rf "$GNUPGHOME" /tmp/*
3661

3762
ARG STACK=2.7.3
38-
ARG STACK_KEY=C5705533DA4F78D8664B5DC0575159689BEFB442
39-
ARG STACK_RELEASE_KEY=2C6A674E85EE3FB896AFC9B965101FF31C5C154D
63+
ARG STACK_RELEASE_KEY=C5705533DA4F78D8664B5DC0575159689BEFB442
64+
# get from https://github.com/commercialhaskell/stack/releases/download/v${STACK}/stack-${STACK}-linux-x86_64.tar.gz.sha256
65+
ARG STACK_RELEASE_SHA256=A6C090555FA1C64AA61C29AA4449765A51D79E870CF759CDE192937CD614E72B
4066

41-
RUN export GNUPGHOME="$(mktemp -d)" && \
42-
gpg --batch --keyserver keyserver.ubuntu.com --recv-keys ${STACK_KEY} && \
67+
RUN cd /tmp && \
68+
export GNUPGHOME="$(mktemp -d)" && \
4369
gpg --batch --keyserver keyserver.ubuntu.com --recv-keys ${STACK_RELEASE_KEY} && \
4470
curl -fSL https://github.com/commercialhaskell/stack/releases/download/v${STACK}/stack-${STACK}-linux-x86_64.tar.gz -o stack.tar.gz && \
4571
curl -fSL https://github.com/commercialhaskell/stack/releases/download/v${STACK}/stack-${STACK}-linux-x86_64.tar.gz.asc -o stack.tar.gz.asc && \
46-
gpg --batch --trusted-key 0x575159689BEFB442 --verify stack.tar.gz.asc stack.tar.gz && \
47-
tar -xf stack.tar.gz -C /usr/local/bin --strip-components=1 && \
72+
gpg --batch --trusted-key 575159689BEFB442 --verify stack.tar.gz.asc stack.tar.gz && \
73+
echo "$STACK_RELEASE_SHA256 stack.tar.gz" | sha256sum --strict --check && \
74+
tar -xf stack.tar.gz -C /usr/local/bin --strip-components=1 stack-$STACK-linux-x86_64/stack && \
4875
/usr/local/bin/stack config set system-ghc --global true && \
4976
/usr/local/bin/stack config set install-ghc --global false && \
50-
rm -rf "$GNUPGHOME" /var/lib/apt/lists/* /stack.tar.gz.asc /stack.tar.gz
77+
rm -rf "$GNUPGHOME" /var/lib/apt/lists/* /tmp/*
5178

52-
ENV PATH /root/.cabal/bin:/root/.local/bin:/opt/cabal/${CABAL_INSTALL}/bin:/opt/ghc/${GHC}/bin:$PATH
79+
ENV PATH /root/.cabal/bin:/root/.local/bin:/opt/ghc/${GHC}/bin:$PATH
5380

5481
CMD ["ghci"]

8.10/stretch/Dockerfile

+50-22
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,19 @@ FROM debian:stretch
22

33
ENV LANG C.UTF-8
44

5+
# common haskell + stack dependencies
56
RUN apt-get update && \
67
apt-get install -y --no-install-recommends \
78
ca-certificates \
89
curl \
910
dirmngr \
10-
g++ \
1111
git \
12+
gcc \
1213
gnupg \
14+
g++ \
15+
libc6-dev \
16+
libffi-dev \
17+
libgmp-dev \
1318
libsqlite3-dev \
1419
libtinfo-dev \
1520
make \
@@ -19,36 +24,59 @@ RUN apt-get update && \
1924
zlib1g-dev && \
2025
rm -rf /var/lib/apt/lists/*
2126

22-
ARG GHC=8.10.4
23-
ARG DEBIAN_KEY=427CB69AAC9D00F2A43CAF1CBA3CBA3FFE22B574
24-
ARG CABAL_INSTALL=3.4
27+
ARG CABAL_INSTALL=3.6.0.0
28+
ARG CABAL_INSTALL_RELEASE_KEY=A970DF3AC3B9709706D74544B3D9F94B8DCAE210
29+
# get from https://downloads.haskell.org/~cabal/cabal-install-$CABAL_INSTALL/SHA256SUMS
30+
ARG CABAL_INSTALL_RELEASE_SHA256=BFCB7350966DAFE95051B5FC9FCB989C5708AB9E78191E71FC04647061668A11
2531

26-
RUN export GNUPGHOME="$(mktemp -d)" && \
27-
gpg --batch --keyserver keyserver.ubuntu.com --recv-keys ${DEBIAN_KEY} && \
28-
gpg --batch --armor --export ${DEBIAN_KEY} > /etc/apt/trusted.gpg.d/haskell.org.gpg.asc && \
29-
gpgconf --kill all && \
30-
echo 'deb http://downloads.haskell.org/debian stretch main' > /etc/apt/sources.list.d/ghc.list && \
31-
apt-get update && \
32-
apt-get install -y --no-install-recommends \
33-
cabal-install-${CABAL_INSTALL} \
34-
ghc-${GHC} && \
35-
rm -rf "$GNUPGHOME" /var/lib/apt/lists/*
32+
RUN cd /tmp && \
33+
export GNUPGHOME="$(mktemp -d)" && \
34+
gpg --batch --keyserver keyserver.ubuntu.com --recv-keys ${CABAL_INSTALL_RELEASE_KEY} && \
35+
curl -fSLO https://downloads.haskell.org/~cabal/cabal-install-$CABAL_INSTALL/SHA256SUMS && \
36+
curl -fSLO https://downloads.haskell.org/~cabal/cabal-install-$CABAL_INSTALL/SHA256SUMS.sig && \
37+
gpg --batch --trusted-key B3D9F94B8DCAE210 --verify SHA256SUMS.sig SHA256SUMS && \
38+
curl -fSL https://downloads.haskell.org/~cabal/cabal-install-$CABAL_INSTALL/cabal-install-$CABAL_INSTALL-x86_64-linux.tar.xz -o cabal-install.tar.gz && \
39+
echo "$CABAL_INSTALL_RELEASE_SHA256 cabal-install.tar.gz" | sha256sum --strict --check && \
40+
tar -xf cabal-install.tar.gz -C /usr/local/bin && \
41+
rm -rf "$GNUPGHOME" /var/lib/apt/lists/* /tmp/*
42+
43+
ARG GHC=8.10.5
44+
ARG GHC_RELEASE_KEY=88B57FCF7DB53B4DB3BFA4B1588764FBE22D19C4
45+
# get from https://downloads.haskell.org/~ghc/$GHC/SHA256SUMS
46+
ARG GHC_RELEASE_SHA256=15E71325C3BDFE3804BE0F84C2FC5C913D811322D19B0F4D4CFF20F29CDD804D
47+
48+
RUN cd /tmp && \
49+
export GNUPGHOME="$(mktemp -d)" && \
50+
curl -sSL https://downloads.haskell.org/~ghc/$GHC/ghc-$GHC-x86_64-deb9-linux.tar.xz -o ghc.tar.xz && \
51+
curl -sSL https://downloads.haskell.org/~ghc/$GHC/ghc-$GHC-x86_64-deb9-linux.tar.xz.sig -o ghc.tar.xz.sig && \
52+
gpg --batch --keyserver keyserver.ubuntu.com --receive-keys ${GHC_RELEASE_KEY} && \
53+
gpg --batch --trusted-key 588764FBE22D19C4 --verify ghc.tar.xz.sig ghc.tar.xz && \
54+
echo "$GHC_RELEASE_SHA256 ghc.tar.xz" | sha256sum --strict --check && \
55+
tar xf ghc.tar.xz && \
56+
cd ghc-$GHC && \
57+
./configure --prefix /opt/ghc/$GHC && \
58+
make install && \
59+
find /opt/ghc/$GHC/ \( -name "*_p.a" -o -name "*.p_hi" \) -type f -delete && \
60+
rm -rf /opt/ghc/$GHC/share/ && \
61+
rm -rf "$GNUPGHOME" /tmp/*
3662

3763
ARG STACK=2.7.3
38-
ARG STACK_KEY=C5705533DA4F78D8664B5DC0575159689BEFB442
39-
ARG STACK_RELEASE_KEY=2C6A674E85EE3FB896AFC9B965101FF31C5C154D
64+
ARG STACK_RELEASE_KEY=C5705533DA4F78D8664B5DC0575159689BEFB442
65+
# get from https://github.com/commercialhaskell/stack/releases/download/v${STACK}/stack-${STACK}-linux-x86_64.tar.gz.sha256
66+
ARG STACK_RELEASE_SHA256=A6C090555FA1C64AA61C29AA4449765A51D79E870CF759CDE192937CD614E72B
4067

41-
RUN export GNUPGHOME="$(mktemp -d)" && \
42-
gpg --batch --keyserver keyserver.ubuntu.com --recv-keys ${STACK_KEY} && \
68+
RUN cd /tmp && \
69+
export GNUPGHOME="$(mktemp -d)" && \
4370
gpg --batch --keyserver keyserver.ubuntu.com --recv-keys ${STACK_RELEASE_KEY} && \
4471
curl -fSL https://github.com/commercialhaskell/stack/releases/download/v${STACK}/stack-${STACK}-linux-x86_64.tar.gz -o stack.tar.gz && \
4572
curl -fSL https://github.com/commercialhaskell/stack/releases/download/v${STACK}/stack-${STACK}-linux-x86_64.tar.gz.asc -o stack.tar.gz.asc && \
46-
gpg --batch --trusted-key 0x575159689BEFB442 --verify stack.tar.gz.asc stack.tar.gz && \
47-
tar -xf stack.tar.gz -C /usr/local/bin --strip-components=1 && \
73+
gpg --batch --trusted-key 575159689BEFB442 --verify stack.tar.gz.asc stack.tar.gz && \
74+
echo "$STACK_RELEASE_SHA256 stack.tar.gz" | sha256sum --strict --check && \
75+
tar -xf stack.tar.gz -C /usr/local/bin --strip-components=1 stack-$STACK-linux-x86_64/stack && \
4876
/usr/local/bin/stack config set system-ghc --global true && \
4977
/usr/local/bin/stack config set install-ghc --global false && \
50-
rm -rf "$GNUPGHOME" /var/lib/apt/lists/* /stack.tar.gz.asc /stack.tar.gz
78+
rm -rf "$GNUPGHOME" /var/lib/apt/lists/* /tmp/*
5179

52-
ENV PATH /root/.cabal/bin:/root/.local/bin:/opt/cabal/${CABAL_INSTALL}/bin:/opt/ghc/${GHC}/bin:$PATH
80+
ENV PATH /root/.cabal/bin:/root/.local/bin:/opt/ghc/${GHC}/bin:$PATH
5381

5482
CMD ["ghci"]

9.0/buster/Dockerfile

+50-23
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,18 @@ FROM debian:buster
22

33
ENV LANG C.UTF-8
44

5+
# common haskell + stack dependencies
56
RUN apt-get update && \
67
apt-get install -y --no-install-recommends \
78
ca-certificates \
89
curl \
9-
dirmngr \
10-
g++ \
1110
git \
11+
gcc \
1212
gnupg \
13+
g++ \
14+
libc6-dev \
15+
libffi-dev \
16+
libgmp-dev \
1317
libsqlite3-dev \
1418
libtinfo-dev \
1519
make \
@@ -19,36 +23,59 @@ RUN apt-get update && \
1923
zlib1g-dev && \
2024
rm -rf /var/lib/apt/lists/*
2125

26+
ARG CABAL_INSTALL=3.6.0.0
27+
ARG CABAL_INSTALL_RELEASE_KEY=A970DF3AC3B9709706D74544B3D9F94B8DCAE210
28+
# get from https://downloads.haskell.org/~cabal/cabal-install-$CABAL_INSTALL/SHA256SUMS
29+
ARG CABAL_INSTALL_RELEASE_SHA256=BFCB7350966DAFE95051B5FC9FCB989C5708AB9E78191E71FC04647061668A11
30+
31+
RUN cd /tmp && \
32+
export GNUPGHOME="$(mktemp -d)" && \
33+
gpg --batch --keyserver keyserver.ubuntu.com --recv-keys ${CABAL_INSTALL_RELEASE_KEY} && \
34+
curl -fSLO https://downloads.haskell.org/~cabal/cabal-install-$CABAL_INSTALL/SHA256SUMS && \
35+
curl -fSLO https://downloads.haskell.org/~cabal/cabal-install-$CABAL_INSTALL/SHA256SUMS.sig && \
36+
gpg --batch --trusted-key B3D9F94B8DCAE210 --verify SHA256SUMS.sig SHA256SUMS && \
37+
curl -fSL https://downloads.haskell.org/~cabal/cabal-install-$CABAL_INSTALL/cabal-install-$CABAL_INSTALL-x86_64-linux.tar.xz -o cabal-install.tar.gz && \
38+
echo "$CABAL_INSTALL_RELEASE_SHA256 cabal-install.tar.gz" | sha256sum --strict --check && \
39+
tar -xf cabal-install.tar.gz -C /usr/local/bin && \
40+
rm -rf "$GNUPGHOME" /var/lib/apt/lists/* /tmp/*
41+
2242
ARG GHC=9.0.1
23-
ARG DEBIAN_KEY=427CB69AAC9D00F2A43CAF1CBA3CBA3FFE22B574
24-
ARG CABAL_INSTALL=3.4
25-
26-
RUN export GNUPGHOME="$(mktemp -d)" && \
27-
gpg --batch --keyserver keyserver.ubuntu.com --recv-keys ${DEBIAN_KEY} && \
28-
gpg --batch --armor --export ${DEBIAN_KEY} > /etc/apt/trusted.gpg.d/haskell.org.gpg.asc && \
29-
gpgconf --kill all && \
30-
echo 'deb http://downloads.haskell.org/debian buster main' > /etc/apt/sources.list.d/ghc.list && \
31-
apt-get update && \
32-
apt-get install -y --no-install-recommends \
33-
cabal-install-${CABAL_INSTALL} \
34-
ghc-${GHC} && \
35-
rm -rf "$GNUPGHOME" /var/lib/apt/lists/*
43+
ARG GHC_RELEASE_KEY=FFEB7CE81E16A36B3E2DED6F2DE04D4E97DB64AD
44+
# get from https://downloads.haskell.org/~ghc/$GHC/SHA256SUMS
45+
ARG GHC_RELEASE_SHA256=C253E7EB62CC9DA6524C491C85EC8D3727C2CA6035A8653388E636AAA30A2A0F
46+
47+
RUN cd /tmp && \
48+
export GNUPGHOME="$(mktemp -d)" && \
49+
curl -sSL https://downloads.haskell.org/~ghc/$GHC/ghc-$GHC-x86_64-deb10-linux.tar.xz -o ghc.tar.xz && \
50+
curl -sSL https://downloads.haskell.org/~ghc/$GHC/ghc-$GHC-x86_64-deb10-linux.tar.xz.sig -o ghc.tar.xz.sig && \
51+
gpg --batch --keyserver keyserver.ubuntu.com --receive-keys ${GHC_RELEASE_KEY} && \
52+
gpg --batch --trusted-key 2DE04D4E97DB64AD --verify ghc.tar.xz.sig ghc.tar.xz && \
53+
echo "$GHC_RELEASE_SHA256 ghc.tar.xz" | sha256sum --strict --check && \
54+
tar xf ghc.tar.xz && \
55+
cd ghc-$GHC && \
56+
./configure --prefix /opt/ghc/$GHC && \
57+
make install && \
58+
find /opt/ghc/$GHC/ \( -name "*_p.a" -o -name "*.p_hi" \) -type f -delete && \
59+
rm -rf /opt/ghc/$GHC/share/ && \
60+
rm -rf "$GNUPGHOME" /tmp/*
3661

3762
ARG STACK=2.7.3
38-
ARG STACK_KEY=C5705533DA4F78D8664B5DC0575159689BEFB442
39-
ARG STACK_RELEASE_KEY=2C6A674E85EE3FB896AFC9B965101FF31C5C154D
63+
ARG STACK_RELEASE_KEY=C5705533DA4F78D8664B5DC0575159689BEFB442
64+
# get from https://github.com/commercialhaskell/stack/releases/download/v${STACK}/stack-${STACK}-linux-x86_64.tar.gz.sha256
65+
ARG STACK_RELEASE_SHA256=A6C090555FA1C64AA61C29AA4449765A51D79E870CF759CDE192937CD614E72B
4066

41-
RUN export GNUPGHOME="$(mktemp -d)" && \
42-
gpg --batch --keyserver keyserver.ubuntu.com --recv-keys ${STACK_KEY} && \
67+
RUN cd /tmp && \
68+
export GNUPGHOME="$(mktemp -d)" && \
4369
gpg --batch --keyserver keyserver.ubuntu.com --recv-keys ${STACK_RELEASE_KEY} && \
4470
curl -fSL https://github.com/commercialhaskell/stack/releases/download/v${STACK}/stack-${STACK}-linux-x86_64.tar.gz -o stack.tar.gz && \
4571
curl -fSL https://github.com/commercialhaskell/stack/releases/download/v${STACK}/stack-${STACK}-linux-x86_64.tar.gz.asc -o stack.tar.gz.asc && \
46-
gpg --batch --trusted-key 0x575159689BEFB442 --verify stack.tar.gz.asc stack.tar.gz && \
47-
tar -xf stack.tar.gz -C /usr/local/bin --strip-components=1 && \
72+
gpg --batch --trusted-key 575159689BEFB442 --verify stack.tar.gz.asc stack.tar.gz && \
73+
echo "$STACK_RELEASE_SHA256 stack.tar.gz" | sha256sum --strict --check && \
74+
tar -xf stack.tar.gz -C /usr/local/bin --strip-components=1 stack-$STACK-linux-x86_64/stack && \
4875
/usr/local/bin/stack config set system-ghc --global true && \
4976
/usr/local/bin/stack config set install-ghc --global false && \
50-
rm -rf "$GNUPGHOME" /var/lib/apt/lists/* /stack.tar.gz.asc /stack.tar.gz
77+
rm -rf "$GNUPGHOME" /var/lib/apt/lists/* /tmp/*
5178

52-
ENV PATH /root/.cabal/bin:/root/.local/bin:/opt/cabal/${CABAL_INSTALL}/bin:/opt/ghc/${GHC}/bin:$PATH
79+
ENV PATH /root/.cabal/bin:/root/.local/bin:/opt/ghc/${GHC}/bin:$PATH
5380

5481
CMD ["ghci"]

0 commit comments

Comments
 (0)