Skip to content
Snippets Groups Projects
2.2.0.0.Dockerfile 1.31 KiB
ARG GHC_VERSION
ARG HLS_VERSION=2.2.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 \
  && emake bindist \
  && strip "out/bindist/$ARTIFACT/haskell-language-server-$HLS_VERSION/lib/$GHC_VERSION"/*.so \
  && emake bindist-tar

FROM alpine:3.18 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