summary refs log tree commit diff
diff options
context:
space:
mode:
authorMichael Raskin <7c6f434c@mail.ru>2010-07-08 15:31:59 +0000
committerMichael Raskin <7c6f434c@mail.ru>2010-07-08 15:31:59 +0000
commitaadb898a0be398db5db13653c7aaacc0ae9f84d9 (patch)
tree080cb6ef715017ca3b5eec8df05891912c76598a
parente89dbf11847bd36ca175af9c4f797e5fba687102 (diff)
downloadnixpkgs-aadb898a0be398db5db13653c7aaacc0ae9f84d9.tar
nixpkgs-aadb898a0be398db5db13653c7aaacc0ae9f84d9.tar.gz
nixpkgs-aadb898a0be398db5db13653c7aaacc0ae9f84d9.tar.bz2
nixpkgs-aadb898a0be398db5db13653c7aaacc0ae9f84d9.tar.lz
nixpkgs-aadb898a0be398db5db13653c7aaacc0ae9f84d9.tar.xz
nixpkgs-aadb898a0be398db5db13653c7aaacc0ae9f84d9.tar.zst
nixpkgs-aadb898a0be398db5db13653c7aaacc0ae9f84d9.zip
Implementing a fix allowing deepOverride without changing dependency-tree-leaf packages
svn path=/nixpkgs/trunk/; revision=22533
-rw-r--r--pkgs/development/libraries/zlib/default.nix2
-rw-r--r--pkgs/lib/attrsets.nix5
-rw-r--r--pkgs/lib/customisation.nix3
3 files changed, 7 insertions, 3 deletions
diff --git a/pkgs/development/libraries/zlib/default.nix b/pkgs/development/libraries/zlib/default.nix
index 94a425aaf1d..95c891e9bc7 100644
--- a/pkgs/development/libraries/zlib/default.nix
+++ b/pkgs/development/libraries/zlib/default.nix
@@ -1,4 +1,4 @@
-{stdenv, fetchurl, static ? false, ...}:
+{stdenv, fetchurl, static ? false}:
 
 stdenv.mkDerivation {
   name = "zlib-1.2.3";
diff --git a/pkgs/lib/attrsets.nix b/pkgs/lib/attrsets.nix
index c1903368291..f39b46db621 100644
--- a/pkgs/lib/attrsets.nix
+++ b/pkgs/lib/attrsets.nix
@@ -270,4 +270,9 @@ rec {
       else eqStrict pat val
     ) [pattern attrs]));
 
+  # override only the attributes that are already present in the old set
+  # useful for deep-overriding
+  overrideExisting = old: new:
+  old // listToAttrs (map (attr: nameValuePair attr (attrByPath [attr] (getAttr attr old) new)) (attrNames old));
+
 }
diff --git a/pkgs/lib/customisation.nix b/pkgs/lib/customisation.nix
index 177856e4d0e..41af26edae7 100644
--- a/pkgs/lib/customisation.nix
+++ b/pkgs/lib/customisation.nix
@@ -53,11 +53,10 @@ rec {
     { override = newArgs:
         makeOverridable f (origArgs // (if builtins.isFunction newArgs then newArgs origArgs else newArgs));
       deepOverride = newArgs:
-        makeOverridable f ((lib.mapAttrs (deepOverrider newArgs) origArgs) // newArgs);
+        makeOverridable f (lib.overrideExisting (lib.mapAttrs (deepOverrider newArgs) origArgs) newArgs);
       origArgs = origArgs;
     };
 
-
   deepOverrider = newArgs: name: x: if builtins.isAttrs x then (
     if x ? deepOverride then (x.deepOverride newArgs) else
     if x ? override then (x.override newArgs) else