From 09daaa549eaf43bfd9407527db857aa6e90e20e6 Mon Sep 17 00:00:00 2001
From: Olivier Benz <olivier.benz@b-data.ch>
Date: Mon, 13 Mar 2023 19:04:41 +0100
Subject: [PATCH] Update GHC to v9.6.1

- Use LLVM v14
---
 .gitlab-ci.yml    | 39 +++++++++++++++++++++++++++++----------
 latest.Dockerfile |  8 ++++----
 2 files changed, 33 insertions(+), 14 deletions(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 391fafa..8ff6c2a 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -26,15 +26,15 @@
     sed -n "s|\([[:digit:]]\+\).*|\1|p"`
 
 .build:
-  image: registry.gitlab.b-data.ch/docker/docker-buildx:latest
+  image: glcr.b-data.ch/docker/docker-buildx:latest
   stage: build
   services:
     - docker:dind
   variables:
     DOCKER_DRIVER: overlay2
     DOCKER_TLS_CERTDIR: "/certs"
-    GHC_VERSION_BUILD: "9.4.4"
-    CABAL_VERSION_BUILD: "3.8.1.0"
+    GHC_VERSION_BUILD: "9.6.1"
+    CABAL_VERSION_BUILD: "3.10.1.0"
   before_script:
     - *before-script-build
 
@@ -44,6 +44,14 @@ build:latest-linux-amd64:
     - arch:amd64
     - os:linux
   script:
+    - >
+      docker build
+      --build-arg GHC_VERSION_BUILD
+      --build-arg CABAL_VERSION_BUILD
+      --target tester
+      -t $CI_APP_REPO:$CI_APP_TAG-linux-amd64
+      -t $CI_APP_REPO:$VERSION_MAJ_MIN_PAT-linux-amd64
+      -f latest.Dockerfile .
     - >
       docker build
       --build-arg GHC_VERSION_BUILD
@@ -65,6 +73,14 @@ build:latest-linux-arm64v8:
     - arch:arm64/v8
     - os:linux
   script:
+    - >
+      docker build
+      --build-arg GHC_VERSION_BUILD
+      --build-arg CABAL_VERSION_BUILD
+      --target tester
+      -t $CI_APP_REPO:$CI_APP_TAG-linux-arm64v8
+      -t $CI_APP_REPO:$VERSION_MAJ_MIN_PAT-linux-arm64v8
+      -f latest.Dockerfile .
     - >
       docker build
       --build-arg GHC_VERSION_BUILD
@@ -86,6 +102,11 @@ build:version-linux-amd64:
     - arch:amd64
     - os:linux
   script:
+    - >
+      docker build
+      --target tester
+      -t $CI_APP_REPO:$CI_APP_TAG-linux-amd64
+      -f $GHC_VERSION_BUILD.Dockerfile .
     - >
       docker build
       -t $CI_APP_REPO:$CI_APP_TAG-linux-amd64
@@ -102,6 +123,11 @@ build:version-linux-arm64v8:
     - arch:arm64/v8
     - os:linux
   script:
+    - >
+      docker build
+      --target tester
+      -t $CI_APP_REPO:$CI_APP_TAG-linux-arm64v8
+      -f $GHC_VERSION_BUILD.Dockerfile .
     - >
       docker build
       -t $CI_APP_REPO:$CI_APP_TAG-linux-arm64v8
@@ -168,13 +194,6 @@ 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:
diff --git a/latest.Dockerfile b/latest.Dockerfile
index bb610c1..e3ee50f 100644
--- a/latest.Dockerfile
+++ b/latest.Dockerfile
@@ -1,7 +1,7 @@
 ARG GHC_VERSION_BUILD
 ARG CABAL_VERSION_BUILD
 
-FROM registry.gitlab.b-data.ch/ghc/ghc4pandoc:9.2.7 as bootstrap
+FROM glcr.b-data.ch/ghc/ghc-musl:9.4.4 as bootstrap
 
 ARG GHC_VERSION_BUILD
 ARG CABAL_VERSION_BUILD
@@ -21,7 +21,7 @@ RUN apk upgrade --no-cache \
     gnupg \
     linux-headers \
     libffi-dev \
-    llvm12 \
+    llvm14 \
     ncurses-dev \
     perl \
     python3 \
@@ -50,12 +50,12 @@ RUN cd /tmp \
     --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
+  && cabal install --allow-newer --constraint 'Cabal-syntax<3.11' 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.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>"
 
-- 
GitLab