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.
wip/yesman
Matthew Bauer 5 years ago
parent 59bb1dcbfb
commit dd584d8eeb
  1. 6
      pkgs/stdenv/default.nix
  2. 14
      pkgs/stdenv/linux/default.nix

@ -43,8 +43,14 @@ in
"x86_64-linux" = stagesLinux;
"armv5tel-linux" = stagesLinux;
"armv6l-linux" = stagesLinux;
"armv6m-linux" = stagesLinux;
"armv7a-linux" = stagesLinux;
"armv7l-linux" = stagesLinux;
"armv7r-linux" = stagesLinux;
"armv7m-linux" = stagesLinux;
"armv8a-linux" = stagesLinux;
"armv8r-linux" = stagesLinux;
"armv8m-linux" = stagesLinux;
"aarch64-linux" = stagesLinux;
"mipsel-linux" = stagesLinux;
"powerpc-linux" = /* stagesLinux */ stagesNative;

@ -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
}:

Loading…
Cancel
Save