From b269596e9c0e32f7ef4dcd10c530d7dd1e72774f Mon Sep 17 00:00:00 2001
From: Olivier Benz <olivier.benz@b-data.ch>
Date: Sun, 1 Oct 2023 19:15:56 +0200
Subject: [PATCH] Update GHC to v9.6.3

---
 .devcontainer/VERSION_MATRIX.md |  8 ++++++++
 .gitlab-ci.yml                  |  6 +++---
 README.md                       |  4 ++--
 VERSION_MATRIX.md               |  1 +
 latest.Dockerfile               | 30 ++++++++++++++++++------------
 5 files changed, 32 insertions(+), 17 deletions(-)

diff --git a/.devcontainer/VERSION_MATRIX.md b/.devcontainer/VERSION_MATRIX.md
index 1bf46d9..7b547b8 100644
--- a/.devcontainer/VERSION_MATRIX.md
+++ b/.devcontainer/VERSION_MATRIX.md
@@ -1,5 +1,13 @@
 # Version Matrix
 
+## Current
+
+| GHC                         | Cabal[^1] | Stack[^1]   | HLS                                      |
+|:----------------------------|:----------|:------------|:---------------------------------------- |
+| latest<br>9.6.3<br>9.6<br>9 | 3.10.1.0  | ≥ 2.13.1    | latest<br>2.2.0.0             |
+| 9.4.7<br>9.4                | 3.8.1.0   | ≥ 2.13.1    | 2.3.0.0<br>2.2.0.0<br>2.1.0.0<br>2.0.0.1 |
+| 9.2.8<br>9.2                | 3.6.2.0   | ≥ 2.13.1    | 2.3.0.0<br>2.2.0.0<br>2.1.0.0<br>2.0.0.1 |
+
 ## Legacy
 
 | GHC   | Cabal[^1] | Stack[^2]             | HLS                           |
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 0b89d54..b980a21 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,11 +1,11 @@
 .env:
   variables:
-    GHC_VERSION_BUILD: "9.6.2"
+    GHC_VERSION_BUILD: "9.6.3"
     CABAL_VERSION_BUILD: "3.10.1.0"
-    STACK_VERSION: "2.11.1"
+    STACK_VERSION: "2.13.1"
     HLS_VERSION: "2.2.0.0"
     BUILD_GHC: "true"
-    BUILD_HLS: "false"
+    BUILD_HLS: "true"
 
 .before-script-build: &before-script-build
   - |
diff --git a/README.md b/README.md
index 19e3e05..d9ab889 100644
--- a/README.md
+++ b/README.md
@@ -46,9 +46,9 @@ To install docker, follow the instructions for your platform:
 
 ```bash
 docker build \
-  --build-arg GHC_VERSION_BUILD=9.6.2 \
+  --build-arg GHC_VERSION_BUILD=9.6.3 \
   --build-arg CABAL_VERSION_BUILD=3.10.1.0 \
-  --build-arg STACK_VERSION=2.11.1 \
+  --build-arg STACK_VERSION=2.13.1 \
   -t ghc-musl \
   -f latest.Dockerfile .
 ```
diff --git a/VERSION_MATRIX.md b/VERSION_MATRIX.md
index 57a108c..b4b3556 100644
--- a/VERSION_MATRIX.md
+++ b/VERSION_MATRIX.md
@@ -4,6 +4,7 @@ Topmost entry = Tag `latest`
 
 | GHC        | Cabal    | Stack      | LLVM | Linux distro |
 |:-----------|:---------|:-----------|:---- |:-------------|
+| 9.6.3      | 3.10.1.0 | 2.13.1     | 14   | Alpine 3.18  |
 | 9.6.2      | 3.10.1.0 | 2.11.1[^1] | 14   | Alpine 3.18  |
 | 9.6.1      | 3.10.1.0 | n/a        | 14   | Alpine 3.18  |
 | 9.4.7      | 3.8.1.0  | 2.13.1     | 14   | Alpine 3.18  |
diff --git a/latest.Dockerfile b/latest.Dockerfile
index eebc24f..9f2249e 100644
--- a/latest.Dockerfile
+++ b/latest.Dockerfile
@@ -33,9 +33,9 @@ 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 || \
+    --receive-keys 33C3A599DB85EA9B8BAA1866B202264020068BFB || \
     gpg --keyserver hkp://keyserver.ubuntu.com:80 \
-    --receive-keys FFEB7CE81E16A36B3E2DED6F2DE04D4E97DB64AD \
+    --receive-keys 33C3A599DB85EA9B8BAA1866B202264020068BFB \
   && 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" \
@@ -64,9 +64,11 @@ LABEL org.opencontainers.image.licenses="MIT" \
 
 ARG GHC_VERSION_BUILD
 ARG CABAL_VERSION_BUILD
+ARG STACK_VERSION
 
 ENV GHC_VERSION=${GHC_VERSION_BUILD} \
-    CABAL_VERSION=${CABAL_VERSION_BUILD}
+    CABAL_VERSION=${CABAL_VERSION_BUILD} \
+    STACK_VERSION=${STACK_VERSION}
 
 RUN apk add --no-cache \
     bash \
@@ -93,6 +95,7 @@ RUN apk add --no-cache \
     pcre2 \
     pcre2-dev \
     perl \
+    ## Install shadow for `stack --docker`
     shadow \
     wget \
     xz \
@@ -102,7 +105,6 @@ RUN apk add --no-cache \
     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 \
   # Fix https://github.com/haskell/cabal/issues/8923
@@ -112,12 +114,24 @@ RUN cd /tmp \
     curl -sSLO http://dl-cdn.alpinelinux.org/alpine/v3.16/main/"$(uname -m)"/pkgconf-1.8.1-r0.apk; \
     apk add --no-cache pkgconf-1.8.1-r0.apk; \
   fi \
+  ## Install GHC
   && tar -xJf ghc-"$GHC_VERSION"-*-alpine-linux.tar.xz \
   && cd ghc-"$GHC_VERSION"-*-alpine-linux \
   && ./configure --disable-ld-override \
   && make install \
+  ## Install Stack
+  && cd /tmp \
+  && curl -sSLO https://github.com/commercialhaskell/stack/releases/download/v"$STACK_VERSION"/stack-"$STACK_VERSION"-linux-"$(uname -m)".tar.gz \
+  && curl -sSLO https://github.com/commercialhaskell/stack/releases/download/v"$STACK_VERSION"/stack-"$STACK_VERSION"-linux-"$(uname -m)".tar.gz.sha256 \
+  && sha256sum -cs stack-"$STACK_VERSION"-linux-"$(uname -m)".tar.gz.sha256 \
+  && tar -xzf stack-"$STACK_VERSION"-linux-"$(uname -m)".tar.gz \
+  && mv stack-"$STACK_VERSION"-linux-"$(uname -m)"/stack /usr/local/bin/stack \
+  ## Clean up
   && rm -rf /tmp/*
 
+## Install Cabal
+COPY --from=bootstrap /root/.cabal/bin/cabal /usr/local/bin/cabal
+
 FROM builder as tester
 
 WORKDIR /usr/local/src
@@ -134,14 +148,6 @@ RUN ghc -static -optl-pthread -optl-static Main.hs \
   && 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"]
-- 
GitLab