summary refs log tree commit diff
path: root/pkgs/stdenv/adapters.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/stdenv/adapters.nix')
-rw-r--r--pkgs/stdenv/adapters.nix30
1 files changed, 22 insertions, 8 deletions
diff --git a/pkgs/stdenv/adapters.nix b/pkgs/stdenv/adapters.nix
index 1b739f851686..f6939f57e62c 100644
--- a/pkgs/stdenv/adapters.nix
+++ b/pkgs/stdenv/adapters.nix
@@ -111,20 +111,34 @@ rec {
   # builds.
   makeStdenvCross = stdenv: cross: binutilsCross: gccCross: stdenv //
     { mkDerivation = {name, buildInputs ? [], buildNativeInputs ? [],
-            propagatedBuildInputs ? [], ...}@args: let
-            # propagatedBuildInputs exists temporarily as another name for
-            # propagatedHostInputs.
+            propagatedBuildInputs ? [], propagatedBuildNativeInputs ? [], ...}@args: let
+
+            # *BuildInputs exists temporarily as another name for
+            # *HostInputs.
+
             getBuildDrv = drv : if (drv ? buildDrv) then drv.buildDrv else drv;
-            buildInputsDrvs = map (getBuildDrv) buildNativeInputs;
-            hostInputsDrvs = map (drv: drv.hostDrv) buildInputs;
-            hostInputsDrvsAsBuildInputs = map (getBuildDrv) buildInputs;
-            propagatedHostInputsDrvs = map (drv: drv.buildDrv) (propagatedBuildInputs);
+            buildNativeInputsDrvs = map (getBuildDrv) buildNativeInputs;
+            buildInputsDrvs = map (drv: drv.hostDrv) buildInputs;
+            buildInputsDrvsAsBuildInputs = map (getBuildDrv) buildInputs;
+            propagatedBuildInputsDrvs = map (drv: drv.hostDrv) (propagatedBuildInputs);
+            propagatedBuildNativeInputsDrvs = map (drv: drv.buildDrv)
+                (propagatedBuildNativeInputs);
+
+            # The base stdenv already knows that buildNativeInputs and
+            # buildInputs should be built with the usual gcc-wrapper
+            # And the same for propagatedBuildInputs.
             buildDrv = stdenv.mkDerivation args;
+
+            # We should overwrite the input attributes in hostDrv, to overwrite
+            # the defaults for only-native builds in the base stdenv
             hostDrv = if (cross == null) then buildDrv else
                 stdenv.mkDerivation (args // {
                     name = name + "-" + cross.config;
-                    buildInputs = buildInputsDrvs
+                    buildNativeInputs = buildNativeInputsDrvs
                       ++ [ gccCross binutilsCross ];
+                    buildInputs = buildInputsDrvs;
+                    propagatedBuildInputs = propagatedBuildInputsDrvs;
+                    propagatedBuildNativeInputs = propagatedBuildNativeInputsDrvs;
 
                     crossConfig = cross.config;
                 });