aboutsummaryrefslogtreecommitdiff
path: root/src/libstore/globals.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/libstore/globals.cc')
-rw-r--r--src/libstore/globals.cc24
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)