@@ -3,7 +3,8 @@ FROM debian:bullseye-slim
33ENV LANG=C.UTF-8
44
55# common haskell + stack dependencies
6- RUN apt-get update && \
6+ RUN <<EOT
7+ apt-get update && \
78 apt-get install -y --no-install-recommends \
89 ca-certificates \
910 curl \
@@ -22,112 +23,120 @@ RUN apt-get update && \
2223 xz-utils \
2324 zlib1g-dev && \
2425 rm -rf /var/lib/apt/lists/*
26+ EOT
2527
26- ARG STACK=3.3.1
27- ARG STACK_RELEASE_KEY=C5705533DA4F78D8664B5DC0575159689BEFB442
28+ ARG STACK=' 3.3.1'
29+ ARG STACK_RELEASE_KEY=' C5705533DA4F78D8664B5DC0575159689BEFB442'
2830
29- RUN set -eux; \
30- cd /tmp; \
31- ARCH="$(dpkg-architecture --query DEB_BUILD_GNU_CPU)" ; \
32- STACK_URL="https://github.com/commercialhaskell/stack/releases/download/v${STACK}/stack-${STACK}-linux-$ARCH.tar.gz" ; \
31+ RUN <<EOT
32+ set -eux
33+ cd /tmp
34+ ARCH="$(dpkg-architecture --query DEB_BUILD_GNU_CPU)"
35+ STACK_URL="https://github.com/commercialhaskell/stack/releases/download/v${STACK}/stack-${STACK}-linux-$ARCH.tar.gz"
3336 # sha256 from https://github.com/commercialhaskell/stack/releases/download/v${STACK}/stack-${STACK}-linux-$ARCH.tar.gz.sha256
34- case "$ARCH" in \
35- 'aarch64' ) \
36- STACK_SHA256='bdd618ea5a9c921417727011f2ecd78987dffa5cee5e741108baf65a9b5b58ab' ; \
37- ;; \
38- 'x86_64' ) \
39- STACK_SHA256='88d7e517342c125b0a098d9d578fe53e590618ae4b2427283a27408a1ebd06d8' ; \
40- ;; \
41- *) echo >&2 "error: unsupported architecture '$ARCH'" ; exit 1 ;; \
42- esac; \
43- curl -sSL "$STACK_URL" -o stack.tar.gz; \
44- echo "$STACK_SHA256 stack.tar.gz" | sha256sum --strict --check; \
45- \
46- curl -sSL "$STACK_URL.asc" -o stack.tar.gz.asc; \
47- GNUPGHOME="$(mktemp -d)" ; export GNUPGHOME; \
48- gpg --batch --keyserver keyserver.ubuntu.com --receive-keys "$STACK_RELEASE_KEY" ; \
49- gpg --batch --verify stack.tar.gz.asc stack.tar.gz; \
50- gpgconf --kill all; \
51- \
52- tar -xf stack.tar.gz -C /usr/local/bin --strip-components=1 "stack-$STACK-linux-$ARCH/stack" ; \
53- stack config set system-ghc --global true; \
54- stack config set install-ghc --global false; \
55- \
56- rm -rf /tmp/*; \
57- \
37+ case "$ARCH" in
38+ 'aarch64' )
39+ STACK_SHA256='bdd618ea5a9c921417727011f2ecd78987dffa5cee5e741108baf65a9b5b58ab'
40+ ;;
41+ 'x86_64' )
42+ STACK_SHA256='88d7e517342c125b0a098d9d578fe53e590618ae4b2427283a27408a1ebd06d8'
43+ ;;
44+ *) echo >&2 "error: unsupported architecture '$ARCH'" exit 1 ;
45+ esac
46+ curl -sSL "$STACK_URL" -o stack.tar.gz
47+ echo "$STACK_SHA256 stack.tar.gz" | sha256sum --strict --check
48+
49+ curl -sSL "$STACK_URL.asc" -o stack.tar.gz.asc
50+ GNUPGHOME="$(mktemp -d)"
51+ export GNUPGHOME
52+ gpg --batch --keyserver keyserver.ubuntu.com --receive-keys "$STACK_RELEASE_KEY"
53+ gpg --batch --verify stack.tar.gz.asc stack.tar.gz
54+ gpgconf --kill all
55+
56+ tar -xf stack.tar.gz -C /usr/local/bin --strip-components=1 "stack-$STACK-linux-$ARCH/stack"
57+ stack config set system-ghc --global true
58+ stack config set install-ghc --global false
59+
60+ rm -rf /tmp/*
61+
5862 stack --version;
63+ EOT
5964
60- ARG CABAL_INSTALL=3.12 .1.0
61- ARG CABAL_INSTALL_RELEASE_KEY=1E07C9A1A3088BAD47F74A3E227EE1942B0BDB95
65+ ARG CABAL_INSTALL='3.14 .1.1'
66+ ARG CABAL_INSTALL_RELEASE_KEY='EAF2A9A722C0C96F2B431CA511AAD8CEDEE0CAEF'
6267
63- RUN set -eux; \
64- cd /tmp; \
65- ARCH="$(dpkg-architecture --query DEB_BUILD_GNU_CPU)" ; \
66- CABAL_INSTALL_TAR="cabal-install-$CABAL_INSTALL-$ARCH-linux-deb11.tar.xz" ; \
67- CABAL_INSTALL_URL="https://downloads.haskell.org/~cabal/cabal-install-$CABAL_INSTALL/$CABAL_INSTALL_TAR" ; \
68- CABAL_INSTALL_SHA256SUMS_URL="https://downloads.haskell.org/~cabal/cabal-install-$CABAL_INSTALL/SHA256SUMS" ; \
68+ RUN <<EOT
69+ set -eux
70+ cd /tmp
71+ ARCH="$(dpkg-architecture --query DEB_BUILD_GNU_CPU)"
72+ CABAL_INSTALL_TAR="cabal-install-$CABAL_INSTALL-$ARCH-linux-deb11.tar.xz"
73+ CABAL_INSTALL_URL="https://downloads.haskell.org/~cabal/cabal-install-$CABAL_INSTALL/$CABAL_INSTALL_TAR"
74+ CABAL_INSTALL_SHA256SUMS_URL="https://downloads.haskell.org/~cabal/cabal-install-$CABAL_INSTALL/SHA256SUMS"
6975 # sha256 from https://downloads.haskell.org/~cabal/cabal-install-$CABAL_INSTALL/SHA256SUMS
70- case "$ARCH" in \
71- 'aarch64' ) \
72- CABAL_INSTALL_SHA256='c14e8198407f37f7276c77b5cefef60ee6a929b4c22d7316577ce8e2301a758e' ; \
73- ;; \
74- 'x86_64' ) \
75- CABAL_INSTALL_SHA256='4f60cf1c72f4ad4d82d668839ac61ae15ae4faf6c4b809395799e8a3ee622051' ; \
76- ;; \
77- *) echo >&2 "error: unsupported architecture '$ARCH'" ; exit 1 ;; \
78- esac; \
79- curl -fSL "$CABAL_INSTALL_URL" -o cabal-install.tar.gz; \
80- echo "$CABAL_INSTALL_SHA256 cabal-install.tar.gz" | sha256sum --strict --check; \
81- \
82- curl -sSLO "$CABAL_INSTALL_SHA256SUMS_URL" ; \
83- curl -sSLO "$CABAL_INSTALL_SHA256SUMS_URL.sig" ; \
84- GNUPGHOME="$(mktemp -d)" ; export GNUPGHOME; \
85- gpg --batch --keyserver keyserver.ubuntu.com --receive-keys "$CABAL_INSTALL_RELEASE_KEY" ; \
86- gpg --batch --verify SHA256SUMS.sig SHA256SUMS; \
76+ case "$ARCH" in
77+ 'aarch64' )
78+ CABAL_INSTALL_SHA256='5e8c47a055d5b744741039a7061ee43ec7d080d1251784e7a4cd836403e42523'
79+ ;;
80+ 'x86_64' )
81+ CABAL_INSTALL_SHA256='41b85bb25fa654e4b79169014b9142fe696ff35e002e043caa0e52d65204ba8a'
82+ ;;
83+ *) echo >&2 "error: unsupported architecture '$ARCH'" ; exit 1 ;;
84+ esac
85+ curl -fSL "$CABAL_INSTALL_URL" -o cabal-install.tar.gz
86+ echo "$CABAL_INSTALL_SHA256 cabal-install.tar.gz" | sha256sum --strict --check
87+
88+ curl -sSLO "$CABAL_INSTALL_SHA256SUMS_URL"
89+ curl -sSLO "$CABAL_INSTALL_SHA256SUMS_URL.sig"
90+ GNUPGHOME="$(mktemp -d)" ; export GNUPGHOME
91+ gpg --batch --keyserver keyserver.ubuntu.com --receive-keys "$CABAL_INSTALL_RELEASE_KEY"
92+ gpg --batch --verify SHA256SUMS.sig SHA256SUMS
8793 # confirm we are verifying SHA256SUMS that matches the release + sha256
88- grep "$CABAL_INSTALL_SHA256 $CABAL_INSTALL_TAR" SHA256SUMS; \
89- gpgconf --kill all; \
90- \
91- tar -xf cabal-install.tar.gz -C /usr/local/bin; \
92- \
93- rm -rf /tmp/*; \
94- \
94+ grep "$CABAL_INSTALL_SHA256 $CABAL_INSTALL_TAR" SHA256SUMS
95+ gpgconf --kill all;
96+
97+ tar -xf cabal-install.tar.gz -C /usr/local/bin
98+
99+ rm -rf /tmp/*
100+
95101 cabal --version
102+ EOT
96103
97- ARG GHC=9.10.2
98- ARG GHC_RELEASE_KEY=88B57FCF7DB53B4DB3BFA4B1588764FBE22D19C4
104+ ARG GHC=' 9.10.2'
105+ ARG GHC_RELEASE_KEY=' 88B57FCF7DB53B4DB3BFA4B1588764FBE22D19C4'
99106
100- RUN set -eux; \
101- cd /tmp; \
102- ARCH="$(dpkg-architecture --query DEB_BUILD_GNU_CPU)" ; \
103- GHC_URL="https://downloads.haskell.org/~ghc/$GHC/ghc-$GHC-$ARCH-deb11-linux.tar.xz" ; \
107+ RUN <<EOT
108+ set -eux
109+ cd /tmp
110+ ARCH="$(dpkg-architecture --query DEB_BUILD_GNU_CPU)"
111+ GHC_URL="https://downloads.haskell.org/~ghc/$GHC/ghc-$GHC-$ARCH-deb11-linux.tar.xz"
104112 # sha256 from https://downloads.haskell.org/~ghc/$GHC/SHA256SUMS
105- case "$ARCH" in \
106- 'aarch64' ) \
107- GHC_SHA256='0188ca098abdaf71eb0804d0f35311f405da489137d8d438bfaa43b8d1e3f1b0' ; \
108- ;; \
109- 'x86_64' ) \
110- GHC_SHA256='2fe2c3e0a07e4782530e8bf83eeda8ff6935e40d5450c1809abcdc6182c9c848' ; \
111- ;; \
112- *) echo >&2 "error: unsupported architecture '$ARCH'" ; exit 1 ;; \
113- esac; \
114- curl -sSL "$GHC_URL" -o ghc.tar.xz; \
115- echo "$GHC_SHA256 ghc.tar.xz" | sha256sum --strict --check; \
116- \
117- GNUPGHOME="$(mktemp -d)" ; export GNUPGHOME; \
118- curl -sSL "$GHC_URL.sig" -o ghc.tar.xz.sig; \
119- gpg --batch --keyserver keyserver.ubuntu.com --receive-keys "$GHC_RELEASE_KEY" ; \
120- gpg --batch --verify ghc.tar.xz.sig ghc.tar.xz; \
121- gpgconf --kill all; \
122- \
123- tar xf ghc.tar.xz; \
124- cd "ghc-$GHC-$ARCH-unknown-linux" ; \
125- ./configure --prefix "/opt/ghc/$GHC" ; \
126- make install; \
127- \
128- rm -rf /tmp/*; \
129- \
113+ case "$ARCH" in
114+ 'aarch64' )
115+ GHC_SHA256='0188ca098abdaf71eb0804d0f35311f405da489137d8d438bfaa43b8d1e3f1b0'
116+ ;;
117+ 'x86_64' )
118+ GHC_SHA256='2fe2c3e0a07e4782530e8bf83eeda8ff6935e40d5450c1809abcdc6182c9c848'
119+ ;;
120+ *) echo >&2 "error: unsupported architecture '$ARCH'" ; exit 1 ;;
121+ esac
122+ curl -sSL "$GHC_URL" -o ghc.tar.xz
123+ echo "$GHC_SHA256 ghc.tar.xz" | sha256sum --strict --check
124+
125+ GNUPGHOME="$(mktemp -d)" ; export GNUPGHOME
126+ curl -sSL "$GHC_URL.sig" -o ghc.tar.xz.sig
127+ gpg --batch --keyserver keyserver.ubuntu.com --receive-keys "$GHC_RELEASE_KEY"
128+ gpg --batch --verify ghc.tar.xz.sig ghc.tar.xz
129+ gpgconf --kill all
130+
131+ tar xf ghc.tar.xz
132+ cd "ghc-$GHC-$ARCH-unknown-linux"
133+ ./configure --prefix "/opt/ghc/$GHC"
134+ make install
135+
136+ rm -rf /tmp/*
137+
130138 "/opt/ghc/$GHC/bin/ghc" --version
139+ EOT
131140
132141ENV PATH=/root/.cabal/bin:/root/.local/bin:/opt/ghc/${GHC}/bin:$PATH
133142
0 commit comments