diff options
author | Lluís Batlle i Rossell <viric@vicerveza.homeunix.net> | 2010-03-04 14:44:38 +0000 |
---|---|---|
committer | Lluís Batlle i Rossell <viric@vicerveza.homeunix.net> | 2010-03-04 14:44:38 +0000 |
commit | 8a080a699e7fc1086d6918ab17239c4fca09b480 (patch) | |
tree | abec825d9f6e341f80aad960fd2717d07af0e69c /pkgs/stdenv/adapters.nix | |
parent | 27b8b6cc66dce4f6ea90dfa5bad5e915c58f5983 (diff) |
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.nix | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/pkgs/stdenv/adapters.nix b/pkgs/stdenv/adapters.nix index f1babf2dfb28c..5282e30e3157b 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 |