Backport a patch (which probably addresses a completely unrelated issue
with hadrian and system libffi for GHC >= 9.2.3) that stops Cabal from
handling libffi includes in libraries/ghci. This allows for cc-wrapper
to freely pick the correct libffi which is important when cross
compiling GHC as we need to correctly pick between build and host/target
libffi each time.
This fixes the build of pkgsCross.riscv64.haskell.compiler.ghc8107.
Tested
- haskell.packages.ghc8107.cabal2nix (x86_64-linux, aarch64-linux)
- pkgsCross.riscv64.haskell.compiler.ghc8107 (x86_64-linux)
Could not test darwin because rcodesign is broken at the moment (?).
Unfortunately, this is the newest GHC revision we can update to. After
145a647785,
it becomes necessary to bootstrap with an in tree Cabal version.
Supporting this in nixpkgs is a waste of time since it wouldn't be
necessary for any release version.
This change implements a leftover task from #307211, namely passing
monorepoSrc to the different llvmPackages_13 package expressions. Before
this change, all packages llvmPackages_13 would be built from a
subdirectory of the full LLVM monorepo tree. After this change only the
relevant directories are made available at build time. This
- reduces the size of the source that needs to be made available to the
builder.
- prevents LLVM from sidestepping our instructions and including extra
sources from other directories it shouldn't.
Since LLVM 12 and 13 don't have the `cmake` directory at the top level,
the runCommand expressions filtering the source need to be adjusted, but
this causes no rebuild for any other LLVM version (ofborg should confirm
this).
The only problem encountered was in lld:
- We need to make the patch to the inclusion of libunwind headers
unconditional now. lld needs this on non-darwin as well. In the
full monorepo, LLVM_MAIN_SRC_DIR would be set correctly, so the
patch wasn't necessary.
- The substitute mechanism for LLVM 12 and 13 can't be unified yet since
LLVM 12 still uses a non monorepo build, so we come up with a
different LLVM_MAIN_SRC_DIR.
Change was tested by building the following expression on x86_64-linux.
with import ./. {};
builtins.removeAttrs llvmPackages_13 [ "lldb" "lldbPlugins" ]'
lld was also tested on aarch64-darwin.