mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-11-25 16:33:15 +00:00
pkgs/development/compilers/ghc/with-packages.nix: improve recognition of Haskell packages
Haskell packages -- i.e. packages built by our Cabal builder -- invariably have the attributes 'pname' and 'version'. We use the absence of these attributes to recognize non-Haskell packages and filter them from the closed package set generated by closePropagation. We do this so that the generated Haskell environment won't contain paths like "/lib/libz.a", which are part of the closure but have nothing to do with Haskell. The previous scheme used the attribute 'ghc' to accomplish the same thing, but unfortunately other packages to contain a 'ghc' attribute, too, like the old-style ghc-wrapper. Including the ghc-wrapper in this environment is pointless, obviously. The new approach filters the ghc-wrapper successfully.
This commit is contained in:
parent
a46c71857d
commit
89c566fcfd
@ -7,10 +7,11 @@ let
|
||||
packageDBFlag = if ghc761OrLater then "--package-db" else "--package-conf";
|
||||
libDir = "$out/lib/ghc-${ghc.version}";
|
||||
packageCfgDir = "${libDir}/package.conf.d";
|
||||
isHaskellPkg = x: (x ? pname) && (x ? version);
|
||||
in
|
||||
buildEnv {
|
||||
name = "haskell-env-${ghc.name}";
|
||||
paths = stdenv.lib.filter (x: x ? ghc) (stdenv.lib.closePropagation packages) ++ [ghc];
|
||||
paths = stdenv.lib.filter isHaskellPkg (stdenv.lib.closePropagation packages) ++ [ghc];
|
||||
postBuild = ''
|
||||
. ${makeWrapper}/nix-support/setup-hook
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user