summary refs log tree commit diff
path: root/pkgs/stdenv/adapters.nix
diff options
context:
space:
mode:
authorLluís Batlle i Rossell <viric@vicerveza.homeunix.net>2010-03-04 14:44:38 +0000
committerLluís Batlle i Rossell <viric@vicerveza.homeunix.net>2010-03-04 14:44:38 +0000
commit8a080a699e7fc1086d6918ab17239c4fca09b480 (patch)
treeabec825d9f6e341f80aad960fd2717d07af0e69c /pkgs/stdenv/adapters.nix
parent27b8b6cc66dce4f6ea90dfa5bad5e915c58f5983 (diff)
downloadnixpkgs-8a080a699e7fc1086d6918ab17239c4fca09b480.tar
nixpkgs-8a080a699e7fc1086d6918ab17239c4fca09b480.tar.gz
nixpkgs-8a080a699e7fc1086d6918ab17239c4fca09b480.tar.bz2
nixpkgs-8a080a699e7fc1086d6918ab17239c4fca09b480.tar.lz
nixpkgs-8a080a699e7fc1086d6918ab17239c4fca09b480.tar.xz
nixpkgs-8a080a699e7fc1086d6918ab17239c4fca09b480.tar.zst
nixpkgs-8a080a699e7fc1086d6918ab17239c4fca09b480.zip
Fixing the cross build stdenv adapter so it tolerates buildInputs with 'null' elements.
svn path=/nixpkgs/trunk/; revision=20381
Diffstat (limited to 'pkgs/stdenv/adapters.nix')
-rw-r--r--pkgs/stdenv/adapters.nix15
1 files changed, 10 insertions, 5 deletions
diff --git a/pkgs/stdenv/adapters.nix b/pkgs/stdenv/adapters.nix
index f1babf2dfb2..5282e30e315 100644
--- a/pkgs/stdenv/adapters.nix
+++ b/pkgs/stdenv/adapters.nix
@@ -129,12 +129,15 @@ rec {
             # *BuildInputs exists temporarily as another name for
             # *HostInputs.
 
-            getBuildDrv = drv : if (drv ? buildDrv) then drv.buildDrv else drv;
+            # In nixpkgs, sometimes 'null' gets in as a buildInputs element,
+            # and we handle that through isAttrs.
+            getBuildDrv = drv : if (builtins.isAttrs drv && drv ? buildDrv) then drv.buildDrv else drv;
+            getHostDrv = drv : if (builtins.isAttrs drv && drv ? hostDrv) then drv.hostDrv else drv;
             buildNativeInputsDrvs = map (getBuildDrv) buildNativeInputs;
-            buildInputsDrvs = map (drv: drv.hostDrv) buildInputs;
+            buildInputsDrvs = map (getHostDrv) buildInputs;
             buildInputsDrvsAsBuildInputs = map (getBuildDrv) buildInputs;
-            propagatedBuildInputsDrvs = map (drv: drv.hostDrv) (propagatedBuildInputs);
-            propagatedBuildNativeInputsDrvs = map (drv: drv.buildDrv)
+            propagatedBuildInputsDrvs = map (getHostDrv) (propagatedBuildInputs);
+            propagatedBuildNativeInputsDrvs = map (getBuildDrv)
                 (propagatedBuildNativeInputs);
 
             # The base stdenv already knows that buildNativeInputs and
@@ -148,7 +151,9 @@ rec {
             hostAsBuildDrv = drv: builtins.unsafeDiscardStringContext
                 drv.buildDrv.drvPath == builtins.unsafeDiscardStringContext
                 drv.hostDrv.drvPath;
-            nativeInputsFromBuildInputs = stdenv.lib.filter (hostAsBuildDrv) buildInputs;
+            buildInputsNotNull = stdenv.lib.filter
+                (drv: builtins.isAttrs drv && drv ? buildDrv) buildInputs;
+            nativeInputsFromBuildInputs = stdenv.lib.filter (hostAsBuildDrv) buildInputsNotNull;
 
             # We should overwrite the input attributes in hostDrv, to overwrite
             # the defaults for only-native builds in the base stdenv