@@ -3,7 +3,8 @@ FROM debian:bullseye-slim
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
- ARG STACK=3.3.1
27
- ARG STACK_RELEASE_KEY=C5705533DA4F78D8664B5DC0575159689BEFB442
28
+ ARG STACK=' 3.3.1'
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
- 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'
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-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"
69
75
# 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
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.10.2
98
- ARG GHC_RELEASE_KEY=88B57FCF7DB53B4DB3BFA4B1588764FBE22D19C4
104
+ ARG GHC=' 9.10.2'
105
+ ARG GHC_RELEASE_KEY=' 88B57FCF7DB53B4DB3BFA4B1588764FBE22D19C4'
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-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"
104
112
# 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
+
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