aboutsummaryrefslogtreecommitdiff
path: root/src/libstore/build.cc
diff options
context:
space:
mode:
authorEelco Dolstra <eelco.dolstra@logicblox.com>2015-10-21 15:08:47 +0200
committerEelco Dolstra <eelco.dolstra@logicblox.com>2015-10-21 15:14:42 +0200
commitf5b32ff47d1c673dde488616bdb0c8cdbc2a5372 (patch)
tree2390d010dfe6e22ec9e3205c2558f90cf7996b7e /src/libstore/build.cc
parent01615b5f63ad26307a7e47a9b6508e5e779a1e83 (diff)
Allow builtin fetchurl regardless of the derivation's system attribute
Diffstat (limited to 'src/libstore/build.cc')
-rw-r--r--src/libstore/build.cc25
1 files changed, 13 insertions, 12 deletions
diff --git a/src/libstore/build.cc b/src/libstore/build.cc
index cb14c83b3..567dc0347 100644
--- a/src/libstore/build.cc
+++ b/src/libstore/build.cc
@@ -1246,12 +1246,19 @@ void DerivationGoal::inputsRealised()
}
-static bool canBuildLocally(const string & platform)
+static bool isBuiltin(const BasicDerivation & drv)
+{
+ return string(drv.builder, 0, 8) == "builtin:";
+}
+
+
+static bool canBuildLocally(const BasicDerivation & drv)
{
- return platform == settings.thisSystem
+ return drv.platform == settings.thisSystem
+ || isBuiltin(drv)
#if __linux__
- || (platform == "i686-linux" && settings.thisSystem == "x86_64-linux")
- || (platform == "armv6l-linux" && settings.thisSystem == "armv7l-linux")
+ || (drv.platform == "i686-linux" && settings.thisSystem == "x86_64-linux")
+ || (drv.platform == "armv6l-linux" && settings.thisSystem == "armv7l-linux")
#endif
;
}
@@ -1266,7 +1273,7 @@ static string get(const StringPairs & map, const string & key, const string & de
bool willBuildLocally(const BasicDerivation & drv)
{
- return get(drv.env, "preferLocalBuild") == "1" && canBuildLocally(drv.platform);
+ return get(drv.env, "preferLocalBuild") == "1" && canBuildLocally(drv);
}
@@ -1276,12 +1283,6 @@ bool substitutesAllowed(const BasicDerivation & drv)
}
-static bool isBuiltin(const BasicDerivation & drv)
-{
- return string(drv.builder, 0, 8) == "builtin:";
-}
-
-
void DerivationGoal::tryToBuild()
{
trace("trying to build");
@@ -1683,7 +1684,7 @@ void DerivationGoal::startBuilder()
"building path(s) %1%") % showPaths(missingPaths));
/* Right platform? */
- if (!canBuildLocally(drv->platform)) {
+ if (!canBuildLocally(*drv)) {
if (settings.printBuildTrace)
printMsg(lvlError, format("@ unsupported-platform %1% %2%") % drvPath % drv->platform);
throw Error(