about summary refs log tree commit diff
diff options
context:
space:
mode:
authorLluís Batlle i Rossell <viric@vicerveza.homeunix.net>2010-02-27 17:35:42 +0000
committerLluís Batlle i Rossell <viric@vicerveza.homeunix.net>2010-02-27 17:35:42 +0000
commitfca769846a4ba4f517f7c60bb1e4cec31c7e38dc (patch)
treebf4770c1d01ae0dc9809c089bfa437e600bf8bb6
parent5ca75ac27653307f0982a264a34bdcb7402ecde4 (diff)
Adding a new special attribute for mkDerivation: crossAttrs. It sits next to
"meta" and "passthru", and these attributes will be appended to the usual
mkDerivation attributes only if the package is cross built.
This allows putting some of the cross-building logic in the mkDerivation
nix parameters, and not only in the final builder script, as it was until now.

svn path=/nixpkgs/trunk/; revision=20272
-rw-r--r--pkgs/development/tools/misc/texinfo/default.nix9
-rw-r--r--pkgs/stdenv/adapters.nix2
-rw-r--r--pkgs/stdenv/generic/default.nix2
3 files changed, 11 insertions, 2 deletions
diff --git a/pkgs/development/tools/misc/texinfo/default.nix b/pkgs/development/tools/misc/texinfo/default.nix
index c9bf4eea40535..09fe6ed029c3c 100644
--- a/pkgs/development/tools/misc/texinfo/default.nix
+++ b/pkgs/development/tools/misc/texinfo/default.nix
@@ -10,6 +10,15 @@ stdenv.mkDerivation rec {
 
   buildInputs = [ ncurses lzma ];
 
+  # !!! This should be set as usual attributes - we set them as
+  # crossAttrs only not to change the usual stdenv hash
+  # (in the normal stdenv, these get mapped all to buildNativeInputs,
+  #  but unfortunately in the opposite order, thus getting a new hash)
+  crossAttrs = {
+    buildNativeInputs = [ lzma ];
+    buildInputs = [ ncurses ];
+  };
+
   # Disabled because we don't have zdiff in the stdenv bootstrap.
   #doCheck = true;
 
diff --git a/pkgs/stdenv/adapters.nix b/pkgs/stdenv/adapters.nix
index 33e1f8505d273..f1babf2dfb28c 100644
--- a/pkgs/stdenv/adapters.nix
+++ b/pkgs/stdenv/adapters.nix
@@ -170,7 +170,7 @@ rec {
                     propagatedBuildNativeInputs = propagatedBuildNativeInputsDrvs;
 
                     crossConfig = cross.config;
-                });
+                } // (if args ? crossAttrs then args.crossAttrs else {}));
         in buildDrv // {
             inherit hostDrv buildDrv;
         };
diff --git a/pkgs/stdenv/generic/default.nix b/pkgs/stdenv/generic/default.nix
index 191dd54c6aea4..fa9c18b2c3749 100644
--- a/pkgs/stdenv/generic/default.nix
+++ b/pkgs/stdenv/generic/default.nix
@@ -44,7 +44,7 @@ let
         # stdenv and its shell.
         mkDerivation = attrs:
           (derivation (
-            (removeAttrs attrs ["meta" "passthru"])
+            (removeAttrs attrs ["meta" "passthru" "crossAttrs"])
             // (let
                 buildInputs = if attrs ? buildInputs then attrs.buildInputs
                     else [];