Skip to content

meson: Correctly handle endianness for PowerPC CPU families#13520

Merged
Mic92 merged 1 commit intoNixOS:masterfrom
xokdvium:ppc-meson-endian
Jul 23, 2025
Merged

meson: Correctly handle endianness for PowerPC CPU families#13520
Mic92 merged 1 commit intoNixOS:masterfrom
xokdvium:ppc-meson-endian

Conversation

@xokdvium
Copy link
Contributor

Motivation

I've missed this while reviewing 6db6190. I only built big endian ppc64, so that didn't occur to me.

From meson manual:

Those porting from autotools should note that Meson does not add
endianness to the name of the cpu_family. For example, autotools will
call little endian PPC64 "ppc64le", Meson will not, you must also check
the .endian() value of the machine for this information.

This code should handle that correctly.

Context


Add 👍 to pull requests you find important.

The Nix maintainer team uses a GitHub project board to schedule and track reviews.

I've missed this while reviewing 6db6190.
I only built big endian ppc64, so that didn't occur to me.

From meson manual:

> Those porting from autotools should note that Meson does not add
> endianness to the name of the cpu_family. For example, autotools will
> call little endian PPC64 "ppc64le", Meson will not, you must also check
> the .endian() value of the machine for this information.

This code should handle that correctly.
@xokdvium xokdvium requested a review from OPNA2608 July 22, 2025 00:35
@xokdvium xokdvium requested a review from edolstra as a code owner July 22, 2025 00:35
@xokdvium xokdvium added backport 2.28-maintenance Automatically creates a PR against the branch backport 2.30-maintenance Automatically creates a PR against the branch backport 2.29-maintenance Automatically creates a PR against the branch labels Jul 22, 2025
@OPNA2608
Copy link
Contributor

OPNA2608 commented Jul 22, 2025

I think this looks fine.

32-bit POWER is not something I've looked at in Nixpkgs, so I'm unsure / not very hopeful about support for it. My POWER system is also big-endian only, so I can't check the little-endian part on hardware.

MIPS and maybe some other bi-endian archs might need a similar check, but with el instead of le. But I'm even more unsure about their state & interest in them, and adding handling for them in the future shouldn't be too hard anyway.

Edit:

Still gives powerpc64-linux on hardware, so that part isn't broken at least.

@Mic92 Mic92 merged commit a3f6508 into NixOS:master Jul 23, 2025
13 checks passed
mergify bot added a commit that referenced this pull request Jul 23, 2025
…3520

meson: Correctly handle endianness for PowerPC CPU families (backport #13520)
mergify bot added a commit that referenced this pull request Jul 23, 2025
…3520

meson: Correctly handle endianness for PowerPC CPU families (backport #13520)
lf- pushed a commit to lix-project/lix that referenced this pull request Jul 29, 2025
Nixpkgs expects the `builtin.currentSystem` for POWER CPUs to be:

`powerpc[64][le]-linux`

But using `host_machine.cpu_family()` for the CPU part of the system
string on POWER produces this instead:

`ppc[64]-linux`

So evaluating Nixpkgs errors out on:

`error: Unknown CPU type: ppc64`

To fix this, change
`ppc` -> `powerpc`
`ppc64` -> `powerpc64`
and append `le` if `host_machine.endian() == 'little'`.

I can't actually test this on hardware rn due to hitting a kernel bug
on the host system when linking big things[1], but the approach here
is similar to how it was fixed in cppnix[2][3], so it *should* be fine.

[1] https://git.adelielinux.org/adelie/packages/-/issues/1315
[2] NixOS/nix#13514
[3] NixOS/nix#13520

Change-Id: Ib82839cdaf2198bf18b89e82caaa1217f88e11ed
@xokdvium xokdvium deleted the ppc-meson-endian branch October 12, 2025 16:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

backport 2.28-maintenance Automatically creates a PR against the branch backport 2.29-maintenance Automatically creates a PR against the branch backport 2.30-maintenance Automatically creates a PR against the branch

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants