Skip to content

2.10.0.0: Bindist not working when built with GHC versions ≥ 9.10.1 #4533

Closed
@benz0li

Description

@benz0li

Your environment

Which OS do you use? Alpine Linux 3.21.3

Which version of GHC do you use and how did you install it? 9.10.1
👉 Docker image quay.io/benz0li/ghc-musl:9.10.1 (https://github.com/benz0li/ghc-musl)

Which version of HLS do you use and how did you install it? See below.

Steps to reproduce

On a host with docker installed

docker run --rm -ti quay.io/benz0li/ghc-musl:9.10.1 bash

Inside the container

Build HLS bindist:

export HLS_VERSION=2.10.0.0 \
  && 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

Install from bindist:

cd /var/tmp/
cp /tmp/haskell-language-server-"$HLS_VERSION"/out/haskell-language-server-"$HLS_VERSION"-aarch64-linux-alpine.tar.xz .
mv /tmp/haskell-language-server-"$HLS_VERSION" /tmp/haskell-language-server-"$HLS_VERSION".bak
tar -xJf haskell-language-server-"$HLS_VERSION"-*-linux-alpine.tar.xz
cd haskell-language-server-"$HLS_VERSION"
make install

Size info:

ls -lh /usr/local/lib/haskell-language-server-"$HLS_VERSION"/bin/haskell-language-server-wrapper
-rwxr-xr-x    1 root     root      203.5K Apr  1 07:49 /usr/local/lib/haskell-language-server-2.10.0.0/bin/haskell-language-server-wrapper

File info:

file /usr/local/lib/haskell-language-server-"$HLS_VERSION"/bin/haskell-language-server-wrapper
/usr/local/lib/haskell-language-server-2.10.0.0/bin/haskell-language-server-wrapper: ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-musl-aarch64.so.1, BuildID[sha1]=29fc4b7f5ba577757e8c7fc6a40f9339482e014b, stripped

Expected behaviour

shared libraries e.g. for HLS 2.9.0.1:

ldd /usr/local/lib/haskell-language-server-"$HLS_VERSION"/bin/haskell-language-server-wrapper
	/lib/ld-musl-aarch64.so.1 (0xffff885ac000)
	libz.so.1 => /usr/lib/libz.so.1 (0xffff8857b000)
	libgmp.so.10 => /usr/lib/libgmp.so.10 (0xffff884fa000)
	libc.musl-aarch64.so.1 => /lib/ld-musl-aarch64.so.1 (0xffff885ac000)

Actual behaviour

shared libraries:

ldd /usr/local/lib/haskell-language-server-"$HLS_VERSION"/bin/haskell-language-server-wrapper
	/lib/ld-musl-aarch64.so.1 (0xffff9cf0d000)
Error loading shared library libHShaskell-language-server-2.10.0.0-c822100215721b3053b21638b3472d2369d7871ad9357fc342d9a5545d638251-ghc9.10.1.so: No such file or directory (needed by /usr/local/lib/haskell-language-server-2.10.0.0/bin/haskell-language-server-wrapper)
...

ldd_out.txt

Debug information

-

Metadata

Metadata

Assignees

No one assigned

    Labels

    status: needs triagetype: bugSomething isn't right: doesn't work as intended, documentation is missing/outdated, etc..

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions