@@ -1,33 +1,15 @@
1−{ stdenv, lib, buildPackages, haskellLib, ghc, nonReinstallablePkgs, hsPkgs, makeSetupConfigFiles }:
1+{ stdenv, lib, buildPackages, haskellLib, ghc, nonReinstallablePkgs, hsPkgs, makeSetupConfigFiles, pkgconfig }:
3−{ setup-depends, package, name, src, flags, revision, patches, defaultSetupSrc
3+{ component, package, name, src, flags, revision, patches, defaultSetupSrc
4, preUnpack ? null, postUnpack ? null
4, preUnpack ? null, postUnpack ? null
9− depends = setup-depends;
12− doExactConfig = false;
13− # We have to set hsSourceDirs or cleanCabalComponent will
14− # include everything (and as a result all the components of
15− # the package will depend on eveything in the package).
16− # TODO find a better way
17− hsSourceDirs = ["setup-src"];
24− extraSrcFiles = [ "Setup.hs" "Setup.lhs" ];
26 cleanSrc = haskellLib.cleanCabalComponent package component src;
8 cleanSrc = haskellLib.cleanCabalComponent package component src;
28 fullName = "${name}-setup";
10 fullName = "${name}-setup";
30− includeGhcPackage = lib.any (p: p.identifier.name == "ghc") setup-depends;
12+ includeGhcPackage = lib.any (p: p.identifier.name == "ghc") component.depends;
32 configFiles = makeSetupConfigFiles {
14 configFiles = makeSetupConfigFiles {
33 inherit (package) identifier;
15 inherit (package) identifier;
@@ -37,12 +19,21 @@ let
37 inherit preUnpack postUnpack;
19 inherit preUnpack postUnpack;
22+ executableToolDepends =
23+ (lib.concatMap (c: if c.isHaskell or false
24+ then builtins.attrValues (c.components.exes or {})
25+ else [c]) component.build-tools) ++
26+ lib.optional (component.pkgconfig != []) pkgconfig;
41 stdenv.lib.fix (drv:
29 stdenv.lib.fix (drv:
42 stdenv.mkDerivation ({
30 stdenv.mkDerivation ({
43 name = "${fullName}";
31 name = "${fullName}";
44 src = cleanSrc;
32 src = cleanSrc;
33+ buildInputs = component.libs
34+ ++ component.frameworks
35+ ++ builtins.concatLists component.pkgconfig;
45− nativeBuildInputs = [ghc];
36+ nativeBuildInputs = [ghc] ++ executableToolDepends;
47 passthru = {
38 passthru = {
48 inherit (package) identifier;
39 inherit (package) identifier;