diff options
author | Eelco Dolstra <edolstra@gmail.com> | 2021-02-23 14:30:10 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-02-23 14:30:10 +0100 |
commit | a878c448d84f087ee1dfdde95a51614187aa170c (patch) | |
tree | 0265fc3349f3239ef1c27d781799c0c499f859b0 /src/libstore | |
parent | 35205e2e922952fc0654260a07fc3191c5afc2cc (diff) | |
parent | 2de232d2b301b2f0854b9fa715ab085612c85e00 (diff) |
Merge pull request #4551 from danieldk/system-features-compute-level
Add x86_64 compute levels as system features
Diffstat (limited to 'src/libstore')
-rw-r--r-- | src/libstore/globals.cc | 24 |
1 files changed, 15 insertions, 9 deletions
diff --git a/src/libstore/globals.cc b/src/libstore/globals.cc index 0531aad9f..df07aee9b 100644 --- a/src/libstore/globals.cc +++ b/src/libstore/globals.cc @@ -3,6 +3,7 @@ #include "archive.hh" #include "args.hh" #include "abstract-setting-to-json.hh" +#include "compute-levels.hh" #include <algorithm> #include <map> @@ -133,24 +134,29 @@ StringSet Settings::getDefaultSystemFeatures() StringSet Settings::getDefaultExtraPlatforms() { + StringSet extraPlatforms; + if (std::string{SYSTEM} == "x86_64-linux" && !isWSL1()) - return StringSet{"i686-linux"}; -#if __APPLE__ + extraPlatforms.insert("i686-linux"); + +#if __linux__ + StringSet levels = computeLevels(); + for (auto iter = levels.begin(); iter != levels.end(); ++iter) + extraPlatforms.insert(*iter + "-linux"); +#elif __APPLE__ // Rosetta 2 emulation layer can run x86_64 binaries on aarch64 // machines. Note that we can’t force processes from executing // x86_64 in aarch64 environments or vice versa since they can // always exec with their own binary preferences. - else if (pathExists("/Library/Apple/System/Library/LaunchDaemons/com.apple.oahd.plist")) { + if (pathExists("/Library/Apple/System/Library/LaunchDaemons/com.apple.oahd.plist")) { if (std::string{SYSTEM} == "x86_64-darwin") - return StringSet{"aarch64-darwin"}; + extraPlatforms.insert("aarch64-darwin"); else if (std::string{SYSTEM} == "aarch64-darwin") - return StringSet{"x86_64-darwin"}; - else - return StringSet{}; + extraPlatforms.insert("x86_64-darwin"); } #endif - else - return StringSet{}; + + return extraPlatforms; } bool Settings::isExperimentalFeatureEnabled(const std::string & name) |