Skip to content

Commit 2c94fed

Browse files
committed
Use ghcup to install toolchain
1 parent d9bf04e commit 2c94fed

File tree

4 files changed

+114
-118
lines changed

4 files changed

+114
-118
lines changed

8.10/buster/Dockerfile

+29-30
Original file line numberDiff line numberDiff line change
@@ -12,43 +12,42 @@ RUN apt-get update && \
1212
gnupg \
1313
libsqlite3-dev \
1414
libtinfo-dev \
15+
libgmp-dev \
1516
make \
1617
netbase \
1718
openssh-client \
1819
xz-utils \
1920
zlib1g-dev && \
2021
rm -rf /var/lib/apt/lists/*
2122

22-
ARG GHC=8.10.4
23-
ARG DEBIAN_KEY=427CB69AAC9D00F2A43CAF1CBA3CBA3FFE22B574
24-
ARG CABAL_INSTALL=3.4
25-
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-
23+
ARG GHCUP_VERSION=0.1.17
24+
ARG GPG_KEY=7784930957807690A66EBDBE3786C5262ECB4A3F
25+
26+
# install ghcup
27+
RUN gpg --batch --keyserver keys.openpgp.org --recv-keys $GPG_KEY && \
28+
curl -sSfL -O https://downloads.haskell.org/~ghcup/$GHCUP_VERSION/x86_64-linux-ghcup-$GHCUP_VERSION && \
29+
curl -sSfL -O https://downloads.haskell.org/~ghcup/$GHCUP_VERSION/SHA256SUMS && \
30+
curl -sSfL -O https://downloads.haskell.org/~ghcup/$GHCUP_VERSION/SHA256SUMS.sig && \
31+
gpg --verify SHA256SUMS.sig SHA256SUMS && \
32+
sha256sum -c --ignore-missing SHA256SUMS && \
33+
mv x86_64-linux-ghcup-$GHCUP_VERSION /usr/bin/ghcup && \
34+
chmod +x /usr/bin/ghcup && \
35+
rm -rf SHA256SUMS SHA256SUMS.sig
36+
37+
ARG GHC=8.10.7
38+
ARG CABAL_INSTALL=3.6.0.0
3739
ARG STACK=2.7.3
38-
ARG STACK_KEY=C5705533DA4F78D8664B5DC0575159689BEFB442
39-
ARG STACK_RELEASE_KEY=2C6A674E85EE3FB896AFC9B965101FF31C5C154D
40-
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
51-
52-
ENV PATH /root/.cabal/bin:/root/.local/bin:/opt/cabal/${CABAL_INSTALL}/bin:/opt/ghc/${GHC}/bin:$PATH
40+
41+
# install haskell toolchain
42+
RUN export GHCUP_CURL_OPTS="--silent" && \
43+
ghcup config set gpg-setting GPGStrict && \
44+
ghcup --verbose install ghc --isolate=/usr --force ${GHC} && \
45+
ghcup --verbose install cabal --isolate=/usr/bin --force ${CABAL_INSTALL} && \
46+
ghcup --verbose install stack --isolate=/usr/bin --force ${STACK} && \
47+
find "/usr/lib/ghc-${GHC}/" \( -name "*_p.a" -o -name "*.p_hi" \) -type f -delete && \
48+
rm -r "/usr/share/doc/ghc-${GHC}" && \
49+
rm -rf /tmp/ghcup*
50+
51+
ENV PATH /root/.cabal/bin:/root/.local/bin:$PATH
5352

5453
CMD ["ghci"]

8.10/stretch/Dockerfile

+29-30
Original file line numberDiff line numberDiff line change
@@ -12,43 +12,42 @@ RUN apt-get update && \
1212
gnupg \
1313
libsqlite3-dev \
1414
libtinfo-dev \
15+
libgmp-dev \
1516
make \
1617
netbase \
1718
openssh-client \
1819
xz-utils \
1920
zlib1g-dev && \
2021
rm -rf /var/lib/apt/lists/*
2122

22-
ARG GHC=8.10.4
23-
ARG DEBIAN_KEY=427CB69AAC9D00F2A43CAF1CBA3CBA3FFE22B574
24-
ARG CABAL_INSTALL=3.4
25-
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 stretch 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-
23+
ARG GHCUP_VERSION=0.1.17
24+
ARG GPG_KEY=7784930957807690A66EBDBE3786C5262ECB4A3F
25+
26+
# install ghcup
27+
RUN gpg --batch --keyserver keys.openpgp.org --recv-keys $GPG_KEY && \
28+
curl -sSfL -O https://downloads.haskell.org/~ghcup/$GHCUP_VERSION/x86_64-linux-ghcup-$GHCUP_VERSION && \
29+
curl -sSfL -O https://downloads.haskell.org/~ghcup/$GHCUP_VERSION/SHA256SUMS && \
30+
curl -sSfL -O https://downloads.haskell.org/~ghcup/$GHCUP_VERSION/SHA256SUMS.sig && \
31+
gpg --verify SHA256SUMS.sig SHA256SUMS && \
32+
sha256sum -c --ignore-missing SHA256SUMS && \
33+
mv x86_64-linux-ghcup-$GHCUP_VERSION /usr/bin/ghcup && \
34+
chmod +x /usr/bin/ghcup && \
35+
rm -rf SHA256SUMS SHA256SUMS.sig
36+
37+
ARG GHC=8.10.7
38+
ARG CABAL_INSTALL=3.6.0.0
3739
ARG STACK=2.7.3
38-
ARG STACK_KEY=C5705533DA4F78D8664B5DC0575159689BEFB442
39-
ARG STACK_RELEASE_KEY=2C6A674E85EE3FB896AFC9B965101FF31C5C154D
40-
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
51-
52-
ENV PATH /root/.cabal/bin:/root/.local/bin:/opt/cabal/${CABAL_INSTALL}/bin:/opt/ghc/${GHC}/bin:$PATH
40+
41+
# install haskell toolchain
42+
RUN export GHCUP_CURL_OPTS="--silent" && \
43+
ghcup config set gpg-setting GPGStrict && \
44+
ghcup --verbose install ghc --isolate=/usr --force ${GHC} && \
45+
ghcup --verbose install cabal --isolate=/usr/bin --force ${CABAL_INSTALL} && \
46+
ghcup --verbose install stack --isolate=/usr/bin --force ${STACK} && \
47+
find "/usr/lib/ghc-${GHC}/" \( -name "*_p.a" -o -name "*.p_hi" \) -type f -delete && \
48+
rm -r "/usr/share/doc/ghc-${GHC}" && \
49+
rm -rf /tmp/ghcup*
50+
51+
ENV PATH /root/.cabal/bin:/root/.local/bin:$PATH
5352

5453
CMD ["ghci"]

9.0/buster/Dockerfile

+28-29
Original file line numberDiff line numberDiff line change
@@ -12,43 +12,42 @@ RUN apt-get update && \
1212
gnupg \
1313
libsqlite3-dev \
1414
libtinfo-dev \
15+
libgmp-dev \
1516
make \
1617
netbase \
1718
openssh-client \
1819
xz-utils \
1920
zlib1g-dev && \
2021
rm -rf /var/lib/apt/lists/*
2122

22-
ARG GHC=9.0.1
23-
ARG DEBIAN_KEY=427CB69AAC9D00F2A43CAF1CBA3CBA3FFE22B574
24-
ARG CABAL_INSTALL=3.4
25-
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/*
23+
ARG GHCUP_VERSION=0.1.17
24+
ARG GPG_KEY=7784930957807690A66EBDBE3786C5262ECB4A3F
25+
26+
# install ghcup
27+
RUN gpg --batch --keyserver keys.openpgp.org --recv-keys $GPG_KEY && \
28+
curl -sSfL -O https://downloads.haskell.org/~ghcup/$GHCUP_VERSION/x86_64-linux-ghcup-$GHCUP_VERSION && \
29+
curl -sSfL -O https://downloads.haskell.org/~ghcup/$GHCUP_VERSION/SHA256SUMS && \
30+
curl -sSfL -O https://downloads.haskell.org/~ghcup/$GHCUP_VERSION/SHA256SUMS.sig && \
31+
gpg --verify SHA256SUMS.sig SHA256SUMS && \
32+
sha256sum -c --ignore-missing SHA256SUMS && \
33+
mv x86_64-linux-ghcup-$GHCUP_VERSION /usr/bin/ghcup && \
34+
chmod +x /usr/bin/ghcup && \
35+
rm -rf SHA256SUMS SHA256SUMS.sig
3636

37+
ARG GHC=9.0.1
38+
ARG CABAL_INSTALL=3.6.0.0
3739
ARG STACK=2.7.3
38-
ARG STACK_KEY=C5705533DA4F78D8664B5DC0575159689BEFB442
39-
ARG STACK_RELEASE_KEY=2C6A674E85EE3FB896AFC9B965101FF31C5C154D
40-
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
51-
52-
ENV PATH /root/.cabal/bin:/root/.local/bin:/opt/cabal/${CABAL_INSTALL}/bin:/opt/ghc/${GHC}/bin:$PATH
40+
41+
# install haskell toolchain
42+
RUN export GHCUP_CURL_OPTS="--silent" && \
43+
ghcup config set gpg-setting GPGStrict && \
44+
ghcup --verbose install ghc --isolate=/usr --force ${GHC} && \
45+
ghcup --verbose install cabal --isolate=/usr/bin --force ${CABAL_INSTALL} && \
46+
ghcup --verbose install stack --isolate=/usr/bin --force ${STACK} && \
47+
find "/usr/lib/ghc-${GHC}/" \( -name "*_p.a" -o -name "*.p_hi" \) -type f -delete && \
48+
rm -r "/usr/share/doc/ghc-${GHC}" && \
49+
rm -rf /tmp/ghcup*
50+
51+
ENV PATH /root/.cabal/bin:/root/.local/bin:$PATH
5352

5453
CMD ["ghci"]

9.0/stretch/Dockerfile

+28-29
Original file line numberDiff line numberDiff line change
@@ -12,43 +12,42 @@ RUN apt-get update && \
1212
gnupg \
1313
libsqlite3-dev \
1414
libtinfo-dev \
15+
libgmp-dev \
1516
make \
1617
netbase \
1718
openssh-client \
1819
xz-utils \
1920
zlib1g-dev && \
2021
rm -rf /var/lib/apt/lists/*
2122

22-
ARG GHC=9.0.1
23-
ARG DEBIAN_KEY=427CB69AAC9D00F2A43CAF1CBA3CBA3FFE22B574
24-
ARG CABAL_INSTALL=3.4
25-
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 stretch 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/*
23+
ARG GHCUP_VERSION=0.1.17
24+
ARG GPG_KEY=7784930957807690A66EBDBE3786C5262ECB4A3F
25+
26+
# install ghcup
27+
RUN gpg --batch --keyserver keys.openpgp.org --recv-keys $GPG_KEY && \
28+
curl -sSfL -O https://downloads.haskell.org/~ghcup/$GHCUP_VERSION/x86_64-linux-ghcup-$GHCUP_VERSION && \
29+
curl -sSfL -O https://downloads.haskell.org/~ghcup/$GHCUP_VERSION/SHA256SUMS && \
30+
curl -sSfL -O https://downloads.haskell.org/~ghcup/$GHCUP_VERSION/SHA256SUMS.sig && \
31+
gpg --verify SHA256SUMS.sig SHA256SUMS && \
32+
sha256sum -c --ignore-missing SHA256SUMS && \
33+
mv x86_64-linux-ghcup-$GHCUP_VERSION /usr/bin/ghcup && \
34+
chmod +x /usr/bin/ghcup && \
35+
rm -rf SHA256SUMS SHA256SUMS.sig
3636

37+
ARG GHC=9.0.1
38+
ARG CABAL_INSTALL=3.6.0.0
3739
ARG STACK=2.7.3
38-
ARG STACK_KEY=C5705533DA4F78D8664B5DC0575159689BEFB442
39-
ARG STACK_RELEASE_KEY=2C6A674E85EE3FB896AFC9B965101FF31C5C154D
40-
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
51-
52-
ENV PATH /root/.cabal/bin:/root/.local/bin:/opt/cabal/${CABAL_INSTALL}/bin:/opt/ghc/${GHC}/bin:$PATH
40+
41+
# install haskell toolchain
42+
RUN export GHCUP_CURL_OPTS="--silent" && \
43+
ghcup config set gpg-setting GPGStrict && \
44+
ghcup --verbose install ghc --isolate=/usr --force ${GHC} && \
45+
ghcup --verbose install cabal --isolate=/usr/bin --force ${CABAL_INSTALL} && \
46+
ghcup --verbose install stack --isolate=/usr/bin --force ${STACK} && \
47+
find "/usr/lib/ghc-${GHC}/" \( -name "*_p.a" -o -name "*.p_hi" \) -type f -delete && \
48+
rm -r "/usr/share/doc/ghc-${GHC}" && \
49+
rm -rf /tmp/ghcup*
50+
51+
ENV PATH /root/.cabal/bin:/root/.local/bin:$PATH
5352

5453
CMD ["ghci"]

0 commit comments

Comments
 (0)