diff --git a/.devcontainer/VERSION_MATRIX.md b/.devcontainer/VERSION_MATRIX.md index 3a5b1219c43498388dfb4b59a16627e6b5e58178..c58adf127ab170e510836d387a2923d01bc5bab0 100644 --- a/.devcontainer/VERSION_MATRIX.md +++ b/.devcontainer/VERSION_MATRIX.md @@ -2,11 +2,11 @@ ## Current -| GHC | Cabal[^1] | Stack[^1] | HLS | -|:------------------------------|:----------|:----------|:----------------------------- | -| latest<br>9.10.1<br>9.10<br>9 | 3.11.0.0 | ≥ 2.13.1 | n/a | -| 9.8.2<br>9.8 | 3.10.3.0 | ≥ 2.13.1 | 2.8.0.0<br>2.7.0.0<br>2.6.0.0 | -| 9.6.5<br>9.6 | 3.10.3.0 | ≥ 2.13.1 | 2.8.0.0<br>2.7.0.0 | +| GHC | Cabal[^1] | Stack[^1] | HLS | +|:------------------------------|:----------|:----------|:---------------------------------------- | +| latest<br>9.10.1<br>9.10<br>9 | 3.11.0.0 | ≥ 2.13.1 | latest<br>2.9.0.0 | +| 9.8.2<br>9.8 | 3.10.3.0 | ≥ 2.13.1 | 2.9.0.0<br>2.8.0.0<br>2.7.0.0<br>2.6.0.0 | +| 9.6.5<br>9.6 | 3.10.3.0 | ≥ 2.13.1 | 2.9.0.0<br>2.8.0.0<br>2.7.0.0 | [^1]: built-in version; see [GHC musl > Version Matrix](../VERSION_MATRIX.md) diff --git a/.devcontainer/ghc-9.10/devcontainer.json b/.devcontainer/ghc-9.10/devcontainer.json index c0e15c8d4ba820630b22ab093cd8d260f5aa1637..77042a05a63f277da7ee5409920bc2d8c11ab33c 100644 --- a/.devcontainer/ghc-9.10/devcontainer.json +++ b/.devcontainer/ghc-9.10/devcontainer.json @@ -5,6 +5,7 @@ "context": "..", "args": { "GHC_VERSION": "9.10", + "HLS_VERSION": "2.9.0.0", "USE_ZSH_FOR_ROOT": "unset-to-use-ash", "SET_LANG": "C.UTF-8", "SET_TZ": "" diff --git a/.devcontainer/ghc-9.8/devcontainer.json b/.devcontainer/ghc-9.8/devcontainer.json index 70cf52895e54f1b80f3aa54d8f116ecff633d80e..166f7d57171ea181d5095d1e42c5b1b59d84b69a 100644 --- a/.devcontainer/ghc-9.8/devcontainer.json +++ b/.devcontainer/ghc-9.8/devcontainer.json @@ -5,7 +5,7 @@ "context": "..", "args": { "GHC_VERSION": "9.8", - "HLS_VERSION": "2.8.0.0", + "HLS_VERSION": "2.9.0.0", "USE_ZSH_FOR_ROOT": "unset-to-use-ash", "SET_LANG": "C.UTF-8", "SET_TZ": "" diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 9c4108ca93b8a8ecc303db459c95f9f7d3555175..c4e42a0ff6c65e73aed9b46503aafdbc1fd4f9bc 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -3,9 +3,9 @@ GHC_VERSION: "9.10.1" CABAL_VERSION: "3.12.0.0-prerelease" STACK_VERSION: "2.15.7" - HLS_VERSION: "2.8.0.0" - BUILD_GHC: "true" - BUILD_HLS: "false" + HLS_VERSION: "2.9.0.0" + BUILD_GHC: "false" + BUILD_HLS: "true" TAG_VERSION_MAJ_MIN: "false" TAG_VERSION_MAJ: "false" diff --git a/packages/hls/2.9.0.0.Dockerfile b/packages/hls/2.9.0.0.Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..571cad38a772fdc0a37c4924d2db513097e20228 --- /dev/null +++ b/packages/hls/2.9.0.0.Dockerfile @@ -0,0 +1,50 @@ +ARG GHC_VERSION +ARG HLS_VERSION=2.9.0.0 + +FROM glcr.b-data.ch/ghc/ghc-musl:${GHC_VERSION} as builder + +ARG HLS_VERSION + +RUN apk add --no-cache patchelf findutils \ + && cd /tmp \ + && curl -sSL "https://github.com/haskell/haskell-language-server/archive/refs/tags/$HLS_VERSION.tar.gz" \ + -o "haskell-language-server-$HLS_VERSION.tar.gz" \ + && tar -xzf "haskell-language-server-$HLS_VERSION.tar.gz" \ + && cd "haskell-language-server-$HLS_VERSION" \ + && . .github/scripts/env.sh \ + && . .github/scripts/common.sh \ + && sed -i.bak -e '/DELETE MARKER FOR CI/,/END DELETE/d' cabal.project \ + && GHCS="$GHC_VERSION" \ + && export GHCS \ + && ARTIFACT="$(uname -m)-linux-alpine" \ + && export ARTIFACT \ + && cabal update \ + && emake hls-ghc \ + && CABAL_VERSION_NUMERIC="$(cabal --numeric-version)" \ + && if dpkg --compare-versions "${CABAL_VERSION_NUMERIC%.*.*}" ge "3.11"; then \ + sed -i 's|"$(STORE_DIR)/ghc-$(GHC_VERSION)"|"$(STORE_DIR)/ghc-$(GHC_VERSION)-inplace"|g' \ + GNUmakefile; \ + fi \ + && emake bindist \ + && strip "out/bindist/$ARTIFACT/haskell-language-server-$HLS_VERSION/lib/$GHC_VERSION"/*.so \ + && emake bindist-tar + +FROM alpine:3.20 as hls + +ARG HLS_VERSION + +COPY --from=builder /tmp/haskell-language-server-"$HLS_VERSION"/out/haskell-language-server-*-linux-alpine.tar.xz /tmp/ + +RUN apk add --no-cache build-base \ + && cd /tmp \ + && tar -xJf haskell-language-server-"$HLS_VERSION"-*-linux-alpine.tar.xz \ + && cd haskell-language-server-"$HLS_VERSION" \ + && make install + +FROM scratch + +ARG HLS_VERSION + +ENV HLS_VERSION=${HLS_VERSION} + +COPY --from=hls /usr/local /usr/local