Skip to content

GHC 9.6 bindists for Aarch64 linux have a broken install of directory package

Summary

Installing GHC 9.6.1 and 9.6.2 on Aarch64 ubuntu using GHCup leads to a broken installation of the directory package.

Steps to reproduce

  1. Install ghcup
  2. ghcup install ghc 9.6.2 (or 9.6.1)
  3. ghcup set ghc 9.6.2
  4. ghc-pkg check --verbose
>  ghc-pkg check --verbose
GHC package manager version 9.6.2
Timestamp 2023-07-02 11:06:19.951587334 UTC for /data/home/ubuntu/.ghcup/ghc/9.6.2/lib/ghc-9.6.2/lib/package.conf.d/package.cache
using cache: /data/home/ubuntu/.ghcup/ghc/9.6.2/lib/ghc-9.6.2/lib/package.conf.d/package.cache
db stack: ["/data/home/ubuntu/.ghc/aarch64-linux-9.6.2/package.conf.d","/data/home/ubuntu/.ghcup/ghc/9.6.2/lib/ghc-9.6.2/lib/package.conf.d"]
flag db stack: ["/data/home/ubuntu/.ghc/aarch64-linux-9.6.2/package.conf.d","/data/home/ubuntu/.ghcup/ghc/9.6.2/lib/ghc-9.6.2/lib/package.conf.d"]
Warning: include-dirs: /data/home/ubuntu/.ghcup/ghc/9.6.2/lib/ghc-9.6.2/lib/../lib/aarch64-linux-ghc-9.6.2/directory-1.3.8.1/include doesn't exist or isn't a directory
> tree $HOME/.ghcup/ghc/9.6.2/lib/ghc-9.6.2/lib/../lib/aarch64-linux-ghc-9.6.2/directory-1.3.8.1/
/data/home/ubuntu/.ghcup/ghc/9.6.2/lib/ghc-9.6.2/lib/../lib/aarch64-linux-ghc-9.6.2/directory-1.3.8.1/
├── System
│   ├── Directory
│   │   ├── Internal
│   │   │   ├── C_utimensat.dyn_hi
│   │   │   ├── C_utimensat.hi
│   │   │   ├── C_utimensat.p_hi
│   │   │   ├── Common.dyn_hi
│   │   │   ├── Common.hi
│   │   │   ├── Common.p_hi
│   │   │   ├── Config.dyn_hi
│   │   │   ├── Config.hi
│   │   │   ├── Config.p_hi
│   │   │   ├── Posix.dyn_hi
│   │   │   ├── Posix.hi
│   │   │   ├── Posix.p_hi
│   │   │   ├── Prelude.dyn_hi
│   │   │   ├── Prelude.hi
│   │   │   ├── Prelude.p_hi
│   │   │   ├── Windows.dyn_hi
│   │   │   ├── Windows.hi
│   │   │   └── Windows.p_hi
│   │   ├── Internal.dyn_hi
│   │   ├── Internal.hi
│   │   ├── Internal.p_hi
│   │   ├── OsPath.dyn_hi
│   │   ├── OsPath.hi
│   │   └── OsPath.p_hi
│   ├── Directory.dyn_hi
│   ├── Directory.hi
│   └── Directory.p_hi
├── libHSdirectory-1.3.8.1.a
└── libHSdirectory-1.3.8.1_p.a

3 directories, 29 files
> cat $HOME/.ghcup/ghc/9.6.2/lib/ghc-9.6.2/lib/package.conf.d/directory-1.3.8.1.conf
...
data-dir:
    ${pkgroot}/../share/aarch64-linux-ghc-9.6.2/directory-1.3.8.1

hs-libraries:         HSdirectory-1.3.8.1
include-dirs:
    ${pkgroot}/../lib/aarch64-linux-ghc-9.6.2/directory-1.3.8.1/include

depends:
    base-4.18.0.0 filepath-1.4.100.1 time-1.12.2 unix-2.8.1.0
...

Expected behavior

I assume the include directory should exist, or the package config shouldn't include the above include-dirs directive:

> cat $HOME/.ghcup/ghc/9.4.5/lib/ghc-9.4.5/lib/package.conf.d/directory-1.3.7.1.conf
...
data-dir:
    ${pkgroot}/../share/aarch64-linux-ghc-9.4.5/directory-1.3.7.1

hs-libraries:         HSdirectory-1.3.7.1
depends:              base-4.17.1.0 filepath-1.4.2.2 time-1.12.2 unix-2.7.3
...

Environment

> uname -a
Linux ip-172-31-17-153 5.19.0-1025-aws #26~22.04.1-Ubuntu SMP Mon Apr 24 01:58:03 UTC 2023 aarch64 aarch64 aarch64 GNU/Linux
> ghcup --version
The GHCup Haskell installer, version 0.1.19.4
> ghc --version
The Glorious Glasgow Haskell Compilation System, version 9.6.2
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information