diff --git a/DEPS b/DEPS index d7fcb79edde75..7f34244aff305 100644 --- a/DEPS +++ b/DEPS @@ -17,7 +17,7 @@ vars = { 'chromium_version': '93.0.4566.0', 'node_version': - 'v16.4.1', + 'v16.5.0', 'nan_version': # The following commit hash of NAN is v2.14.2 with *only* changes to the # test suite. This should be updated to a specific tag when one becomes diff --git a/azure-pipelines-woa.yml b/azure-pipelines-woa.yml index a2e68aa95ac43..f58cf5d2152cd 100644 --- a/azure-pipelines-woa.yml +++ b/azure-pipelines-woa.yml @@ -53,6 +53,16 @@ steps: env: APPVEYOR_TOKEN: $(APPVEYOR_TOKEN) +- powershell: | + $localArtifactPath = "$pwd\src\pdb.zip" + $serverArtifactPath = "$env:APPVEYOR_URL/buildjobs/$env:APPVEYOR_JOB_ID/artifacts/pdb.zip" + Invoke-RestMethod -Method Get -Uri $serverArtifactPath -OutFile $localArtifactPath -Headers @{ "Authorization" = "Bearer $env:APPVEYOR_TOKEN" } + cd src + & "${env:ProgramFiles(x86)}\7-Zip\7z.exe" x -y pdb.zip + displayName: 'Download pdb files for detailed stacktraces' + env: + APPVEYOR_TOKEN: $(APPVEYOR_TOKEN) + - powershell: | New-Item src\out\Default\gen\node_headers\Release -Type directory Copy-Item -path src\out\Default\electron.lib -destination src\out\Default\gen\node_headers\Release\node.lib @@ -63,15 +73,30 @@ steps: set npm_config_nodedir=%cd%\out\Default\gen\node_headers set npm_config_arch=arm64 cd electron - # CalculateNativeWinOcclusion is disabled due to https://bugs.chromium.org/p/chromium/issues/detail?id=1139022 - node script/yarn test -- --enable-logging --verbose --disable-features=CalculateNativeWinOcclusion - displayName: 'Run Electron tests' + node script/yarn test --runners=main --runTestFilesSeperately --enable-logging --disable-features=CalculateNativeWinOcclusion + displayName: 'Run Electron Main process tests' + env: + ELECTRON_ENABLE_STACK_DUMPING: true + ELECTRON_OUT_DIR: Default + IGNORE_YARN_INSTALL_ERROR: 1 + ELECTRON_TEST_RESULTS_DIR: junit + MOCHA_MULTI_REPORTERS: 'mocha-junit-reporter, tap' + MOCHA_REPORTER: mocha-multi-reporters + +- script: | + cd src + set npm_config_nodedir=%cd%\out\Default\gen\node_headers + set npm_config_arch=arm64 + cd electron + node script/yarn test --runners=remote --enable-logging --disable-features=CalculateNativeWinOcclusion + displayName: 'Run Electron Remote based tests' env: ELECTRON_OUT_DIR: Default IGNORE_YARN_INSTALL_ERROR: 1 ELECTRON_TEST_RESULTS_DIR: junit MOCHA_MULTI_REPORTERS: 'mocha-junit-reporter, tap' MOCHA_REPORTER: mocha-multi-reporters + condition: always() - task: PublishTestResults@2 displayName: 'Publish Test Results' diff --git a/patches/node/build_add_gn_build_files.patch b/patches/node/build_add_gn_build_files.patch index 4cdb1b0e7a606..00ed3299f8df5 100644 --- a/patches/node/build_add_gn_build_files.patch +++ b/patches/node/build_add_gn_build_files.patch @@ -888,10 +888,10 @@ index 0000000000000000000000000000000000000000..2c9d2826c85bdd033f1df1d6188df636 +} diff --git a/filenames.json b/filenames.json new file mode 100644 -index 0000000000000000000000000000000000000000..7225bdb6b281837253978430a665e9ee5a9e0646 +index 0000000000000000000000000000000000000000..6ce2f7899ffc39e145a767685a51597fa4473e50 --- /dev/null +++ b/filenames.json -@@ -0,0 +1,530 @@ +@@ -0,0 +1,544 @@ +// This file is automatically generated by generate_gn_filenames_json.py +// DO NOT EDIT +{ @@ -926,6 +926,14 @@ index 0000000000000000000000000000000000000000..7225bdb6b281837253978430a665e9ee + ] + }, + { ++ "dest_dir": "include/node//libplatform/", ++ "files": [ ++ "//v8/include/libplatform/libplatform-export.h", ++ "//v8/include/libplatform/libplatform.h", ++ "//v8/include/libplatform/v8-tracing.h" ++ ] ++ }, ++ { + "dest_dir": "include/node//uv/", + "files": [ + "deps/uv/include/uv/aix.h", @@ -953,250 +961,260 @@ index 0000000000000000000000000000000000000000..7225bdb6b281837253978430a665e9ee + } + ], + "library_files": [ -+ "lib/internal/bootstrap/environment.js", -+ "lib/internal/bootstrap/loaders.js", -+ "lib/internal/bootstrap/node.js", -+ "lib/internal/bootstrap/pre_execution.js", -+ "lib/internal/bootstrap/switches/does_own_process_state.js", -+ "lib/internal/bootstrap/switches/does_not_own_process_state.js", -+ "lib/internal/bootstrap/switches/is_main_thread.js", -+ "lib/internal/bootstrap/switches/is_not_main_thread.js", -+ "lib/internal/per_context/primordials.js", -+ "lib/internal/per_context/domexception.js", -+ "lib/internal/per_context/messageport.js", -+ "lib/async_hooks.js", -+ "lib/assert.js", -+ "lib/assert/strict.js", -+ "lib/buffer.js", -+ "lib/child_process.js", -+ "lib/console.js", + "lib/constants.js", -+ "lib/crypto.js", -+ "lib/cluster.js", -+ "lib/diagnostics_channel.js", -+ "lib/dgram.js", -+ "lib/dns.js", -+ "lib/dns/promises.js", -+ "lib/domain.js", ++ "lib/net.js", ++ "lib/trace_events.js", + "lib/events.js", -+ "lib/fs.js", -+ "lib/fs/promises.js", -+ "lib/http.js", ++ "lib/repl.js", ++ "lib/util.js", ++ "lib/dgram.js", ++ "lib/vm.js", ++ "lib/stream.js", ++ "lib/child_process.js", ++ "lib/assert.js", ++ "lib/_tls_wrap.js", + "lib/http2.js", -+ "lib/_http_agent.js", -+ "lib/_http_client.js", -+ "lib/_http_common.js", -+ "lib/_http_incoming.js", -+ "lib/_http_outgoing.js", -+ "lib/_http_server.js", -+ "lib/https.js", + "lib/inspector.js", -+ "lib/module.js", -+ "lib/net.js", + "lib/os.js", -+ "lib/path.js", -+ "lib/path/posix.js", -+ "lib/path/win32.js", ++ "lib/_http_server.js", ++ "lib/console.js", + "lib/perf_hooks.js", -+ "lib/process.js", -+ "lib/punycode.js", -+ "lib/querystring.js", + "lib/readline.js", -+ "lib/repl.js", -+ "lib/stream.js", -+ "lib/stream/promises.js", -+ "lib/_stream_readable.js", -+ "lib/_stream_writable.js", -+ "lib/_stream_duplex.js", -+ "lib/_stream_transform.js", -+ "lib/_stream_passthrough.js", ++ "lib/punycode.js", ++ "lib/_http_incoming.js", ++ "lib/https.js", + "lib/_stream_wrap.js", -+ "lib/string_decoder.js", -+ "lib/sys.js", -+ "lib/timers/promises.js", ++ "lib/domain.js", ++ "lib/dns.js", ++ "lib/_http_client.js", ++ "lib/diagnostics_channel.js", ++ "lib/tty.js", ++ "lib/_http_agent.js", + "lib/timers.js", -+ "lib/tls.js", ++ "lib/_http_outgoing.js", ++ "lib/querystring.js", + "lib/_tls_common.js", -+ "lib/_tls_wrap.js", -+ "lib/trace_events.js", -+ "lib/tty.js", -+ "lib/url.js", -+ "lib/util.js", -+ "lib/util/types.js", ++ "lib/module.js", ++ "lib/_stream_passthrough.js", ++ "lib/_stream_transform.js", ++ "lib/worker_threads.js", ++ "lib/sys.js", ++ "lib/_stream_duplex.js", ++ "lib/path.js", ++ "lib/_http_common.js", ++ "lib/string_decoder.js", ++ "lib/cluster.js", + "lib/v8.js", -+ "lib/vm.js", ++ "lib/crypto.js", + "lib/wasi.js", -+ "lib/worker_threads.js", ++ "lib/_stream_readable.js", + "lib/zlib.js", ++ "lib/url.js", ++ "lib/tls.js", ++ "lib/_stream_writable.js", ++ "lib/async_hooks.js", ++ "lib/process.js", ++ "lib/http.js", ++ "lib/buffer.js", ++ "lib/fs.js", ++ "lib/util/types.js", ++ "lib/timers/promises.js", ++ "lib/path/win32.js", ++ "lib/path/posix.js", ++ "lib/stream/promises.js", ++ "lib/stream/web.js", ++ "lib/internal/constants.js", + "lib/internal/abort_controller.js", ++ "lib/internal/net.js", ++ "lib/internal/v8_prof_processor.js", ++ "lib/internal/event_target.js", ++ "lib/internal/inspector_async_hook.js", ++ "lib/internal/validators.js", ++ "lib/internal/linkedlist.js", ++ "lib/internal/cli_table.js", ++ "lib/internal/repl.js", ++ "lib/internal/util.js", ++ "lib/internal/histogram.js", ++ "lib/internal/error_serdes.js", ++ "lib/internal/dgram.js", ++ "lib/internal/child_process.js", + "lib/internal/assert.js", -+ "lib/internal/assert/assertion_error.js", -+ "lib/internal/assert/calltracker.js", -+ "lib/internal/async_hooks.js", -+ "lib/internal/blob.js", ++ "lib/internal/fixed_queue.js", + "lib/internal/blocklist.js", ++ "lib/internal/v8_prof_polyfill.js", ++ "lib/internal/options.js", ++ "lib/internal/worker.js", ++ "lib/internal/dtrace.js", ++ "lib/internal/idna.js", ++ "lib/internal/watchdog.js", ++ "lib/internal/encoding.js", ++ "lib/internal/tty.js", ++ "lib/internal/freeze_intrinsics.js", ++ "lib/internal/timers.js", ++ "lib/internal/heap_utils.js", ++ "lib/internal/querystring.js", ++ "lib/internal/js_stream_socket.js", ++ "lib/internal/errors.js", ++ "lib/internal/priority_queue.js", ++ "lib/internal/freelist.js", ++ "lib/internal/blob.js", ++ "lib/internal/socket_list.js", ++ "lib/internal/socketaddress.js", ++ "lib/internal/stream_base_commons.js", ++ "lib/internal/url.js", ++ "lib/internal/async_hooks.js", ++ "lib/internal/http.js", + "lib/internal/buffer.js", -+ "lib/internal/cli_table.js", -+ "lib/internal/child_process.js", -+ "lib/internal/child_process/serialization.js", -+ "lib/internal/cluster/child.js", -+ "lib/internal/cluster/primary.js", -+ "lib/internal/cluster/round_robin_handle.js", -+ "lib/internal/cluster/shared_handle.js", -+ "lib/internal/cluster/utils.js", -+ "lib/internal/cluster/worker.js", -+ "lib/internal/console/constructor.js", -+ "lib/internal/console/global.js", ++ "lib/internal/trace_events_async_hooks.js", ++ "lib/internal/crypto/sig.js", ++ "lib/internal/crypto/rsa.js", + "lib/internal/crypto/aes.js", ++ "lib/internal/crypto/util.js", ++ "lib/internal/crypto/scrypt.js", ++ "lib/internal/crypto/random.js", ++ "lib/internal/crypto/keys.js", ++ "lib/internal/crypto/x509.js", + "lib/internal/crypto/certificate.js", -+ "lib/internal/crypto/cipher.js", -+ "lib/internal/crypto/diffiehellman.js", -+ "lib/internal/crypto/dsa.js", + "lib/internal/crypto/ec.js", -+ "lib/internal/crypto/hash.js", -+ "lib/internal/crypto/hashnames.js", -+ "lib/internal/crypto/hkdf.js", + "lib/internal/crypto/keygen.js", -+ "lib/internal/crypto/keys.js", + "lib/internal/crypto/mac.js", ++ "lib/internal/crypto/diffiehellman.js", ++ "lib/internal/crypto/hkdf.js", ++ "lib/internal/crypto/cipher.js", ++ "lib/internal/crypto/hash.js", + "lib/internal/crypto/pbkdf2.js", -+ "lib/internal/crypto/random.js", -+ "lib/internal/crypto/rsa.js", -+ "lib/internal/crypto/scrypt.js", -+ "lib/internal/crypto/sig.js", -+ "lib/internal/crypto/util.js", + "lib/internal/crypto/webcrypto.js", -+ "lib/internal/crypto/x509.js", -+ "lib/internal/constants.js", -+ "lib/internal/debugger/_inspect.js", -+ "lib/internal/debugger/inspect_client.js", -+ "lib/internal/debugger/inspect_repl.js", -+ "lib/internal/dgram.js", -+ "lib/internal/dns/promises.js", -+ "lib/internal/dns/utils.js", -+ "lib/internal/dtrace.js", -+ "lib/internal/encoding.js", -+ "lib/internal/errors.js", -+ "lib/internal/error_serdes.js", -+ "lib/internal/event_target.js", -+ "lib/internal/fixed_queue.js", -+ "lib/internal/freelist.js", -+ "lib/internal/freeze_intrinsics.js", -+ "lib/internal/fs/dir.js", -+ "lib/internal/fs/promises.js", -+ "lib/internal/fs/read_file_context.js", -+ "lib/internal/fs/rimraf.js", -+ "lib/internal/fs/streams.js", -+ "lib/internal/fs/sync_write_stream.js", -+ "lib/internal/fs/utils.js", -+ "lib/internal/fs/watchers.js", -+ "lib/internal/http.js", -+ "lib/internal/heap_utils.js", -+ "lib/internal/histogram.js", -+ "lib/internal/idna.js", -+ "lib/internal/inspector_async_hook.js", -+ "lib/internal/js_stream_socket.js", ++ "lib/internal/crypto/dsa.js", ++ "lib/internal/crypto/hashnames.js", ++ "lib/internal/cluster/shared_handle.js", ++ "lib/internal/cluster/round_robin_handle.js", ++ "lib/internal/cluster/worker.js", ++ "lib/internal/cluster/primary.js", ++ "lib/internal/cluster/utils.js", ++ "lib/internal/cluster/child.js", ++ "lib/internal/webstreams/util.js", ++ "lib/internal/webstreams/writablestream.js", ++ "lib/internal/webstreams/readablestream.js", ++ "lib/internal/webstreams/queuingstrategies.js", ++ "lib/internal/webstreams/transformstream.js", ++ "lib/internal/webstreams/transfer.js", ++ "lib/internal/bootstrap/loaders.js", ++ "lib/internal/bootstrap/pre_execution.js", ++ "lib/internal/bootstrap/node.js", ++ "lib/internal/bootstrap/environment.js", ++ "lib/internal/bootstrap/switches/does_not_own_process_state.js", ++ "lib/internal/bootstrap/switches/is_not_main_thread.js", ++ "lib/internal/bootstrap/switches/does_own_process_state.js", ++ "lib/internal/bootstrap/switches/is_main_thread.js", ++ "lib/internal/test/binding.js", ++ "lib/internal/test/transfer.js", ++ "lib/internal/util/types.js", ++ "lib/internal/util/inspector.js", ++ "lib/internal/util/comparisons.js", ++ "lib/internal/util/debuglog.js", ++ "lib/internal/util/inspect.js", ++ "lib/internal/util/iterable_weak_map.js", ++ "lib/internal/streams/add-abort-signal.js", ++ "lib/internal/streams/destroy.js", ++ "lib/internal/streams/legacy.js", ++ "lib/internal/streams/passthrough.js", ++ "lib/internal/streams/readable.js", ++ "lib/internal/streams/from.js", ++ "lib/internal/streams/writable.js", ++ "lib/internal/streams/state.js", ++ "lib/internal/streams/buffer_list.js", ++ "lib/internal/streams/end-of-stream.js", ++ "lib/internal/streams/utils.js", ++ "lib/internal/streams/transform.js", ++ "lib/internal/streams/lazy_transform.js", ++ "lib/internal/streams/duplex.js", ++ "lib/internal/streams/pipeline.js", ++ "lib/internal/readline/utils.js", ++ "lib/internal/readline/emitKeypressEvents.js", ++ "lib/internal/readline/callbacks.js", ++ "lib/internal/repl/history.js", ++ "lib/internal/repl/utils.js", ++ "lib/internal/repl/await.js", + "lib/internal/legacy/processbinding.js", -+ "lib/internal/linkedlist.js", -+ "lib/internal/main/check_syntax.js", -+ "lib/internal/main/eval_string.js", -+ "lib/internal/main/eval_stdin.js", -+ "lib/internal/main/inspect.js", ++ "lib/internal/assert/calltracker.js", ++ "lib/internal/assert/assertion_error.js", ++ "lib/internal/http2/util.js", ++ "lib/internal/http2/core.js", ++ "lib/internal/http2/compat.js", ++ "lib/internal/per_context/messageport.js", ++ "lib/internal/per_context/primordials.js", ++ "lib/internal/per_context/domexception.js", ++ "lib/internal/vm/module.js", ++ "lib/internal/tls/secure-pair.js", ++ "lib/internal/tls/parse-cert-string.js", ++ "lib/internal/tls/secure-context.js", ++ "lib/internal/child_process/serialization.js", ++ "lib/internal/debugger/inspect_repl.js", ++ "lib/internal/debugger/inspect_client.js", ++ "lib/internal/debugger/_inspect.js", ++ "lib/internal/worker/io.js", ++ "lib/internal/worker/js_transferable.js", ++ "lib/internal/main/repl.js", + "lib/internal/main/print_help.js", ++ "lib/internal/main/eval_string.js", ++ "lib/internal/main/check_syntax.js", + "lib/internal/main/prof_process.js", -+ "lib/internal/main/repl.js", -+ "lib/internal/main/run_main_module.js", + "lib/internal/main/worker_thread.js", ++ "lib/internal/main/inspect.js", ++ "lib/internal/main/eval_stdin.js", ++ "lib/internal/main/run_main_module.js", + "lib/internal/modules/run_main.js", + "lib/internal/modules/package_json_reader.js", -+ "lib/internal/modules/cjs/helpers.js", -+ "lib/internal/modules/cjs/loader.js", -+ "lib/internal/modules/esm/loader.js", -+ "lib/internal/modules/esm/create_dynamic_module.js", -+ "lib/internal/modules/esm/get_format.js", -+ "lib/internal/modules/esm/get_source.js", + "lib/internal/modules/esm/module_job.js", -+ "lib/internal/modules/esm/module_map.js", ++ "lib/internal/modules/esm/get_source.js", ++ "lib/internal/modules/esm/translators.js", + "lib/internal/modules/esm/resolve.js", ++ "lib/internal/modules/esm/create_dynamic_module.js", ++ "lib/internal/modules/esm/module_map.js", ++ "lib/internal/modules/esm/get_format.js", + "lib/internal/modules/esm/transform_source.js", -+ "lib/internal/modules/esm/translators.js", -+ "lib/internal/net.js", -+ "lib/internal/options.js", -+ "lib/internal/perf/perf.js", ++ "lib/internal/modules/esm/loader.js", ++ "lib/internal/modules/cjs/helpers.js", ++ "lib/internal/modules/cjs/loader.js", ++ "lib/internal/source_map/source_map.js", ++ "lib/internal/source_map/prepare_stack_trace.js", ++ "lib/internal/source_map/source_map_cache.js", ++ "lib/internal/dns/promises.js", ++ "lib/internal/dns/utils.js", ++ "lib/internal/fs/watchers.js", ++ "lib/internal/fs/promises.js", ++ "lib/internal/fs/read_file_context.js", ++ "lib/internal/fs/rimraf.js", ++ "lib/internal/fs/sync_write_stream.js", ++ "lib/internal/fs/dir.js", ++ "lib/internal/fs/streams.js", ++ "lib/internal/fs/utils.js", + "lib/internal/perf/nodetiming.js", + "lib/internal/perf/usertiming.js", ++ "lib/internal/perf/performance_entry.js", ++ "lib/internal/perf/performance.js", ++ "lib/internal/perf/timerify.js", ++ "lib/internal/perf/utils.js", + "lib/internal/perf/observe.js", + "lib/internal/perf/event_loop_delay.js", + "lib/internal/perf/event_loop_utilization.js", -+ "lib/internal/perf/timerify.js", + "lib/internal/policy/manifest.js", + "lib/internal/policy/sri.js", -+ "lib/internal/priority_queue.js", -+ "lib/internal/process/esm_loader.js", -+ "lib/internal/process/execution.js", ++ "lib/internal/process/task_queues.js", + "lib/internal/process/per_thread.js", ++ "lib/internal/process/warning.js", + "lib/internal/process/policy.js", + "lib/internal/process/promises.js", -+ "lib/internal/process/warning.js", -+ "lib/internal/process/worker_thread_only.js", -+ "lib/internal/process/report.js", + "lib/internal/process/signal.js", -+ "lib/internal/process/task_queues.js", -+ "lib/internal/querystring.js", -+ "lib/internal/readline/callbacks.js", -+ "lib/internal/readline/emitKeypressEvents.js", -+ "lib/internal/readline/utils.js", -+ "lib/internal/repl.js", -+ "lib/internal/repl/await.js", -+ "lib/internal/repl/history.js", -+ "lib/internal/repl/utils.js", -+ "lib/internal/socketaddress.js", -+ "lib/internal/socket_list.js", -+ "lib/internal/source_map/prepare_stack_trace.js", -+ "lib/internal/source_map/source_map.js", -+ "lib/internal/source_map/source_map_cache.js", -+ "lib/internal/test/binding.js", -+ "lib/internal/test/transfer.js", -+ "lib/internal/timers.js", -+ "lib/internal/tls.js", -+ "lib/internal/trace_events_async_hooks.js", -+ "lib/internal/tty.js", -+ "lib/internal/url.js", -+ "lib/internal/util.js", -+ "lib/internal/util/comparisons.js", -+ "lib/internal/util/debuglog.js", -+ "lib/internal/util/inspect.js", -+ "lib/internal/util/inspector.js", -+ "lib/internal/util/iterable_weak_map.js", -+ "lib/internal/util/types.js", -+ "lib/internal/http2/core.js", -+ "lib/internal/http2/compat.js", -+ "lib/internal/http2/util.js", -+ "lib/internal/v8_prof_polyfill.js", -+ "lib/internal/v8_prof_processor.js", -+ "lib/internal/validators.js", -+ "lib/internal/stream_base_commons.js", -+ "lib/internal/vm/module.js", -+ "lib/internal/worker.js", -+ "lib/internal/worker/io.js", -+ "lib/internal/worker/js_transferable.js", -+ "lib/internal/watchdog.js", -+ "lib/internal/streams/lazy_transform.js", -+ "lib/internal/streams/add-abort-signal.js", -+ "lib/internal/streams/buffer_list.js", -+ "lib/internal/streams/duplexpair.js", -+ "lib/internal/streams/from.js", -+ "lib/internal/streams/legacy.js", -+ "lib/internal/streams/readable.js", -+ "lib/internal/streams/writable.js", -+ "lib/internal/streams/duplex.js", -+ "lib/internal/streams/passthrough.js", -+ "lib/internal/streams/transform.js", -+ "lib/internal/streams/destroy.js", -+ "lib/internal/streams/state.js", -+ "lib/internal/streams/pipeline.js", -+ "lib/internal/streams/end-of-stream.js", -+ "lib/internal/streams/utils.js", ++ "lib/internal/process/execution.js", ++ "lib/internal/process/esm_loader.js", ++ "lib/internal/process/report.js", ++ "lib/internal/process/worker_thread_only.js", ++ "lib/internal/console/constructor.js", ++ "lib/internal/console/global.js", ++ "lib/assert/strict.js", ++ "lib/dns/promises.js", ++ "lib/fs/promises.js", + "//v8/tools/splaytree.mjs", + "//v8/tools/codemap.mjs", + "//v8/tools/consarray.mjs", @@ -1210,10 +1228,6 @@ index 0000000000000000000000000000000000000000..7225bdb6b281837253978430a665e9ee + "//v8/tools/tickprocessor-driver.mjs", + "deps/acorn/acorn/dist/acorn.js", + "deps/acorn/acorn-walk/dist/walk.js", -+ "deps/acorn-plugins/acorn-class-fields/index.js", -+ "deps/acorn-plugins/acorn-private-class-elements/index.js", -+ "deps/acorn-plugins/acorn-private-methods/index.js", -+ "deps/acorn-plugins/acorn-static-class-features/index.js", + "deps/cjs-module-lexer/lexer.js", + "deps/cjs-module-lexer/dist/lexer.js" + ], @@ -1628,7 +1642,7 @@ index 0000000000000000000000000000000000000000..d1d6b51e8c0c5bc6a5d09e217eb30483 + args = rebase_path(inputs + outputs, root_build_dir) +} diff --git a/src/node_version.h b/src/node_version.h -index e4ee8199ca434226f548ddf9f0e4e2770b48df9e..03e59cfeaa32eaba7aeba9be17f986468c34ac6e 100644 +index 0523885212d429ee5c4142137524cb127d8adc97..116815364055a01f0c0619f0f22e9a387c2f2e2e 100644 --- a/src/node_version.h +++ b/src/node_version.h @@ -89,7 +89,10 @@ @@ -1661,17 +1675,17 @@ index 0000000000000000000000000000000000000000..01f62d4ae6e3b9d539444e3dff069f00 + main(sys.argv[1:]) diff --git a/tools/generate_gn_filenames_json.py b/tools/generate_gn_filenames_json.py new file mode 100755 -index 0000000000000000000000000000000000000000..cf3b8df67d73b4096a0113b55e2a916b59701b23 +index 0000000000000000000000000000000000000000..ece315d915f0a7b2c8e823caccba7ffec8420fdf --- /dev/null +++ b/tools/generate_gn_filenames_json.py -@@ -0,0 +1,71 @@ +@@ -0,0 +1,75 @@ +#!/usr/bin/env python +import json +import os +import sys + +import install -+ ++import subprocess + +def LoadPythonDictionary(path): + file_string = open(path).read() @@ -1704,6 +1718,7 @@ index 0000000000000000000000000000000000000000..cf3b8df67d73b4096a0113b55e2a916b + if t['target_name'] == '<(node_lib_target_name)') + node_source_blocklist = { + '<@(library_files)', ++ '<@(deps_files)', + 'common.gypi', + '<(SHARED_INTERMEDIATE_DIR)/node_javascript.cc', + } @@ -1713,7 +1728,10 @@ index 0000000000000000000000000000000000000000..cf3b8df67d73b4096a0113b55e2a916b + files = [f.replace('deps/v8/', '//v8/', 1) for f in files] + return files + -+ out['library_files'] = filter_v8_files(node_gyp['variables']['library_files']) ++ cwd = os.path.join(os.getcwd(), 'tools/search_files.py') ++ lib_files = subprocess.check_output('{} {} --ext js lib'.format('python3', cwd), shell=True).split() ++ out['library_files'] = filter_v8_files(lib_files) ++ out['library_files'] += filter_v8_files(node_gyp['variables']['deps_files']) + + blocklisted_sources = [ + f for f in node_lib_target['sources'] @@ -1768,14 +1786,17 @@ index 0000000000000000000000000000000000000000..3088ae4bdf814ae255c9805ebd393b2e + + out_file.writelines(new_contents) diff --git a/tools/install.py b/tools/install.py -index 045d406d84be301722f3de62abc448db84e751f8..95aa4c985d33ef37a73eebfca8bb8651e5059d37 100755 +index 24cf51e73199e60b4c24700e1074fe9bd0a399e6..3cbf4f45fabec1a26e0edebb18fb589fbecfbe68 100755 --- a/tools/install.py +++ b/tools/install.py -@@ -159,14 +159,15 @@ def files(action): +@@ -159,17 +159,18 @@ def files(action): def headers(action): def wanted_v8_headers(files_arg, dest): v8_headers = [ - 'deps/v8/include/cppgc/common.h', +- 'deps/v8/include/libplatform/libplatform.h', +- 'deps/v8/include/libplatform/libplatform-export.h', +- 'deps/v8/include/libplatform/v8-tracing.h', - 'deps/v8/include/v8.h', - 'deps/v8/include/v8-internal.h', - 'deps/v8/include/v8-platform.h', @@ -1783,6 +1804,9 @@ index 045d406d84be301722f3de62abc448db84e751f8..95aa4c985d33ef37a73eebfca8bb8651 - 'deps/v8/include/v8-version.h', - 'deps/v8/include/v8config.h', + '../../v8/include/cppgc/common.h', ++ '../../v8/include/libplatform/libplatform.h', ++ '../../v8/include/libplatform/libplatform-export.h', ++ '../../v8/include/libplatform/v8-tracing.h', + '../../v8/include/v8.h', + '../../v8/include/v8-internal.h', + '../../v8/include/v8-platform.h', @@ -1794,7 +1818,7 @@ index 045d406d84be301722f3de62abc448db84e751f8..95aa4c985d33ef37a73eebfca8bb8651 files_arg = [name for name in files_arg if name in v8_headers] action(files_arg, dest) -@@ -187,7 +188,7 @@ def headers(action): +@@ -190,7 +191,7 @@ def headers(action): if sys.platform.startswith('aix'): action(['out/Release/node.exp'], 'include/node/') @@ -1804,10 +1828,10 @@ index 045d406d84be301722f3de62abc448db84e751f8..95aa4c985d33ef37a73eebfca8bb8651 if 'false' == variables.get('node_shared_libuv'): subdir_files('deps/uv/include', 'include/node/', action) diff --git a/tools/js2c.py b/tools/js2c.py -index d40f28ce2bff2b7fc28ceeafc7772831746e7f89..4af54c3fa00602f9d0ce5cc4dca253d425048706 100755 +index d93be2123e0f8c75dd6a0041ef164982db0860e4..4d9317527d46ac8c6d8066bfba707233053b8615 100755 --- a/tools/js2c.py +++ b/tools/js2c.py -@@ -130,6 +130,14 @@ def NormalizeFileName(filename): +@@ -131,6 +131,14 @@ def NormalizeFileName(filename): split = split[1:] if len(split): filename = '/'.join(split) diff --git a/patches/node/build_modify_js2c_py_to_allow_injection_of_original-fs_and_custom_embedder_js.patch b/patches/node/build_modify_js2c_py_to_allow_injection_of_original-fs_and_custom_embedder_js.patch index a3b20d93b66a3..a8a9359880d08 100644 --- a/patches/node/build_modify_js2c_py_to_allow_injection_of_original-fs_and_custom_embedder_js.patch +++ b/patches/node/build_modify_js2c_py_to_allow_injection_of_original-fs_and_custom_embedder_js.patch @@ -35,10 +35,10 @@ index b45af42d12ff7df8a9e125e87f51af3456811c23..c84ff7feb07aebf656ada7e37d812d9d async function* watch(filename, options = {}) { const path = toNamespacedPath(getValidatedPath(filename)); diff --git a/src/node_native_module.cc b/src/node_native_module.cc -index f788732ae569d460a0e596397e589774ba4be4f1..186c24c0ba37781d8d9d0443d18b4f4bb0e02bef 100644 +index 2642982330e8cff166d10682af3d847105dc5c2e..f5491b416203877b89db69bde44f4ff50901ed8b 100644 --- a/src/node_native_module.cc +++ b/src/node_native_module.cc -@@ -19,6 +19,7 @@ NativeModuleLoader NativeModuleLoader::instance_; +@@ -20,6 +20,7 @@ NativeModuleLoader NativeModuleLoader::instance_; NativeModuleLoader::NativeModuleLoader() : config_(GetConfig()) { LoadJavaScriptSource(); @@ -59,11 +59,11 @@ index 3be3f2364dd252bcdd668c699a0e7ae1e754e873..b2af1bce312ffca44e7005e11f92327e bool Exists(const char* id); diff --git a/tools/js2c.py b/tools/js2c.py -index 4af54c3fa00602f9d0ce5cc4dca253d425048706..18f584473fb87f036ce2a67c5172cccaf0caaa5f 100755 +index 4d9317527d46ac8c6d8066bfba707233053b8615..83225036208b68087a6066adf1d1948b84c5c234 100755 --- a/tools/js2c.py +++ b/tools/js2c.py -@@ -38,6 +38,8 @@ import functools - import codecs +@@ -39,6 +39,8 @@ import codecs + import utils def ReadFile(filename): + if filename.startswith("//v8"): @@ -71,7 +71,7 @@ index 4af54c3fa00602f9d0ce5cc4dca253d425048706..18f584473fb87f036ce2a67c5172ccca if is_verbose: print(filename) with codecs.open(filename, "r", "utf-8") as f: -@@ -56,13 +58,15 @@ namespace native_module {{ +@@ -57,13 +59,15 @@ namespace native_module {{ {0} @@ -89,7 +89,7 @@ index 4af54c3fa00602f9d0ce5cc4dca253d425048706..18f584473fb87f036ce2a67c5172ccca }} // namespace native_module -@@ -112,8 +116,8 @@ def GetDefinition(var, source, step=30): +@@ -113,8 +117,8 @@ def GetDefinition(var, source, step=30): return definition, len(code_points) @@ -100,7 +100,7 @@ index 4af54c3fa00602f9d0ce5cc4dca253d425048706..18f584473fb87f036ce2a67c5172ccca name = NormalizeFileName(filename) slug = SLUGGER_RE.sub('_', name) var = slug + '_raw' -@@ -123,7 +127,9 @@ def AddModule(filename, definitions, initializers): +@@ -124,7 +128,9 @@ def AddModule(filename, definitions, initializers): initializers.append(initializer) def NormalizeFileName(filename): @@ -111,7 +111,7 @@ index 4af54c3fa00602f9d0ce5cc4dca253d425048706..18f584473fb87f036ce2a67c5172ccca if split[0] == 'deps': split = ['internal'] + split else: # `lib/**/*.js` so drop the 'lib' part -@@ -141,23 +147,36 @@ def NormalizeFileName(filename): +@@ -142,23 +148,36 @@ def NormalizeFileName(filename): return os.path.splitext(filename)[0] @@ -157,23 +157,24 @@ index 4af54c3fa00602f9d0ce5cc4dca253d425048706..18f584473fb87f036ce2a67c5172ccca write_if_chaged(out, target) -@@ -213,18 +232,21 @@ def main(): - ) - parser.add_argument('--target', help='output file') +@@ -218,6 +237,7 @@ def main(): + default=None, + help='input file directory') parser.add_argument('--verbose', action='store_true', help='output file') + parser.add_argument('--only-js', action='store_true', help='do not require or parse any config.gypi files') parser.add_argument('sources', nargs='*', help='input files') options = parser.parse_args() global is_verbose - is_verbose = options.verbose - source_files = functools.reduce(SourceFileByExt, options.sources, {}) +@@ -230,12 +250,15 @@ def main(): + + source_files = functools.reduce(SourceFileByExt, sources, {}) + - # Should have exactly 3 types: `.js`, `.mjs` and `.gypi` - assert len(source_files) == 3 - # Currently config.gypi is the only `.gypi` file allowed - assert source_files['.gypi'] == ['config.gypi'] - source_files['config.gypi'] = source_files.pop('.gypi')[0] - JS2C(source_files, options.target) -- + if options.only_js: + assert len(source_files) == 1 + else: @@ -184,5 +185,5 @@ index 4af54c3fa00602f9d0ce5cc4dca253d425048706..18f584473fb87f036ce2a67c5172ccca + source_files['config.gypi'] = source_files.pop('.gypi')[0] + JS2C(source_files, options.target, options.only_js) + if __name__ == "__main__": - main() diff --git a/patches/node/chore_allow_the_node_entrypoint_to_be_a_builtin_module.patch b/patches/node/chore_allow_the_node_entrypoint_to_be_a_builtin_module.patch index d5f55ac0b04c7..0176d11676b67 100644 --- a/patches/node/chore_allow_the_node_entrypoint_to_be_a_builtin_module.patch +++ b/patches/node/chore_allow_the_node_entrypoint_to_be_a_builtin_module.patch @@ -8,10 +8,10 @@ they use themselves as the entry point. We should try to upstream some form of this. diff --git a/lib/internal/bootstrap/pre_execution.js b/lib/internal/bootstrap/pre_execution.js -index f7e9ffa74a4f19caa96680b3c955937f7ab31ea0..d1fb880f5f904909a1535f8253ab0b29203304bf 100644 +index c90a19d5eed72a55cb9ee89dd2471a32a30c1377..68a52e1ce1f0a2bf4fc2b19ea735948cf6586e06 100644 --- a/lib/internal/bootstrap/pre_execution.js +++ b/lib/internal/bootstrap/pre_execution.js -@@ -102,10 +102,12 @@ function patchProcessObject(expandArgv1) { +@@ -103,10 +103,12 @@ function patchProcessObject(expandArgv1) { if (expandArgv1 && process.argv[1] && !StringPrototypeStartsWith(process.argv[1], '-')) { // Expand process.argv[1] into a full path. diff --git a/patches/node/chore_read_nobrowserglobals_from_global_not_process.patch b/patches/node/chore_read_nobrowserglobals_from_global_not_process.patch index 0652152c0aa5e..046a66f06ab2f 100644 --- a/patches/node/chore_read_nobrowserglobals_from_global_not_process.patch +++ b/patches/node/chore_read_nobrowserglobals_from_global_not_process.patch @@ -7,7 +7,7 @@ This is used so that we can modify the flag at runtime where config can only be set at compile time. diff --git a/lib/internal/bootstrap/node.js b/lib/internal/bootstrap/node.js -index 8b70f79d2b278f2f6b15abc2eba5045b1ca503b4..bfc6edfae4b4b4f8b7ee2a97209e1801d7c2d4c9 100644 +index ef06d0563fa7452348754418867a56c9b8c6f4e1..a313402f93937cf2f1f93eb74422d9609e291d76 100644 --- a/lib/internal/bootstrap/node.js +++ b/lib/internal/bootstrap/node.js @@ -193,7 +193,7 @@ const { diff --git a/patches/node/enable_31_bit_smis_on_64bit_arch_and_ptr_compression.patch b/patches/node/enable_31_bit_smis_on_64bit_arch_and_ptr_compression.patch index d6c349bfb3b17..43443ecdeec02 100644 --- a/patches/node/enable_31_bit_smis_on_64bit_arch_and_ptr_compression.patch +++ b/patches/node/enable_31_bit_smis_on_64bit_arch_and_ptr_compression.patch @@ -8,7 +8,7 @@ node modules will have different (wrong) ideas about how v8 structs are laid out in memory on 64-bit machines, and will summarily fail to work. diff --git a/common.gypi b/common.gypi -index 9481fdb6dd4628833e60ae7099f03eca41edd057..60789d5553352563eb41a341860df70175153e4c 100644 +index 65729132b233dc5801f142f05a00253ac951e66a..e717a0b76513401daee6910502ea580485a20612 100644 --- a/common.gypi +++ b/common.gypi @@ -64,7 +64,7 @@ diff --git a/patches/node/feat_add_flags_for_low-level_hooks_and_exceptions.patch b/patches/node/feat_add_flags_for_low-level_hooks_and_exceptions.patch index 1cecd6827173f..819451d863bd1 100644 --- a/patches/node/feat_add_flags_for_low-level_hooks_and_exceptions.patch +++ b/patches/node/feat_add_flags_for_low-level_hooks_and_exceptions.patch @@ -24,7 +24,7 @@ Environment on the V8 context of blink, so no new V8 context is created. As a result, a renderer process may have multiple Node Environments in it. diff --git a/src/node.cc b/src/node.cc -index b60be116b6139bd4b7c10485bfdad2c1b905c995..c9d491f01651ef57fb793dda108469cb7ddccc5c 100644 +index 3ee25ebbd67a01d607456e5158c98ca2fdea396b..6302bb925339d709a54151a8fc8b58f1a2253881 100644 --- a/src/node.cc +++ b/src/node.cc @@ -139,6 +139,8 @@ using v8::Undefined; diff --git a/patches/node/feat_initialize_asar_support.patch b/patches/node/feat_initialize_asar_support.patch index 1063448ed0c01..8b528c67d8841 100644 --- a/patches/node/feat_initialize_asar_support.patch +++ b/patches/node/feat_initialize_asar_support.patch @@ -6,10 +6,10 @@ Subject: feat: initialize asar support This patch initializes asar support in Node.js. diff --git a/lib/internal/bootstrap/pre_execution.js b/lib/internal/bootstrap/pre_execution.js -index 83ccfe90c110657f54e068d522c3a75c7f19c75a..f7e9ffa74a4f19caa96680b3c955937f7ab31ea0 100644 +index 3b69844dc4ea0c4e17a74ea514c4f0dc390e3a61..c90a19d5eed72a55cb9ee89dd2471a32a30c1377 100644 --- a/lib/internal/bootstrap/pre_execution.js +++ b/lib/internal/bootstrap/pre_execution.js -@@ -74,6 +74,7 @@ function prepareMainThreadExecution(expandArgv1 = false) { +@@ -75,6 +75,7 @@ function prepareMainThreadExecution(expandArgv1 = false) { assert(!CJSLoader.hasLoadedAnyUserCJSModule); loadPreloadModules(); initializeFrozenIntrinsics(); @@ -17,7 +17,7 @@ index 83ccfe90c110657f54e068d522c3a75c7f19c75a..f7e9ffa74a4f19caa96680b3c955937f } function patchProcessObject(expandArgv1) { -@@ -469,6 +470,10 @@ function loadPreloadModules() { +@@ -475,6 +476,10 @@ function loadPreloadModules() { } } diff --git a/patches/node/fix_account_for_debugger_agent_race_condition.patch b/patches/node/fix_account_for_debugger_agent_race_condition.patch index 53712d260561b..e2c4b5401c958 100644 --- a/patches/node/fix_account_for_debugger_agent_race_condition.patch +++ b/patches/node/fix_account_for_debugger_agent_race_condition.patch @@ -9,10 +9,10 @@ errors. This is remedied by adding a small timeout to the test. We'll either upstream this or figure out a better solution. -diff --git a/test/sequential/test-debugger-address.js b/test/sequential/test-debugger-address.js -index ff31747016c2d49ac87fa272eba3231e9d4fbae5..e4f7b13aad3c60100e56df00165d1af550f1a117 100644 ---- a/test/sequential/test-debugger-address.js -+++ b/test/sequential/test-debugger-address.js +diff --git a/test/parallel/test-debugger-address.js b/test/parallel/test-debugger-address.js +index 95dd1c6e3f82835d5ccaf65544d654b71efaa392..ed8dccf91247068455dd593bb3e8c02bddc89ae5 100644 +--- a/test/parallel/test-debugger-address.js ++++ b/test/parallel/test-debugger-address.js @@ -59,6 +59,7 @@ function launchTarget(...args) { cli = startCLI([`${host || '127.0.0.1'}:${port}`]); return cli.waitForPrompt(); @@ -22,14 +22,14 @@ index ff31747016c2d49ac87fa272eba3231e9d4fbae5..e4f7b13aad3c60100e56df00165d1af5 .then(() => cli.waitFor(/break/)) .then(() => cli.waitForPrompt()) diff --git a/test/sequential/test-debugger-pid.js b/test/sequential/test-debugger-pid.js -index 97de9f40369d2d1df9674c6df5bbaf78022667c6..3d51a8963ba24e5e5f6a64cd792859535670dd9a 100644 +index 402c1f86dd4ed99b413eca5fce8a2db47797b11a..74ef0a1618ccf1f6671bbe2a03548eee6cd0b88c 100644 --- a/test/sequential/test-debugger-pid.js +++ b/test/sequential/test-debugger-pid.js -@@ -38,6 +38,7 @@ function launchTarget(...args) { - cli = startCLI(['-p', `${target.pid}`]); - return cli.waitForPrompt(); - }) -+ .then(() => new Promise(resolve => setTimeout(resolve, 1000))) +@@ -41,6 +41,7 @@ function launchTarget(...args) { .then(() => cli.command('sb("alive.js", 3)')) .then(() => cli.waitFor(/break/)) .then(() => cli.waitForPrompt()) ++ .then(() => new Promise(resolve => setTimeout(resolve, 1000))) + .then(() => { + assert.match( + cli.output, diff --git a/patches/node/fix_add_default_values_for_variables_in_common_gypi.patch b/patches/node/fix_add_default_values_for_variables_in_common_gypi.patch index 12d3a942ce205..f985d6a049ab2 100644 --- a/patches/node/fix_add_default_values_for_variables_in_common_gypi.patch +++ b/patches/node/fix_add_default_values_for_variables_in_common_gypi.patch @@ -7,7 +7,7 @@ common.gypi is a file that's included in the node header bundle, despite the fact that we do not build node with gyp. diff --git a/common.gypi b/common.gypi -index aa42c69f96391b72e5e3cbada27fd662cb0cc69d..9481fdb6dd4628833e60ae7099f03eca41edd057 100644 +index 71862791dae3be5f05fbe00b91df6240473debb1..65729132b233dc5801f142f05a00253ac951e66a 100644 --- a/common.gypi +++ b/common.gypi @@ -81,6 +81,23 @@ diff --git a/patches/node/fix_add_v8_enable_reverse_jsargs_defines_in_common_gypi.patch b/patches/node/fix_add_v8_enable_reverse_jsargs_defines_in_common_gypi.patch index 379d733faeb46..b77bb948eb69f 100644 --- a/patches/node/fix_add_v8_enable_reverse_jsargs_defines_in_common_gypi.patch +++ b/patches/node/fix_add_v8_enable_reverse_jsargs_defines_in_common_gypi.patch @@ -6,7 +6,7 @@ Subject: fix: add v8_enable_reverse_jsargs defines in common.gypi This can be removed once node upgrades V8 and inevitably has to do this exact same thing. Also hi node people if you are looking at this. diff --git a/common.gypi b/common.gypi -index 60789d5553352563eb41a341860df70175153e4c..9067a6a27606099ec5decbc4cd74283fced77711 100644 +index e717a0b76513401daee6910502ea580485a20612..e7c50b5e46624b537de3ffed51fc21a15b666dc8 100644 --- a/common.gypi +++ b/common.gypi @@ -65,6 +65,7 @@ diff --git a/patches/node/fix_allow_preventing_initializeinspector_in_env.patch b/patches/node/fix_allow_preventing_initializeinspector_in_env.patch index 90d78b470da5c..81fa7a2bf7361 100644 --- a/patches/node/fix_allow_preventing_initializeinspector_in_env.patch +++ b/patches/node/fix_allow_preventing_initializeinspector_in_env.patch @@ -51,10 +51,10 @@ index b3b1ea908253b9240cc37931f34b2a8c8c9fa3ab..dc37298aa0e13bb79030123f38070d02 return emit_filehandle_warning_; } diff --git a/src/env.h b/src/env.h -index 7b136f70fbad1e0a90406add90d5e538577e2a2b..eaf8a17c99aa6a4135c54616f68b15e0620e4378 100644 +index e1b89261fcb1e94220424aae2273db9fba010331..45210f074a0ca4d57f9fdc5019e8e82540b28b72 100644 --- a/src/env.h +++ b/src/env.h -@@ -1197,6 +1197,7 @@ class Environment : public MemoryRetainer { +@@ -1199,6 +1199,7 @@ class Environment : public MemoryRetainer { inline bool owns_process_state() const; inline bool owns_inspector() const; inline bool tracks_unmanaged_fds() const; diff --git a/patches/node/fix_crypto_tests_to_run_with_bssl.patch b/patches/node/fix_crypto_tests_to_run_with_bssl.patch index 0afc772784b05..82ee71b2e31bf 100644 --- a/patches/node/fix_crypto_tests_to_run_with_bssl.patch +++ b/patches/node/fix_crypto_tests_to_run_with_bssl.patch @@ -428,19 +428,6 @@ index cae9301517c37c7e90292d71fe5a6086cf55e0be..b9bc86e4d8b897cec583dea16f64f680 }; } -diff --git a/test/parallel/test-crypto-ecdh-convert-key.js b/test/parallel/test-crypto-ecdh-convert-key.js -index f4d5a651ed6b888d3527a462ab5fccee58ea48b6..c0046099df9ec0c7a33ed9baa2127da849871001 100644 ---- a/test/parallel/test-crypto-ecdh-convert-key.js -+++ b/test/parallel/test-crypto-ecdh-convert-key.js -@@ -117,7 +117,7 @@ if (getCurves().includes('secp256k1')) { - // rather than Node's generic error message. - const badKey = 'f'.repeat(128); - assert.throws( -- () => ECDH.convertKey(badKey, 'secp256k1', 'hex', 'hex', 'compressed'), -+ () => ECDH.convertKey(badKey, 'secp521r1', 'hex', 'hex', 'compressed'), - /Failed to convert Buffer to EC_POINT/); - - // Next statement should not throw an exception. diff --git a/test/parallel/test-crypto-getcipherinfo.js b/test/parallel/test-crypto-getcipherinfo.js index 98d2a52eceac4bc564fd2878f77b50c336a67a66..bcb2de6e354c26816000f2400d9c1d46de01888a 100644 --- a/test/parallel/test-crypto-getcipherinfo.js diff --git a/patches/node/fix_handle_boringssl_and_openssl_incompatibilities.patch b/patches/node/fix_handle_boringssl_and_openssl_incompatibilities.patch index 1f7b528664ae0..ef0e86ff6c081 100644 --- a/patches/node/fix_handle_boringssl_and_openssl_incompatibilities.patch +++ b/patches/node/fix_handle_boringssl_and_openssl_incompatibilities.patch @@ -186,19 +186,6 @@ index 271db427fa8539feb30c1712574976fb1f623e91..b2b6af1f9e6db54bdff0be7a567255f4 if (EVP_PKEY_paramgen(param_ctx.get(), &raw_params) <= 0) return EVPKeyCtxPointer(); -diff --git a/src/crypto/crypto_ec.cc b/src/crypto/crypto_ec.cc -index ea4c70ad5d8c844860ba3480fc7ef4205f0a3cdc..cdf8dd47d6e2a5894066cec01fbe347af079ec22 100644 ---- a/src/crypto/crypto_ec.cc -+++ b/src/crypto/crypto_ec.cc -@@ -314,7 +314,7 @@ void ECDH::SetPrivateKey(const FunctionCallbackInfo& args) { - return THROW_ERR_CRYPTO_OPERATION_FAILED(env, - "Failed to set generated public key"); - -- EC_KEY_copy(ecdh->key_.get(), new_key.get()); -+ ecdh->key_.reset(EC_KEY_dup(new_key.get())); - ecdh->group_ = EC_KEY_get0_group(ecdh->key_.get()); - } - diff --git a/src/crypto/crypto_hkdf.cc b/src/crypto/crypto_hkdf.cc index 0aa96ada47abe4b66fb616c665101278bbe0afb6..1e9a4863c5faea5f6b275483ca16f3a6e8dac25b 100644 --- a/src/crypto/crypto_hkdf.cc @@ -248,26 +235,10 @@ index 7b113a8dcb06b0b0e1329ce0daf7305598ea6545..b04e53a7f24885ffb6639430988d0ffb const EC_KEY* ec_key = EVP_PKEY_get0_EC_KEY(pkey.get()); const EC_GROUP* ec_group = EC_KEY_get0_group(ec_key); diff --git a/src/crypto/crypto_util.cc b/src/crypto/crypto_util.cc -index 13c40dcb757661220288465c39101de0b4018e90..7d1d4400319292a8ddf3afe013b5678f84c25576 100644 +index f18304cd655842e999a39659315c4eb3ce1c0c6e..1aed0e7e88460cea63950f71dac502829d662cff 100644 --- a/src/crypto/crypto_util.cc +++ b/src/crypto/crypto_util.cc -@@ -139,7 +139,6 @@ void InitCryptoOnce() { - OPENSSL_init_ssl(0, settings); - OPENSSL_INIT_free(settings); - settings = nullptr; --#endif - - #ifndef _WIN32 - if (per_process::cli_options->secure_heap != 0) { -@@ -160,6 +159,7 @@ void InitCryptoOnce() { - } - #endif - -+#endif - // Turn off compression. Saves memory and protects against CRIME attacks. - // No-op with OPENSSL_NO_COMP builds of OpenSSL. - sk_SSL_COMP_zero(SSL_COMP_get_compression_methods()); -@@ -490,24 +490,14 @@ Maybe Decorate(Environment* env, Local obj, +@@ -491,24 +491,14 @@ Maybe Decorate(Environment* env, Local obj, V(BIO) \ V(PKCS7) \ V(X509V3) \ @@ -292,7 +263,7 @@ index 13c40dcb757661220288465c39101de0b4018e90..7d1d4400319292a8ddf3afe013b5678f V(USER) \ #define V(name) case ERR_LIB_##name: lib = #name "_"; break; -@@ -667,7 +657,7 @@ void SecureBuffer(const FunctionCallbackInfo& args) { +@@ -668,7 +658,7 @@ void SecureBuffer(const FunctionCallbackInfo& args) { CHECK(args[0]->IsUint32()); Environment* env = Environment::GetCurrent(args); uint32_t len = args[0].As()->Value(); @@ -301,7 +272,7 @@ index 13c40dcb757661220288465c39101de0b4018e90..7d1d4400319292a8ddf3afe013b5678f if (data == nullptr) { // There's no memory available for the allocation. // Return nothing. -@@ -679,7 +669,7 @@ void SecureBuffer(const FunctionCallbackInfo& args) { +@@ -680,7 +670,7 @@ void SecureBuffer(const FunctionCallbackInfo& args) { data, len, [](void* data, size_t len, void* deleter_data) { @@ -310,7 +281,7 @@ index 13c40dcb757661220288465c39101de0b4018e90..7d1d4400319292a8ddf3afe013b5678f }, data); Local buffer = ArrayBuffer::New(env->isolate(), store); -@@ -687,10 +677,12 @@ void SecureBuffer(const FunctionCallbackInfo& args) { +@@ -688,10 +678,12 @@ void SecureBuffer(const FunctionCallbackInfo& args) { } void SecureHeapUsed(const FunctionCallbackInfo& args) { @@ -337,19 +308,6 @@ index ac95612a0b1a856d7fe07efde59786e811f1b98d..aa62753d7c929027f5265fa4330b0429 #include #include #include -diff --git a/src/node.cc b/src/node.cc -index c9d491f01651ef57fb793dda108469cb7ddccc5c..6a55535b5c6ef72b1cdb366299840a2e78643911 100644 ---- a/src/node.cc -+++ b/src/node.cc -@@ -1035,7 +1035,7 @@ InitializationResult InitializeOncePerProcess( - } - - if (init_flags & kInitOpenSSL) { --#if HAVE_OPENSSL -+#if HAVE_OPENSSL && !defined(OPENSSL_IS_BORINGSSL) - { - std::string extra_ca_certs; - if (credentials::SafeGetenv("NODE_EXTRA_CA_CERTS", &extra_ca_certs)) diff --git a/src/node_metadata.h b/src/node_metadata.h index 4486d5af2c1622c7c8f44401dc3ebb986d8e3c2e..db1769f1b3f1617ed8dbbea57b5e324183b42be2 100644 --- a/src/node_metadata.h diff --git a/patches/node/fixme_comment_trace_event_macro.patch b/patches/node/fixme_comment_trace_event_macro.patch index c595b490418ac..dcb9e1f794760 100644 --- a/patches/node/fixme_comment_trace_event_macro.patch +++ b/patches/node/fixme_comment_trace_event_macro.patch @@ -7,10 +7,10 @@ This broke the build at some point. Does it still? We should probably remove this patch and find out! diff --git a/src/node_internals.h b/src/node_internals.h -index 31076551e70c46da2c32cafd7ac08aee91366537..d57c51ebcc3c9dda1ef41b10ee49453839781deb 100644 +index 8f7929994f3243fbd58b47374dfcadafb1feda8f..c333dc3464d2a23437fa22659d38dd17b6678112 100644 --- a/src/node_internals.h +++ b/src/node_internals.h -@@ -391,10 +391,11 @@ class TraceEventScope { +@@ -386,10 +386,11 @@ class TraceEventScope { TraceEventScope(const char* category, const char* name, void* id) : category_(category), name_(name), id_(id) { diff --git a/patches/node/refactor_allow_embedder_overriding_of_internal_fs_calls.patch b/patches/node/refactor_allow_embedder_overriding_of_internal_fs_calls.patch index 255124f64424a..2f3a9fd388cfc 100644 --- a/patches/node/refactor_allow_embedder_overriding_of_internal_fs_calls.patch +++ b/patches/node/refactor_allow_embedder_overriding_of_internal_fs_calls.patch @@ -7,7 +7,7 @@ We use this to allow node's 'fs' module to read from ASAR files as if they were a real filesystem. diff --git a/lib/internal/bootstrap/node.js b/lib/internal/bootstrap/node.js -index 863d4ef5608bcebc9b49c3988509be9cfb18b6cd..8b70f79d2b278f2f6b15abc2eba5045b1ca503b4 100644 +index 58f7396990dddb7dd4cf3d23fcdcc1d48f52623e..ef06d0563fa7452348754418867a56c9b8c6f4e1 100644 --- a/lib/internal/bootstrap/node.js +++ b/lib/internal/bootstrap/node.js @@ -62,6 +62,10 @@ setupBuffer(); diff --git a/script/spec-runner.js b/script/spec-runner.js index 7775eb3b5460f..31162d32a76e1 100755 --- a/script/spec-runner.js +++ b/script/spec-runner.js @@ -13,7 +13,7 @@ const fail = '✗'.red; const args = require('minimist')(process.argv, { string: ['runners', 'target'], - boolean: ['buildNativeTests'], + boolean: ['buildNativeTests', 'runTestFilesSeperately'], unknown: arg => unknownFlags.push(arg) }); @@ -123,24 +123,55 @@ async function runElectronTests () { } } -async function runRemoteBasedElectronTests () { +async function runTestUsingElectron (specDir, testName) { let exe = path.resolve(BASE, utils.getElectronExec()); - const runnerArgs = ['electron/spec', ...unknownArgs.slice(2)]; + const runnerArgs = [`electron/${specDir}`, ...unknownArgs.slice(2)]; if (process.platform === 'linux') { runnerArgs.unshift(path.resolve(__dirname, 'dbus_mock.py'), exe); exe = 'python3'; } - - const { status } = childProcess.spawnSync(exe, runnerArgs, { + const { status, signal } = childProcess.spawnSync(exe, runnerArgs, { cwd: path.resolve(__dirname, '../..'), stdio: 'inherit' }); if (status !== 0) { - const textStatus = process.platform === 'win32' ? `0x${status.toString(16)}` : status.toString(); - console.log(`${fail} Electron tests failed with code ${textStatus}.`); + if (status) { + const textStatus = process.platform === 'win32' ? `0x${status.toString(16)}` : status.toString(); + console.log(`${fail} Electron tests failed with code ${textStatus}.`); + } else { + console.log(`${fail} Electron tests failed with kill signal ${signal}.`); + } process.exit(1); } - console.log(`${pass} Electron remote process tests passed.`); + console.log(`${pass} Electron ${testName} process tests passed.`); +} + +const specFilter = (file) => { + if (!/-spec\.[tj]s$/.test(file)) { + return false; + } else { + return true; + } +}; + +async function runTests (specDir, testName) { + if (args.runTestFilesSeperately) { + const getFiles = require('../spec/static/get-files'); + const testFiles = await getFiles(path.resolve(__dirname, `../${specDir}`), { filter: specFilter }); + const baseElectronDir = path.resolve(__dirname, '..'); + unknownArgs.splice(unknownArgs.length, 0, '--files', ''); + testFiles.sort().forEach(async (file) => { + unknownArgs.splice((unknownArgs.length - 1), 1, path.relative(baseElectronDir, file)); + console.log(`Running tests for ${unknownArgs[unknownArgs.length - 1]}`); + await runTestUsingElectron(specDir, testName); + }); + } else { + await runTestUsingElectron(specDir, testName); + } +} + +async function runRemoteBasedElectronTests () { + await runTests('spec', 'remote'); } async function runNativeElectronTests () { @@ -195,27 +226,7 @@ async function runNativeElectronTests () { } async function runMainProcessElectronTests () { - let exe = path.resolve(BASE, utils.getElectronExec()); - const runnerArgs = ['electron/spec-main', ...unknownArgs.slice(2)]; - if (process.platform === 'linux') { - runnerArgs.unshift(path.resolve(__dirname, 'dbus_mock.py'), exe); - exe = 'python3'; - } - - const { status, signal } = childProcess.spawnSync(exe, runnerArgs, { - cwd: path.resolve(__dirname, '../..'), - stdio: 'inherit' - }); - if (status !== 0) { - if (status) { - const textStatus = process.platform === 'win32' ? `0x${status.toString(16)}` : status.toString(); - console.log(`${fail} Electron tests failed with code ${textStatus}.`); - } else { - console.log(`${fail} Electron tests failed with kill signal ${signal}.`); - } - process.exit(1); - } - console.log(`${pass} Electron main process tests passed.`); + await runTests('spec-main', 'main'); } async function installSpecModules (dir) {