diff options
author | Eelco Dolstra <edolstra@gmail.com> | 2019-03-06T05·21+0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-03-06T05·21+0800 |
commit | 5886bc5996537fbf00d1fcfbb29595b8ccc9743e (patch) | |
tree | 4b4e89980d70f23f17c03a99623c8685824aaece | |
parent | b71e1fb342b2344b738733698b20c5ec03dabe5a (diff) | |
parent | fff8db205c393c53e42326f274b322eb70259250 (diff) |
Merge pull request #2710 from volth/patch-6
canBuildLocally: check for features
-rw-r--r-- | src/build-remote/build-remote.cc | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/src/build-remote/build-remote.cc b/src/build-remote/build-remote.cc index abf3669b5b35..279ae62f69cc 100644 --- a/src/build-remote/build-remote.cc +++ b/src/build-remote/build-remote.cc @@ -38,6 +38,12 @@ static AutoCloseFD openSlotLock(const Machine & m, unsigned long long slot) return openLockFile(fmt("%s/%s-%d", currentLoad, escapeUri(m.storeUri), slot), true); } +static bool allSupportedLocally(const std::set<std::string>& requiredFeatures) { + for (auto & feature : requiredFeatures) + if (!settings.systemFeatures.get().count(feature)) return false; + return true; +} + static int _main(int argc, char * * argv) { { @@ -97,9 +103,10 @@ static int _main(int argc, char * * argv) source >> drvPath; auto requiredFeatures = readStrings<std::set<std::string>>(source); - auto canBuildLocally = amWilling - && ( neededSystem == settings.thisSystem - || settings.extraPlatforms.get().count(neededSystem) > 0); + auto canBuildLocally = amWilling + && ( neededSystem == settings.thisSystem + || settings.extraPlatforms.get().count(neededSystem) > 0) + && allSupportedLocally(requiredFeatures); /* Error ignored here, will be caught later */ mkdir(currentLoad.c_str(), 0777); |