Skip to content
Snippets Groups Projects
Verified Commit 099ec4a8 authored by Olivier Benz's avatar Olivier Benz
Browse files

Freeze GHC v9.4.4

parent 7f6251aa
Branches
No related tags found
No related merge requests found
Pipeline #17144 failed
......@@ -168,6 +168,13 @@ build-manifest:version-linux-multiarch:
$CI_APP_REPO:$CI_APP_TAG-linux-arm64v8
fi
docker manifest push $CI_APP_REPO:$CI_APP_TAG
- |
docker manifest create $CI_APP_REPO:$VERSION_MAJ_MIN $CI_MANIFEST_LIST
if echo $OS_ARCH | grep "linux-arm64v8" >/dev/null ; then
docker manifest annotate --variant v8 $CI_APP_REPO:$VERSION_MAJ_MIN \
$CI_APP_REPO:$CI_APP_TAG-linux-arm64v8
fi
docker manifest push $CI_APP_REPO:$VERSION_MAJ_MIN
rules:
- if: $CI_COMMIT_BRANCH == "freeze-version"
changes:
......
ARG GHC_VERSION_BUILD=9.4.4
ARG CABAL_VERSION_BUILD=3.8.1.0
FROM registry.gitlab.b-data.ch/ghc/ghc4pandoc:9.2.7 as bootstrap
ARG GHC_VERSION_BUILD
ARG CABAL_VERSION_BUILD
ENV GHC_VERSION=${GHC_VERSION_BUILD} \
CABAL_VERSION=${CABAL_VERSION_BUILD}
RUN apk upgrade --no-cache \
&& apk add --update --no-cache \
autoconf \
automake \
binutils-gold \
build-base \
coreutils \
cpio \
curl \
gnupg \
linux-headers \
libffi-dev \
llvm12 \
ncurses-dev \
perl \
python3 \
xz \
zlib-dev
RUN cd /tmp \
&& curl -sSLO https://downloads.haskell.org/~ghc/$GHC_VERSION/ghc-$GHC_VERSION-src.tar.xz \
&& curl -sSLO https://downloads.haskell.org/~ghc/$GHC_VERSION/ghc-$GHC_VERSION-src.tar.xz.sig \
&& gpg --keyserver hkps://keyserver.ubuntu.com:443 \
--receive-keys FFEB7CE81E16A36B3E2DED6F2DE04D4E97DB64AD \
&& gpg --verify ghc-$GHC_VERSION-src.tar.xz.sig ghc-$GHC_VERSION-src.tar.xz \
&& tar xf ghc-$GHC_VERSION-src.tar.xz \
&& cd ghc-$GHC_VERSION \
&& ./boot.source \
&& ./configure --disable-ld-override LD=ld.gold \
# Use the LLVM backend
# Switch llvm-targets from unknown-linux-gnueabihf->alpine-linux
# so we can match the llvm vendor string alpine uses
&& sed -i -e 's/unknown-linux-gnueabihf/alpine-linux/g' llvm-targets \
&& sed -i -e 's/unknown-linux-gnueabi/alpine-linux/g' llvm-targets \
&& sed -i -e 's/unknown-linux-gnu/alpine-linux/g' llvm-targets \
&& cabal update \
# See https://unix.stackexchange.com/questions/519092/what-is-the-logic-of-using-nproc-1-in-make-command
&& hadrian/build binary-dist -j$((`nproc`+1)) \
--flavour=perf+llvm+split_sections \
--docs=none \
# See https://gitlab.haskell.org/ghc/ghc/-/wikis/commentary/libraries/version-history
&& cabal install --allow-newer cabal-install-$CABAL_VERSION
FROM alpine:3.17 as builder
LABEL org.opencontainers.image.licenses="MIT" \
org.opencontainers.image.source="https://gitlab.b-data.ch/ghc/ghc4pandoc" \
org.opencontainers.image.vendor="Olivier Benz" \
org.opencontainers.image.authors="Olivier Benz <olivier.benz@b-data.ch>"
ARG GHC_VERSION_BUILD
ARG CABAL_VERSION_BUILD
ENV GHC_VERSION=${GHC_VERSION_BUILD} \
CABAL_VERSION=${CABAL_VERSION_BUILD}
RUN apk upgrade --no-cache \
&& apk add --update --no-cache \
bash \
build-base \
bzip2 \
bzip2-dev \
bzip2-static \
curl \
curl-static \
dpkg \
fakeroot \
git \
gmp-dev \
libcurl \
libffi \
libffi-dev \
llvm14 \
ncurses-dev \
ncurses-static \
openssl-dev \
openssl-libs-static \
pcre \
pcre-dev \
pcre2 \
pcre2-dev \
perl \
wget \
xz \
xz-dev \
zlib \
zlib-dev \
zlib-static
COPY --from=bootstrap /tmp/ghc-$GHC_VERSION/_build/bindist/ghc-$GHC_VERSION-*-alpine-linux.tar.xz /tmp/
COPY --from=bootstrap /root/.cabal/bin/cabal /usr/bin/cabal
RUN cd /tmp \
&& tar -xJf ghc-$GHC_VERSION-*-alpine-linux.tar.xz \
&& cd ghc-$GHC_VERSION-*-alpine-linux \
&& ./configure --disable-ld-override \
&& make install \
&& cd / \
&& rm -rf /tmp/*
FROM builder as tester
COPY Main.hs Main.hs
RUN ghc -static -optl-pthread -optl-static Main.hs \
&& file Main \
&& ./Main \
# Test cabal workflow
&& mkdir cabal-test \
&& cd cabal-test \
&& cabal update \
&& cabal init -n --is-executable -p tester -l MIT \
&& cabal run
FROM builder as final
CMD ["ghci"]
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment