Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

build-support/rust: toTargetArch: strip off endianness #187841

Merged
merged 1 commit into from Aug 25, 2022
Merged

build-support/rust: toTargetArch: strip off endianness #187841

merged 1 commit into from Aug 25, 2022

Conversation

ghost
Copy link

@ghost ghost commented Aug 22, 2022

Description of changes

toTargetArch in pkgs/build-support/rust/lib/default.nix is used to set CARGO_CFG_TARGET_ARCH. This environment variable is supposed to be the <arch> portion of an LLVM-style platform name:

<arch><sub>-<kernel>-<libc><abi>

Note that the pointer-width (the "64" in "x86_64" and "mips64") is part of <arch>, but the endianness (the _be in aarch64_be) is not.

Unfortunately at the moment nixpkgs' parsed cpuType has no way to query for the three subparts (name, pointer-width, and subarch/endianness), nor any way to ask for just the first two parts.

For now, this commit simply fixes the problem in the two cases that matter: mips64el and powerpc64le, which I believe are the only two platforms supported by both rust and nixpkgs which have a "subarchitecture".

Things done
  • Built on platform(s)
    • powerpc64le-linux
  • Tested compilation of one packages that depend on this change: ring
  • Tested basic functionality of all binary files (usually in ./result/bin/)
  • Fits CONTRIBUTING.md.

@ghost ghost requested a review from zowoq as a code owner August 22, 2022 09:25
`toTargetArch` in `pkgs/build-support/rust/lib/default.nix` is used to
set `CARGO_CFG_TARGET_ARCH`.  This environment variable is supposed to
be the `<arch>` portion of an LLVM-style platform name:

```
<arch><sub>-<kernel>-<libc><abi>
```

Note that the pointer-width (the "64" in "x86_64" and "mips64") is
part of `<arch>`, but the endianness (the `_be` in `aarch64_be`) is
*not*.

Unfortunately at the moment nixpkgs' parsed `cpuType` has no way to
query for the three subparts (name, pointer-width, and
subarch/endianness), nor any way to ask for just the first two parts.

For now, this commit simply fixes the problem in the two cases that
matter: `mips64el` and `powerpc64le`, which I believe are the only two
platforms supported by both rust and nixpkgs which have a
"subarchitecture".
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant