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

Merge branch 'main' into freeze-version

parents 8bceeb85 6ebcf1ca
No related branches found
No related tags found
No related merge requests found
Pipeline #39160 passed
......@@ -2,11 +2,12 @@
## Current
| GHC | Cabal[^1] | Stack[^1] | HLS |
|:------------------------------|:----------|:----------|:--------------------------------------------------- |
| latest<br>9.10.1<br>9.10<br>9 | 3.12.1.0 | ≥ 2.13.1 | latest<br>2.10.0.0<br>2.9.0.1<br>2.9.0.0 |
| 9.8.4<br>9.8 | 3.10.3.0 | ≥ 2.13.1 | 2.10.0.0 |
| 9.6.6<br>9.6 | 3.10.3.0 | ≥ 2.13.1 | 2.10.0.0<br>2.9.0.1 |
| GHC | Cabal[^1] | Stack[^1] | HLS |
|:------------------------------|:----------|:----------|:------------------------------ |
| latest<br>9.12.1<br>9.12<br>9 | 3.14.1.0 | ≥ 2.13.1 | n/a |
| 9.10.1<br>9.10 | 3.12.1.0 | ≥ 2.13.1 | 2.10.0.0<br>2.9.0.1<br>2.9.0.0 |
| 9.8.4<br>9.8 | 3.10.3.0 | ≥ 2.13.1 | 2.10.0.0 |
| 9.6.6<br>9.6 | 3.10.3.0 | ≥ 2.13.1 | 2.10.0.0<br>2.9.0.1 |
[^1]: built-in version; see [GHC musl > Version Matrix](../VERSION_MATRIX.md)
......
{
"name": "GHC 9.10 (latest)",
"name": "GHC 9.10",
"build": {
"dockerfile": "../GHC.Dockerfile",
"context": "..",
......
{
"name": "GHC 9.12 (latest)",
"build": {
"dockerfile": "../GHC.Dockerfile",
"context": "..",
"args": {
"GHC_VERSION": "9.12",
"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",
"DavidAnson.vscode-markdownlint",
"eamodio.gitlens@11.7.0",
"editorconfig.editorconfig",
"exiasr.hadolint",
"GitHub.vscode-pull-request-github",
"GitLab.gitlab-workflow",
"haskell.haskell",
"mhutchie.git-graph",
"mutantdino.resourcemonitor",
"piotrpalarz.vscode-gitignore-generator",
"redhat.vscode-yaml",
"timonwong.shellcheck"
],
"settings": {
"gitlab.aiAssistedCodeSuggestions.enabled": false,
"gitlab.duoChat.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.12-home-vscode,target=/home/vscode,type=volume",
// "workspaceMount": "source=${localWorkspaceFolder}/.devcontainer/bind-mounts/ghc-musl-ghc-9.12-home-vscode,target=/home/vscode,type=bind",
"workspaceFolder": "/home/vscode",
// "remoteUser": "root",
// "workspaceMount": "source=ghc-musl-ghc-9.12-root,target=/root,type=volume",
// // "workspaceMount": "source=${localWorkspaceFolder}/.devcontainer/bind-mounts/ghc-musl-ghc-9.12-root,target=/root,type=bind",
// "workspaceFolder": "/root",
"remoteEnv": {
// Pip: Install packages to the user site
"PIP_USER": "1"
}
}
.env:
variables:
GHC_VERSION: "9.10.1"
CABAL_VERSION: "3.12.1.0"
STACK_VERSION: "3.1.1"
GHC_VERSION: "9.12.1"
CABAL_VERSION: "3.14.1.0"
STACK_VERSION: "3.3.1"
HLS_VERSION: "2.10.0.0"
BUILD_GHC: "true"
BUILD_HLS: "false"
TAG_VERSION_MAJ_MIN: "true"
TAG_VERSION_MAJ_MIN: "false"
TAG_VERSION_MAJ: "false"
TAG_HLS_LATEST: "true"
......
......@@ -61,9 +61,9 @@ To install docker, follow the instructions for your platform:
```bash
docker build \
--build-arg GHC_VERSION=9.10.1 \
--build-arg CABAL_VERSION=3.12.1.0 \
--build-arg STACK_VERSION=3.1.1 \
--build-arg GHC_VERSION=9.12.1 \
--build-arg CABAL_VERSION=3.14.1.0 \
--build-arg STACK_VERSION=3.3.1 \
-t ghc-musl \
-f latest.Dockerfile .
```
......
......@@ -4,12 +4,13 @@ Topmost entry = Tag `latest`
| GHC | Cabal | Stack | LLVM | Linux distro |
|:-----------|:---------|:-----------|:---- |:-------------|
| 9.10.1 | 3.12.1.0 | 3.1.1 | 18 | Alpine 3.21 |
| 9.8.4 | 3.10.3.0 | 3.1.1 | 16 | Alpine 3.21 |
| 9.12.1 | 3.14.1.0 | 3.3.1 | 18 | Alpine 3.21 |
| 9.10.1 | 3.12.1.0 | 3.3.1 | 18 | Alpine 3.21 |
| 9.8.4 | 3.10.3.0 | 3.3.1 | 16 | Alpine 3.21 |
| 9.8.3 | 3.10.3.0 | 3.1.1 | 16 | Alpine 3.20 |
| 9.8.2 | 3.10.3.0 | 3.1.1 | 16 | Alpine 3.20 |
| 9.8.1 | 3.10.2.1 | 2.15.1 | 14 | Alpine 3.19 |
| 9.6.6 | 3.10.3.0 | 3.1.1 | 16 | Alpine 3.21 |
| 9.6.6 | 3.10.3.0 | 3.3.1 | 16 | Alpine 3.21 |
| 9.6.5 | 3.10.3.0 | 2.15.7 | 16 | Alpine 3.20 |
| 9.6.4 | 3.10.3.0 | 2.15.5 | 14 | Alpine 3.19 |
| 9.6.3 | 3.10.1.0 | 2.13.1 | 14 | Alpine 3.19 |
......@@ -51,6 +52,9 @@ Topmost entry = Tag `latest`
* Images based on Alpine 3.{17,18}: Package pkgconf downgraded to v1.8.1
* Due to <https://github.com/haskell/cabal/issues/8923>
* `linux/riscv64` image for GHC version 9.12.1 built with
`--flavour=quick+llvm`
* Due to <https://gitlab.haskell.org/ghc/ghc/-/issues/25594>
## Experimental
......
......@@ -5,12 +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.8.2-linux-amd64 AS bootstrap-amd64
FROM glcr.b-data.ch/ghc/ghc-musl:9.8.2-linux-arm64v8 AS bootstrap-arm64
FROM glcr.b-data.ch/ghc/ghc-musl:9.8.2-linux-riscv64 AS bootstrap-riscv64
## linux/riscv64 bootstrap image: binutils-gold n/a; numactl-dev pre-installed
FROM bootstrap-${TARGETARCH}${TARGETVARIANT} AS bootstrap
FROM glcr.b-data.ch/ghc/ghc-musl:9.10.1 AS bootstrap
RUN case "$(uname -m)" in \
x86_64) linker="gold" ;; \
......@@ -42,32 +37,25 @@ ARG GHC_VERSION_BUILD
ENV GHC_VERSION=${GHC_VERSION_BUILD}
COPY patches/${GHC_VERSION}.patch /tmp/
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 88B57FCF7DB53B4DB3BFA4B1588764FBE22D19C4 || \
gpg --keyserver hkp://keyserver.ubuntu.com:80 \
--receive-keys FFEB7CE81E16A36B3E2DED6F2DE04D4E97DB64AD \
--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" \
## Apply patch: Bump max LLVM version to 19 (not inclusive)
## https://gitlab.haskell.org/ghc/ghc/-/merge_requests/12726
&& mv "/tmp/$GHC_VERSION.patch" . \
&& patch -p0 <"$GHC_VERSION.patch" \
## Configure and build
&& case "$(uname -m)" in \
riscv64) numa="no" ;; \
esac \
&& if [ "$(uname -m)" = "riscv64" ]; then \
flavour="quick+llvm"; \
fi \
&& ./boot.source \
&& ./configure \
--build=$(uname -m)-alpine-linux \
--host=$(uname -m)-alpine-linux \
--target=$(uname -m)-alpine-linux \
--enable-numa=${numa:-auto} \
## Use the LLVM backend
## Switch llvm-targets from unknown-linux-gnueabihf->alpine-linux
## so we can match the llvm vendor string alpine uses
......@@ -79,7 +67,7 @@ RUN cd /tmp \
&& export PATH=/root/.local/bin:$PATH \
## 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 \
--flavour=${flavour:-perf+llvm+split_sections} \
--docs=none
FROM bootstrap AS bootstrap-cabal
......@@ -179,11 +167,8 @@ FROM ghc-stage1 AS ghc-stage2
COPY --from=bootstrap-cabal /root/.local/bin/cabal /usr/local/bin/cabal
## Rebuild Cabal (the tool) with the GHC target version
RUN if [ "$(uname -m)" = "riscv64" ]; then \
apk add --no-cache numactl-dev; \
fi \
&& cabal update \
&& cabal install "cabal-install-$CABAL_VERSION"
RUN cabal update \
&& cabal install --allow-newer "cabal-install-$CABAL_VERSION"
FROM ghc-stage1 AS test
......
ARG GHC_VERSION=9.10.1
ARG CABAL_VERSION=3.12.1.0
ARG STACK_VERSION=3.1.1
ARG STACK_VERSION=3.3.1
ARG GHC_VERSION_BUILD=${GHC_VERSION}
ARG CABAL_VERSION_BUILD=${CABAL_VERSION}
......@@ -59,9 +59,9 @@ RUN cd /tmp \
&& mv "/tmp/$GHC_VERSION.patch" . \
&& patch -p0 <"$GHC_VERSION.patch" \
## Configure and build
&& case "$(uname -m)" in \
riscv64) numa="no" ;; \
esac \
&& if [ "$(uname -m)" = "riscv64" ]; then \
numa="no"; \
fi \
&& ./boot.source \
&& ./configure \
--build=$(uname -m)-alpine-linux \
......
ARG GHC_VERSION=9.6.6
ARG CABAL_VERSION=3.10.3.0
ARG STACK_VERSION=3.1.1
ARG STACK_VERSION=3.3.1
ARG GHC_VERSION_BUILD=${GHC_VERSION}
ARG CABAL_VERSION_BUILD=${CABAL_VERSION}
......
ARG GHC_VERSION=9.8.4
ARG CABAL_VERSION=3.10.3.0
ARG STACK_VERSION=3.1.1
ARG STACK_VERSION=3.3.1
ARG GHC_VERSION_BUILD=${GHC_VERSION}
ARG CABAL_VERSION_BUILD=${CABAL_VERSION}
......
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