diff --git a/.devcontainer/VERSION_MATRIX.md b/.devcontainer/VERSION_MATRIX.md index 1bf46d97e0131de797c2e351b7761a0dc72a54d6..7b547b8793a0b270b423eb9799fa13871d818b0f 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 0b89d547c3b322e902e39da31345b03b09bd4741..b980a21374d9415dc811e495584a261cb0a9396d 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 19e3e051f72d78d31cdb51dd5c3123f30d6e3cde..d9ab88957377f702c2580924edc91e26f8e2f4ba 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 57a108c09c46dd119b1bc18e123f7b7fdef80ad2..b4b355666a74614d270ac32002a26033462d3dcf 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 eebc24f3999cbe796b2b819201e5db9e9e7ea36f..9f2249e2086415a4abbfcb4046f400227d7a6c06 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"]