@@ -2,14 +2,18 @@ FROM debian:buster
2
2
3
3
ENV LANG C.UTF-8
4
4
5
+ # common haskell + stack dependencies
5
6
RUN apt-get update && \
6
7
apt-get install -y --no-install-recommends \
7
8
ca-certificates \
8
9
curl \
9
- dirmngr \
10
- g++ \
11
10
git \
11
+ gcc \
12
12
gnupg \
13
+ g++ \
14
+ libc6-dev \
15
+ libffi-dev \
16
+ libgmp-dev \
13
17
libsqlite3-dev \
14
18
libtinfo-dev \
15
19
make \
@@ -19,36 +23,59 @@ RUN apt-get update && \
19
23
zlib1g-dev && \
20
24
rm -rf /var/lib/apt/lists/*
21
25
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
25
30
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/*
36
61
37
62
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
40
66
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)" && \
43
69
gpg --batch --keyserver keyserver.ubuntu.com --recv-keys ${STACK_RELEASE_KEY} && \
44
70
curl -fSL https://github.com/commercialhaskell/stack/releases/download/v${STACK}/stack-${STACK}-linux-x86_64.tar.gz -o stack.tar.gz && \
45
71
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 && \
48
75
/usr/local/bin/stack config set system-ghc --global true && \
49
76
/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/*
51
78
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
53
80
54
81
CMD ["ghci" ]
0 commit comments