diff options
author | Sukant Hajra <rrudbskr5g@snkmail.com> | 2017-02-09 23:04:17 -0600 |
---|---|---|
committer | Sukant Hajra <rrudbskr5g@snkmail.com> | 2017-02-09 23:07:40 -0600 |
commit | 98617ccb9938d37a73804e4eb3d03c06079d7595 (patch) | |
tree | 769241d159786609d99940471ae722758236c8c4 /pkgs | |
parent | 96d07508bfeab30e6dcbfa082ade1c48892c1411 (diff) | |
download | nixlib-98617ccb9938d37a73804e4eb3d03c06079d7595.tar nixlib-98617ccb9938d37a73804e4eb3d03c06079d7595.tar.gz nixlib-98617ccb9938d37a73804e4eb3d03c06079d7595.tar.bz2 nixlib-98617ccb9938d37a73804e4eb3d03c06079d7595.tar.lz nixlib-98617ccb9938d37a73804e4eb3d03c06079d7595.tar.xz nixlib-98617ccb9938d37a73804e4eb3d03c06079d7595.tar.zst nixlib-98617ccb9938d37a73804e4eb3d03c06079d7595.zip |
Haskell infrastructure: fix #9871 (overrideCabal)
As per the recommendation by @Mathnerd314, this change seems to work with the testing I did. It makes sense to me why it works, but I think it's in an important enough place that someone with much deeper knowledge of Haskell infrastructure in Nixpkgs should give it a really heavy review. I also consolidated all the overrideCabal definitions (there were two) into a single definition in haskell-modules/lib.nix.
Diffstat (limited to 'pkgs')
-rw-r--r-- | pkgs/development/haskell-modules/default.nix | 9 | ||||
-rw-r--r-- | pkgs/development/haskell-modules/lib.nix | 2 |
2 files changed, 5 insertions, 6 deletions
diff --git a/pkgs/development/haskell-modules/default.nix b/pkgs/development/haskell-modules/default.nix index d2ecc3381287..15a4ed42e8c0 100644 --- a/pkgs/development/haskell-modules/default.nix +++ b/pkgs/development/haskell-modules/default.nix @@ -6,12 +6,13 @@ let - inherit (stdenv.lib) fix' extends; + inherit (stdenv.lib) fix' extends makeOverridable; + inherit (import ./lib.nix { inherit pkgs; }) overrideCabal; haskellPackages = self: let - mkDerivation = pkgs.callPackage ./generic-builder.nix { + mkDerivationImpl = pkgs.callPackage ./generic-builder.nix { inherit stdenv; inherit (pkgs) fetchurl pkgconfig glibcLocales coreutils gnugrep gnused; jailbreak-cabal = if (self.ghc.cross or null) != null @@ -37,9 +38,7 @@ let }); }; - overrideCabal = drv: f: drv.override (args: args // { - mkDerivation = drv: args.mkDerivation (drv // f drv); - }); + mkDerivation = makeOverridable mkDerivationImpl; callPackageWithScope = scope: drv: args: (stdenv.lib.callPackageWith scope drv args) // { overrideScope = f: callPackageWithScope (mkScope (fix' (extends f scope.__unfix__))) drv args; diff --git a/pkgs/development/haskell-modules/lib.nix b/pkgs/development/haskell-modules/lib.nix index f7c9811234ec..2d5ba699d8ae 100644 --- a/pkgs/development/haskell-modules/lib.nix +++ b/pkgs/development/haskell-modules/lib.nix @@ -3,7 +3,7 @@ rec { overrideCabal = drv: f: (drv.override (args: args // { - mkDerivation = drv: args.mkDerivation (drv // f drv); + mkDerivation = drv: (args.mkDerivation drv).override f; })) // { overrideScope = scope: overrideCabal (drv.overrideScope scope) f; }; |