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

Merge branch 'freeze-version'

parents 8e81f400 2dc9b22a
Branches
No related tags found
No related merge requests found
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
| GHC | Cabal[^1] | Stack[^1] | HLS | | 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.9.0.1<br>2.9.0.0 | | latest<br>9.10.1<br>9.10<br>9 | 3.12.1.0 | ≥ 2.13.1 | latest<br>2.9.0.1<br>2.9.0.0 |
| 9.8.2<br>9.8 | 3.10.3.0 | ≥ 2.13.1 | 2.9.0.1<br>2.9.0.0<br>2.8.0.0<br>2.7.0.0<br>2.6.0.0 | | 9.8.3<br>9.8 | 3.10.3.0 | ≥ 2.13.1 | |
| 9.6.6<br>9.6 | 3.10.3.0 | ≥ 2.13.1 | 2.9.0.1 | | 9.6.6<br>9.6 | 3.10.3.0 | ≥ 2.13.1 | 2.9.0.1 |
[^1]: built-in version; see [GHC musl > Version Matrix](../VERSION_MATRIX.md) [^1]: built-in version; see [GHC musl > Version Matrix](../VERSION_MATRIX.md)
...@@ -14,6 +14,7 @@ ...@@ -14,6 +14,7 @@
| GHC | Cabal[^1] | Stack[^1] | HLS | | GHC | Cabal[^1] | Stack[^1] | HLS |
|:-------------|:----------|:----------|:----------------------------------------------------------------------------------------------- | |:-------------|:----------|:----------|:----------------------------------------------------------------------------------------------- |
| 9.8.2 | 3.10.3.0 | ≥ 2.13.1 | 2.9.0.1<br>2.9.0.0<br>2.8.0.0<br>2.7.0.0<br>2.6.0.0 |
| 9.8.1 | 3.10.2.1 | ≥ 2.13.1 | 2.6.0.0<br>2.5.0.0<br>2.4.0.0 | | 9.8.1 | 3.10.2.1 | ≥ 2.13.1 | 2.6.0.0<br>2.5.0.0<br>2.4.0.0 |
| 9.6.5 | 3.10.3.0 | ≥ 2.13.1 | 2.9.0.0<br>2.8.0.0<br>2.7.0.0 | | 9.6.5 | 3.10.3.0 | ≥ 2.13.1 | 2.9.0.0<br>2.8.0.0<br>2.7.0.0 |
| 9.6.4 | 3.10.3.0 | ≥ 2.13.1 | 2.7.0.0<br>2.6.0.0 | | 9.6.4 | 3.10.3.0 | ≥ 2.13.1 | 2.7.0.0<br>2.6.0.0 |
......
...@@ -5,7 +5,6 @@ ...@@ -5,7 +5,6 @@
"context": "..", "context": "..",
"args": { "args": {
"GHC_VERSION": "9.8", "GHC_VERSION": "9.8",
"HLS_VERSION": "2.9.0.1",
"USE_ZSH_FOR_ROOT": "unset-to-use-ash", "USE_ZSH_FOR_ROOT": "unset-to-use-ash",
"SET_LANG": "C.UTF-8", "SET_LANG": "C.UTF-8",
"SET_TZ": "" "SET_TZ": ""
......
.env: .env:
variables: variables:
GHC_VERSION: "9.10.1" GHC_VERSION: "9.8.3"
CABAL_VERSION: "3.12.1.0" CABAL_VERSION: "3.10.3.0"
STACK_VERSION: "3.1.1" STACK_VERSION: "3.1.1"
HLS_VERSION: "2.9.0.1" HLS_VERSION: "2.9.0.1"
BUILD_GHC: "true" BUILD_GHC: "true"
BUILD_HLS: "true" BUILD_HLS: "false"
TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ_MIN: "true"
TAG_VERSION_MAJ: "false" TAG_VERSION_MAJ: "false"
.before-script-build: &before-script-build .before-script-build: &before-script-build
......
...@@ -5,6 +5,7 @@ Topmost entry = Tag `latest` ...@@ -5,6 +5,7 @@ Topmost entry = Tag `latest`
| GHC | Cabal | Stack | LLVM | Linux distro | | GHC | Cabal | Stack | LLVM | Linux distro |
|:-----------|:---------|:-----------|:---- |:-------------| |:-----------|:---------|:-----------|:---- |:-------------|
| 9.10.1 | 3.12.1.0 | 3.1.1 | 18 | Alpine 3.20 | | 9.10.1 | 3.12.1.0 | 3.1.1 | 18 | Alpine 3.20 |
| 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.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.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.20 | | 9.6.6 | 3.10.3.0 | 3.1.1 | 16 | Alpine 3.20 |
......
--- compiler/GHC/Driver/DynFlags.hs
+++ compiler/GHC/Driver/DynFlags.hs.patched
@@ -1248,7 +1248,6 @@
optLevelFlags -- see Note [Documenting optimisation flags]
= [ ([0,1,2], Opt_DoLambdaEtaExpansion)
, ([0,1,2], Opt_DoEtaReduction) -- See Note [Eta-reduction in -O0]
- , ([0,1,2], Opt_LlvmTBAA)
, ([0,1,2], Opt_ProfManualCcs )
, ([2], Opt_DictsStrict)
--- compiler/GHC/Driver/Flags.hs
+++ compiler/GHC/Driver/Flags.hs.patched
@@ -285,7 +285,6 @@
| Opt_RegsGraph -- do graph coloring register allocation
| Opt_RegsIterative -- do iterative coalescing graph coloring register allocation
| Opt_PedanticBottoms -- Be picky about how we treat bottom
- | Opt_LlvmTBAA -- Use LLVM TBAA infrastructure for improving AA (hidden flag)
| Opt_LlvmFillUndefWithGarbage -- Testing for undef bugs (hidden flag)
| Opt_IrrefutableTuples
| Opt_CmmSink
@@ -525,7 +524,6 @@
, Opt_EnableRewriteRules
, Opt_RegsGraph
, Opt_RegsIterative
- , Opt_LlvmTBAA
, Opt_IrrefutableTuples
, Opt_CmmSink
, Opt_CmmElimCommonBlocks
--- compiler/GHC/Driver/Pipeline/Execute.hs
+++ compiler/GHC/Driver/Pipeline/Execute.hs.patched
@@ -968,8 +968,7 @@
-> DynFlags
-> [(String, String)] -- ^ pairs of (opt, llc) arguments
llvmOptions llvm_config dflags =
- [("-enable-tbaa -tbaa", "-enable-tbaa") | gopt Opt_LlvmTBAA dflags ]
- ++ [("-relocation-model=" ++ rmodel
+ [("-relocation-model=" ++ rmodel
,"-relocation-model=" ++ rmodel) | not (null rmodel)]
++ [("-stack-alignment=" ++ (show align)
,"-stack-alignment=" ++ (show align)) | align > 0 ]
--- compiler/GHC/Driver/Session.hs
+++ compiler/GHC/Driver/Session.hs.patched
@@ -2400,7 +2400,6 @@
flagSpec "late-dmd-anal" Opt_LateDmdAnal,
flagSpec "late-specialise" Opt_LateSpecialise,
flagSpec "liberate-case" Opt_LiberateCase,
- flagHiddenSpec "llvm-tbaa" Opt_LlvmTBAA,
flagHiddenSpec "llvm-fill-undef-with-garbage" Opt_LlvmFillUndefWithGarbage,
flagSpec "loopification" Opt_Loopification,
flagSpec "block-layout-cfg" Opt_CfgBlocklayout,
--- configure.ac
+++ configure.ac.patched
@@ -544,7 +544,7 @@
# versions of LLVM simultaneously, but that stopped working around
# 3.5/3.6 release of LLVM.
LlvmMinVersion=11 # inclusive
-LlvmMaxVersion=16 # not inclusive
+LlvmMaxVersion=17 # not inclusive
AC_SUBST([LlvmMinVersion])
AC_SUBST([LlvmMaxVersion])
sUPPORTED_LLVM_VERSION_MIN=$(echo \($LlvmMinVersion\) | sed 's/\./,/')
--- llvm-passes
+++ llvm-passes.patched
@@ -1,5 +1,5 @@
[
-(0, "-enable-new-pm=0 -mem2reg -globalopt -lower-expect"),
-(1, "-enable-new-pm=0 -O1 -globalopt"),
-(2, "-enable-new-pm=0 -O2")
+(0, "-passes=function(require<tbaa>),function(mem2reg),globalopt,function(lower-expect)"),
+(1, "-passes=default<O1>"),
+(2, "-passes=default<O2>")
]
ARG GHC_VERSION=9.8.3
ARG CABAL_VERSION=3.10.3.0
ARG STACK_VERSION=3.1.1
ARG GHC_VERSION_BUILD=${GHC_VERSION}
ARG CABAL_VERSION_BUILD=${CABAL_VERSION}
FROM glcr.b-data.ch/ghc/ghc-musl:9.6.6 AS bootstrap
RUN apk upgrade --no-cache \
&& apk add --no-cache \
autoconf \
automake \
binutils-gold \
build-base \
coreutils \
cpio \
curl \
gnupg \
linux-headers \
libffi-dev \
llvm16 \
ncurses-dev \
perl \
python3 \
xz \
zlib-dev
FROM bootstrap AS bootstrap-ghc
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 || \
gpg --keyserver hkp://keyserver.ubuntu.com:80 \
--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" \
## 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
&& ./boot.source \
&& ./configure \
--build=$(uname -m)-alpine-linux \
--host=$(uname -m)-alpine-linux \
--target=$(uname -m)-alpine-linux \
--disable-ld-override LD=ld.gold \
## Use the LLVM backend
## Switch llvm-targets from unknown-linux-gnueabihf->alpine-linux
## so we can match the llvm vendor string alpine uses
&& sed -i -e 's/unknown-linux-gnueabihf/alpine-linux/g' llvm-targets \
&& sed -i -e 's/unknown-linux-gnueabi/alpine-linux/g' llvm-targets \
&& sed -i -e 's/unknown-linux-gnu/alpine-linux/g' llvm-targets \
&& cabal update \
## 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 \
--docs=none
FROM bootstrap AS bootstrap-cabal
ARG CABAL_VERSION_BUILD
ENV CABAL_VERSION=${CABAL_VERSION_BUILD}
## Build Cabal (the tool) with the GHC bootstrap version
RUN cabal update \
## See https://gitlab.haskell.org/ghc/ghc/-/wikis/commentary/libraries/version-history
&& cabal install "cabal-install-$CABAL_VERSION"
FROM alpine:3.20 AS ghc-base
ARG IMAGE_LICENSE="MIT"
ARG IMAGE_SOURCE="https://gitlab.b-data.ch/ghc/ghc-musl"
ARG IMAGE_VENDOR="Olivier Benz"
ARG IMAGE_AUTHORS="Olivier Benz <olivier.benz@b-data.ch>"
LABEL org.opencontainers.image.licenses="$IMAGE_LICENSE" \
org.opencontainers.image.source="$IMAGE_SOURCE" \
org.opencontainers.image.vendor="$IMAGE_VENDOR" \
org.opencontainers.image.authors="$IMAGE_AUTHORS"
ARG GHC_VERSION_BUILD
ARG CABAL_VERSION_BUILD
ARG STACK_VERSION
ENV GHC_VERSION=${GHC_VERSION_BUILD} \
CABAL_VERSION=${CABAL_VERSION_BUILD} \
STACK_VERSION=${STACK_VERSION}
RUN apk add --no-cache \
bash \
build-base \
bzip2 \
bzip2-dev \
bzip2-static \
curl \
curl-static \
dpkg \
fakeroot \
git \
gmp-dev \
libcurl \
libffi \
libffi-dev \
llvm16 \
ncurses-dev \
ncurses-static \
openssl-dev \
openssl-libs-static \
pcre \
pcre-dev \
pcre2 \
pcre2-dev \
perl \
## Install shadow for `stack --docker`
shadow \
wget \
xz \
xz-dev \
zlib \
zlib-dev \
zlib-static
FROM ghc-base AS ghc-stage1
COPY --from=bootstrap-ghc /tmp/ghc-"$GHC_VERSION"/_build/bindist/ghc-"$GHC_VERSION"-*-alpine-linux.tar.xz /tmp/
RUN cd /tmp \
## 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/*
FROM ghc-stage1 AS ghc-stage2
## Install Cabal (the tool) built with the GHC bootstrap version
COPY --from=bootstrap-cabal /root/.local/bin/cabal /usr/local/bin/cabal
## Rebuild Cabal (the tool) with the GHC target version
RUN cabal update \
&& cabal install "cabal-install-$CABAL_VERSION"
FROM ghc-stage1 AS test
WORKDIR /usr/local/src
## Install Cabal (the tool) built with the GHC target version
COPY --from=ghc-stage2 /root/.local/bin/cabal /usr/local/bin/cabal
COPY Main.hs Main.hs
RUN ghc -static -optl-pthread -optl-static Main.hs \
&& file Main \
&& ./Main \
## Test cabal workflow
&& mkdir cabal-test \
&& cd cabal-test \
&& cabal update \
&& cabal init -n --is-executable -p tester -l MIT \
&& cabal run
FROM ghc-base
## Install GHC and Stack
COPY --from=ghc-stage1 /usr/local /usr/local
## Install Cabal (the tool) built with the GHC target version
COPY --from=ghc-stage2 /root/.local/bin/cabal /usr/local/bin/cabal
CMD ["ghci"]
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment