mirror of
https://github.com/ilyakooo0/nixpkgs.git
synced 2025-01-02 17:09:09 +03:00
haskell.lib.getBuildInputs: Use generic builder passthru to implement
This commit is contained in:
parent
1951aea6a5
commit
7c5c3fceff
@ -174,8 +174,7 @@ let
|
|||||||
(optionalString (versionOlder "7.10" ghc.version && !isHaLVM) "-threaded")
|
(optionalString (versionOlder "7.10" ghc.version && !isHaLVM) "-threaded")
|
||||||
];
|
];
|
||||||
|
|
||||||
isHaskellPkg = x: (x ? pname) && (x ? version) && (x ? env);
|
isHaskellPkg = x: x ? isHaskellLibrary;
|
||||||
isSystemPkg = x: !isHaskellPkg x;
|
|
||||||
|
|
||||||
allPkgconfigDepends = pkgconfigDepends ++ libraryPkgconfigDepends ++ executablePkgconfigDepends ++
|
allPkgconfigDepends = pkgconfigDepends ++ libraryPkgconfigDepends ++ executablePkgconfigDepends ++
|
||||||
optionals doCheck testPkgconfigDepends ++ optionals doBenchmark benchmarkPkgconfigDepends;
|
optionals doCheck testPkgconfigDepends ++ optionals doBenchmark benchmarkPkgconfigDepends;
|
||||||
@ -192,7 +191,10 @@ let
|
|||||||
optionals doCheck (testDepends ++ testHaskellDepends ++ testSystemDepends ++ testFrameworkDepends) ++
|
optionals doCheck (testDepends ++ testHaskellDepends ++ testSystemDepends ++ testFrameworkDepends) ++
|
||||||
optionals doBenchmark (benchmarkDepends ++ benchmarkHaskellDepends ++ benchmarkSystemDepends ++ benchmarkFrameworkDepends);
|
optionals doBenchmark (benchmarkDepends ++ benchmarkHaskellDepends ++ benchmarkSystemDepends ++ benchmarkFrameworkDepends);
|
||||||
|
|
||||||
allBuildInputs = propagatedBuildInputs ++ otherBuildInputs;
|
|
||||||
|
allBuildInputs = propagatedBuildInputs ++ otherBuildInputs ++ depsBuildBuild;
|
||||||
|
isHaskellPartition =
|
||||||
|
stdenv.lib.partition isHaskellPkg allBuildInputs;
|
||||||
|
|
||||||
haskellBuildInputs = stdenv.lib.filter isHaskellPkg allBuildInputs;
|
haskellBuildInputs = stdenv.lib.filter isHaskellPkg allBuildInputs;
|
||||||
systemBuildInputs = stdenv.lib.filter isSystemPkg allBuildInputs;
|
systemBuildInputs = stdenv.lib.filter isSystemPkg allBuildInputs;
|
||||||
@ -429,6 +431,13 @@ stdenv.mkDerivation ({
|
|||||||
|
|
||||||
compiler = ghc;
|
compiler = ghc;
|
||||||
|
|
||||||
|
|
||||||
|
getBuildInputs = {
|
||||||
|
inherit propagatedBuildInputs otherBuildInputs allPkgconfigDepends;
|
||||||
|
haskellBuildInputs = isHaskellPartition.right;
|
||||||
|
systemBuildInputs = isHaskellPartition.wrong;
|
||||||
|
};
|
||||||
|
|
||||||
isHaskellLibrary = isLibrary;
|
isHaskellLibrary = isLibrary;
|
||||||
|
|
||||||
# TODO: ask why the split outputs are configurable at all?
|
# TODO: ask why the split outputs are configurable at all?
|
||||||
|
@ -299,12 +299,7 @@ rec {
|
|||||||
overrideCabal drv (_: { inherit src version; editedCabalFile = null; });
|
overrideCabal drv (_: { inherit src version; editedCabalFile = null; });
|
||||||
|
|
||||||
# Get all of the build inputs of a haskell package, divided by category.
|
# Get all of the build inputs of a haskell package, divided by category.
|
||||||
getBuildInputs = p:
|
getBuildInputs = p: p.getBuildInputs;
|
||||||
(overrideCabal p (args: {
|
|
||||||
passthru = (args.passthru or {}) // {
|
|
||||||
_getBuildInputs = extractBuildInputs p.compiler args;
|
|
||||||
};
|
|
||||||
}))._getBuildInputs;
|
|
||||||
|
|
||||||
# Extract the haskell build inputs of a haskell package.
|
# Extract the haskell build inputs of a haskell package.
|
||||||
# This is useful to build environments for developing on that
|
# This is useful to build environments for developing on that
|
||||||
@ -339,55 +334,6 @@ rec {
|
|||||||
, ...
|
, ...
|
||||||
}: { inherit doCheck doBenchmark; };
|
}: { inherit doCheck doBenchmark; };
|
||||||
|
|
||||||
# Divide the build inputs of the package into useful sets.
|
|
||||||
extractBuildInputs = ghc:
|
|
||||||
{ setupHaskellDepends ? [], extraLibraries ? []
|
|
||||||
, librarySystemDepends ? [], executableSystemDepends ? []
|
|
||||||
, pkgconfigDepends ? [], libraryPkgconfigDepends ? []
|
|
||||||
, executablePkgconfigDepends ? [], testPkgconfigDepends ? []
|
|
||||||
, benchmarkPkgconfigDepends ? [], testDepends ? []
|
|
||||||
, testHaskellDepends ? [], testSystemDepends ? []
|
|
||||||
, testToolDepends ? [], benchmarkDepends ? []
|
|
||||||
, benchmarkHaskellDepends ? [], benchmarkSystemDepends ? []
|
|
||||||
, benchmarkToolDepends ? [], buildDepends ? []
|
|
||||||
, libraryHaskellDepends ? [], executableHaskellDepends ? []
|
|
||||||
, ...
|
|
||||||
}@args:
|
|
||||||
let inherit (ghcInfo ghc) isGhcjs nativeGhc;
|
|
||||||
inherit (controlPhases ghc args) doCheck doBenchmark;
|
|
||||||
isHaskellPkg = x: x ? isHaskellLibrary;
|
|
||||||
allPkgconfigDepends =
|
|
||||||
pkgconfigDepends ++ libraryPkgconfigDepends ++
|
|
||||||
executablePkgconfigDepends ++
|
|
||||||
lib.optionals doCheck testPkgconfigDepends ++
|
|
||||||
lib.optionals doBenchmark benchmarkPkgconfigDepends;
|
|
||||||
otherBuildInputs =
|
|
||||||
setupHaskellDepends ++ extraLibraries ++
|
|
||||||
librarySystemDepends ++ executableSystemDepends ++
|
|
||||||
allPkgconfigDepends ++
|
|
||||||
lib.optionals doCheck ( testDepends ++ testHaskellDepends ++
|
|
||||||
testSystemDepends ++ testToolDepends
|
|
||||||
) ++
|
|
||||||
# ghcjs's hsc2hs calls out to the native hsc2hs
|
|
||||||
lib.optional isGhcjs nativeGhc ++
|
|
||||||
lib.optionals doBenchmark ( benchmarkDepends ++
|
|
||||||
benchmarkHaskellDepends ++
|
|
||||||
benchmarkSystemDepends ++
|
|
||||||
benchmarkToolDepends
|
|
||||||
);
|
|
||||||
propagatedBuildInputs =
|
|
||||||
buildDepends ++ libraryHaskellDepends ++
|
|
||||||
executableHaskellDepends;
|
|
||||||
allBuildInputs = propagatedBuildInputs ++ otherBuildInputs;
|
|
||||||
isHaskellPartition =
|
|
||||||
lib.partition isHaskellPkg allBuildInputs;
|
|
||||||
in
|
|
||||||
{ haskellBuildInputs = isHaskellPartition.right;
|
|
||||||
systemBuildInputs = isHaskellPartition.wrong;
|
|
||||||
inherit propagatedBuildInputs otherBuildInputs
|
|
||||||
allPkgconfigDepends;
|
|
||||||
};
|
|
||||||
|
|
||||||
# Utility to convert a directory full of `cabal2nix`-generated files into a
|
# Utility to convert a directory full of `cabal2nix`-generated files into a
|
||||||
# package override set
|
# package override set
|
||||||
#
|
#
|
||||||
|
Loading…
Reference in New Issue
Block a user