@@ -3,8 +3,7 @@ FROM debian:bookworm
33ENV LANG=C.UTF-8
44
55# common haskell + stack dependencies
6- RUN <<EOT
7- apt-get update && \
6+ RUN apt-get update && \
87 apt-get install -y --no-install-recommends \
98 ca-certificates \
109 curl \
@@ -23,121 +22,115 @@ RUN <<EOT
2322 xz-utils \
2423 zlib1g-dev && \
2524 rm -rf /var/lib/apt/lists/*
26- EOT
25+
2726
2827ARG STACK='3.3.1'
2928ARG STACK_RELEASE_KEY='C5705533DA4F78D8664B5DC0575159689BEFB442'
3029
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"
36- # sha256 from https://github.com/commercialhaskell/stack/releases/download/v${STACK}/stack-${STACK}-linux-$ARCH.tar.gz.sha256
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-
30+ RUN set -eux; \
31+ cd /tmp; \
32+ ARCH="$(dpkg-architecture --query DEB_BUILD_GNU_CPU)" ; \
33+ STACK_URL="https://github.com/commercialhaskell/stack/releases/download/v${STACK}/stack-${STACK}-linux-$ARCH.tar.gz" ; \
34+ # sha256 from https://github.com/commercialhaskell/stack/releases/download/v${STACK}/stack-${STACK}-linux-$ARCH.tar.gz.sha256 \
35+ case "$ARCH" in \
36+ 'aarch64' ) \
37+ STACK_SHA256='bdd618ea5a9c921417727011f2ecd78987dffa5cee5e741108baf65a9b5b58ab' ; \
38+ ;; \
39+ 'x86_64' ) \
40+ STACK_SHA256='88d7e517342c125b0a098d9d578fe53e590618ae4b2427283a27408a1ebd06d8' ; \
41+ ;; \
42+ *) echo >&2 "error: unsupported architecture '$ARCH'" exit 1 ; \
43+ esac; \
44+ curl -sSL "$STACK_URL" -o stack.tar.gz; \
45+ echo "$STACK_SHA256 stack.tar.gz" | sha256sum --strict --check; \
46+ \
47+ curl -sSL "$STACK_URL.asc" -o stack.tar.gz.asc; \
48+ GNUPGHOME="$(mktemp -d)" ; \
49+ export GNUPGHOME; \
50+ gpg --batch --keyserver keyserver.ubuntu.com --receive-keys "$STACK_RELEASE_KEY" ; \
51+ gpg --batch --verify stack.tar.gz.asc stack.tar.gz; \
52+ gpgconf --kill all; \
53+ \
54+ tar -xf stack.tar.gz -C /usr/local/bin --strip-components=1 "stack-$STACK-linux-$ARCH/stack" ; \
55+ stack config set system-ghc --global true; \
56+ stack config set install-ghc --global false; \
57+ \
58+ rm -rf /tmp/*; \
59+ \
6260 stack --version;
63- EOT
6461
6562ARG CABAL_INSTALL='3.14.1.1'
6663ARG CABAL_INSTALL_RELEASE_KEY='EAF2A9A722C0C96F2B431CA511AAD8CEDEE0CAEF'
6764
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-deb12.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"
75- # sha256 from https://downloads.haskell.org/~cabal/cabal-install-$CABAL_INSTALL/SHA256SUMS
76- case "$ARCH" in
77- 'aarch64' )
78- CABAL_INSTALL_SHA256='f763fb2af2bc1ff174b7361a7d51109a585954f87a0e14f86d144f3bce28f7a9'
79- ;;
80- 'x86_64' )
81- CABAL_INSTALL_SHA256='73a463306c771e18ca22c0a9469176ffab0138ec5925adb5364ef47174e1adc5'
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
93- # confirm we are verifying SHA256SUMS that matches the release + sha256
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-
65+ RUN set -eux; \
66+ cd /tmp; \
67+ ARCH="$(dpkg-architecture --query DEB_BUILD_GNU_CPU)" ; \
68+ CABAL_INSTALL_TAR="cabal-install-$CABAL_INSTALL-$ARCH-linux-deb12.tar.xz" ; \
69+ CABAL_INSTALL_URL="https://downloads.haskell.org/~cabal/cabal-install-$CABAL_INSTALL/$CABAL_INSTALL_TAR" ; \
70+ CABAL_INSTALL_SHA256SUMS_URL="https://downloads.haskell.org/~cabal/cabal-install-$CABAL_INSTALL/SHA256SUMS" ; \
71+ # sha256 from https://downloads.haskell.org/~cabal/cabal-install-$CABAL_INSTALL/SHA256SUMS \
72+ case "$ARCH" in \
73+ 'aarch64' ) \
74+ CABAL_INSTALL_SHA256='f763fb2af2bc1ff174b7361a7d51109a585954f87a0e14f86d144f3bce28f7a9' ; \
75+ ;; \
76+ 'x86_64' ) \
77+ CABAL_INSTALL_SHA256='73a463306c771e18ca22c0a9469176ffab0138ec5925adb5364ef47174e1adc5' ; \
78+ ;; \
79+ *) echo >&2 "error: unsupported architecture '$ARCH'" ; exit 1 ;; \
80+ esac; \
81+ curl -fSL "$CABAL_INSTALL_URL" -o cabal-install.tar.gz; \
82+ echo "$CABAL_INSTALL_SHA256 cabal-install.tar.gz" | sha256sum --strict --check; \
83+ \
84+ curl -sSLO "$CABAL_INSTALL_SHA256SUMS_URL" ; \
85+ curl -sSLO "$CABAL_INSTALL_SHA256SUMS_URL.sig" ; \
86+ GNUPGHOME="$(mktemp -d)" ; export GNUPGHOME; \
87+ gpg --batch --keyserver keyserver.ubuntu.com --receive-keys "$CABAL_INSTALL_RELEASE_KEY" ; \
88+ gpg --batch --verify SHA256SUMS.sig SHA256SUMS; \
89+ # confirm we are verifying SHA256SUMS that matches the release + sha256 \
90+ grep "$CABAL_INSTALL_SHA256 $CABAL_INSTALL_TAR" SHA256SUMS; \
91+ gpgconf --kill all; \
92+ \
93+ tar -xf cabal-install.tar.gz -C /usr/local/bin; \
94+ \
95+ rm -rf /tmp/*; \
96+ \
10197 cabal --version
102- EOT
10398
10499ARG GHC='9.10.3'
105100ARG GHC_RELEASE_KEY='88B57FCF7DB53B4DB3BFA4B1588764FBE22D19C4'
106101
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-deb12-linux.tar.xz"
112- # sha256 from https://downloads.haskell.org/~ghc/$GHC/SHA256SUMS
113- case "$ARCH" in
114- 'aarch64' )
115- GHC_SHA256='052789dfe7f6fba6dc3822de0da272e8a5bd358c37adae17d8e82cff39bc1008'
116- GHC_URL='https://downloads.haskell.org/~ghc/9.10.3/ghc-9.10.3-aarch64-deb11-linux.tar.xz'
117- ;;
118- 'x86_64' )
119- GHC_SHA256='1ac63f04eac0ad551d45cbde38f27e0e3f43ceefd98833fae1fa3f2dbd042367'
120- ;;
121- *) echo >&2 "error: unsupported architecture '$ARCH'" ; exit 1 ;;
122- esac
123- curl -sSL "$GHC_URL" -o ghc.tar.xz
124- echo "$GHC_SHA256 ghc.tar.xz" | sha256sum --strict --check
125-
126- GNUPGHOME="$(mktemp -d)" ; export GNUPGHOME
127- curl -sSL "$GHC_URL.sig" -o ghc.tar.xz.sig
128- gpg --batch --keyserver keyserver.ubuntu.com --receive-keys "$GHC_RELEASE_KEY"
129- gpg --batch --verify ghc.tar.xz.sig ghc.tar.xz
130- gpgconf --kill all
131-
132- tar xf ghc.tar.xz
133- cd "ghc-$GHC-$ARCH-unknown-linux"
134- ./configure --prefix "/opt/ghc/$GHC"
135- make install
136-
137- rm -rf /tmp/*
138-
102+ RUN set -eux; \
103+ cd /tmp; \
104+ ARCH="$(dpkg-architecture --query DEB_BUILD_GNU_CPU)" ; \
105+ GHC_URL="https://downloads.haskell.org/~ghc/$GHC/ghc-$GHC-$ARCH-deb12-linux.tar.xz" ; \
106+ # sha256 from https://downloads.haskell.org/~ghc/$GHC/SHA256SUMS \
107+ case "$ARCH" in \
108+ 'aarch64' ) \
109+ GHC_SHA256='052789dfe7f6fba6dc3822de0da272e8a5bd358c37adae17d8e82cff39bc1008' ; \
110+ GHC_URL='https://downloads.haskell.org/~ghc/9.10.3/ghc-9.10.3-aarch64-deb11-linux.tar.xz' ; \
111+ ;; \
112+ 'x86_64' ) \
113+ GHC_SHA256='1ac63f04eac0ad551d45cbde38f27e0e3f43ceefd98833fae1fa3f2dbd042367' ; \
114+ ;; \
115+ *) echo >&2 "error: unsupported architecture '$ARCH'" ; exit 1 ;; \
116+ esac; \
117+ curl -sSL "$GHC_URL" -o ghc.tar.xz; \
118+ echo "$GHC_SHA256 ghc.tar.xz" | sha256sum --strict --check; \
119+ \
120+ GNUPGHOME="$(mktemp -d)" ; export GNUPGHOME; \
121+ curl -sSL "$GHC_URL.sig" -o ghc.tar.xz.sig; \
122+ gpg --batch --keyserver keyserver.ubuntu.com --receive-keys "$GHC_RELEASE_KEY" ; \
123+ gpg --batch --verify ghc.tar.xz.sig ghc.tar.xz; \
124+ gpgconf --kill all; \
125+ \
126+ tar xf ghc.tar.xz; \
127+ cd "ghc-$GHC-$ARCH-unknown-linux" ; \
128+ ./configure --prefix "/opt/ghc/$GHC" ; \
129+ make install; \
130+ \
131+ rm -rf /tmp/*; \
132+ \
139133 "/opt/ghc/$GHC/bin/ghc" --version
140- EOT
141134
142135ENV PATH=/root/.cabal/bin:/root/.local/bin:/opt/ghc/${GHC}/bin:$PATH
143136
0 commit comments