@@ -3,7 +3,8 @@ FROM debian:bookworm
3
3
ENV LANG=C.UTF-8
4
4
5
5
# common haskell + stack dependencies
6
- RUN apt-get update && \
6
+ RUN <<EOT
7
+ apt-get update && \
7
8
apt-get install -y --no-install-recommends \
8
9
ca-certificates \
9
10
curl \
@@ -22,112 +23,120 @@ RUN apt-get update && \
22
23
xz-utils \
23
24
zlib1g-dev && \
24
25
rm -rf /var/lib/apt/lists/*
26
+ EOT
25
27
26
28
ARG STACK=3.3.1
27
29
ARG STACK_RELEASE_KEY=C5705533DA4F78D8664B5DC0575159689BEFB442
28
30
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"
33
36
# 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
+
58
62
stack --version;
63
+ EOT
59
64
60
65
ARG CABAL_INSTALL=3.14.1.1
61
66
ARG CABAL_INSTALL_RELEASE_KEY=EAF2A9A722C0C96F2B431CA511AAD8CEDEE0CAEF
62
67
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-deb12.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-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"
69
75
# sha256 from https://downloads.haskell.org/~cabal/cabal-install-$CABAL_INSTALL/SHA256SUMS
70
- case "$ARCH" in \
71
- 'aarch64' ) \
72
- CABAL_INSTALL_SHA256='f763fb2af2bc1ff174b7361a7d51109a585954f87a0e14f86d144f3bce28f7a9' ; \
73
- ;; \
74
- 'x86_64' ) \
75
- CABAL_INSTALL_SHA256='73a463306c771e18ca22c0a9469176ffab0138ec5925adb5364ef47174e1adc5' ; \
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='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
87
93
# 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
+
95
101
cabal --version
102
+ EOT
96
103
97
- ARG GHC=9.12.2
98
- ARG GHC_RELEASE_KEY=FFEB7CE81E16A36B3E2DED6F2DE04D4E97DB64AD
104
+ ARG GHC=' 9.12.2'
105
+ ARG GHC_RELEASE_KEY=' FFEB7CE81E16A36B3E2DED6F2DE04D4E97DB64AD'
99
106
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-deb12-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-deb12-linux.tar.xz"
104
112
# sha256 from https://downloads.haskell.org/~ghc/$GHC/SHA256SUMS
105
- case "$ARCH" in \
106
- 'aarch64' ) \
107
- GHC_SHA256='bee95bc91a621d8a2e9a9d86dac28ff839605e87316518dae12c779709bd58f1' ; \
108
- ;; \
109
- 'x86_64' ) \
110
- GHC_SHA256='447ec2fcc773ae9ebc3f39766c719641631274f9b765d7426a8cbe9241677c9f' ; \
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='bee95bc91a621d8a2e9a9d86dac28ff839605e87316518dae12c779709bd58f1'
116
+ ;;
117
+ 'x86_64' )
118
+ GHC_SHA256='447ec2fcc773ae9ebc3f39766c719641631274f9b765d7426a8cbe9241677c9f'
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
+
130
138
"/opt/ghc/$GHC/bin/ghc" --version
139
+ EOT
131
140
132
141
ENV PATH=/root/.cabal/bin:/root/.local/bin:/opt/ghc/${GHC}/bin:$PATH
133
142
0 commit comments