systems: fix netbsd triple parsing
binutils expects x86_64-unknown-netbsd<version> (only 3 parts!). Any other combo seems to fail. Also handle darwin versions similarly. /cc @Ericson2314
This commit is contained in:
parent
96ce1e03a4
commit
a22797d356
|
@ -18,6 +18,7 @@
|
||||||
with lib.lists;
|
with lib.lists;
|
||||||
with lib.types;
|
with lib.types;
|
||||||
with lib.attrsets;
|
with lib.attrsets;
|
||||||
|
with lib.strings;
|
||||||
with (import ./inspect.nix { inherit lib; }).predicates;
|
with (import ./inspect.nix { inherit lib; }).predicates;
|
||||||
|
|
||||||
let
|
let
|
||||||
|
@ -179,9 +180,6 @@ rec {
|
||||||
} // { # aliases
|
} // { # aliases
|
||||||
# 'darwin' is the kernel for all of them. We choose macOS by default.
|
# 'darwin' is the kernel for all of them. We choose macOS by default.
|
||||||
darwin = kernels.macos;
|
darwin = kernels.macos;
|
||||||
# TODO(@Ericson2314): Handle these Darwin version suffixes more generally.
|
|
||||||
darwin10 = kernels.macos;
|
|
||||||
darwin14 = kernels.macos;
|
|
||||||
watchos = kernels.ios;
|
watchos = kernels.ios;
|
||||||
tvos = kernels.ios;
|
tvos = kernels.ios;
|
||||||
win32 = kernels.windows;
|
win32 = kernels.windows;
|
||||||
|
@ -269,6 +267,8 @@ rec {
|
||||||
then { cpu = elemAt l 0; kernel = elemAt l 1; abi = elemAt l 2; }
|
then { cpu = elemAt l 0; kernel = elemAt l 1; abi = elemAt l 2; }
|
||||||
else if (elemAt l 2 == "mingw32") # autotools breaks on -gnu for window
|
else if (elemAt l 2 == "mingw32") # autotools breaks on -gnu for window
|
||||||
then { cpu = elemAt l 0; vendor = elemAt l 1; kernel = "windows"; abi = "gnu"; }
|
then { cpu = elemAt l 0; vendor = elemAt l 1; kernel = "windows"; abi = "gnu"; }
|
||||||
|
else if hasPrefix "netbsd" (elemAt l 2)
|
||||||
|
then { cpu = elemAt l 0; vendor = elemAt l 1; kernel = elemAt l 2; }
|
||||||
else throw "Target specification with 3 components is ambiguous";
|
else throw "Target specification with 3 components is ambiguous";
|
||||||
"4" = { cpu = elemAt l 0; vendor = elemAt l 1; kernel = elemAt l 2; abi = elemAt l 3; };
|
"4" = { cpu = elemAt l 0; vendor = elemAt l 1; kernel = elemAt l 2; abi = elemAt l 3; };
|
||||||
}.${toString (length l)}
|
}.${toString (length l)}
|
||||||
|
@ -295,7 +295,9 @@ rec {
|
||||||
else if isDarwin parsed then vendors.apple
|
else if isDarwin parsed then vendors.apple
|
||||||
else if isWindows parsed then vendors.pc
|
else if isWindows parsed then vendors.pc
|
||||||
else vendors.unknown;
|
else vendors.unknown;
|
||||||
kernel = getKernel args.kernel;
|
kernel = if hasPrefix "darwin" args.kernel then getKernel "darwin"
|
||||||
|
else if hasPrefix "netbsd" args.kernel then getKernel "netbsd"
|
||||||
|
else getKernel args.kernel;
|
||||||
abi =
|
abi =
|
||||||
/**/ if args ? abi then getAbi args.abi
|
/**/ if args ? abi then getAbi args.abi
|
||||||
else if isLinux parsed then
|
else if isLinux parsed then
|
||||||
|
|
Loading…
Reference in a new issue