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
