Closed
Description
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)
...
Debug information
-