From b4a42a1d26838b1586da145eb39471aab203280c Mon Sep 17 00:00:00 2001 From: Olivier Benz <olivier.benz@b-data.ch> Date: Wed, 11 Oct 2023 08:48:05 +0200 Subject: [PATCH] Update GHC to v9.8.1 - Dev Container: Add 'GHC 9.8 (latest)' --- .devcontainer/VERSION_MATRIX.md | 3 +- .devcontainer/ghc-9.6/devcontainer.json | 2 +- .devcontainer/ghc-9.8/devcontainer.json | 72 +++++++++++++++++++++++++ .gitlab-ci.yml | 23 +------- README.md | 2 +- VERSION_MATRIX.md | 1 + latest.Dockerfile | 8 +-- 7 files changed, 82 insertions(+), 29 deletions(-) create mode 100644 .devcontainer/ghc-9.8/devcontainer.json diff --git a/.devcontainer/VERSION_MATRIX.md b/.devcontainer/VERSION_MATRIX.md index afe1612..31d9590 100644 --- a/.devcontainer/VERSION_MATRIX.md +++ b/.devcontainer/VERSION_MATRIX.md @@ -4,7 +4,8 @@ | 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.4.0.0<br>2.3.0.0<br>2.2.0.0 | +| latest<br>9.8.1<br>9.8<br>9 | 3.10.1.0 | ≥ 2.13.1 | latest<br>2.4.0.0 | +| 9.6.3<br>9.6 | 3.10.1.0 | ≥ 2.13.1 | 2.4.0.0<br>2.3.0.0<br>2.2.0.0 | | 9.4.7<br>9.4 | 3.8.1.0 | ≥ 2.13.1 | 2.4.0.0<br>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.4.0.0<br>2.3.0.0<br>2.2.0.0<br>2.1.0.0<br>2.0.0.1 | diff --git a/.devcontainer/ghc-9.6/devcontainer.json b/.devcontainer/ghc-9.6/devcontainer.json index 8b52c02..72502bb 100644 --- a/.devcontainer/ghc-9.6/devcontainer.json +++ b/.devcontainer/ghc-9.6/devcontainer.json @@ -1,5 +1,5 @@ { - "name": "GHC 9.6 (latest)", + "name": "GHC 9.6", "build": { "dockerfile": "../GHC.Dockerfile", "context": "..", diff --git a/.devcontainer/ghc-9.8/devcontainer.json b/.devcontainer/ghc-9.8/devcontainer.json new file mode 100644 index 0000000..8db24a9 --- /dev/null +++ b/.devcontainer/ghc-9.8/devcontainer.json @@ -0,0 +1,72 @@ +{ + "name": "GHC 9.8 (latest)", + "build": { + "dockerfile": "../GHC.Dockerfile", + "context": "..", + "args": { + "GHC_VERSION": "9.8", + "HLS_VERSION": "2.4.0.0", + "USE_ZSH_FOR_ROOT": "unset-to-use-ash", + "SET_LANG": "C.UTF-8", + "SET_TZ": "" + } + }, + + "onCreateCommand": "onCreateCommand.sh", + "postCreateCommand": "cabal update", + "postAttachCommand": "${HOME}/.local/bin/checkForUpdates.sh", + + "features": { + "ghcr.io/devcontainers/features/common-utils:2": { + "configureZshAsDefaultShell": true, + "upgradePackages": false, + "username": "vscode", + "userUid": "automatic", + "userGid": "automatic" + } + }, + + "customizations": { + "vscode": { + "extensions": [ + "alefragnani.project-manager", + "christian-kohler.path-intellisense", + "eamodio.gitlens@11.7.0", + "editorconfig.editorconfig", + "exiasr.hadolint", + "GitHub.vscode-pull-request-github", + "GitLab.gitlab-workflow", + "haskell.haskell", + "mhutchie.git-graph", + "ms-vscode.makefile-tools", + "mutantdino.resourcemonitor", + "piotrpalarz.vscode-gitignore-generator", + "timonwong.shellcheck" + ], + "settings": { + "gitlab.aiAssistedCodeSuggestions.enabled": false, + "gitlens.showWelcomeOnInstall": false, + "gitlens.showWhatsNewAfterUpgrades": false, + "haskell.manageHLS": "PATH", + "resmon.show.battery": false, + "resmon.show.cpufreq": false + } + } + }, + + // Set 'remoteUser' to 'root' to connect as root instead. + "remoteUser": "vscode", + "workspaceMount": "source=ghc-musl-ghc-9.8-home-vscode,target=/home/vscode,type=volume", + // "workspaceMount": "source=${localWorkspaceFolder}/.devcontainer/bind-mounts/ghc-musl-ghc-9.8-home-vscode,target=/home/vscode,type=bind", + "workspaceFolder": "/home/vscode", + + // "remoteUser": "root", + // "workspaceMount": "source=ghc-musl-ghc-9.8-root,target=/root,type=volume", + // // "workspaceMount": "source=${localWorkspaceFolder}/.devcontainer/bind-mounts/ghc-musl-ghc-9.8-root,target=/root,type=bind", + // "workspaceFolder": "/root", + + // Pip: Install packages to the user site + "remoteEnv": { + "PIP_USER": "1" + } +} diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index c8fdf68..c910e5b 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,6 +1,6 @@ .env: variables: - GHC_VERSION: "9.6.3" + GHC_VERSION: "9.8.1" CABAL_VERSION: "3.10.1.0" STACK_VERSION: "2.13.1" HLS_VERSION: "2.4.0.0" @@ -223,13 +223,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: $BUILD_GHC == "true" && $CI_COMMIT_BRANCH == "freeze-version" changes: @@ -380,13 +373,6 @@ build-package-hls-manifest:version-linux-multiarch: $CI_APP_REPO/$CI_APP_TAG/hls:$HLS_VERSION-linux-arm64v8 fi 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: - if: $BUILD_HLS == "true" && $CI_COMMIT_BRANCH == "freeze-version" changes: @@ -526,12 +512,5 @@ update-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: $UPDATE_STACK == "true" && $CI_COMMIT_BRANCH == "freeze-version" diff --git a/README.md b/README.md index f95f047..74cb330 100644 --- a/README.md +++ b/README.md @@ -46,7 +46,7 @@ To install docker, follow the instructions for your platform: ```bash docker build \ - --build-arg GHC_VERSION=9.6.3 \ + --build-arg GHC_VERSION=9.8.1 \ --build-arg CABAL_VERSION=3.10.1.0 \ --build-arg STACK_VERSION=2.13.1 \ -t ghc-musl \ diff --git a/VERSION_MATRIX.md b/VERSION_MATRIX.md index b4b3556..9714013 100644 --- a/VERSION_MATRIX.md +++ b/VERSION_MATRIX.md @@ -4,6 +4,7 @@ Topmost entry = Tag `latest` | GHC | Cabal | Stack | LLVM | Linux distro | |:-----------|:---------|:-----------|:---- |:-------------| +| 9.8.1 | 3.10.1.0 | 2.13.1 | 14 | Alpine 3.18 | | 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 | diff --git a/latest.Dockerfile b/latest.Dockerfile index c1a7d7a..963c2fc 100644 --- a/latest.Dockerfile +++ b/latest.Dockerfile @@ -5,7 +5,7 @@ ARG STACK_VERSION ARG GHC_VERSION_BUILD=${GHC_VERSION} ARG CABAL_VERSION_BUILD=${CABAL_VERSION} -FROM glcr.b-data.ch/ghc/ghc-musl:9.4.7 as bootstrap +FROM glcr.b-data.ch/ghc/ghc-musl:9.6.3 as bootstrap ARG GHC_VERSION_BUILD ARG CABAL_VERSION_BUILD @@ -36,9 +36,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 33C3A599DB85EA9B8BAA1866B202264020068BFB || \ + --receive-keys FFEB7CE81E16A36B3E2DED6F2DE04D4E97DB64AD || \ gpg --keyserver hkp://keyserver.ubuntu.com:80 \ - --receive-keys 33C3A599DB85EA9B8BAA1866B202264020068BFB \ + --receive-keys FFEB7CE81E16A36B3E2DED6F2DE04D4E97DB64AD \ && 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" \ @@ -133,7 +133,7 @@ RUN cd /tmp \ && rm -rf /tmp/* ## Install Cabal -COPY --from=bootstrap /root/.cabal/bin/cabal /usr/local/bin/cabal +COPY --from=bootstrap /root/.local/bin/cabal /usr/local/bin/cabal FROM builder as tester -- GitLab