RISC-V/GHC: Difference between revisions
Reformat |
m Add category haskell |
||
| (4 intermediate revisions by 2 users not shown) | |||
| Line 2: | Line 2: | ||
== Current status == | == Current status == | ||
We can cross-compile ([https://github.com/NixOS/nixpkgs/pull/305392 #305392]) but we are missing bootstrap tarballs for native builds. | |||
<code>cannot bootstrap GHC on this platform ('riscv64-linux' with libc 'defaultLibc')</code> | <code>cannot bootstrap GHC on this platform ('riscv64-linux' with libc 'defaultLibc')</code> | ||
* [https://gitlab.haskell.org/ghc/ghc/-/issues/?label_name%5B%5D=RISC-V RISC-V Label] | * [https://gitlab.haskell.org/ghc/ghc/-/issues/?label_name%5B%5D=RISC-V RISC-V Label] | ||
* [https://gitlab.haskell.org/ghc/ghc/-/issues/16783 Main issue] ✅ | |||
* [https://gitlab.haskell.org/ghc/ghc/-/issues/23179 NCG] ✅ | |||
* [https://gitlab.haskell.org/ghc/ghc/-/commit/31e265c1df948d1bcc82d08affe995fd1d1c1438 LLVM backend] ✅ | |||
* '''[https://gitlab.haskell.org/ghc/ghc/-/issues/23519 Binary tarballs]''' | |||
Some popular affected packages are: | Some popular affected packages are: | ||
| Line 22: | Line 24: | ||
* nix-output-monitor | * nix-output-monitor | ||
* xmonad | * xmonad | ||
== Booting GHC via cross-compilation == | == Booting GHC via cross-compilation == | ||
| Line 156: | Line 157: | ||
For newer GHCs, refer to the GHC documentation or the Nixpkgs source to find which version of GHC and LLVM is needed for compilation. | For newer GHCs, refer to the GHC documentation or the Nixpkgs source to find which version of GHC and LLVM is needed for compilation. | ||
GHC >=9.2 is unable to boot | GHC >=9.2 is unable to boot 9.2 and 9.4. GHC >=9.6 cannot be cross-compiled at all due to issues with Hadrian. Newer GHCs can be booted using natively compiled versions of GHC instead. | ||
See https://github.com/AlexandreTunstall/nixos-riscv for an example of a pure flake that uses this trick to compile Haskell programs for RISC-V. | See https://github.com/AlexandreTunstall/nixos-riscv for an example of a pure flake that uses this trick to compile Haskell programs for RISC-V. | ||
| Line 163: | Line 164: | ||
* [https://github.com/NixOS/nixpkgs/pull/243619 Nixpkgs PR 243619 (fix cross-built native GHC)] | * [https://github.com/NixOS/nixpkgs/pull/243619 Nixpkgs PR 243619 (fix cross-built native GHC)] | ||
* [https://github.com/NixOS/nixpkgs/pull/305392 Nixpkgs PR 305392 (fix cross-built native GHC, version 2)] | |||
[[Category:Haskell]] | |||