haskellPackages.callCabal2nix: Depend on the expression.

This ensures that as long as the package derivation is alive, its nix
expressions do not need to be regenerated.

Fixes #36190.
This commit is contained in:
Shea Levy 2018-03-02 09:37:02 -05:00
parent 336eb53f72
commit 62a1abe204
No known key found for this signature in database
GPG Key ID: 5C0BD6957D86FE27

View File

@ -145,17 +145,21 @@ in package-set { inherit pkgs stdenv callPackage; } self // {
callHackage = name: version: self.callPackage (self.hackage2nix name version);
# Creates a Haskell package from a source package by calling cabal2nix on the source.
callCabal2nix = name: src: args:
overrideCabal (self.callPackage (haskellSrc2nix {
callCabal2nix = name: src: args: let
filter = path: type:
pkgs.lib.hasSuffix "${name}.cabal" path ||
baseNameOf path == "package.yaml";
expr = haskellSrc2nix {
inherit name;
src =
let filter = path: type:
pkgs.lib.hasSuffix "${name}.cabal" path ||
baseNameOf path == "package.yaml";
in if pkgs.lib.canCleanSource src
then pkgs.lib.cleanSourceWith { inherit src filter; }
else src;
}) args) (_: { inherit src; });
src = if pkgs.lib.canCleanSource src
then pkgs.lib.cleanSourceWith { inherit src filter; }
else src;
};
in overrideCabal (self.callPackage expr args) (orig: {
inherit src;
preConfigure =
"# Generated from ${expr}\n${orig.preConfigure or ""}";
});
# : { root : Path
# , source-overrides : Defaulted (Either Path VersionNumber)