nrwl / nx

Smart Monorepos · Fast CI
https://nx.dev
MIT License
23.21k stars 2.31k forks source link

ppc64le support #16815

Open darkbasic opened 1 year ago

darkbasic commented 1 year ago

https://github.com/lerna/lerna/issues/3676

Description

Apparently nowadays lerna uses nx under the hood which completely broke ppc64le support.

Motivation

Raptor CS Talos 2 (powered by IBM Power 9) is the sole fully free down-to-the-firmware high end workstation available on the market. Providing support for all major architectures is expected from one of the biggest tools used in javascript applications (which are supposed to be architecture agnostic).

Suggested Implementation

I'm not familiar with the architecture of your build system: I guess I could easily compile a ppc64le binary but you probably want CI support and the ability to cross compile the binaries in an automated way. CI could be easily achieved with qemu-user, otherwise Raptor CS should be willing to provide VMs for that. Even a best-effort approach would suffice, since chances are there won't be many regression compared to amd64 (Big Endian would be a different story, but we're talking about Little Endian here).

Alternate Implementations

An option to force the architecture to amd64 would probably suffice as a stop gap (I can use qemu-user to automatically translate x86 binaries), but not everybody can rely on qemu-user and in the end we still want native support.

darkbasic commented 1 year ago

That's really weird because I've just upgraded accounts.js to latest lerna 6.6.2 and apparently it works like a charm on ppc64le:

 >  Lerna (powered by Nx)   Successfully ran target compile for 28 projects (57s)

I guess this is because accounts.js uses pnpm instead of yarn and thus it hits different paths, but honestly I have no idea.

Cammisuli commented 1 year ago

Hmm thats interesting. I guess the logic checking in the "os" and "cpu" properties in the package.json is different between yarn/pnpm.

darkbasic commented 1 year ago

Also it's weird the fact that it successfully works with pnpm: either the Unsupported architecture error is unnecessary or it ends up using x86_64 binaries which get automatically translated via qemu-user + QEMU_LD_PREFIX.

darkbasic commented 12 months ago

Any news on this? I've already had to move away from lerna in several projects (for example https://github.com/mikro-orm/mikro-orm/pull/4331) and even today I've found myself moving accounts-js away from lerna due to this. It sounds incredible that in 2023 we are forced to use yarn 4 (which bundles a brand new task runner) because other projects are moving away from being multi platform.

github-actions[bot] commented 4 months ago

This issue has been automatically marked as stale because it hasn't had any activity for 6 months. Many things may have changed within this time. The issue may have already been fixed or it may not be relevant anymore. If at this point, this is still an issue, please respond with updated information. It will be closed in 21 days if no further activity occurs. Thanks for being a part of the Nx community! 🙏

darkbasic commented 4 months ago

Still relevant.