diff options
author | Matthew Bauer <mjbauer95@gmail.com> | 2019-04-10 18:38:20 -0400 |
---|---|---|
committer | Matthew Bauer <mjbauer95@gmail.com> | 2019-04-19 12:00:44 -0400 |
commit | dd584d8eeb8c76d82cbac50ace0f7a08586a31e9 (patch) | |
tree | 445d463e83d5d912d197f6335b50a3fcce5e7a15 /pkgs/stdenv/linux | |
parent | 59bb1dcbfb81fee9b727200ffc064cc6b2f05d59 (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.nix | 14 |
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 }: |