Author: raskin
Date: 2010-07-08 15:31:59 +0000 (Thu, 08 Jul 2010)
New Revision: 22533

You can view the changes in this commit at:
   https://svn.nixos.org/viewvc/nix?rev=22533&view=rev

Modified:
   nixpkgs/trunk/pkgs/development/libraries/zlib/default.nix
   nixpkgs/trunk/pkgs/lib/attrsets.nix
   nixpkgs/trunk/pkgs/lib/customisation.nix

Log:
Implementing a fix allowing deepOverride without changing dependency-tree-leaf 
packages

Changes:

Modified: nixpkgs/trunk/pkgs/development/libraries/zlib/default.nix
===================================================================
--- nixpkgs/trunk/pkgs/development/libraries/zlib/default.nix   2010-07-08 
15:28:34 UTC (rev 22532)
+++ nixpkgs/trunk/pkgs/development/libraries/zlib/default.nix   2010-07-08 
15:31:59 UTC (rev 22533)
@@ -1,4 +1,4 @@
-{stdenv, fetchurl, static ? false, ...}:
+{stdenv, fetchurl, static ? false}:
 
 stdenv.mkDerivation {
   name = "zlib-1.2.3";

Modified: nixpkgs/trunk/pkgs/lib/attrsets.nix
===================================================================
--- nixpkgs/trunk/pkgs/lib/attrsets.nix 2010-07-08 15:28:34 UTC (rev 22532)
+++ nixpkgs/trunk/pkgs/lib/attrsets.nix 2010-07-08 15:31:59 UTC (rev 22533)
@@ -270,4 +270,9 @@
       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));
+
 }

Modified: nixpkgs/trunk/pkgs/lib/customisation.nix
===================================================================
--- nixpkgs/trunk/pkgs/lib/customisation.nix    2010-07-08 15:28:34 UTC (rev 
22532)
+++ nixpkgs/trunk/pkgs/lib/customisation.nix    2010-07-08 15:31:59 UTC (rev 
22533)
@@ -53,11 +53,10 @@
     { 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

_______________________________________________
nix-commits mailing list
[email protected]
http://mail.cs.uu.nl/mailman/listinfo/nix-commits

Reply via email to