summaryrefslogtreecommitdiffstats
path: root/pkgs/stdenv/linux
diff options
context:
space:
mode:
authorMatthew Bauer <mjbauer95@gmail.com>2019-04-10 18:38:20 -0400
committerMatthew Bauer <mjbauer95@gmail.com>2019-04-19 12:00:44 -0400
commitdd584d8eeb8c76d82cbac50ace0f7a08586a31e9 (patch)
tree445d463e83d5d912d197f6335b50a3fcce5e7a15 /pkgs/stdenv/linux
parent59bb1dcbfb81fee9b727200ffc064cc6b2f05d59 (diff)
stdenv/linux: use isCompatible to find bootstrap tools
This avoids part of the issue where things like armv7a don’t work because the system doesn’t realize it can use the armv7l bootstrap tools.
Diffstat (limited to 'pkgs/stdenv/linux')
-rw-r--r--pkgs/stdenv/linux/default.nix14
1 files changed, 11 insertions, 3 deletions
diff --git a/pkgs/stdenv/linux/default.nix b/pkgs/stdenv/linux/default.nix
index 457e1671e260..2bccd620436a 100644
--- a/pkgs/stdenv/linux/default.nix
+++ b/pkgs/stdenv/linux/default.nix
@@ -13,7 +13,6 @@
"x86_64-linux" = import ./bootstrap-files/x86_64.nix;
"armv5tel-linux" = import ./bootstrap-files/armv5tel.nix;
"armv6l-linux" = import ./bootstrap-files/armv6l.nix;
- "armv7a-linux" = import ./bootstrap-files/armv7l.nix;
"armv7l-linux" = import ./bootstrap-files/armv7l.nix;
"aarch64-linux" = import ./bootstrap-files/aarch64.nix;
"mipsel-linux" = import ./bootstrap-files/loongson2f.nix;
@@ -26,10 +25,19 @@
"powerpc64le-linux" = import ./bootstrap-files/ppc64le-musl.nix;
};
};
+
+ # Try to find an architecture compatible with our current system. We
+ # just try every bootstrap we’ve got and test to see if it is
+ # compatible with or current architecture.
+ getCompatibleTools = lib.foldl (v: system:
+ if v != null then v
+ else if localSystem.isCompatible (lib.systems.elaborate { inherit system; }) then archLookupTable.${system}
+ else null) null (lib.attrNames archLookupTable);
+
archLookupTable = table.${localSystem.libc}
or (abort "unsupported libc for the pure Linux stdenv");
- files = archLookupTable.${localSystem.system}
- or (abort "unsupported platform for the pure Linux stdenv");
+ files = archLookupTable.${localSystem.system} or (if getCompatibleTools != null then getCompatibleTools
+ else (abort "unsupported platform for the pure Linux stdenv"));
in files
}: