Skip to content

HLS-1.9.1.0 with GHC-9.4.4 is broken on "Unknown Linux" #3497

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
hasufell opened this issue Feb 17, 2023 · 3 comments
Closed

HLS-1.9.1.0 with GHC-9.4.4 is broken on "Unknown Linux" #3497

hasufell opened this issue Feb 17, 2023 · 3 comments
Labels
bindists Anything to do with binary distributions of HLS GHC issues with particular GHC versions type: bug Something isn't right: doesn't work as intended, documentation is missing/outdated, etc..

Comments

@hasufell
Copy link
Member

Reproduced in CI: https://github.com/haskell/ghcup-metadata/actions/runs/4205412241/jobs/7297468902#step:5:2946

Reported here: https://www.reddit.com/r/haskell/comments/1129ywb/comment/j8kd7wk/?utm_source=share&utm_medium=web2x&context=3


The issue lies in our CI:

platform: [ { image: "debian:9"
, installCmd: "apt-get update && apt-get install -y"
, toolRequirements: "libnuma-dev zlib1g-dev libgmp-dev libgmp10 libssl-dev liblzma-dev libbz2-dev git wget lsb-release software-properties-common gnupg2 apt-transport-https gcc autoconf automake build-essential curl ghc gzip libffi-dev libncurses-dev libncurses5 libtinfo5 patchelf"
, DISTRO: "Debian"
, ARTIFACT: "x86_64-linux-deb9"
, ADD_CABAL_ARGS: "--enable-split-sections"
},
{ image: "debian:10"
, installCmd: "apt-get update && apt-get install -y"
, toolRequirements: "libnuma-dev zlib1g-dev libgmp-dev libgmp10 libssl-dev liblzma-dev libbz2-dev git wget lsb-release software-properties-common gnupg2 apt-transport-https gcc autoconf automake build-essential curl ghc gzip libffi-dev libncurses-dev libncurses5 libtinfo5 patchelf"
, DISTRO: "Debian"
, ARTIFACT: "x86_64-linux-deb10"
, ADD_CABAL_ARGS: "--enable-split-sections"
},
{ image: "debian:11"
, installCmd: "apt-get update && apt-get install -y"
, toolRequirements: "libnuma-dev zlib1g-dev libgmp-dev libgmp10 libssl-dev liblzma-dev libbz2-dev git wget lsb-release software-properties-common gnupg2 apt-transport-https gcc autoconf automake build-essential curl ghc gzip libffi-dev libncurses-dev libncurses5 libtinfo5 patchelf"
, DISTRO: "Debian"
, ARTIFACT: "x86_64-linux-deb11"
, ADD_CABAL_ARGS: "--enable-split-sections"
},
{ image: "ubuntu:18.04"
, installCmd: "apt-get update && apt-get install -y"
, toolRequirements: "libnuma-dev zlib1g-dev libgmp-dev libgmp10 libssl-dev liblzma-dev libbz2-dev git wget lsb-release software-properties-common gnupg2 apt-transport-https gcc autoconf automake build-essential curl ghc gzip libffi-dev libncurses-dev libncurses5 libtinfo5 patchelf"
, DISTRO: "Ubuntu"
, ARTIFACT: "x86_64-linux-ubuntu18.04"
, ADD_CABAL_ARGS: "--enable-split-sections"
},
{ image: "ubuntu:20.04"
, installCmd: "apt-get update && apt-get install -y"
, toolRequirements: "libnuma-dev zlib1g-dev libgmp-dev libgmp10 libssl-dev liblzma-dev libbz2-dev git wget lsb-release software-properties-common gnupg2 apt-transport-https gcc autoconf automake build-essential curl ghc gzip libffi-dev libncurses-dev libncurses5 libtinfo5 patchelf"
, DISTRO: "Ubuntu"
, ARTIFACT: "x86_64-linux-ubuntu20.04"
, ADD_CABAL_ARGS: "--enable-split-sections"
},
{ image: "ubuntu:22.04"
, installCmd: "apt-get update && apt-get install -y"
, toolRequirements: "libnuma-dev zlib1g-dev libgmp-dev libgmp10 libssl-dev liblzma-dev libbz2-dev git wget lsb-release software-properties-common gnupg2 apt-transport-https gcc autoconf automake build-essential curl ghc gzip libffi-dev libncurses-dev libncurses5 libtinfo5 patchelf"
, DISTRO: "Ubuntu"
, ARTIFACT: "x86_64-linux-ubuntu22.04"
, ADD_CABAL_ARGS: "--enable-split-sections"
},
{ image: "linuxmintd/mint19.3-amd64"
, installCmd: "apt-get update && apt-get install -y"
, toolRequirements: "libnuma-dev zlib1g-dev libgmp-dev libgmp10 libssl-dev liblzma-dev libbz2-dev git wget lsb-release software-properties-common gnupg2 apt-transport-https gcc autoconf automake build-essential curl ghc gzip libffi-dev libncurses-dev libncurses5 libtinfo5 patchelf"
, DISTRO: "Mint"
, ARTIFACT: "x86_64-linux-mint19.3"
, ADD_CABAL_ARGS: "--enable-split-sections"
},
{ image: "linuxmintd/mint20.2-amd64"
, installCmd: "apt-get update && apt-get install -y"
, toolRequirements: "libnuma-dev zlib1g-dev libgmp-dev libgmp10 libssl-dev liblzma-dev libbz2-dev git wget lsb-release software-properties-common gnupg2 apt-transport-https gcc autoconf automake build-essential curl ghc gzip libffi-dev libncurses-dev libncurses5 libtinfo5 patchelf"
, DISTRO: "Mint"
, ARTIFACT: "x86_64-linux-mint20.2"
, ADD_CABAL_ARGS: "--enable-split-sections"
},
{ image: "fedora:27"
, installCmd: "dnf install -y"
, toolRequirements: "autoconf automake binutils bzip2 coreutils curl elfutils-devel elfutils-libs findutils gcc gcc-c++ git gmp gmp-devel jq lbzip2 make ncurses ncurses-compat-libs ncurses-devel openssh-clients patch perl pxz python3 sqlite sudo wget which xz zlib-devel patchelf"
, DISTRO: "Fedora"
, ARTIFACT: "x86_64-linux-fedora27"
, ADD_CABAL_ARGS: "--enable-split-sections"
},
{ image: "fedora:33"
, installCmd: "dnf install -y"
, toolRequirements: "autoconf automake binutils bzip2 coreutils curl elfutils-devel elfutils-libs findutils gcc gcc-c++ git gmp gmp-devel jq lbzip2 make ncurses ncurses-compat-libs ncurses-devel openssh-clients patch perl pxz python3 sqlite sudo wget which xz zlib-devel patchelf"
, DISTRO: "Fedora"
, ARTIFACT: "x86_64-linux-fedora33"
, ADD_CABAL_ARGS: "--enable-split-sections"
},
{ image: "centos:7"
, installCmd: "yum -y install epel-release && yum install -y"
, toolRequirements: "autoconf automake binutils bzip2 coreutils curl elfutils-devel elfutils-libs findutils gcc gcc-c++ git gmp gmp-devel jq lbzip2 make ncurses ncurses-compat-libs ncurses-devel openssh-clients patch perl pxz python3 sqlite sudo wget which xz zlib-devel patchelf"
, DISTRO: "CentOS"
, ARTIFACT: "x86_64-linux-centos7"
, ADD_CABAL_ARGS: "--enable-split-sections"
}

We don't have a configuration for 'unknown linux' and then re-use the Fedora27 HLS bindist for unknown linux: https://github.com/haskell/ghcup-metadata/blob/2941394cb19ecc9772ac9b72f5d5ccb71a133355/ghcup-0.0.7.yaml#L4058-L4059

This is wrong, because the bindist of GHC-9.4.4 we install on Fedora27 is not the same as on "Unknown Linux". Because 9.4.4 stopped supporting Fedora27 bindists and the mappings diverged.

As such, we have to provide CI jobs for every single mapping and not re-use HLS bindists for other configurations.

@hasufell hasufell added type: bug Something isn't right: doesn't work as intended, documentation is missing/outdated, etc.. bindists Anything to do with binary distributions of HLS labels Feb 17, 2023
@hasufell
Copy link
Member Author

Workaround:

ghcup compile hls -g 1.9.1.0 --ghc 9.4.4 --cabal-update

@hasufell
Copy link
Member Author

I talked with @mpickering and we thought it's the easiest to:

  • build a new bindist for unknown linux and fix the bindist in-place in ghcup-metadata
  • add a section in the documentation explaining the possible workaround of reinstalling the HLS bindist to fetch the new version: ghcup install hls --force 1.9.1.0
  • improve the error in the wrapper script, which is awful:
    err_abi() {
    err_msg "GHC ABIs don't match!"
    err_msg ""
    err_msg "Expected: ${ABI_HASHES}"
    err_msg "Got: $1"
    }

The alternative is to make a new non-code release, which may be confusing for end-users.

@fendor fendor added the GHC issues with particular GHC versions label Feb 22, 2023
@hasufell
Copy link
Member Author

hasufell commented Apr 7, 2023

I think this should be fixed on the latest HLS 1.10.0.0.

@hasufell hasufell closed this as completed Apr 7, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bindists Anything to do with binary distributions of HLS GHC issues with particular GHC versions type: bug Something isn't right: doesn't work as intended, documentation is missing/outdated, etc..
Projects
None yet
Development

No branches or pull requests

2 participants