|
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 |
5 | 3 |
|
6 | 4 | ENV LANG=C.UTF-8
|
7 | 5 |
|
| 6 | +# common haskell + stack dependencies |
8 | 7 | 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; \ |
20 | 8 | apt-get update; \
|
21 | 9 | apt-get install -y --no-install-recommends \
|
22 |
| - cabal-install-${CABAL_INSTALL} \ |
| 10 | + ca-certificates \ |
23 | 11 | curl \
|
24 |
| - g++ \ |
25 |
| - ghc-${GHC} \ |
| 12 | + dpkg-dev \ |
26 | 13 | git \
|
27 |
| - libsqlite3-dev \ |
| 14 | + gcc \ |
| 15 | + gnupg \ |
| 16 | + g++ \ |
| 17 | + libc6-dev \ |
| 18 | + libffi-dev \ |
| 19 | + libgmp-dev \ |
| 20 | + libnuma-dev \ |
28 | 21 | libtinfo-dev \
|
29 | 22 | make \
|
30 | 23 | netbase \
|
31 |
| - openssh-client \ |
32 | 24 | xz-utils \
|
33 | 25 | zlib1g-dev \
|
34 |
| -# regex-pcre requires pcre |
| 26 | + # for regex-pcre |
35 | 27 | libpcre3 \
|
36 | 28 | libpcre3-dev \
|
| 29 | + pkg-config \ |
37 | 30 | ; \
|
38 |
| - rm -rf "$GNUPGHOME" /var/lib/apt/lists/* /tmp/* /var/tmp/*; |
| 31 | + rm -rf /var/lib/apt/lists/*; |
39 | 32 |
|
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"; \ |
46 | 45 | gpg --batch --verify stack.tar.gz.asc stack.tar.gz; \
|
47 | 46 | 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"; \ |
49 | 49 | stack config set system-ghc --global true; \
|
50 | 50 | 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; |
52 | 55 |
|
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; |
54 | 109 |
|
| 110 | +ENV PATH=/opt/ghc/${GHC}/bin:$PATH |
55 | 111 |
|
56 | 112 | RUN set -ex; \
|
57 | 113 | useradd --create-home codewarrior; \
|
|
0 commit comments