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

Merge branch 'freeze-version'

parents 3d91a151 011707d0
No related branches found
No related tags found
No related merge requests found
.env: .env:
variables: variables:
GHC_VERSION_BUILD: "9.6.2" GHC_VERSION_BUILD: "9.4.7"
CABAL_VERSION_BUILD: "3.10.1.0" CABAL_VERSION_BUILD: "3.8.1.0"
STACK_VERSION: "2.11.1" STACK_VERSION: "2.11.1"
HLS_VERSION: "2.1.0.0" HLS_VERSION: "2.1.0.0"
BUILD_GHC: "true" BUILD_GHC: "true"
...@@ -223,6 +223,13 @@ build-manifest:version-linux-multiarch: ...@@ -223,6 +223,13 @@ build-manifest:version-linux-multiarch:
$CI_APP_REPO:$CI_APP_TAG-linux-arm64v8 $CI_APP_REPO:$CI_APP_TAG-linux-arm64v8
fi fi
docker manifest push $CI_APP_REPO:$CI_APP_TAG 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: rules:
- if: $BUILD_GHC == "true" && $CI_COMMIT_BRANCH == "freeze-version" - if: $BUILD_GHC == "true" && $CI_COMMIT_BRANCH == "freeze-version"
changes: changes:
...@@ -373,6 +380,13 @@ build-package-hls-manifest:version-linux-multiarch: ...@@ -373,6 +380,13 @@ build-package-hls-manifest:version-linux-multiarch:
$CI_APP_REPO/$CI_APP_TAG/hls:$HLS_VERSION-linux-arm64v8 $CI_APP_REPO/$CI_APP_TAG/hls:$HLS_VERSION-linux-arm64v8
fi fi
docker manifest push $CI_APP_REPO/$CI_APP_TAG/hls:$HLS_VERSION docker manifest push $CI_APP_REPO/$CI_APP_TAG/hls:$HLS_VERSION
- |
docker manifest create $CI_APP_REPO/$VERSION_MAJ_MIN/hls:$HLS_VERSION $CI_MANIFEST_LIST
if echo $OS_ARCH | grep "linux-arm64v8" >/dev/null ; then
docker manifest annotate --variant v8 $CI_APP_REPO/$VERSION_MAJ_MIN/hls:$HLS_VERSION \
$CI_APP_REPO/$CI_APP_TAG/hls:$HLS_VERSION-linux-arm64v8
fi
docker manifest push $CI_APP_REPO/$VERSION_MAJ_MIN/hls:$HLS_VERSION
rules: rules:
- if: $BUILD_HLS == "true" && $CI_COMMIT_BRANCH == "freeze-version" - if: $BUILD_HLS == "true" && $CI_COMMIT_BRANCH == "freeze-version"
changes: changes:
......
ARG GHC_VERSION_BUILD=9.4.7
ARG CABAL_VERSION_BUILD=3.8.1.0
ARG STACK_VERSION=2.11.1
FROM glcr.b-data.ch/ghc/ghc-musl:9.2.8 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 --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 88B57FCF7DB53B4DB3BFA4B1588764FBE22D19C4 \
&& gpg --verify "ghc-$GHC_VERSION-src.tar.xz.sig" "ghc-$GHC_VERSION-src.tar.xz" \
&& tar -xJf "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 --constraint 'Cabal-syntax<3.9' "cabal-install-$CABAL_VERSION"
FROM alpine:3.18 as builder
LABEL org.opencontainers.image.licenses="MIT" \
org.opencontainers.image.source="https://gitlab.b-data.ch/ghc/ghc-musl" \
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 add --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 \
shadow \
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/local/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 \
&& rm -rf /tmp/*
FROM builder as tester
WORKDIR /usr/local/src
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 glcr.b-data.ch/commercialhaskell/ssi:${STACK_VERSION} as ssi
FROM builder as final
ARG STACK_VERSION
ENV STACK_VERSION=${STACK_VERSION}
COPY --from=ssi /usr/local/bin/stack /usr/local/bin/stack
CMD ["ghci"]
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment