about summary refs log tree commit diff
path: root/pkgs
diff options
context:
space:
mode:
authorSukant Hajra <rrudbskr5g@snkmail.com>2017-02-09 23:04:17 -0600
committerSukant Hajra <rrudbskr5g@snkmail.com>2017-02-09 23:07:40 -0600
commit98617ccb9938d37a73804e4eb3d03c06079d7595 (patch)
tree769241d159786609d99940471ae722758236c8c4 /pkgs
parent96d07508bfeab30e6dcbfa082ade1c48892c1411 (diff)
downloadnixlib-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.nix9
-rw-r--r--pkgs/development/haskell-modules/lib.nix2
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;
   };