diff --git a/lib/systems/default.nix b/lib/systems/default.nix index 7e78ceb4827a..96bde04151ae 100644 --- a/lib/systems/default.nix +++ b/lib/systems/default.nix @@ -491,6 +491,13 @@ let } .${cpu.name} or cpu.name; vendor_ = final.rust.platform.vendor; + abi_ = + # We're very explicit about the POWER ELF ABI w/ glibc in our parsing, while Rust is not. + # TODO: Somehow ensure that Rust actually *uses* the correct ABI, and not just a libc-based default. + if (lib.strings.hasPrefix "powerpc" cpu.name) && (lib.strings.hasPrefix "gnuabielfv" abi.name) then + "gnu" + else + abi.name; in # TODO: deprecate args.rustc in favour of args.rust after 23.05 is EOL. args.rust.rustcTarget or args.rustc.config or ( @@ -501,7 +508,7 @@ let if final.isWasi then "${cpu_}-wasip1" else - "${cpu_}-${vendor_}-${kernel.name}${optionalString (abi.name != "unknown") "-${abi.name}"}" + "${cpu_}-${vendor_}-${kernel.name}${optionalString (abi.name != "unknown") "-${abi_}"}" ); # The name of the rust target if it is standard, or the json file