Skip to content

Nightly Node.js and Big Endian cross compilation Node.js - #1590

Merged
juj merged 9 commits into
mainfrom
node_nightly_and_big_endian
Aug 27, 2025
Merged

Nightly Node.js and Big Endian cross compilation Node.js#1590
juj merged 9 commits into
mainfrom
node_nightly_and_big_endian

Conversation

@juj

@juj juj commented Aug 26, 2025

Copy link
Copy Markdown
Collaborator

This PR adds support for

./emsdk install node-nightly-64bit

which finds the latest nightly node.js version and installs that. It is a moving target, so the next day when a new nightly is produced, reissuing ./emsdk install node-nightly-64bit will install the newer published version.

Also, this PR adds a fixed 22.18.0 version for the cross compilation s390x Node.js target as well. On an x64 Linux system, this allows running

./emsdk install node-big-endian-crosscompile-22.16.0-64bit

to install the big endian Node.js. This greatly simplifies the steps at emscripten-core/emscripten@main...juj:emscripten:bigendian_test_suite#diff-c36b90121be240017fa490a1c00e63e47fa3235f5c1be0593e2b7502d017c778R9985-R10000 and enables a trivial way to switch between LE and BE Node.js versions for testing.

CC @slavek-kucera

Comment thread emsdk.py Outdated
return None


def build_node_nightly(tool):

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this actually building node from source? It looks like its just download it, so maybe this should be called "download_...tofetch_...`?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

check

Comment thread emsdk_manifest.json Outdated
"linux_url": "https://nodejs.org/download/release/v22.16.0/node-v22.16.0-linux-s390x.tar.gz",
"activated_path": "%installation_dir%/bin",
"activated_path_skip": "node",
"activated_cfg": "NODE_JS=['qemu-s390x', '-L', '/usr/s390x-linux-gnu/', '%installation_dir%/bin/node']",

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

NODE_JS_TEST can be used here if you want to only use it for running tests.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh that's fantastic.

@juj

juj commented Aug 27, 2025

Copy link
Copy Markdown
Collaborator Author

I'll land this to be able to continue working on top of this. If there are still more reviews, I can do a second PR.

@juj
juj merged commit efd71e9 into main Aug 27, 2025
12 checks passed
@juj
juj deleted the node_nightly_and_big_endian branch August 27, 2025 13:24
@kripken

kripken commented Aug 27, 2025

Copy link
Copy Markdown
Member

This seems to have caused regressions, see #1595 and also I just noticed this on Binaryen CI:

https://github.com/WebAssembly/binaryen/actions/runs/17269266536/job/49009222269

@juj

juj commented Aug 27, 2025

Copy link
Copy Markdown
Collaborator Author

Yeah sorry about that - I push-landed #1594 as soon as I noticed.

@kripken

kripken commented Aug 27, 2025

Copy link
Copy Markdown
Member

Thanks!

mmorel-35 pushed a commit to mmorel-35/emsdk that referenced this pull request Feb 3, 2026
…core#1590)

This PR adds support for

`./emsdk install node-nightly-64bit`

which finds the latest nightly node.js version and installs that. It is
a moving target, so the next day when a new nightly is produced,
reissuing `./emsdk install node-nightly-64bit` will install the newer
published version.

Also, this PR adds a fixed 22.18.0 version for the cross compilation
s390x Node.js target as well. On an x64 Linux system, this allows
running

`./emsdk install node-big-endian-crosscompile-22.16.0-64bit`

to install the big endian Node.js. This greatly simplifies the steps at
emscripten-core/emscripten@main...juj:emscripten:bigendian_test_suite#diff-c36b90121be240017fa490a1c00e63e47fa3235f5c1be0593e2b7502d017c778R9985-R10000
and enables a trivial way to switch between LE and BE Node.js versions
for testing.

CC @slavek-kucera
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants