|
1 |
| -FROM debian:buster |
| 1 | +FROM debian:buster AS builder |
2 | 2 |
|
3 | 3 | ENV LANG C.UTF-8
|
4 | 4 |
|
| 5 | +# install prerequisites |
5 | 6 | RUN apt-get update && \
|
6 | 7 | apt-get install -y --no-install-recommends \
|
7 | 8 | ca-certificates \
|
8 |
| - curl \ |
9 |
| - dirmngr \ |
10 |
| - g++ \ |
11 |
| - git \ |
12 |
| - gnupg \ |
13 |
| - libsqlite3-dev \ |
14 |
| - libtinfo-dev \ |
15 |
| - make \ |
16 |
| - netbase \ |
17 |
| - openssh-client \ |
18 |
| - xz-utils \ |
19 |
| - zlib1g-dev && \ |
| 9 | + build-essential \ |
| 10 | + libffi-dev \ |
| 11 | + libffi6 \ |
| 12 | + libgmp-dev \ |
| 13 | + libgmp10 \ |
| 14 | + libncurses-dev \ |
| 15 | + libncurses5 \ |
| 16 | + libtinfo5 \ |
| 17 | + curl && \ |
20 | 18 | rm -rf /var/lib/apt/lists/*
|
21 | 19 |
|
22 |
| -ARG GHC=8.10.4 |
23 |
| -ARG DEBIAN_KEY=427CB69AAC9D00F2A43CAF1CBA3CBA3FFE22B574 |
24 |
| -ARG CABAL_INSTALL=3.4 |
| 20 | +# install ghcup |
| 21 | +ARG GHCUP_VERSION=0.1.16.2 |
| 22 | +RUN curl --proto '=https' --tlsv1.2 -sSf https://downloads.haskell.org/~ghcup/$GHCUP_VERSION/x86_64-linux-ghcup-$GHCUP_VERSION > /usr/bin/ghcup && \ |
| 23 | + chmod +x /usr/bin/ghcup |
25 | 24 |
|
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/* |
36 |
| - |
37 |
| -ARG STACK=2.7.3 |
38 |
| -ARG STACK_KEY=C5705533DA4F78D8664B5DC0575159689BEFB442 |
39 |
| -ARG STACK_RELEASE_KEY=2C6A674E85EE3FB896AFC9B965101FF31C5C154D |
| 25 | +# install cabal |
| 26 | +ARG CABAL_VERSION=3.4.0.0 |
| 27 | +RUN ghcup install cabal -i /usr/bin $CABAL_VERSION |
40 | 28 |
|
41 |
| -RUN export GNUPGHOME="$(mktemp -d)" && \ |
42 |
| - gpg --batch --keyserver keyserver.ubuntu.com --recv-keys ${STACK_KEY} && \ |
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 && \ |
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 && \ |
48 |
| - /usr/local/bin/stack config set system-ghc --global true && \ |
49 |
| - /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 |
| 29 | +# install stack |
| 30 | +ARG STACK_VERSION=2.7.3 |
| 31 | +RUN ghcup install stack -i /usr/bin $STACK_VERSION |
51 | 32 |
|
52 |
| -ENV PATH /root/.cabal/bin:/root/.local/bin:/opt/cabal/${CABAL_INSTALL}/bin:/opt/ghc/${GHC}/bin:$PATH |
| 33 | +# install GHC into /opt/ghc |
| 34 | +ARG GHC_VERSION=8.10.6 |
| 35 | +RUN ghcup install ghc -i /opt/ghc $GHC_VERSION |
53 | 36 |
|
54 |
| -CMD ["ghci"] |
| 37 | +# Adjust PATH |
| 38 | +RUN echo 'export PATH="/opt/ghc/bin:$PATH"' >> /etc/profile.d/ghcup_path.sh && \ |
| 39 | + chmod +x /etc/profile.d/ghcup_path.sh |
| 40 | +ENV PATH="/opt/ghc/bin:$PATH" |
0 commit comments