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

chore: bump node to v18.17.0 (main) #39154

Merged
merged 27 commits into from
Aug 8, 2023
Merged

chore: bump node to v18.17.0 (main) #39154

merged 27 commits into from
Aug 8, 2023

Conversation

electron-roller[bot]
Copy link
Contributor

Updating Node.js to v18.17.0.

See all changes in v18.16.1..v18.17.0

Notes: Updated Node.js to v18.17.0.

@electron-roller electron-roller bot requested a review from a team as a code owner July 19, 2023 13:00
@electron-roller electron-roller bot added no-backport semver/patch backwards-compatible bug fixes labels Jul 19, 2023
@electron-cation electron-cation bot added the new-pr 🌱 PR opened in the last 24 hours label Jul 19, 2023
@ckerr ckerr requested a review from a team as a code owner July 19, 2023 21:17
Copy link
Member

@codebytere codebytere left a comment

Choose a reason for hiding this comment

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

Split things into review blocks to reduce some clutter 😸

WHATWG test failure

Looks like

node feature contexts in renderer URL handling in the renderer process can successfully handle WHATWG URLs constructed by Blink

is failing, with an error i've seen before unfortunately:

"Uncaught TypeError: The "path" argument must be of type string or an instance of Buffer or URL. Received an instance of URL",

Usually this means that Node.js has changed the prototype so it doesn't recognize URLs properly - this is something we'd want to fix since they should both follow WHATWG standards. If i had to guess it's nodejs/node@f495cb6 - isURL probably is returning a false negative in this block via fs.createReadStream. From taking a quick look at nodejs/node#46904 - it looks like we either need to revert what did make it back or pull back more of the changes in that PR

The snapshot Node.js specs failing (parallel/test-snapshot-argv1 & parallel/test-snapshot-namespaced-builtin) we can add to the disabled test roster since we don't support that type of snapshotting at the moment. It also looks like a few of the other failing specs are call stack exceeded errors also rooted in the URL changes 🤔

@electron-cation electron-cation bot removed the new-pr 🌱 PR opened in the last 24 hours label Jul 20, 2023
@ckerr
Copy link
Member

ckerr commented Jul 20, 2023

Usually this means that Node.js has changed the prototype so it doesn't recognize URLs properly - this is something we'd want to fix since they should both follow WHATWG standards. If i had to guess it's nodejs/node@f495cb6 - isURL probably is returning a false negative in this block via fs.createReadStream. From taking a quick look at nodejs/node#46904 - it looks like we either need to revert what did make it back or pull back more of the changes in that PR

Yes, that's very close to what's happening!

The path to the failure is ReadStream() which calls toPathIfFileUrl() and then validatePath(). The former isn't working right, which is why the latter is throwing the must be of type string or an instance of Buffer or URL exception.

And you're right about that upstream commit: toPathIfFileUrl() is failing because isURL() only returns true for URLs that have a context symbol property, e.g. only URLs created inside of Node. This bug is caused by two upstream factors working together: (1) the main PR you pointed out, nodejs/node#46904, merges isUrl() and isUrlInstance() together. That by itself is OK since it also reimplements isUrl() in an Electron-safe way. The other factor is (2) the backport PR nodejs/node#48345 backports the merging of those two functions but not the new Electron-safe version of isURL().

The easiest answer -- if it works -- would be to also backport the isUrl() implementation from Node's main to 18. I'm going to try that and if the tests come out clean, I'll make an upstream PR.

@ckerr
Copy link
Member

ckerr commented Jul 20, 2023

Backporting upstream's new implementation as-is causes an infinite loop because it accesses some property getters which, in 18, also call isURL(). 😸 One option would be to backport the URL full refactor, but it looks like upstream hasn't done that because of its size.

1135783 patches around the issue by using both isURL() versions: first it tries the 18 impl and returns true if it succeeds; otherwise, it uses the main impl. This avoids the infinite loop by catching all the Node-generated URLs before using the main impl.

@ckerr
Copy link
Member

ckerr commented Jul 20, 2023

The Fontconfig error: No writable cache directories error is interesting -- I don't know what's causing it yet, but at least so far it appears to be a real issue that I can repro locally. The fun thing is that Node.js doesn't depend on fontconfig directly, so this is somehow coming from us but apparently didn't make tests go red until now. 🤔

@ckerr
Copy link
Member

ckerr commented Jul 27, 2023

Quick update on the console test failures: it's coming from fontconfig being unable to find a writable cache dir. Since Electron isn't giving these same warnings, I tried incrementally adding some tracer statements into fontconfig and got these results:

Electron:
[../../third_party/fontconfig/src/src/fcinit.c:80] FcInitLoadOwnConfig
[../../third_party/fontconfig/src/src/fcinit.c:84] FcInitLoadOwnConfig
[../../third_party/fontconfig/src/src/fcinit.c:89] FcInitLoadOwnConfig
[../../third_party/fontconfig/src/src/fcinit.c:91] FcInitLoadOwnConfig
[../../third_party/fontconfig/src/src/fcxml.c:2354] FcParseCacheDir
[../../third_party/fontconfig/src/src/fcxml.c:2367] FcParseCacheDir
[../../third_party/fontconfig/src/src/fcxml.c:2354] FcParseCacheDir
[../../third_party/fontconfig/src/src/fcxml.c:2359] FcParseCacheDir
[../../third_party/fontconfig/src/src/fccfg.c:2515] FcConfigXdgCacheHome
[../../third_party/fontconfig/src/src/fccfg.c:2517] FcConfigXdgCacheHome env '/tmp/charles-cache'
[../../third_party/fontconfig/src/src/fccfg.c:2529] FcConfigXdgCacheHome ret '/tmp/charles-cache'
[../../third_party/fontconfig/src/src/fccfg.c:2546] FcConfigXdgCacheHome ret '/tmp/charles-cache'
[../../third_party/fontconfig/src/src/fcxml.c:2367] FcParseCacheDir
[../../third_party/fontconfig/src/src/fcxml.c:2354] FcParseCacheDir
[../../third_party/fontconfig/src/src/fcxml.c:2367] FcParseCacheDir
[../../third_party/fontconfig/src/src/fcinit.c:104] FcInitLoadOwnConfig
[../../third_party/fontconfig/src/src/fcdir.c:455 FcDirCacheRead
[../../third_party/fontconfig/src/src/fccache.c:1101] FcDirCacheLoad
[../../third_party/fontconfig/src/src/fccache.c:1104] FcDirCacheLoad
[../../third_party/fontconfig/src/src/fccache.c:1107] FcDirCacheLoad
[../../third_party/fontconfig/src/src/fccache.c:367] FcDirCacheProcess
[../../third_party/fontconfig/src/src/fccache.c:373] FcDirCacheProcess
[../../third_party/fontconfig/src/src/fccache.c:382] FcDirCacheProcess
[../../third_party/fontconfig/src/src/fccache.c:389] FcDirCacheProcess
[../../third_party/fontconfig/src/src/fccache.c:403] FcDirCacheProcess '/var/cache/fontconfig//6ee5e371456664662293e51bbe8d7a0d-le64.cache-9'
[../../third_party/fontconfig/src/src/fccache.c:403] FcDirCacheProcess '/tmp/charles-cache/fontconfig//6ee5e371456664662293e51bbe8d7a0d-le64.cache-9'
[../../third_party/fontconfig/src/src/fccache.c:403] FcDirCacheProcess '/home/charles/.fontconfig//6ee5e371456664662293e51bbe8d7a0d-le64.cache-9'
[../../third_party/fontconfig/src/src/fcdir.c:455 FcDirCacheRead

node test:
[../../third_party/fontconfig/src/src/fcinit.c:80] FcInitLoadOwnConfig\n' +
[../../third_party/fontconfig/src/src/fcinit.c:84] FcInitLoadOwnConfig\n' +
[../../third_party/fontconfig/src/src/fcinit.c:89] FcInitLoadOwnConfig\n' +
[../../third_party/fontconfig/src/src/fcinit.c:91] FcInitLoadOwnConfig\n' +
[../../third_party/fontconfig/src/src/fcxml.c:2354] FcParseCacheDir\n' +
[../../third_party/fontconfig/src/src/fcxml.c:2367] FcParseCacheDir\n' +
[../../third_party/fontconfig/src/src/fcxml.c:2354] FcParseCacheDir\n' +
[../../third_party/fontconfig/src/src/fcxml.c:2359] FcParseCacheDir\n' +
[../../third_party/fontconfig/src/src/fccfg.c:2515] FcConfigXdgCacheHome\n' +
[../../third_party/fontconfig/src/src/fccfg.c:2517] FcConfigXdgCacheHome env 'nullptr'\n" +
[../../third_party/fontconfig/src/src/fccfg.c:2546] FcConfigXdgCacheHome ret '/.cache'\n" +
[../../third_party/fontconfig/src/src/fcxml.c:2367] FcParseCacheDir\n' +
[../../third_party/fontconfig/src/src/fcxml.c:2354] FcParseCacheDir\n' +
[../../third_party/fontconfig/src/src/fcxml.c:2367] FcParseCacheDir\n' +
[../../third_party/fontconfig/src/src/fcinit.c:104] FcInitLoadOwnConfig\n' +
[../../third_party/fontconfig/src/src/fcdir.c:455 FcDirCacheRead\n' +
[../../third_party/fontconfig/src/src/fccache.c:1101] FcDirCacheLoad\n' +
[../../third_party/fontconfig/src/src/fccache.c:1104] FcDirCacheLoad\n' +
[../../third_party/fontconfig/src/src/fccache.c:1107] FcDirCacheLoad\n' +
[../../third_party/fontconfig/src/src/fccache.c:367] FcDirCacheProcess\n' +
[../../third_party/fontconfig/src/src/fccache.c:373] FcDirCacheProcess\n' +
[../../third_party/fontconfig/src/src/fccache.c:376] FcDirCacheProcess\n' +
[../../third_party/fontconfig/src/src/fcdir.c:327 FcDirCacheScan\n' +
[../../third_party/fontconfig/src/src/fcdir.c:455 FcDirCacheRead\n' +
[../../third_party/fontconfig/src/src/fccache.c:1101] FcDirCacheLoad\n' +
[../../third_party/fontconfig/src/src/fccache.c:1104] FcDirCacheLoad\n' +
[../../third_party/fontconfig/src/src/fccache.c:1107] FcDirCacheLoad\n' +
[../../third_party/fontconfig/src/src/fccache.c:367] FcDirCacheProcess\n' +
[../../third_party/fontconfig/src/src/fccache.c:373] FcDirCacheProcess\n' +
[../../third_party/fontconfig/src/src/fccache.c:382] FcDirCacheProcess\n' +
[../../third_party/fontconfig/src/src/fccache.c:389] FcDirCacheProcess\n' +
[../../third_party/fontconfig/src/src/fccache.c:403] FcDirCacheProcess '/var/cache/fontconfig//4c599c202bc5c08e2d34565a40eac3b2-le64.cache-9'\n" +
[../../third_party/fontconfig/src/src/fccache.c:403] FcDirCacheProcess '/.cache/fontconfig//4c599c202bc5c08e2d34565a40eac3b2-le64.cache-9'\n" +
[../../third_party/fontconfig/src/src/fcdir.c:327 FcDirCacheScan\n' +

Where my XDG_CACHE_HOME was set to /tmp/charles-cache in both cases.

So apparently XDG_CACHE_HOME is getting unset when running Node.js tests. Tomorrow I'll investigate whether this is coming from inside Node.js, or from the tests, and what to do about it.

electron-roller bot and others added 17 commits August 7, 2023 13:19
…and_custom_embedder_js.patch

Xref: nodejs/node#46930

manually sync patch to minor upstream code shear
…ng_a_new.patch

Xref: nodejs/node#48248

manually sync patch to minor upstream code shear
…der.patch

Xref: nodejs/node#47824

chore: upstream func throwIfUnsupportedURLProtocol() has been removed, so no need to patch it
Xref: nodejs/node#47695

manually sync patch to minor upstream code shear
Xref: nodejs/node#47274

manually sync patch to minor upstream code shear

some tests moved from sequential to parallel
Xref: fix_libc_buffer_overflow_in_string_view_ctor.patch

patch is no longer needed due to upstream bump to ada 2.2.0
…atch

Xref: nodejs/node#47339

patch is no longer needed due to upstream bump to ada 2.2.0
several files removed/added/changed upstream
upstream dep histogram 0.11.7 moved its include path from src/ to include/

Xref: nodejs/node#47742
Xref: nodejs/node#47160

BoringSSL doesn't support BIO_s_secmem() (a secure heap variant of
BIO_s_mem()), so use BIO_s_mem() instead.

Related discussion of secure heap support in BoringSSL:
https://boringssl-review.googlesource.com/c/boringssl/+/54309
Upstream used `BIO_s_secmem()`, a secure heap variant of `BIO_s_mem()`.
BoringSSL doesn't support it, so this PR opts for `BIO_s_mem()` instead.

Upstream Node.js change that prompted this:
nodejs/node#47160

Related discussion of BoringSSL support of secure heap:
https://boringssl-review.googlesource.com/c/boringssl/+/54309
test: add parallel/test-snapshot-namespaced-builtin to disabled list

We don't support that type of snapshotting at the moment.
…rror

fails upstream in v18.x on my box as well
The line numbers in the stacktrace from our v8 build don't match what
Node's tests are expecting, so update the stacktrace to match our build.

The specific numbers probably aren't t needed for the force_colors test,
which is trying to see whether or not the lines are greyed out. One option
is to upstream a test change to stop hardcoding the stacktrace.
Copy link
Member

@codebytere codebytere left a comment

Choose a reason for hiding this comment

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

Some comments but nothing blocking :)

Date: Mon, 7 Aug 2023 13:12:29 -0500
Subject: ci: ensure node tests set ELECTRON_RUN_AS_NODE=1

Some node tests / test fixtures spawn other tests that clobber env,
Copy link
Member

Choose a reason for hiding this comment

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

This isn't upstreamable in its current state, but i think it could be! I wouldn't necessarily block on it for this PR, but we can probably address this with something more like this:

Diff Suggestion

diff --git a/test/common/assertSnapshot.js b/test/common/assertSnapshot.js
index 83ee45f5f9..2bc7f0092c 100644
--- a/test/common/assertSnapshot.js
+++ b/test/common/assertSnapshot.js
@@ -62,7 +62,7 @@ async function spawnAndAssert(filename, transform = (x) => x, { tty = false, ...
   const flags = common.parseTestFlags(filename);
   const executable = tty ? 'tools/pseudo-tty.py' : process.execPath;
   const args = tty ? [process.execPath, ...flags, filename] : [...flags, filename];
-  if (options && options.env) options.env.ELECTRON_RUN_AS_NODE = 1;
+  if (options?.env) options.env = { ...process.env, ...options.env };
   const { stdout, stderr } = await common.spawnPromisified(executable, args, options);
   await assertSnapshot(transform(`${stdout}${stderr}`), filename);
 }
diff --git a/test/fixtures/test-runner/output/arbitrary-output-colored.js b/test/fixtures/test-runner/output/arbitrary-output-colored.js
index dd8296e631..0dbaff42d0 100644
--- a/test/fixtures/test-runner/output/arbitrary-output-colored.js
+++ b/test/fixtures/test-runner/output/arbitrary-output-colored.js
@@ -6,6 +6,6 @@ const fixtures = require('../../../common/fixtures');
 
 (async function run() {
   const test = fixtures.path('test-runner/output/arbitrary-output-colored-1.js');
-  await once(spawn(process.execPath, ['--test', test], { stdio: 'inherit', env: { ELECTRON_RUN_AS_NODE: 1, FORCE_COLOR: 1 } }), 'exit');
-  await once(spawn(process.execPath, ['--test', '--test-reporter', 'tap', test], { stdio: 'inherit', env: { ELECTRON_RUN_AS_NODE: 1, FORCE_COLOR: 1 }  }), 'exit');
+  await once(spawn(process.execPath, ['--test', test], { stdio: 'inherit', env: { ...process.env, FORCE_COLOR: 1 } }), 'exit');
+  await once(spawn(process.execPath, ['--test', '--test-reporter', 'tap', test], { stdio: 'inherit', env: { ...process.env, FORCE_COLOR: 1 }  }), 'exit');
 })().then(common.mustCall());
\ No newline at end of file
diff --git a/test/parallel/test-node-output-console.mjs b/test/parallel/test-node-output-console.mjs
index efca7811dc..5a1b9feb6c 100644
--- a/test/parallel/test-node-output-console.mjs
+++ b/test/parallel/test-node-output-console.mjs
@@ -31,7 +31,6 @@ describe('console output', { concurrency: true }, () => {
     .transform(snapshot.replaceWindowsLineEndings, snapshot.replaceWindowsPaths, replaceStackTrace);
   for (const { name, transform, env } of tests) {
     it(name, async () => {
-      if (env) env.ELECTRON_RUN_AS_NODE = 1;
       await snapshot.spawnAndAssert(fixtures.path(name), transform ?? defaultTransform, { env });
     });
   }
diff --git a/test/parallel/test-node-output-errors.mjs b/test/parallel/test-node-output-errors.mjs
index b9a55fb7ea..fca2149fea 100644
--- a/test/parallel/test-node-output-errors.mjs
+++ b/test/parallel/test-node-output-errors.mjs
@@ -53,7 +53,6 @@ describe('errors output', { concurrency: true }, () => {
     !skipForceColors ? { name: 'errors/force_colors.js', env: { FORCE_COLOR: 1 } } : null,
   ].filter(Boolean);
   for (const { name, transform, env } of tests) {
-    if (env) env.ELECTRON_RUN_AS_NODE = 1;
     it(name, async () => {
       await snapshot.spawnAndAssert(fixtures.path(name), transform ?? defaultTransform, { env });
     });

Copy link
Member

@ckerr ckerr Aug 8, 2023

Choose a reason for hiding this comment

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

I like the idea of changing this into some upstreamable form, but unconditionally inheriting all of process.env seems problematic -- I can think of plenty of use cases for a test to intentionally clobber env.

What would you think of having some some mechanism of which vars to inherit, either with a metavariable or passing in some option into tools/test.py?

- at Function.executeUserEntryPoint [as runMain] (node:internal*modules*run_main:81:12)
+ at Module._compile (node:internal*modules*cjs*loader:1271:14)
+ at Object..js (node:internal*modules*cjs*loader:1326:10)
+ at Module.load (node:internal*modules*cjs*loader:1126:32)
Copy link
Member

Choose a reason for hiding this comment

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

Also wouldn't block on it since we'd need to temporarily patch this regardless, but historically we've addressed this by making the snapshot regex matches more generic to account for both Electron and Node.js.

Here's an example of something previously upstreamed: nodejs/node#36489

Copy link
Member

@ckerr ckerr Aug 8, 2023

Choose a reason for hiding this comment

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

Agreed it would be better to find a way to upstream this.

It's using the assertSnapshot mechanism in test/common which is looking for a verbatim snapshot. Looks like the way they handle stacktrace changes upstream is just to periodically set process.env.NODE_REGENERATE_SNAPSHOTS and rebuild the snapshots.

As far as nodejs/node#36489 goes, TBH customizing this test would be easier if it was using that ${testname}.js + ${testname.out} mechanism since that has wildcard support via testcfg.py, e.g. message/assert_throws_stack.out shows how a stacktrace can be wildcarded. But even then, it looks like matching is done on a per-line basis? Since our stacktrace has a different number of lines than upsream, we'd still need another approach.

In order to upstream this I think we'd need to propose some way of doing multiline pattern matching

@ckerr ckerr merged commit ab08803 into main Aug 8, 2023
14 checks passed
@ckerr ckerr deleted the roller/node/main branch August 8, 2023 22:52
@release-clerk
Copy link

release-clerk bot commented Aug 8, 2023

Release Notes Persisted

Updated Node.js to v18.17.0.

win32ss pushed a commit to win32ss/supermium-electron that referenced this pull request Sep 24, 2023
* chore: bump node in DEPS to v18.17.0

* chore: update build_modify_js2c_py_to_allow_injection_of_original-fs_and_custom_embedder_js.patch

Xref: nodejs/node#46930

manually sync patch to minor upstream code shear

* chore: update build_ensure_native_module_compilation_fails_if_not_using_a_new.patch

Xref: nodejs/node#48248

manually sync patch to minor upstream code shear

* chore: update fix_expose_the_built-in_electron_module_via_the_esm_loader.patch

Xref: nodejs/node#47824

chore: upstream func throwIfUnsupportedURLProtocol() has been removed, so no need to patch it

* chore: update api_pass_oomdetails_to_oomerrorcallback.patch

Xref: nodejs/node#47695

manually sync patch to minor upstream code shear

* chore: remove fix_prevent_changing_functiontemplateinfo_after_publish.patch

Xref: nodejs/node#46979 (upstreamed patch)

Xref: https://chromium-review.googlesource.com/c/v8/v8/+/2718147 (related)

* chore: update fix_adapt_debugger_tests_for_upstream_v8_changes.patch

Xref: nodejs/node#47274

manually sync patch to minor upstream code shear

some tests moved from sequential to parallel

* chore: remove fix_libc_buffer_overflow_in_string_view_ctor.patch

Xref: fix_libc_buffer_overflow_in_string_view_ctor.patch

patch is no longer needed due to upstream bump to ada 2.2.0

* chore: remove fix_preventing_potential_oob_in_ada_no_scheme_parsing.patch

Xref: nodejs/node#47339

patch is no longer needed due to upstream bump to ada 2.2.0

* chore: rebuild filenames.json

several files removed/added/changed upstream

* chore: update build_add_gn_build_files.patch

upstream dep histogram 0.11.7 moved its include path from src/ to include/

Xref: nodejs/node#47742

* chore: update fix_crypto_tests_to_run_with_bssl.patch

Xref: nodejs/node#47160

BoringSSL doesn't support BIO_s_secmem() (a secure heap variant of
BIO_s_mem()), so use BIO_s_mem() instead.

Related discussion of secure heap support in BoringSSL:
https://boringssl-review.googlesource.com/c/boringssl/+/54309

* fix: ftbfs in node dep ada

* fix: ftbfs in node dep uvwasi

* chore: rebuild patches

* chore: update fix_handle_boringssl_and_openssl_incompatibilities.patch

Upstream used `BIO_s_secmem()`, a secure heap variant of `BIO_s_mem()`.
BoringSSL doesn't support it, so this PR opts for `BIO_s_mem()` instead.

Upstream Node.js change that prompted this:
nodejs/node#47160

Related discussion of BoringSSL support of secure heap:
https://boringssl-review.googlesource.com/c/boringssl/+/54309

* fix: work around Node 18 isURL() regression

* chore: sort script/node-disabled-tests.json alphabetically

* test: add parallel/test-snapshot-argv1 to disabled list

test: add parallel/test-snapshot-namespaced-builtin to disabled list

We don't support that type of snapshotting at the moment.

* chore: disable flaky node test parallel/test-dgram-send-cb-quelches-error

fails upstream in v18.x on my box as well

* ci: ensure spawned node tests have ELECTRON_RUN_AS_NODE set

* fixup! fix: work around Node 18 isURL() regression

fix: infinite loop regression

* fixup! fix: work around Node 18 isURL() regression

* chore: patch fixtures/errors/force_colors.snapshot

The line numbers in the stacktrace from our v8 build don't match what
Node's tests are expecting, so update the stacktrace to match our build.

The specific numbers probably aren't t needed for the force_colors test,
which is trying to see whether or not the lines are greyed out. One option
is to upstream a test change to stop hardcoding the stacktrace.

* fixup! fix: work around Node 18 isURL() regression

fix; pull in upstream bugfix

* fixup! ci: ensure spawned node tests have ELECTRON_RUN_AS_NODE set

chore: do not inject ELECTRON_RUN_AS_NODE in test-assert-colors.js

* chore: disable flaky node test parallel/test-debugger-random-port-with-inspect-port

---------

Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: Charles Kerr <charles@charleskerr.com>
MrHuangJser pushed a commit to MrHuangJser/electron that referenced this pull request Dec 11, 2023
* chore: bump node in DEPS to v18.17.0

* chore: update build_modify_js2c_py_to_allow_injection_of_original-fs_and_custom_embedder_js.patch

Xref: nodejs/node#46930

manually sync patch to minor upstream code shear

* chore: update build_ensure_native_module_compilation_fails_if_not_using_a_new.patch

Xref: nodejs/node#48248

manually sync patch to minor upstream code shear

* chore: update fix_expose_the_built-in_electron_module_via_the_esm_loader.patch

Xref: nodejs/node#47824

chore: upstream func throwIfUnsupportedURLProtocol() has been removed, so no need to patch it

* chore: update api_pass_oomdetails_to_oomerrorcallback.patch

Xref: nodejs/node#47695

manually sync patch to minor upstream code shear

* chore: remove fix_prevent_changing_functiontemplateinfo_after_publish.patch

Xref: nodejs/node#46979 (upstreamed patch)

Xref: https://chromium-review.googlesource.com/c/v8/v8/+/2718147 (related)

* chore: update fix_adapt_debugger_tests_for_upstream_v8_changes.patch

Xref: nodejs/node#47274

manually sync patch to minor upstream code shear

some tests moved from sequential to parallel

* chore: remove fix_libc_buffer_overflow_in_string_view_ctor.patch

Xref: fix_libc_buffer_overflow_in_string_view_ctor.patch

patch is no longer needed due to upstream bump to ada 2.2.0

* chore: remove fix_preventing_potential_oob_in_ada_no_scheme_parsing.patch

Xref: nodejs/node#47339

patch is no longer needed due to upstream bump to ada 2.2.0

* chore: rebuild filenames.json

several files removed/added/changed upstream

* chore: update build_add_gn_build_files.patch

upstream dep histogram 0.11.7 moved its include path from src/ to include/

Xref: nodejs/node#47742

* chore: update fix_crypto_tests_to_run_with_bssl.patch

Xref: nodejs/node#47160

BoringSSL doesn't support BIO_s_secmem() (a secure heap variant of
BIO_s_mem()), so use BIO_s_mem() instead.

Related discussion of secure heap support in BoringSSL:
https://boringssl-review.googlesource.com/c/boringssl/+/54309

* fix: ftbfs in node dep ada

* fix: ftbfs in node dep uvwasi

* chore: rebuild patches

* chore: update fix_handle_boringssl_and_openssl_incompatibilities.patch

Upstream used `BIO_s_secmem()`, a secure heap variant of `BIO_s_mem()`.
BoringSSL doesn't support it, so this PR opts for `BIO_s_mem()` instead.

Upstream Node.js change that prompted this:
nodejs/node#47160

Related discussion of BoringSSL support of secure heap:
https://boringssl-review.googlesource.com/c/boringssl/+/54309

* fix: work around Node 18 isURL() regression

* chore: sort script/node-disabled-tests.json alphabetically

* test: add parallel/test-snapshot-argv1 to disabled list

test: add parallel/test-snapshot-namespaced-builtin to disabled list

We don't support that type of snapshotting at the moment.

* chore: disable flaky node test parallel/test-dgram-send-cb-quelches-error

fails upstream in v18.x on my box as well

* ci: ensure spawned node tests have ELECTRON_RUN_AS_NODE set

* fixup! fix: work around Node 18 isURL() regression

fix: infinite loop regression

* fixup! fix: work around Node 18 isURL() regression

* chore: patch fixtures/errors/force_colors.snapshot

The line numbers in the stacktrace from our v8 build don't match what
Node's tests are expecting, so update the stacktrace to match our build.

The specific numbers probably aren't t needed for the force_colors test,
which is trying to see whether or not the lines are greyed out. One option
is to upstream a test change to stop hardcoding the stacktrace.

* fixup! fix: work around Node 18 isURL() regression

fix; pull in upstream bugfix

* fixup! ci: ensure spawned node tests have ELECTRON_RUN_AS_NODE set

chore: do not inject ELECTRON_RUN_AS_NODE in test-assert-colors.js

* chore: disable flaky node test parallel/test-debugger-random-port-with-inspect-port

---------

Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: Charles Kerr <charles@charleskerr.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
no-backport semver/patch backwards-compatible bug fixes
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants