From 98617ccb9938d37a73804e4eb3d03c06079d7595 Mon Sep 17 00:00:00 2001 From: Sukant Hajra Date: Thu, 9 Feb 2017 23:04:17 -0600 Subject: 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. --- pkgs/development/haskell-modules/default.nix | 9 ++++----- pkgs/development/haskell-modules/lib.nix | 2 +- 2 files changed, 5 insertions(+), 6 deletions(-) (limited to 'pkgs/development') 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; }; -- cgit v1.2.3