From f9b8a9be6b18adb6048c4dfa0c8c4c252399207c Mon Sep 17 00:00:00 2001 From: eabdullin Date: Wed, 12 Nov 2025 09:04:01 +0000 Subject: [PATCH] Import from CS git --- .gitignore | 6 +- .nodejs.metadata | 6 +- ...1-Disable-running-gyp-on-shared-deps.patch | 31 - .../0001-Remove-unused-OpenSSL-config.patch | 46 + SOURCES/0001-fips-disable-options.patch | 84 + ...ess-NPM-message-to-run-global-update.patch | 84 - ...ICU-data-from-with-icu-default-data-.patch | 122 - ...8n-prototype-pollution-vulnerability.patch | 13 - ...or-GCC-15-compiler-error-on-PPC8-PPC.patch | 265 ++ SOURCES/{btest402.js => i18n-btest402.js} | 0 SOURCES/nodejs-tarball.sh | 189 -- SOURCES/nodejs.pc.in | 9 + SOURCES/nodejs.srpm.macros | 142 + SOURCES/nodejs_native.attr | 2 - SOURCES/npmrc | 1 - SOURCES/npmrc.in | 7 + SOURCES/test-runner.sh | 61 + SOURCES/test-should-pass.txt | 2736 +++++++++++++++++ SOURCES/v8.pc.in | 9 + SPECS/nodejs.spec | 1286 +++----- 20 files changed, 3843 insertions(+), 1256 deletions(-) delete mode 100644 SOURCES/0001-Disable-running-gyp-on-shared-deps.patch create mode 100644 SOURCES/0001-Remove-unused-OpenSSL-config.patch create mode 100644 SOURCES/0001-fips-disable-options.patch delete mode 100644 SOURCES/0002-Suppress-NPM-message-to-run-global-update.patch delete mode 100644 SOURCES/0003-build-auto-load-ICU-data-from-with-icu-default-data-.patch delete mode 100644 SOURCES/0004-CVE-2020-7774-nodejs-y18n-prototype-pollution-vulnerability.patch create mode 100644 SOURCES/0005-v8-highway-Fix-for-GCC-15-compiler-error-on-PPC8-PPC.patch rename SOURCES/{btest402.js => i18n-btest402.js} (100%) delete mode 100755 SOURCES/nodejs-tarball.sh create mode 100644 SOURCES/nodejs.pc.in create mode 100644 SOURCES/nodejs.srpm.macros delete mode 100644 SOURCES/nodejs_native.attr delete mode 100644 SOURCES/npmrc create mode 100644 SOURCES/npmrc.in create mode 100755 SOURCES/test-runner.sh create mode 100644 SOURCES/test-should-pass.txt create mode 100644 SOURCES/v8.pc.in diff --git a/.gitignore b/.gitignore index eb6e49f..0148a9b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,4 @@ -SOURCES/icu4c-64_2-src.tgz -SOURCES/node-v10.24.0-stripped.tar.gz +SOURCES/icu4c-77_1-data-bin-b.zip +SOURCES/icu4c-77_1-data-bin-l.zip +SOURCES/node-v24.4.1-stripped.tar.gz +SOURCES/packaging-scripts.tar.gz diff --git a/.nodejs.metadata b/.nodejs.metadata index fac6a06..dd1364a 100644 --- a/.nodejs.metadata +++ b/.nodejs.metadata @@ -1,2 +1,4 @@ -3127155ecf2b75ab4835f501b7478e39c07bb852 SOURCES/icu4c-64_2-src.tgz -be0e0b385a852c376f452b3d94727492e05407e4 SOURCES/node-v10.24.0-stripped.tar.gz +c459faa36dedc60af6a0c6d5b9b84b6198389bf0 SOURCES/icu4c-77_1-data-bin-b.zip +c602459f93a43dfe7440686b46430e93a85dfc06 SOURCES/icu4c-77_1-data-bin-l.zip +1a7cc2ee75998e4207071e177ed9e870b3c1f2b7 SOURCES/node-v24.4.1-stripped.tar.gz +4dc40674c8b9a94ba977ea7b018f9a92c84b9b53 SOURCES/packaging-scripts.tar.gz diff --git a/SOURCES/0001-Disable-running-gyp-on-shared-deps.patch b/SOURCES/0001-Disable-running-gyp-on-shared-deps.patch deleted file mode 100644 index 51d360f..0000000 --- a/SOURCES/0001-Disable-running-gyp-on-shared-deps.patch +++ /dev/null @@ -1,31 +0,0 @@ -From 2cd4c12776af3da588231d3eb498e6451c30eae5 Mon Sep 17 00:00:00 2001 -From: Zuzana Svetlikova -Date: Thu, 27 Apr 2017 14:25:42 +0200 -Subject: [PATCH] Disable running gyp on shared deps - -Signed-off-by: rpm-build ---- - Makefile | 7 +++---- - 1 file changed, 3 insertions(+), 4 deletions(-) - -diff --git a/Makefile b/Makefile -index 73feb4c..45bbceb 100644 ---- a/Makefile -+++ b/Makefile -@@ -123,10 +123,9 @@ with-code-cache: - test-code-cache: with-code-cache - $(PYTHON) tools/test.py $(PARALLEL_ARGS) --mode=$(BUILDTYPE_LOWER) code-cache - --out/Makefile: common.gypi deps/uv/uv.gyp deps/http_parser/http_parser.gyp \ -- deps/zlib/zlib.gyp deps/v8/gypfiles/toolchain.gypi \ -- deps/v8/gypfiles/features.gypi deps/v8/gypfiles/v8.gyp node.gyp \ -- config.gypi -+out/Makefile: common.gypi deps/http_parser/http_parser.gyp \ -+ deps/v8/gypfiles/toolchain.gypi deps/v8/gypfiles/features.gypi \ -+ deps/v8/gypfiles/v8.gyp node.gyp config.gypi - $(PYTHON) tools/gyp_node.py -f make - - config.gypi: configure configure.py --- -2.26.2 - diff --git a/SOURCES/0001-Remove-unused-OpenSSL-config.patch b/SOURCES/0001-Remove-unused-OpenSSL-config.patch new file mode 100644 index 0000000..5ad7382 --- /dev/null +++ b/SOURCES/0001-Remove-unused-OpenSSL-config.patch @@ -0,0 +1,46 @@ +From e93d9b5fdcd8e5744de629461c03a07de2252f8f Mon Sep 17 00:00:00 2001 +From: Stephen Gallagher +Date: Fri, 17 Apr 2020 12:59:44 +0200 +Subject: [PATCH] Remove unused OpenSSL config + +The build process will try to create these config files, even when +using the system OpenSSL and will thus fail since we strip this path +from the tarball. + +Signed-off-by: Stephen Gallagher +Signed-off-by: rpm-build +--- + node.gyp | 17 ----------------- + 1 file changed, 17 deletions(-) + +diff --git a/node.gyp b/node.gyp +index 1147495..da6ea50 100644 +--- a/node.gyp ++++ b/node.gyp +@@ -822,23 +822,6 @@ + ], + }, + ], +- }, { +- 'variables': { +- 'opensslconfig_internal': '<(obj_dir)/deps/openssl/openssl.cnf', +- 'opensslconfig': './deps/openssl/nodejs-openssl.cnf', +- }, +- 'actions': [ +- { +- 'action_name': 'reset_openssl_cnf', +- 'inputs': [ '<(opensslconfig)', ], +- 'outputs': [ '<(opensslconfig_internal)', ], +- 'action': [ +- '<(python)', 'tools/copyfile.py', +- '<(opensslconfig)', +- '<(opensslconfig_internal)', +- ], +- }, +- ], + }], + ], + }, # node_core_target_name +-- +2.47.0 + diff --git a/SOURCES/0001-fips-disable-options.patch b/SOURCES/0001-fips-disable-options.patch new file mode 100644 index 0000000..8492594 --- /dev/null +++ b/SOURCES/0001-fips-disable-options.patch @@ -0,0 +1,84 @@ +From 98738d27288bd9ca634e29181ef665e812e7bbd3 Mon Sep 17 00:00:00 2001 +From: Michael Dawson +Date: Fri, 23 Feb 2024 13:43:56 +0100 +Subject: [PATCH] Disable FIPS options + +On RHEL, FIPS should be configured only on system level. +Additionally, the related options may cause segfault when used on RHEL. + +This patch causes the option processing to end sooner +than the problematic code gets executed. +Additionally, the JS-level options to mess with FIPS settings +are similarly disabled. + +Upstream report: https://github.com/nodejs/node/pull/48950 +RHBZ: https://bugzilla.redhat.com/show_bug.cgi?id=2226726 +--- + lib/crypto.js | 10 ++++++++++ + lib/internal/errors.js | 6 ++++++ + src/crypto/crypto_util.cc | 2 ++ + 3 files changed, 18 insertions(+) + +diff --git a/lib/crypto.js b/lib/crypto.js +index 41adecc..b2627ac 100644 +--- a/lib/crypto.js ++++ b/lib/crypto.js +@@ -36,7 +36,10 @@ const { + assertCrypto(); + + const { ++ // RHEL specific error ++ ERR_CRYPTO_FIPS_SYSTEM_CONTROLLED, ++ + ERR_CRYPTO_FIPS_FORCED, + ERR_WORKER_UNSUPPORTED_OPERATION, + } = require('internal/errors').codes; + const constants = internalBinding('constants').crypto; +@@ -251,6 +254,13 @@ function getFips() { + } + + function setFips(val) { ++ // in RHEL FIPS enable/disable should only be done at system level ++ if (getFips() != val) { ++ throw new ERR_CRYPTO_FIPS_SYSTEM_CONTROLLED(); ++ } else { ++ return; ++ } ++ + if (getOptionValue('--force-fips')) { + if (val) return; + throw new ERR_CRYPTO_FIPS_FORCED(); +diff --git a/lib/internal/errors.js b/lib/internal/errors.js +index a722360..04d8a53 100644 +--- a/lib/internal/errors.js ++++ b/lib/internal/errors.js +@@ -1111,6 +1111,12 @@ module.exports = { + // + // Note: Node.js specific errors must begin with the prefix ERR_ + ++// insert RHEL specific erro ++E('ERR_CRYPTO_FIPS_SYSTEM_CONTROLLED', ++ 'Cannot set FIPS mode. FIPS should be enabled/disabled at system level. See' + ++ 'https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/9/html/security_hardening/assembly_installing-the-system-in-fips-mode_security-hardening for more details.\n', ++ Error); ++ + E('ERR_ACCESS_DENIED', + function(msg, permission = '', resource = '') { + this.permission = permission; +diff --git a/src/crypto/crypto_util.cc b/src/crypto/crypto_util.cc +index 5734d8f..ef9d1b1 100644 +--- a/src/crypto/crypto_util.cc ++++ b/src/crypto/crypto_util.cc +@@ -86,6 +86,8 @@ bool ProcessFipsOptions() { + /* Override FIPS settings in configuration file, if needed. */ + if (per_process::cli_options->enable_fips_crypto || + per_process::cli_options->force_fips_crypto) { ++ fprintf(stderr, "ERROR: Using options related to FIPS is not recommended, configure FIPS in openssl instead. See https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/9/html/security_hardening/assembly_installing-the-system-in-fips-mode_security-hardening for more details.\n"); ++ return false; + #if OPENSSL_VERSION_MAJOR >= 3 + if (!ncrypto::testFipsEnabled()) return false; + return ncrypto::setFipsEnabled(true, nullptr); +-- +2.43.2 + + diff --git a/SOURCES/0002-Suppress-NPM-message-to-run-global-update.patch b/SOURCES/0002-Suppress-NPM-message-to-run-global-update.patch deleted file mode 100644 index e1b721f..0000000 --- a/SOURCES/0002-Suppress-NPM-message-to-run-global-update.patch +++ /dev/null @@ -1,84 +0,0 @@ -From e7afb2d6e2a6c8f9c9c32e12a10c3c5c4902a251 Mon Sep 17 00:00:00 2001 -From: Stephen Gallagher -Date: Tue, 1 May 2018 08:05:30 -0400 -Subject: [PATCH] Suppress NPM message to run global update - -Signed-off-by: Stephen Gallagher -Signed-off-by: rpm-build ---- - deps/npm/bin/npm-cli.js | 54 ----------------------------------------- - 1 file changed, 54 deletions(-) - -diff --git a/deps/npm/bin/npm-cli.js b/deps/npm/bin/npm-cli.js -index c0d9be0..0f0892e 100755 ---- a/deps/npm/bin/npm-cli.js -+++ b/deps/npm/bin/npm-cli.js -@@ -71,65 +71,11 @@ - npm.command = 'help' - } - -- var isGlobalNpmUpdate = conf.global && ['install', 'update'].includes(npm.command) && npm.argv.includes('npm') -- - // now actually fire up npm and run the command. - // this is how to use npm programmatically: - conf._exit = true - npm.load(conf, function (er) { - if (er) return errorHandler(er) -- if ( -- !isGlobalNpmUpdate && -- npm.config.get('update-notifier') && -- !unsupported.checkVersion(process.version).unsupported -- ) { -- const pkg = require('../package.json') -- let notifier = require('update-notifier')({pkg}) -- const isCI = require('ci-info').isCI -- if ( -- notifier.update && -- notifier.update.latest !== pkg.version && -- !isCI -- ) { -- const color = require('ansicolors') -- const useColor = npm.config.get('color') -- const useUnicode = npm.config.get('unicode') -- const old = notifier.update.current -- const latest = notifier.update.latest -- let type = notifier.update.type -- if (useColor) { -- switch (type) { -- case 'major': -- type = color.red(type) -- break -- case 'minor': -- type = color.yellow(type) -- break -- case 'patch': -- type = color.green(type) -- break -- } -- } -- const changelog = `https://github.com/npm/cli/releases/tag/v${latest}` -- notifier.notify({ -- message: `New ${type} version of ${pkg.name} available! ${ -- useColor ? color.red(old) : old -- } ${useUnicode ? '→' : '->'} ${ -- useColor ? color.green(latest) : latest -- }\n` + -- `${ -- useColor ? color.yellow('Changelog:') : 'Changelog:' -- } ${ -- useColor ? color.cyan(changelog) : changelog -- }\n` + -- `Run ${ -- useColor -- ? color.green(`npm install -g ${pkg.name}`) -- : `npm i -g ${pkg.name}` -- } to update!` -- }) -- } -- } - npm.commands[npm.command](npm.argv, function (err) { - // https://genius.com/Lin-manuel-miranda-your-obedient-servant-lyrics - if ( --- -2.26.2 - diff --git a/SOURCES/0003-build-auto-load-ICU-data-from-with-icu-default-data-.patch b/SOURCES/0003-build-auto-load-ICU-data-from-with-icu-default-data-.patch deleted file mode 100644 index 14d39ae..0000000 --- a/SOURCES/0003-build-auto-load-ICU-data-from-with-icu-default-data-.patch +++ /dev/null @@ -1,122 +0,0 @@ -From 0028cc74dac4dd24b8599ade85cb49fdafa9f559 Mon Sep 17 00:00:00 2001 -From: Stephen Gallagher -Date: Fri, 6 Dec 2019 16:40:25 -0500 -Subject: [PATCH] build: auto-load ICU data from --with-icu-default-data-dir - -When compiled with `--with-intl=small` and -`--with-icu-default-data-dir=PATH`, Node.js will use PATH as a -fallback location for the ICU data. - -We will first perform an access check using fopen(PATH, 'r') to -ensure that the file is readable. If it is, we'll set the -icu_data_directory and proceed. There's a slight overhead for the -fopen() check, but it should be barely measurable. - -This will be useful for Linux distribution packagers who want to -be able to ship a minimal node binary in a container image but -also be able to add on the full i18n support where needed. With -this patch, it becomes possible to ship the interpreter as -/usr/bin/node in one package for the distribution and to ship the -data files in another package (without a strict dependency -between the two). This means that users of the distribution will -not need to explicitly direct Node.js to locate the ICU data. It -also means that in environments where full internationalization is -not required, they do not need to carry the extra content (with -the associated storage costs). - -Refs: https://github.com/nodejs/node/issues/3460 - -Signed-off-by: Stephen Gallagher -Signed-off-by: rpm-build ---- - configure.py | 9 +++++++++ - node.gypi | 7 +++++++ - src/node.cc | 20 ++++++++++++++++++++ - 3 files changed, 36 insertions(+) - -diff --git a/configure.py b/configure.py -index 89f7bf5..d611a88 100755 ---- a/configure.py -+++ b/configure.py -@@ -433,6 +433,14 @@ intl_optgroup.add_option('--with-icu-source', - 'the icu4c source archive. ' - 'v%d.x or later recommended.' % icu_versions['minimum_icu']) - -+intl_optgroup.add_option('--with-icu-default-data-dir', -+ action='store', -+ dest='with_icu_default_data_dir', -+ help='Path to the icuXXdt{lb}.dat file. If unspecified, ICU data will ' -+ 'only be read if the NODE_ICU_DATA environment variable or the ' -+ '--icu-data-dir runtime argument is used. This option has effect ' -+ 'only when Node.js is built with --with-intl=small-icu.') -+ - parser.add_option('--with-ltcg', - action='store_true', - dest='with_ltcg', -@@ -1359,6 +1367,7 @@ def configure_intl(o): - locs.add('root') # must have root - o['variables']['icu_locales'] = string.join(locs,',') - # We will check a bit later if we can use the canned deps/icu-small -+ o['variables']['icu_default_data'] = options.with_icu_default_data_dir or '' - elif with_intl == 'full-icu': - # full ICU - o['variables']['v8_enable_i18n_support'] = 1 -diff --git a/node.gypi b/node.gypi -index 466a174..65b97d6 100644 ---- a/node.gypi -+++ b/node.gypi -@@ -113,6 +113,13 @@ - 'conditions': [ - [ 'icu_small=="true"', { - 'defines': [ 'NODE_HAVE_SMALL_ICU=1' ], -+ 'conditions': [ -+ [ 'icu_default_data!=""', { -+ 'defines': [ -+ 'NODE_ICU_DEFAULT_DATA_DIR="<(icu_default_data)"', -+ ], -+ }], -+ ], - }]], - }], - [ 'node_use_bundled_v8=="true" and \ -diff --git a/src/node.cc b/src/node.cc -index 7c01187..c9840e3 100644 ---- a/src/node.cc -+++ b/src/node.cc -@@ -92,6 +92,7 @@ - - #if defined(NODE_HAVE_I18N_SUPPORT) - #include -+#include - #endif - - #if defined(LEAK_SANITIZER) -@@ -2643,6 +2644,25 @@ void Init(std::vector* argv, - // If the parameter isn't given, use the env variable. - if (per_process_opts->icu_data_dir.empty()) - SafeGetenv("NODE_ICU_DATA", &per_process_opts->icu_data_dir); -+ -+#ifdef NODE_ICU_DEFAULT_DATA_DIR -+ // If neither the CLI option nor the environment variable was specified, -+ // fall back to the configured default -+ if (per_process_opts->icu_data_dir.empty()) { -+ // Check whether the NODE_ICU_DEFAULT_DATA_DIR contains the right data -+ // file and can be read. -+ static const char full_path[] = -+ NODE_ICU_DEFAULT_DATA_DIR "/" U_ICUDATA_NAME ".dat"; -+ -+ FILE* f = fopen(full_path, "rb"); -+ -+ if (f != nullptr) { -+ fclose(f); -+ per_process_opts->icu_data_dir = NODE_ICU_DEFAULT_DATA_DIR; -+ } -+ } -+#endif // NODE_ICU_DEFAULT_DATA_DIR -+ - // Initialize ICU. - // If icu_data_dir is empty here, it will load the 'minimal' data. - if (!i18n::InitializeICUDirectory(per_process_opts->icu_data_dir)) { --- -2.26.2 - diff --git a/SOURCES/0004-CVE-2020-7774-nodejs-y18n-prototype-pollution-vulnerability.patch b/SOURCES/0004-CVE-2020-7774-nodejs-y18n-prototype-pollution-vulnerability.patch deleted file mode 100644 index 88a9d75..0000000 --- a/SOURCES/0004-CVE-2020-7774-nodejs-y18n-prototype-pollution-vulnerability.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/deps/npm/node_modules/y18n/index.js b/deps/npm/node_modules/y18n/index.js -index d720681628..727362aac0 100644 ---- a/deps/npm/node_modules/y18n/index.js -+++ b/deps/npm/node_modules/y18n/index.js -@@ -11,7 +11,7 @@ function Y18N (opts) { - this.fallbackToLanguage = typeof opts.fallbackToLanguage === 'boolean' ? opts.fallbackToLanguage : true - - // internal stuff. -- this.cache = {} -+ this.cache = Object.create(null) - this.writeQueue = [] - } - diff --git a/SOURCES/0005-v8-highway-Fix-for-GCC-15-compiler-error-on-PPC8-PPC.patch b/SOURCES/0005-v8-highway-Fix-for-GCC-15-compiler-error-on-PPC8-PPC.patch new file mode 100644 index 0000000..815bbd7 --- /dev/null +++ b/SOURCES/0005-v8-highway-Fix-for-GCC-15-compiler-error-on-PPC8-PPC.patch @@ -0,0 +1,265 @@ +From 4208b7849eeee5c2aa76d692e2624bd80422057d Mon Sep 17 00:00:00 2001 +From: John Platts +Date: Fri, 17 Jan 2025 12:16:49 -0600 +Subject: [PATCH] v8(highway): Fix for GCC 15 compiler error on PPC8/PPC9/PPC10 + +Signed-off-by: rpm-build +--- + .../highway/src/hwy/ops/ppc_vsx-inl.h | 167 +++++++++++------- + 1 file changed, 103 insertions(+), 64 deletions(-) + +diff --git a/deps/v8/third_party/highway/src/hwy/ops/ppc_vsx-inl.h b/deps/v8/third_party/highway/src/hwy/ops/ppc_vsx-inl.h +index d216c54..73e736e 100644 +--- a/deps/v8/third_party/highway/src/hwy/ops/ppc_vsx-inl.h ++++ b/deps/v8/third_party/highway/src/hwy/ops/ppc_vsx-inl.h +@@ -3701,16 +3701,73 @@ static HWY_INLINE V VsxF2INormalizeSrcVals(V v) { + #endif + } + ++template ++static HWY_INLINE HWY_MAYBE_UNUSED VFromD>> ++VsxXvcvspsxds(VF32 vf32) { ++ using VI64 = VFromD>>; ++#if (HWY_COMPILER_GCC_ACTUAL && HWY_COMPILER_GCC_ACTUAL < 1500) || \ ++ HWY_HAS_BUILTIN(__builtin_vsx_xvcvspsxds) ++ // Use __builtin_vsx_xvcvspsxds if it is available (which is the case with ++ // GCC 4.8 through GCC 14 or Clang 13 or later on PPC8/PPC9/PPC10) ++ return VI64{__builtin_vsx_xvcvspsxds(vf32.raw)}; ++#elif HWY_COMPILER_GCC_ACTUAL >= 1500 && HWY_IS_LITTLE_ENDIAN ++ // On little-endian PPC8/PPC9/PPC10 with GCC 15 or later, use the F32->I64 ++ // vec_signedo intrinsic as the __builtin_vsx_xvcvspsxds intrinsic has been ++ // removed from GCC in GCC 15 ++ return VI64{vec_signedo(vf32.raw)}; ++#elif HWY_COMPILER_GCC_ACTUAL >= 1500 && HWY_IS_BIG_ENDIAN ++ // On big-endian PPC8/PPC9/PPC10 with GCC 15 or later, use the F32->I64 ++ // vec_signede intrinsic as the __builtin_vsx_xvcvspsxds intrinsic has been ++ // removed from GCC in GCC 15 ++ return VI64{vec_signede(vf32.raw)}; ++#else ++ // Inline assembly fallback for older versions of Clang that do not have the ++ // __builtin_vsx_xvcvspsxds intrinsic ++ __vector signed long long raw_result; ++ __asm__("xvcvspsxds %x0, %x1" : "=wa"(raw_result) : "wa"(vf32.raw) :); ++ return VI64{raw_result}; ++#endif ++} ++ ++template ++static HWY_INLINE HWY_MAYBE_UNUSED VFromD>> ++VsxXvcvspuxds(VF32 vf32) { ++ using VU64 = VFromD>>; ++#if (HWY_COMPILER_GCC_ACTUAL && HWY_COMPILER_GCC_ACTUAL < 1500) || \ ++ HWY_HAS_BUILTIN(__builtin_vsx_xvcvspuxds) ++ // Use __builtin_vsx_xvcvspuxds if it is available (which is the case with ++ // GCC 4.8 through GCC 14 or Clang 13 or later on PPC8/PPC9/PPC10) ++ return VU64{reinterpret_cast<__vector unsigned long long>( ++ __builtin_vsx_xvcvspuxds(vf32.raw))}; ++#elif HWY_COMPILER_GCC_ACTUAL >= 1500 && HWY_IS_LITTLE_ENDIAN ++ // On little-endian PPC8/PPC9/PPC10 with GCC 15 or later, use the F32->U64 ++ // vec_unsignedo intrinsic as the __builtin_vsx_xvcvspuxds intrinsic has been ++ // removed from GCC in GCC 15 ++ return VU64{vec_unsignedo(vf32.raw)}; ++#elif HWY_COMPILER_GCC_ACTUAL >= 1500 && HWY_IS_BIG_ENDIAN ++ // On big-endian PPC8/PPC9/PPC10 with GCC 15 or later, use the F32->U64 ++ // vec_unsignedo intrinsic as the __builtin_vsx_xvcvspuxds intrinsic has been ++ // removed from GCC in GCC 15 ++ return VU64{vec_unsignede(vf32.raw)}; ++#else ++ // Inline assembly fallback for older versions of Clang that do not have the ++ // __builtin_vsx_xvcvspuxds intrinsic ++ __vector unsigned long long raw_result; ++ __asm__("xvcvspuxds %x0, %x1" : "=wa"(raw_result) : "wa"(vf32.raw) :); ++ return VU64{raw_result}; ++#endif ++} ++ + } // namespace detail + #endif // !HWY_S390X_HAVE_Z14 + + template + HWY_API VFromD PromoteTo(D di64, VFromD> v) { +-#if !HWY_S390X_HAVE_Z14 && \ +- (HWY_COMPILER_GCC_ACTUAL || HWY_HAS_BUILTIN(__builtin_vsx_xvcvspsxds)) +- const __vector float raw_v = +- detail::VsxF2INormalizeSrcVals(InterleaveLower(v, v)).raw; +- return VFromD{__builtin_vsx_xvcvspsxds(raw_v)}; ++#if !HWY_S390X_HAVE_Z14 ++ const Repartition dt_f32; ++ const auto vt_f32 = ResizeBitCast(dt_f32, v); ++ return detail::VsxXvcvspsxds( ++ detail::VsxF2INormalizeSrcVals(InterleaveLower(vt_f32, vt_f32))); + #else + const RebindToFloat df64; + return ConvertTo(di64, PromoteTo(df64, v)); +@@ -3719,12 +3776,11 @@ HWY_API VFromD PromoteTo(D di64, VFromD> v) { + + template + HWY_API VFromD PromoteTo(D du64, VFromD> v) { +-#if !HWY_S390X_HAVE_Z14 && \ +- (HWY_COMPILER_GCC_ACTUAL || HWY_HAS_BUILTIN(__builtin_vsx_xvcvspuxds)) +- const __vector float raw_v = +- detail::VsxF2INormalizeSrcVals(InterleaveLower(v, v)).raw; +- return VFromD{reinterpret_cast<__vector unsigned long long>( +- __builtin_vsx_xvcvspuxds(raw_v))}; ++#if !HWY_S390X_HAVE_Z14 ++ const Repartition dt_f32; ++ const auto vt_f32 = ResizeBitCast(dt_f32, v); ++ return detail::VsxXvcvspuxds( ++ detail::VsxF2INormalizeSrcVals(InterleaveLower(vt_f32, vt_f32))); + #else + const RebindToFloat df64; + return ConvertTo(du64, PromoteTo(df64, v)); +@@ -3829,12 +3885,10 @@ HWY_API VFromD PromoteUpperTo(D df64, Vec128 v) { + + template + HWY_API VFromD PromoteUpperTo(D di64, Vec128 v) { +-#if !HWY_S390X_HAVE_Z14 && \ +- (HWY_COMPILER_GCC_ACTUAL || HWY_HAS_BUILTIN(__builtin_vsx_xvcvspsxds)) +- const __vector float raw_v = +- detail::VsxF2INormalizeSrcVals(InterleaveUpper(Full128(), v, v)) +- .raw; +- return VFromD{__builtin_vsx_xvcvspsxds(raw_v)}; ++#if !HWY_S390X_HAVE_Z14 ++ (void)di64; ++ return detail::VsxXvcvspsxds( ++ detail::VsxF2INormalizeSrcVals(InterleaveUpper(Full128(), v, v))); + #else + const RebindToFloat df64; + return ConvertTo(di64, PromoteUpperTo(df64, v)); +@@ -3843,13 +3897,10 @@ HWY_API VFromD PromoteUpperTo(D di64, Vec128 v) { + + template + HWY_API VFromD PromoteUpperTo(D du64, Vec128 v) { +-#if !HWY_S390X_HAVE_Z14 && \ +- (HWY_COMPILER_GCC_ACTUAL || HWY_HAS_BUILTIN(__builtin_vsx_xvcvspuxds)) +- const __vector float raw_v = +- detail::VsxF2INormalizeSrcVals(InterleaveUpper(Full128(), v, v)) +- .raw; +- return VFromD{reinterpret_cast<__vector unsigned long long>( +- __builtin_vsx_xvcvspuxds(raw_v))}; ++#if !HWY_S390X_HAVE_Z14 ++ (void)du64; ++ return detail::VsxXvcvspuxds( ++ detail::VsxF2INormalizeSrcVals(InterleaveUpper(Full128(), v, v))); + #else + const RebindToFloat df64; + return ConvertTo(du64, PromoteUpperTo(df64, v)); +@@ -3937,20 +3988,18 @@ HWY_INLINE VFromD PromoteEvenTo(hwy::SignedTag /*to_type_tag*/, + hwy::SizeTag<8> /*to_lane_size_tag*/, + hwy::FloatTag /*from_type_tag*/, D d_to, + V v) { +-#if !HWY_S390X_HAVE_Z14 && \ +- (HWY_COMPILER_GCC_ACTUAL || HWY_HAS_BUILTIN(__builtin_vsx_xvcvspsxds)) ++#if !HWY_S390X_HAVE_Z14 + (void)d_to; + const auto normalized_v = detail::VsxF2INormalizeSrcVals(v); + #if HWY_IS_LITTLE_ENDIAN +- // __builtin_vsx_xvcvspsxds expects the source values to be in the odd lanes +- // on little-endian PPC, and the vec_sld operation below will shift the even ++ // VsxXvcvspsxds expects the source values to be in the odd lanes on ++ // little-endian PPC, and the Shuffle2103 operation below will shift the even + // lanes of normalized_v into the odd lanes. +- return VFromD{ +- __builtin_vsx_xvcvspsxds(vec_sld(normalized_v.raw, normalized_v.raw, 4))}; ++ return VsxXvcvspsxds(Shuffle2103(normalized_v)); + #else +- // __builtin_vsx_xvcvspsxds expects the source values to be in the even lanes +- // on big-endian PPC. +- return VFromD{__builtin_vsx_xvcvspsxds(normalized_v.raw)}; ++ // VsxXvcvspsxds expects the source values to be in the even lanes on ++ // big-endian PPC. ++ return VsxXvcvspsxds(normalized_v); + #endif + #else + const RebindToFloat df64; +@@ -3965,22 +4014,18 @@ HWY_INLINE VFromD PromoteEvenTo(hwy::UnsignedTag /*to_type_tag*/, + hwy::SizeTag<8> /*to_lane_size_tag*/, + hwy::FloatTag /*from_type_tag*/, D d_to, + V v) { +-#if !HWY_S390X_HAVE_Z14 && \ +- (HWY_COMPILER_GCC_ACTUAL || HWY_HAS_BUILTIN(__builtin_vsx_xvcvspuxds)) ++#if !HWY_S390X_HAVE_Z14 + (void)d_to; + const auto normalized_v = detail::VsxF2INormalizeSrcVals(v); + #if HWY_IS_LITTLE_ENDIAN +- // __builtin_vsx_xvcvspuxds expects the source values to be in the odd lanes +- // on little-endian PPC, and the vec_sld operation below will shift the even +- // lanes of normalized_v into the odd lanes. +- return VFromD{ +- reinterpret_cast<__vector unsigned long long>(__builtin_vsx_xvcvspuxds( +- vec_sld(normalized_v.raw, normalized_v.raw, 4)))}; ++ // VsxXvcvspuxds expects the source values to be in the odd lanes ++ // on little-endian PPC, and the Shuffle2103 operation below will shift the ++ // even lanes of normalized_v into the odd lanes. ++ return VsxXvcvspuxds(Shuffle2103(normalized_v)); + #else +- // __builtin_vsx_xvcvspuxds expects the source values to be in the even lanes ++ // VsxXvcvspuxds expects the source values to be in the even lanes + // on big-endian PPC. +- return VFromD{reinterpret_cast<__vector unsigned long long>( +- __builtin_vsx_xvcvspuxds(normalized_v.raw))}; ++ return VsxXvcvspuxds(normalized_v); + #endif + #else + const RebindToFloat df64; +@@ -4022,20 +4067,18 @@ HWY_INLINE VFromD PromoteOddTo(hwy::SignedTag /*to_type_tag*/, + hwy::SizeTag<8> /*to_lane_size_tag*/, + hwy::FloatTag /*from_type_tag*/, D d_to, + V v) { +-#if !HWY_S390X_HAVE_Z14 && \ +- (HWY_COMPILER_GCC_ACTUAL || HWY_HAS_BUILTIN(__builtin_vsx_xvcvspsxds)) ++#if !HWY_S390X_HAVE_Z14 + (void)d_to; + const auto normalized_v = detail::VsxF2INormalizeSrcVals(v); + #if HWY_IS_LITTLE_ENDIAN +- // __builtin_vsx_xvcvspsxds expects the source values to be in the odd lanes ++ // VsxXvcvspsxds expects the source values to be in the odd lanes + // on little-endian PPC +- return VFromD{__builtin_vsx_xvcvspsxds(normalized_v.raw)}; ++ return VsxXvcvspsxds(normalized_v); + #else +- // __builtin_vsx_xvcvspsxds expects the source values to be in the even lanes +- // on big-endian PPC, and the vec_sld operation below will shift the odd lanes +- // of normalized_v into the even lanes. +- return VFromD{ +- __builtin_vsx_xvcvspsxds(vec_sld(normalized_v.raw, normalized_v.raw, 4))}; ++ // VsxXvcvspsxds expects the source values to be in the even lanes ++ // on big-endian PPC, and the Shuffle0321 operation below will shift the odd ++ // lanes of normalized_v into the even lanes. ++ return VsxXvcvspsxds(Shuffle0321(normalized_v)); + #endif + #else + const RebindToFloat df64; +@@ -4050,22 +4093,18 @@ HWY_INLINE VFromD PromoteOddTo(hwy::UnsignedTag /*to_type_tag*/, + hwy::SizeTag<8> /*to_lane_size_tag*/, + hwy::FloatTag /*from_type_tag*/, D d_to, + V v) { +-#if !HWY_S390X_HAVE_Z14 && \ +- (HWY_COMPILER_GCC_ACTUAL || HWY_HAS_BUILTIN(__builtin_vsx_xvcvspuxds)) ++#if !HWY_S390X_HAVE_Z14 + (void)d_to; + const auto normalized_v = detail::VsxF2INormalizeSrcVals(v); + #if HWY_IS_LITTLE_ENDIAN +- // __builtin_vsx_xvcvspuxds expects the source values to be in the odd lanes ++ // VsxXvcvspuxds expects the source values to be in the odd lanes + // on little-endian PPC +- return VFromD{reinterpret_cast<__vector unsigned long long>( +- __builtin_vsx_xvcvspuxds(normalized_v.raw))}; ++ return VsxXvcvspuxds(normalized_v); + #else +- // __builtin_vsx_xvcvspuxds expects the source values to be in the even lanes +- // on big-endian PPC, and the vec_sld operation below will shift the odd lanes +- // of normalized_v into the even lanes. +- return VFromD{ +- reinterpret_cast<__vector unsigned long long>(__builtin_vsx_xvcvspuxds( +- vec_sld(normalized_v.raw, normalized_v.raw, 4)))}; ++ // VsxXvcvspuxds expects the source values to be in the even lanes ++ // on big-endian PPC, and the Shuffle0321 operation below will shift the odd ++ // lanes of normalized_v into the even lanes. ++ return VsxXvcvspuxds(Shuffle0321(normalized_v)); + #endif + #else + const RebindToFloat df64; +-- +2.50.0 + diff --git a/SOURCES/btest402.js b/SOURCES/i18n-btest402.js similarity index 100% rename from SOURCES/btest402.js rename to SOURCES/i18n-btest402.js diff --git a/SOURCES/nodejs-tarball.sh b/SOURCES/nodejs-tarball.sh deleted file mode 100755 index d333607..0000000 --- a/SOURCES/nodejs-tarball.sh +++ /dev/null @@ -1,189 +0,0 @@ -#!/bin/sh -# Uses Argbash to generate command argument parsing. To update -# arguments, make sure to call -# `argbash nodejs-tarball.sh -o nodejs-tarball.sh` - -# ARG_POSITIONAL_SINGLE([version],[Node.js release version],[""]) -# ARG_DEFAULTS_POS([]) -# ARG_HELP([Tool to aid in Node.js packaging of new releases]) -# ARGBASH_GO() -# needed because of Argbash --> m4_ignore([ -### START OF CODE GENERATED BY Argbash v2.8.1 one line above ### -# Argbash is a bash code generator used to get arguments parsing right. -# Argbash is FREE SOFTWARE, see https://argbash.io for more info - - -die() -{ - local _ret=$2 - test -n "$_ret" || _ret=1 - test "$_PRINT_HELP" = yes && print_help >&2 - echo "$1" >&2 - exit ${_ret} -} - - -begins_with_short_option() -{ - local first_option all_short_options='h' - first_option="${1:0:1}" - test "$all_short_options" = "${all_short_options/$first_option/}" && return 1 || return 0 -} - -# THE DEFAULTS INITIALIZATION - POSITIONALS -_positionals=() -_arg_version="" -# THE DEFAULTS INITIALIZATION - OPTIONALS - - -print_help() -{ - printf '%s\n' "Tool to aid in Node.js packaging of new releases" - printf 'Usage: %s [-h|--help] []\n' "$0" - printf '\t%s\n' ": Node.js release version (default: '""')" - printf '\t%s\n' "-h, --help: Prints help" -} - - -parse_commandline() -{ - _positionals_count=0 - while test $# -gt 0 - do - _key="$1" - case "$_key" in - -h|--help) - print_help - exit 0 - ;; - -h*) - print_help - exit 0 - ;; - *) - _last_positional="$1" - _positionals+=("$_last_positional") - _positionals_count=$((_positionals_count + 1)) - ;; - esac - shift - done -} - - -handle_passed_args_count() -{ - test "${_positionals_count}" -le 1 || _PRINT_HELP=yes die "FATAL ERROR: There were spurious positional arguments --- we expect between 0 and 1, but got ${_positionals_count} (the last one was: '${_last_positional}')." 1 -} - - -assign_positional_args() -{ - local _positional_name _shift_for=$1 - _positional_names="_arg_version " - - shift "$_shift_for" - for _positional_name in ${_positional_names} - do - test $# -gt 0 || break - eval "$_positional_name=\${1}" || die "Error during argument parsing, possibly an Argbash bug." 1 - shift - done -} - -parse_commandline "$@" -handle_passed_args_count -assign_positional_args 1 "${_positionals[@]}" - -# OTHER STUFF GENERATED BY Argbash - -### END OF CODE GENERATED BY Argbash (sortof) ### ]) -# [ <-- needed because of Argbash - - -set -e - -echo $_arg_version - -if [ x$_arg_version != x ]; then - version=$_arg_version -else - version=$(rpm -q --specfile --qf='%{version}\n' nodejs.spec | head -n1) -fi - -rm -f node-v${version}.tar.gz node-v${version}-stripped.tar.gz -wget http://nodejs.org/dist/v${version}/node-v${version}.tar.gz \ - http://nodejs.org/dist/v${version}/SHASUMS256.txt -sha256sum -c SHASUMS256.txt --ignore-missing -tar -zxf node-v${version}.tar.gz -rm -rf node-v${version}/deps/openssl -tar -zcf node-v${version}-stripped.tar.gz node-v${version} - -# Download the matching version of ICU -rm -f icu4c*-src.tgz icu.md5 -ICUMD5=$(cat node-v${version}/tools/icu/current_ver.dep |jq -r '.[0].md5') -wget $(cat node-v${version}/tools/icu/current_ver.dep |jq -r '.[0].url') -ICUTARBALL=$(ls -1 icu4c*-src.tgz) -echo "$ICUMD5 $ICUTARBALL" > icu.md5 -md5sum -c icu.md5 -rm -f icu.md5 SHASUMS256.txt - -rhpkg new-sources node-v${version}-stripped.tar.gz icu4c*-src.tgz - -rm -f node-v${version}.tar.gz - -set +e - -# Determine the bundled versions of the various packages -echo "Bundled software versions" -echo "-------------------------" -echo -echo "libnode shared object version" -echo "=========================" -grep "define NODE_MODULE_VERSION" node-v${version}/src/node_version.h -echo -echo "V8" -echo "=========================" -grep "define V8_MAJOR_VERSION" node-v${version}/deps/v8/include/v8-version.h -grep "define V8_MINOR_VERSION" node-v${version}/deps/v8/include/v8-version.h -grep "define V8_BUILD_NUMBER" node-v${version}/deps/v8/include/v8-version.h -grep "define V8_PATCH_LEVEL" node-v${version}/deps/v8/include/v8-version.h -echo -echo "c-ares" -echo "=========================" -grep "define ARES_VERSION_MAJOR" node-v${version}/deps/cares/include/ares_version.h -grep "define ARES_VERSION_MINOR" node-v${version}/deps/cares/include/ares_version.h -grep "define ARES_VERSION_PATCH" node-v${version}/deps/cares/include/ares_version.h -echo -echo "http-parser" -echo "=========================" -grep "define HTTP_PARSER_VERSION_MAJOR" node-v${version}/deps/http_parser/http_parser.h -grep "define HTTP_PARSER_VERSION_MINOR" node-v${version}/deps/http_parser/http_parser.h -grep "define HTTP_PARSER_VERSION_PATCH" node-v${version}/deps/http_parser/http_parser.h -echo -echo "libuv" -echo "=========================" -grep "define UV_VERSION_MAJOR" node-v${version}/deps/uv/include/uv/version.h -grep "define UV_VERSION_MINOR" node-v${version}/deps/uv/include/uv/version.h -grep "define UV_VERSION_PATCH" node-v${version}/deps/uv/include/uv/version.h -echo -echo "nghttp2" -echo "=========================" -grep "define NGHTTP2_VERSION " node-v${version}/deps/nghttp2/lib/includes/nghttp2/nghttp2ver.h -echo -echo "ICU" -echo "=========================" -grep "url" node-v${version}/tools/icu/current_ver.dep -echo -echo "punycode" -echo "=========================" -grep "'version'" node-v${version}/lib/punycode.js -echo -echo "npm" -echo "=========================" -grep "\"version\":" node-v${version}/deps/npm/package.json -echo -echo "Make sure these versions match what is in the RPM spec file" - -rm -rf node-v${version} -# ] <-- needed because of Argbash diff --git a/SOURCES/nodejs.pc.in b/SOURCES/nodejs.pc.in new file mode 100644 index 0000000..f83ddd1 --- /dev/null +++ b/SOURCES/nodejs.pc.in @@ -0,0 +1,9 @@ +prefix=@PREFIX@ +includedir=@INCLUDEDIR@ +libdir=@LIBDIR@ + +Name: @PKGCONFNAME@ +Description: JavaScript Runtime +Version: @NODEJS_VERSION@ +Libs: -L${libdir} -lnode +Cflags: -I${includedir}/node diff --git a/SOURCES/nodejs.srpm.macros b/SOURCES/nodejs.srpm.macros new file mode 100644 index 0000000..6ce6292 --- /dev/null +++ b/SOURCES/nodejs.srpm.macros @@ -0,0 +1,142 @@ +# ============================================================================ +# Vendored dependencies management + +# --- Version macros definition +# Parse and normalize version string into several macros. +# By default, stores the whole string in `%_evr` macro, +# then automatically strips any epoch and/or release parts +# (specified in the standard "E:V-R" format) +# and defines `%_epoch`, `%_version`, and `%_release` macros. +# +# With the `-p` option, the version is additionally split into +# `%_version_major`, `%_version_minor`, and `%_version_patch` macros. +# +# Any would-be empty macro will evaluate to `%{nil}`. +# +# Options: +# -p : Also define the partial macros. +# +# Arguments: +# 1: Name of the dependency. Any `-' will be replaced by `_' in the macro names. +# 2: The EVR string to parse. +%nodejs_define_version(p) %{lua: +local fedora = require "fedora.common" +\ +local arg = {}; for a = 1, tonumber(rpm.expand("%#")) do + table.insert(arg, rpm.expand("%" .. a)) +end +local opt = { + ["p"] = fedora.readflag("p"), +} +\ +local component = arg[1] or error("No name provided!") +local evr = arg[2] or error("No version string provided!") +\ +local name = component:gsub("-", "_") -- macro-safe name +\ +fedora.explicitset(name .. "_evr", evr) +\ +local _, epoch_end, epoch = evr:find("^(%d+):") +fedora.explicitset(name .. "_epoch", epoch) +\ +local release_start, _, release = evr:find("%-([^-]+)$") +fedora.explicitset(name .. "_release", release) +\ +local version_start, version_end = 0, -1 +if epoch_end then version_start = epoch_end + 1 end +if release_start then version_end = release_start -1 end +\ +local version = evr:sub(version_start, version_end) +fedora.explicitset(name .. "_version", version) +\ +if opt.p then + local parts = {}; for p in version:gmatch("[^.]+") do table.insert(parts, p) end + fedora.explicitset(name .. "_version_major", parts[1]) + fedora.explicitset(name .. "_version_minor", parts[2]) + fedora.explicitset(name .. "_version_patch", parts[3]) +end +} + +# --- Declare vendored dependency +# Emits bcond-controlled RPM tags for a (potentially) vendored dependency. +# +# By default, it emits `Provides: bundled() = ` for given arguments. +# If de-vendoring option is provided, also defines a bcond that controls whether to de-vendor or not. +# The default is to de-vendor when possible unless a global bcond (`all_deps_bundled`) is set. +# +# Options: +# -a : Autoversion – try using `_version` macro if the version argument is empty. +# -n[npmname,...] : Also provide the respective npm module name when vendoring. +# -p[pkgname,...] : Use pkgconfig to BuildRequire de-vendored dependency. +# -r[rpmname,...] : Also explicitly declare run time requirement. +# -s[rpmname,...] : BuildRequire de-vendored dependency by RPM name. +# +# All above options accept optional parameter overriding the component name in respective tag. +# If needed, multiple values can be requested by separating them with a comma. +# +# When a name is used in a macro context (for example, in the -a option), +# the same name-mangling as for nodejs_define_version is used; +# no need to adjust it by hand. +# +# Arguments: +# 1: Name of the vendored component. Should be appropriate for `Provides: bundled()` tag. +# 2: Version of the vendored component. Ignored if de-vendored. +%nodejs_declare_bundled(an::p::r::s::) %{lua: +local fedora = require "fedora.common" +\ +local arg = {}; for a = 1, tonumber(rpm.expand("%#")) do + table.insert(arg, rpm.expand("%" .. a)) +end +local opt = { + ["a"] = fedora.hasflag("a"), + ["n"] = fedora.readflag("n"), + ["p"] = fedora.readflag("p"), + ["r"] = fedora.readflag("r"), + ["s"] = fedora.readflag("s"), +} +\ +local component = arg[1] or error("Vendored component was not named!") +local version = arg[2] or (opt.a and fedora.read(component:gsub("-", "_") .. "_version")) or error("Missing component version!") +\ +local mapvalues = function(fn, tbl) + local output = {}; for _, val in ipairs(tbl) do table.insert(output, fn(val)) end; return output +end +local splitnames = function(input) + local output = {}; for m in input:gmatch("[^,]+") do table.insert(output, m) end; return output +end +local nl = string.char(10); -- \n does not work in rpmlua +\ +local possible_to_devendor = opt.p or opt.s +local should_devendor = possible_to_devendor and rpm.expand("%{with all_deps_bundled}") == "0" +\ +local bcond_name = "bundled_" .. component:gsub("-", "_") +rpm.expand("%bcond " .. bcond_name .. " " .. (should_devendor and "0" or "1")) +\ +if rpm.expand("%with " .. bcond_name) == "1" then + local provides = {string.format("bundled(%s) = %s", component, version)} + if opt.n then + local names = {component}; if opt.n ~= "" then names = splitnames(opt.n) end + for _, name in ipairs(names) do + table.insert(provides, string.format("npm(%s) = %s", name, version)) + end + end + print("Provides: " .. table.concat(provides, ", ")) +else +\ + local buildrequire, require = nil, nil + if opt.p then + local format = function(n) return string.format("pkgconfig(%s)", n) end + local names = {component}; if opt.p ~= "" then names = splitnames(opt.p) end + buildrequire = "BuildRequires: " .. table.concat(mapvalues(format, names), ", ") + elseif opt.s then + local names = {component}; if opt.s ~= "" then names = splitnames(opt.s) end + buildrequire = "BuildRequires: " .. table.concat(names, ", ") + end + if opt.r then + local names = {component}; if opt.r ~= "" then names = splitnames(opt.r) end + require = "Requires: " .. table.concat(names, ", ") + end +\ + print(table.concat({buildrequire, require}, nl)) +end +} diff --git a/SOURCES/nodejs_native.attr b/SOURCES/nodejs_native.attr deleted file mode 100644 index 0527af6..0000000 --- a/SOURCES/nodejs_native.attr +++ /dev/null @@ -1,2 +0,0 @@ -%__nodejs_native_requires %{_rpmconfigdir}/nodejs_native.req -%__nodejs_native_path ^/usr/lib.*/node_modules/.*\\.node$ diff --git a/SOURCES/npmrc b/SOURCES/npmrc deleted file mode 100644 index 10437ca..0000000 --- a/SOURCES/npmrc +++ /dev/null @@ -1 +0,0 @@ -prefix=/usr/local diff --git a/SOURCES/npmrc.in b/SOURCES/npmrc.in new file mode 100644 index 0000000..28381f8 --- /dev/null +++ b/SOURCES/npmrc.in @@ -0,0 +1,7 @@ +# This is the distribution-level configuration file for npm. +# To configure npm on a system level, use the globalconfig below (defaults to @SYSCONFDIR@/npmrc). +# vim:set filetype=dosini: + +globalconfig=@SYSCONFDIR@/npmrc +prefix=/usr/local +update-notifier=false diff --git a/SOURCES/test-runner.sh b/SOURCES/test-runner.sh new file mode 100755 index 0000000..dc84920 --- /dev/null +++ b/SOURCES/test-runner.sh @@ -0,0 +1,61 @@ +#!/bin/bash + +NODE_BIN="$1" +PARENT_TEST_FOLDER="$2" +TEST_LIST_FILE="$3" + +# At most 10 min per test +TIMEOUT_DURATION=600 +# Exit code +FINAL_RESULT=0 +ARCH=$(uname -m) + +echo "Started test run:" +# Run the list of test +while IFS= read -r test_line; do + # ignore commented lines + if [[ "$test_line" =~ ^# ]]; then + continue + fi + # If test has specified ARCH which it should be skipped + # Extract it + TEST_PATH=$(echo "$test_line" | awk '{print $1}') + IGNORE_ARCHES=$(echo "$test_line" |\ + awk '{for (i=2; i<=NF; i++) printf "%s ", $i; print ""}') + + # Skip test for specified ARCH + for ARCH_IGNORE in $IGNORE_ARCHES; do + if [[ "$ARCH_IGNORE" == "$ARCH" ]]; then + echo "Skipping test, current arch is in ignore: $TEST_PATH ($ARCH_IGNORE)" + continue 2 + fi + done + + # Construct test path + TEST_SCRIPT="$PARENT_TEST_FOLDER/$TEST_PATH" + + if [ ! -f "$TEST_SCRIPT" ]; then + echo "Test script not found: $TEST_SCRIPT" + continue + fi + + TEST_OUTPUT=$(timeout "$TIMEOUT_DURATION" "$NODE_BIN" "$TEST_SCRIPT" 2>&1) + TEST_RESULT=$? + + # Handle test result + if [ $TEST_RESULT -ne 0 ]; then + FINAL_RESULT=1 + if [ $TEST_RESULT -eq 124 ]; then + echo "Test timed out: $TEST_SCRIPT" + else + echo "Test failed: $TEST_SCRIPT" + fi + echo "Test failure message:" + echo "$TEST_OUTPUT" + fi +done < "$TEST_LIST_FILE" + +if [ $FINAL_RESULT -eq 0 ]; then + echo "All tests succesfully passed." +fi +exit $FINAL_RESULT diff --git a/SOURCES/test-should-pass.txt b/SOURCES/test-should-pass.txt new file mode 100644 index 0000000..16f646f --- /dev/null +++ b/SOURCES/test-should-pass.txt @@ -0,0 +1,2736 @@ +# List of supported tests +# +# Architectures which are to be ignored are listed after the test +# for example: abort/test-abort-fatal-error.js i686 +# won't be runned for i686 architecture +# +# Each exception should be explained with a comment +# containing date and a short description of the problem +# +wasm-allocation/test-wasm-allocation.js +node-api/test_threadsafe_function/uncaught_exception.js +pummel/test-heapsnapshot-near-heap-limit-by-api.js +pummel/test-heapdump-fs-promise.js +pummel/test-net-pingpong.js +pummel/test-watch-file.js +pummel/test-heapdump-vm-script.js +pummel/test-http-many-keep-alive-connections.js +pummel/test-net-timeout.js +pummel/test-keep-alive.js +pummel/test-net-write-callbacks.js +pummel/test-structuredclone-jstransferable.js +pummel/test-buffer-large-size-buffer-alloc-unsafe-slow.js +pummel/test-fs-watch-file.js +pummel/test-heapdump-http2.js +pummel/test-process-cpuUsage.js +pummel/test-buffer-large-size-buffer-alloc-unsafe.js +pummel/test-string-decoder-large-buffer.js +pummel/test-fs-read-file-sync-utf8-memory.js +pummel/test-tls-throttle.js +pummel/test-heapsnapshot-near-heap-limit.js +pummel/test-https-large-response.js +pummel/test-heapdump-shadow-realm.js +pummel/test-fs-watch-non-recursive.js +pummel/test-net-timeout2.js +pummel/test-child-process-spawn-loop.js +pummel/test-heapdump-tls.js +pummel/test-heapdump-inspector.js +pummel/test-crypto-dh-hash.js +pummel/test-crypto-dh-keys.js +pummel/test-heapdump-worker.js +pummel/test-worker-take-heapsnapshot.js +pummel/test-heapdump-urlpattern.js +pummel/test-fs-watch-system-limit.js +pummel/test-heapdump-zlib.js +pummel/test-process-hrtime.js +pummel/test-heapdump-env.js +pummel/test-buffer-large-size-slowbuffer.js +pummel/test-heapsnapshot-near-heap-limit-bounded.js +pummel/test-stream-pipe-multi.js +pummel/test-buffer-large-size-buffer-alloc.js +pummel/test-heapsnapshot-near-heap-limit-big.js +pummel/test-fs-readfile-tostring-fail.js +pummel/test-vm-memleak.js +pummel/test-heapdump-dns.js +pummel/test-dh-regr.js +pummel/test-fs-watch-file-slow.js +pummel/test-net-many-clients.js +pummel/test-webcrypto-derivebits-pbkdf2.js +pummel/test-buffer-large-size-buffer-write.js +pummel/test-tls-server-large-request.js +pummel/test-vm-race.js +pummel/test-http-upload-timeout.js +pummel/test-net-pause.js +pummel/test-https-no-reader.js +pummel/test-regress-GH-892.js +pummel/test-next-tick-infinite-calls.js +pummel/test-fs-largefile.js +pummel/test-net-pingpong-delay.js +pummel/test-blob-slice-with-large-size.js +pummel/test-timers.js +module-hooks/test-module-hooks-load-context-merged.js +module-hooks/test-module-hooks-resolve-short-circuit-required-start.js +module-hooks/test-module-hooks-builtin-require.js +module-hooks/test-module-hooks-resolve-load-require-inline-typescript-override.js +module-hooks/test-module-hooks-load-chained.js +module-hooks/test-module-hooks-load-detection.js +module-hooks/test-module-hooks-load-buffers.js +module-hooks/test-module-hooks-load-invalid.js +module-hooks/test-module-hooks-require-wasm.js +module-hooks/test-module-hooks-load-url-change-require.js +module-hooks/test-module-hooks-resolve-builtin-on-disk-require.js +module-hooks/test-module-hooks-load-mock.js +module-hooks/test-module-hooks-resolve-builtin-builtin-require.js +module-hooks/test-module-hooks-load-builtin-require.js +module-hooks/test-module-hooks-load-esm-mock.js +module-hooks/test-module-hooks-resolve-context-merged.js +module-hooks/test-module-hooks-resolve-load-require-inline-typescript.js +module-hooks/test-module-hooks-load-short-circuit-required-start.js +module-hooks/test-module-hooks-resolve-short-circuit-required-middle.js +module-hooks/test-module-hooks-load-short-circuit-required-middle.js +module-hooks/test-module-hooks-resolve-short-circuit.js +module-hooks/test-module-hooks-resolve-context-optional.js +module-hooks/test-module-hooks-load-context-optional.js +module-hooks/test-module-hooks-preload.js +module-hooks/test-module-hooks-load-short-circuit.js +module-hooks/test-module-hooks-resolve-invalid.js +module-hooks/test-module-hooks-load-esm.js +async-hooks/hook-checks.js +async-hooks/init-hooks.js +async-hooks/test-async-exec-resource-http.js +async-hooks/test-async-local-storage-socket.js +async-hooks/test-async-local-storage-gcable.js +async-hooks/test-destroy-not-blocked.js +async-hooks/test-pipewrap.js +async-hooks/test-enable-disable.js +async-hooks/test-nexttick-default-trigger.js +async-hooks/test-emit-before-after.js +async-hooks/test-async-local-storage-enter-with.js +async-hooks/test-emit-init.js +async-hooks/test-unhandled-exception-valid-ids.js +async-hooks/test-fseventwrap.js +async-hooks/test-async-local-storage-thenable.js +async-hooks/test-ttywrap.readstream.js +async-hooks/test-graph.shutdown.js +async-hooks/test-graph.pipeconnect.js +async-hooks/test-http-agent-handle-reuse-serial.js +async-hooks/test-embedder.api.async-resource.js +async-hooks/test-improper-unwind.js +async-hooks/test-disable-in-init.js +async-hooks/test-getnameinforeqwrap.js +async-hooks/test-late-hook-enable.js +async-hooks/test-writewrap.js +async-hooks/test-filehandle-no-reuse.js +async-hooks/test-querywrap.js +async-hooks/test-crypto-randomBytes.js +async-hooks/test-tlswrap.js +async-hooks/test-statwatcher.js +async-hooks/test-net-get-connections.js +async-hooks/test-async-local-storage-http.js +async-hooks/test-graph.fsreq-readFile.js +async-hooks/test-async-local-storage-enable-disable.js +async-hooks/test-async-local-storage-tlssocket.js +async-hooks/test-async-local-storage-dgram.js +async-hooks/test-embedder.api.async-resource.runInAsyncScope.js +async-hooks/test-udpsendwrap.js +async-hooks/test-async-await.js +async-hooks/test-httpparser.response.js +async-hooks/test-graph.tcp.js +async-hooks/test-promise.chain-promise-before-init-hooks.js +async-hooks/test-async-local-storage-errors.js +async-hooks/test-async-local-storage-async-await.js +async-hooks/test-timers.setInterval.js +async-hooks/test-http-agent-handle-reuse-parallel.js +async-hooks/test-async-wrap-providers.js +async-hooks/test-graph.timeouts.js +async-hooks/test-promise.js +async-hooks/test-async-local-storage-async-functions.js +async-hooks/test-graph.tls-write.js +async-hooks/test-httpparser-reuse.js +async-hooks/test-graph.statwatcher.js +async-hooks/verify-graph.js +async-hooks/test-graph.intervals.js +async-hooks/test-graph.pipe.js +async-hooks/test-getaddrinforeqwrap.js +async-hooks/test-improper-order.js +async-hooks/test-async-local-storage-misc-stores.js +async-hooks/test-emit-before-on-destroyed.js +async-hooks/test-async-local-storage-stream-finished.js +async-hooks/test-emit-after-on-destroyed.js +async-hooks/test-unhandled-rejection-context.js +async-hooks/test-fsreqcallback-access.js +async-hooks/test-async-local-storage-nested.js +async-hooks/test-graph.http.js +async-hooks/test-udpwrap.js +async-hooks/test-embedder.api.async-resource-no-type.js +async-hooks/test-graph.tls-write-12.js +async-hooks/test-async-local-storage-promises.js +async-hooks/test-async-exec-resource-match.js +async-hooks/test-async-exec-resource-http-32060.js +async-hooks/test-shutdownwrap.js +async-hooks/test-crypto-pbkdf2.js +async-hooks/test-async-local-storage-no-mix-contexts.js +async-hooks/test-httpparser.request.js +async-hooks/test-async-local-storage-args.js +async-hooks/test-signalwrap.js +async-hooks/test-immediate.js +async-hooks/test-no-assert-when-disabled.js +async-hooks/test-pipeconnectwrap.js +async-hooks/test-fsreqcallback-readFile.js +async-hooks/test-promise.promise-before-init-hooks.js +async-hooks/test-tcpwrap.js +async-hooks/test-callback-error.js +async-hooks/test-zlib.zlib-binding.deflate.js +async-hooks/test-timers.setTimeout.js +async-hooks/test-async-exec-resource-http-agent.js +async-hooks/test-queue-microtask.js +async-hooks/test-async-local-storage-http-agent.js +async-hooks/test-enable-in-init.js +wasi/test-wasi-not-started.js +wasi/test-wasi-exitcode.js +wasi/test-wasi-worker-terminate.js +wasi/test-wasi-stdio.js +wasi/test-return-on-exit.js +wasi/test-wasi.js +wasi/test-wasi-poll.js +wasi/test-wasi-options-validation.js +wasi/test-wasi-initialize-validation.js +wasi/test-wasi-start-validation.js +wasi/test-wasi-symlinks.js +wasi/test-wasi-io.js +addons/openssl-client-cert-engine/test.js +addons/register-signal-handler/test.js +addons/symlinked-module/submodule.js +addons/openssl-key-engine/test.js +addons/openssl-test-engine/test.js +sequential/test-single-executable-application-snapshot.js +sequential/test-require-cache-without-stat.js +sequential/test-tls-psk-client.js +sequential/test-tls-connect.js +sequential/test-http2-settings-flood.js +sequential/test-module-loading.js +sequential/test-debugger-pid.js +sequential/test-single-executable-application-snapshot-worker.js +sequential/test-gc-http-client-timeout.js +sequential/test-dgram-implicit-bind-failure.js +sequential/test-child-process-exit.js +sequential/test-net-server-bind.js +sequential/test-dgram-bind-shared-ports.js +sequential/test-gc-http-client.js +sequential/test-timers-block-eventloop.js +sequential/test-debugger-custom-port.js +sequential/test-repl-timeout-throw.js +sequential/test-cpu-prof-dir-worker.js +sequential/test-worker-fshandles-open-close-on-termination.js +sequential/test-cluster-net-listen-ipv6only-rr.js +sequential/test-cpu-prof-invalid-options.js +sequential/test-net-localport.js +sequential/test-http2-ping-flood.js +sequential/test-process-warnings.js +sequential/test-inspector-port-cluster.js +sequential/test-net-better-error-messages-port.js +sequential/test-child-process-execsync.js +sequential/test-net-connect-handle-econnrefused.js +sequential/test-net-server-listen-ipv6-link-local.js +sequential/test-cluster-send-handle-large-payload.js +sequential/test-buffer-creation-regression.js +sequential/test-diagnostic-dir-heap-prof.js +sequential/test-pipe.js +sequential/test-tls-session-timeout.js +sequential/test-http-keep-alive-large-write.js +sequential/test-http-server-keep-alive-timeout-slow-server.js +sequential/test-net-connect-local-error.js +sequential/test-deprecation-flags.js +sequential/test-debugger-debug-brk.js +sequential/test-fs-watch.js +sequential/test-cpu-prof-name.js +sequential/test-http-econnrefused.js +sequential/test-heapdump-flag.js +sequential/test-gc-http-client-onerror.js +sequential/test-cluster-net-listen-ipv6only-none.js +sequential/test-debug-prompt.js +sequential/test-dgram-pingpong.js +sequential/test-heapdump.js +sequential/test-net-server-address.js +sequential/test-http-keepalive-maxsockets.js +sequential/test-http2-timeout-large-write.js +sequential/test-write-heapsnapshot-options.js +sequential/test-single-executable-application-assets-raw.js +sequential/test-cluster-inspect-brk.js +sequential/test-cpu-prof-worker-argv.js +sequential/test-cpu-prof-dir-relative.js +sequential/test-cpu-prof-dir-and-name.js +sequential/test-performance-eventloopdelay.js +sequential/test-stream2-fs.js +sequential/test-get-heapsnapshot-options.js +sequential/test-http-regr-gh-2928.js +sequential/test-resolution-inspect-brk.js +sequential/test-net-response-size.js +sequential/test-crypto-timing-safe-equal.js +sequential/test-child-process-emfile.js +sequential/test-fs-readdir-recursive.js +sequential/test-net-reconnect-error.js +sequential/test-single-executable-application-disable-experimental-sea-warning.js +sequential/test-cpu-prof-exit.js +sequential/test-process-title.js +sequential/test-vm-timeout-escape-promise-module-2.js +sequential/test-cpu-prof-dir-absolute.js +sequential/test-cli-syntax-file-not-found.js +sequential/test-heapdump-flag-custom-dir.js +sequential/test-vm-timeout-rethrow.js +sequential/test-net-connect-econnrefused.js +sequential/test-error-serdes.js +sequential/test-net-GH-5504.js +sequential/test-stream2-stderr-sync.js +sequential/test-cpu-prof-default.js +sequential/test-async-wrap-getasyncid.js +sequential/test-fs-opendir-recursive.js +sequential/test-child-process-pass-fd.js +sequential/test-diagnostic-dir-cpu-prof.js +sequential/test-single-executable-application-empty.js +sequential/test-https-connect-localport.js +sequential/test-worker-eventlooputil.js +sequential/test-util-debug.js +sequential/test-http2-large-file.js +sequential/test-worker-fshandles-error-on-termination.js +sequential/test-http-server-request-timeouts-mixed.js +sequential/test-https-server-keep-alive-timeout.js +sequential/test-http2-timeout-large-write-file.js +sequential/test-next-tick-error-spin.js +sequential/test-single-executable-application.js +sequential/test-fs-stat-sync-overflow.js +sequential/test-tls-lookup.js +sequential/test-vm-break-on-sigint.js +sequential/test-cli-syntax-good.js +sequential/test-worker-prof.js +sequential/test-http-server-keep-alive-timeout-slow-client-headers.js +sequential/test-cli-syntax-require.js +sequential/test-debugger-invalid-args.js +sequential/test-cpu-prof-drained.js +sequential/test-worker-heapsnapshot-options.js +sequential/test-cli-syntax-bad.js +sequential/test-cpu-prof-kill.js +sequential/test-http2-max-session-memory.js +sequential/test-single-executable-application-snapshot-and-code-cache.js +sequential/test-net-listen-shared-ports.js +sequential/test-perf-hooks.js +sequential/test-single-executable-application-assets.js +sequential/test-timers-set-interval-excludes-callback-duration.js +sequential/test-single-executable-application-use-code-cache.js +sequential/test-init.js +abort/test-addon-register-signal-handler.js +abort/test-worker-abort-uncaught-exception.js +abort/test-zlib-invalid-internals-usage.js +abort/test-addon-uv-handle-leak.js +abort/test-process-abort-exitcode.js +abort/test-abort-uncaught-exception.js +abort/test-http-parser-consume.js +abort/test-signal-handler.js +abort/test-abort-fatal-error.js +es-module/test-require-module-default-extension.js +es-module/test-require-module-cached-tla.js +es-module/test-require-module-detect-entry-point-aou.js +es-module/test-require-module-conditional-exports.js +es-module/test-require-module-cycle-esm-esm-cjs-esm.js +es-module/test-require-module-dynamic-import-2.js +es-module/test-require-module-with-detection.js +es-module/test-dynamic-import-script-lifetime.js +es-module/test-loaders-hidden-from-users.js +es-module/test-esm-long-path-win.js +es-module/test-require-module-defined-esmodule.js +es-module/test-esm-repl.js +es-module/test-require-module-error-catching.js +es-module/test-esm-loader-cache-clearing.js +es-module/test-wasm-web-api.js +es-module/test-esm-error-cache.js +es-module/test-require-module-tla-retry-require.js +es-module/test-wasm-simple.js +es-module/test-import-preload-require-cycle.js +es-module/test-vm-main-context-default-loader-eval.js +es-module/test-vm-contextified-script-leak.js +es-module/test-vm-compile-function-leak.js +es-module/test-disable-require-module-with-detection.js +es-module/test-esm-undefined-cjs-global-like-variables.js +es-module/test-esm-unknown-extension.js +es-module/test-esm-dynamic-import-attribute.js +es-module/test-esm-cjs-exports.js +es-module/test-require-module-warning.js +es-module/test-require-module-tla-retry-import-2.js +es-module/test-require-module-tla-nested.js +es-module/test-require-module-cycle-cjs-esm-esm.js +es-module/test-vm-compile-function-lineoffset.js +es-module/test-require-module-retry-import-evaluating.js +es-module/test-cjs-legacyMainResolve.js +es-module/test-esm-url-extname.js +es-module/test-require-module-dynamic-import-1.js +es-module/test-esm-data-urls.js +es-module/test-require-module-preload.js +es-module/test-esm-type-field-errors.js +es-module/test-esm-symlink.js +es-module/test-esm-repl-imports.js +es-module/test-esm-symlink-main.js +es-module/test-require-module-twice.js +es-module/test-vm-synthetic-module-leak.js +es-module/test-esm-windows.js +es-module/test-cjs-prototype-pollution.js +es-module/test-require-module-dynamic-import-4.js +es-module/test-require-node-modules-warning.js +es-module/test-require-module-cycle-esm-cjs-esm-esm.js +es-module/test-esm-preserve-symlinks.js +es-module/test-cjs-esm-warn.js +es-module/test-esm-dynamic-import.js +es-module/test-require-module-errors.js +es-module/test-cjs-legacyMainResolve-permission.js +es-module/test-esm-loader-search.js +es-module/test-esm-type-field-errors-2.js +es-module/test-require-module-tla-resolved.js +es-module/test-vm-source-text-module-leak.js +es-module/test-require-module-cycle-esm-esm-cjs-esm-esm.js +es-module/test-require-module-feature-detect.js +es-module/test-require-module-implicit.js +es-module/test-require-module-tla-execution.js +es-module/test-esm-invalid-data-urls.js +es-module/test-esm-import-attributes-errors.js +es-module/test-require-module-tla-unresolved.js +es-module/test-require-module-dont-detect-cjs.js +es-module/test-require-module-tla-rejected.js +es-module/test-esm-symlink-type.js +es-module/test-esm-preserve-symlinks-main.js +es-module/test-esm-dynamic-import-commonjs.js +es-module/test-vm-main-context-default-loader.js +es-module/test-require-module-transpiled.js +es-module/test-require-module-detect-entry-point.js +es-module/test-require-module-dynamic-import-3.js +es-module/test-esm-cjs-main.js +es-module/test-require-module-tla-print-execution.js +es-module/test-require-module.js +es-module/test-esm-dynamic-import-mutating-fs.js +es-module/test-esm-invalid-pjson.js +es-module/test-wasm-memory-out-of-bound.js +es-module/test-require-module-synchronous-rejection-handling.js +es-module/test-require-module-tla-retry-import.js +es-module/test-esm-cjs-builtins.js +es-module/test-require-module-retry-import-errored.js +es-module/test-require-module-cycle-esm-cjs-esm.js +es-module/test-esm-import-attributes-validation.js +es-module/test-esm-loader-modulemap.js +es-module/test-esm-encoded-path-native.js +es-module/test-require-module-conditional-exports-module.js +wpt/test-events.js +wpt/test-file.js +wpt/test-wasm-webapi.js +wpt/test-microtask-queuing.js +wpt/test-domexception.js +wpt/test-webstorage.js +wpt/test-user-timing.js +wpt/test-streams.js +wpt/test-atob.js +wpt/test-abort.js +wpt/test-broadcastchannel.js +wpt/test-urlpattern.js +wpt/test-resource-timing.js +wpt/test-hr-time.js +wpt/test-compression.js +wpt/test-performance-timeline.js +wpt/test-url.js +wpt/test-structured-clone.js +wpt/test-encoding.js +wpt/test-blob.js +wpt/test-console.js +wpt/test-timers.js +v8-updates/test-trace-gc-flag.js +v8-updates/test-linux-perf-logger.js +v8-updates/test-linux-perf.js +common/globals.js +common/hijackstdio.js +common/arraystream.js +common/heap.js +common/inspector-helper.js +common/udp.js +common/benchmark.js +common/fixtures.js +common/dns.js +common/http2.js +common/internet.js +common/sea.js +common/tmpdir.js +common/process-exit-code-cases.js +common/tick.js +common/index.js +common/debugger.js +common/crypto.js +common/child_process.js +common/gc.js +common/report.js +common/snapshot.js +common/proxy-server.js +common/prof.js +common/test-error-reporter.js +common/cpu-prof.js +common/countdown.js +common/shared-lib-util.js +common/wpt.js +common/measure-memory.js +common/wasi.js +common/net.js +common/assertSnapshot.js +common/v8.js +common/tls.js +benchmark/test-benchmark-source-map.js +benchmark/test-benchmark-querystring.js +benchmark/test-benchmark-websocket.js +benchmark/test-benchmark-assert.js +benchmark/test-benchmark-worker.js +benchmark/test-benchmark-blob.js +benchmark/test-benchmark-dns.js +benchmark/test-benchmark-vm.js +benchmark/test-benchmark-http.js +benchmark/test-benchmark-child-process.js +benchmark/test-benchmark-validators.js +benchmark/test-benchmark-module.js +benchmark/test-benchmark-esm.js +benchmark/test-benchmark-path.js +benchmark/test-benchmark-tls.js +benchmark/test-benchmark-webstreams.js +benchmark/test-benchmark-process.js +benchmark/test-benchmark-net.js +benchmark/test-benchmark-mime.js +benchmark/test-benchmark-string_decoder.js +benchmark/test-benchmark-http2.js +benchmark/test-benchmark-async-hooks.js +benchmark/test-benchmark-domain.js +benchmark/test-benchmark-misc.js +benchmark/test-benchmark-buffer.js +benchmark/test-benchmark-os.js +benchmark/test-benchmark-cluster.js +benchmark/test-benchmark-timers.js +benchmark/test-benchmark-streams.js +benchmark/test-benchmark-v8.js +benchmark/test-benchmark-util.js +benchmark/test-benchmark-url.js +benchmark/test-benchmark-dgram.js +benchmark/test-benchmark-zlib.js +benchmark/test-benchmark-events.js +benchmark/test-bechmark-readline.js +benchmark/test-benchmark-es.js +message/util_inspect_error.js +message/util-inspect-error-cause.js +message/node_run_non_existent.js +message/console_assert.js +message/max_tick_depth.js +parallel/test-dns-multi-channel.js +parallel/test-tls-no-sslv23.js +parallel/test-http-write-head-2.js +parallel/test-http-server-request-timeout-delayed-body.js +parallel/test-bootstrap-modules.js +parallel/test-stream-readable-end-destroyed.js +parallel/test-assert-deep.js +parallel/test-http-server-non-utf8-header.js +parallel/test-child-process-exit-code.js +parallel/test-whatwg-webstreams-adapters-to-readablestream.js +parallel/test-inspector-break-when-eval.js +parallel/test-buffer-readint.js +parallel/test-compile-cache-api-env.js +parallel/test-debugger-backtrace.js +parallel/test-promise-unhandled-issue-43655.js +parallel/test-event-emitter-special-event-names.js +parallel/test-compile-cache-typescript-transform.js +parallel/test-fs-stream-construct-compat-error-read.js +parallel/test-stream-readable-reading-readingMore.js +parallel/test-child-process-execfilesync-maxbuf.js +parallel/test-domain-timer.js +parallel/test-http-outgoing-writableFinished.js +parallel/test-runner-custom-assertions.js +parallel/test-util-types-exists.js +parallel/test-zlib-const.js +parallel/test-stream2-compatibility.js +parallel/test-dgram-create-socket-handle.js +parallel/test-client-request-destroy.js +parallel/test-async-hooks-enable-recursive.js +parallel/test-console-assign-undefined.js +parallel/test-timers-linked-list.js +parallel/test-https-agent-getname.js +parallel/test-cluster-child-index-net.js +parallel/test-http-early-hints-invalid-argument.js +parallel/test-http2-multiheaders.js +parallel/test-http2-compat-serverresponse-createpushresponse.js +parallel/test-buffer-parent-property.js +parallel/test-vm-preserves-property.js +parallel/test-tls-delayed-attach-error.js +parallel/test-http2-client-data-end.js +parallel/test-filehandle-readablestream.js +parallel/test-permission-child-process-inherit-flags.js +parallel/test-net-write-after-close.js +parallel/test-performanceobserver.js +parallel/test-http-client-timeout-connect-listener.js +parallel/test-stream-auto-destroy.js +parallel/test-require-delete-array-iterator.js +parallel/test-http2-session-settings.js +parallel/test-cluster-worker-constructor.js +parallel/test-worker-invalid-workerdata.js +parallel/test-dgram-send-address-types.js +parallel/test-cluster-eaddrinuse.js +parallel/test-repl-preprocess-top-level-await.js +parallel/test-internal-modules.js +parallel/test-http-agent-uninitialized.js +parallel/test-net-better-error-messages-port-hostname.js +parallel/test-inspector-port-zero-cluster.js +parallel/test-event-emitter-listeners.js +parallel/test-worker-terminate-source-map.js +parallel/test-http-client-timeout.js +parallel/test-stream-readable-from-web-termination.js +parallel/test-cluster-disconnect-race.js +parallel/test-net-isipv4.js +parallel/test-require-resolve-invalid-paths.js +parallel/test-module-create-require-multibyte.js +parallel/test-buffer-sharedarraybuffer.js +parallel/test-whatwg-url-custom-searchparams-sort.js +parallel/test-async-hooks-http-agent-destroy.js +parallel/test-http-timeout-client-warning.js +parallel/test-microtask-queue-integration.js +parallel/test-stream2-objects.js +parallel/test-http-set-timeout.js +parallel/test-worker-message-port-transfer-duplicate.js +parallel/test-v8-stats.js +parallel/test-diagnostics-channel-http-server-start.js +parallel/test-webcrypto-wrap-unwrap.js +parallel/test-cluster-disconnect-before-exit.js +parallel/test-http2-sensitive-headers.js +parallel/test-whatwg-url-custom-searchparams-inspect.js +parallel/test-cluster-worker-destroy.js +parallel/test-http2-respond-file-filehandle.js +parallel/test-heap-prof-dir-name.js +parallel/test-crypto-keygen-async-named-elliptic-curve-encrypted-p256.js +parallel/test-event-emitter-listeners-side-effects.js +parallel/test-module-nodemodulepaths.js +parallel/test-dgram-multicast-set-interface.js +parallel/test-net-listen-exclusive-random-ports.js +parallel/test-urlpattern-invalidthis.js +parallel/test-http2-compat-serverrequest-pause.js +parallel/test-worker-message-port-jstransferable-nested-untransferable.js +parallel/test-whatwg-writablestream.js +parallel/test-http-response-status-message.js +parallel/test-async-wrap-uncaughtexception.js +parallel/test-net-dns-lookup-skip.js +parallel/test-http-dont-set-default-headers-with-set-header.js +parallel/test-socket-write-after-fin-error.js +parallel/test-event-emitter-remove-listeners.js +parallel/test-http-pause.js +parallel/test-net-socket-timeout.js +parallel/test-http-request-smuggling-content-length.js +parallel/test-stream-base-prototype-accessors-enumerability.js +parallel/test-crypto-keygen-async-rsa.js +parallel/test-stream-pipeline-uncaught.js +parallel/test-vm-attributes-property-not-on-sandbox.js +parallel/test-fs-writefile-with-fd.js +parallel/test-webcrypto-derivekey-cfrg.js +parallel/test-console-with-frozen-intrinsics.js +parallel/test-net-connect-options-path.js +parallel/test-http-client-abort3.js +parallel/test-http2-compat-serverresponse-drain.js +parallel/test-whatwg-events-eventtarget-this-of-listener.js +parallel/test-fs-watch-recursive-assert-leaks.js +parallel/test-child-process-advanced-serialization.js +parallel/test-release-changelog.js +parallel/test-path-parse-format.js +parallel/test-net-pingpong.js +parallel/test-tls-server-failed-handshake-emits-clienterror.js +parallel/test-internal-async-context-frame-disable.js +parallel/test-http2-write-finishes-after-stream-destroy.js +parallel/test-http-agent-scheduling.js +parallel/test-fs-stream-construct-compat-graceful-fs.js +parallel/test-inspector-exit-worker-in-wait-for-connection2.js +parallel/test-http-host-headers.js +parallel/test-cluster-disconnect-leak.js +parallel/test-whatwg-url-custom-inspect.js +parallel/test-child-process-spawnsync-maxbuf.js +parallel/test-stream-pipe-objectmode-to-non-objectmode.js +parallel/test-diagnostics-channel-tracing-channel-promise.js +parallel/test-internal-assert.js +parallel/test-process-default.js +parallel/test-http-outgoing-end-types.js +parallel/test-fs-read-zero-length.js +parallel/test-nodeeventtarget.js +parallel/test-promise-unhandled-error.js +parallel/test-process-ppid.js +parallel/test-worker-voluntarily-exit-followed-by-throw.js +parallel/test-http-dont-set-default-headers.js +parallel/test-trace-events-metadata.js +parallel/test-async-hooks-constructor.js +parallel/test-debugger-break.js +parallel/test-eslint-duplicate-requires.js +parallel/test-worker-process-argv.js +parallel/test-vm-function-redefinition.js +parallel/test-crypto-worker-thread.js +parallel/test-process-constrained-memory.js +parallel/test-dgram-deprecation-error.js +parallel/test-messaging-marktransfermode.js +parallel/test-common-must-not-call.js +parallel/test-fs-rm.js +parallel/test-http-dns-error.js +parallel/test-trace-events-bootstrap.js +parallel/test-repl-uncaught-exception-async.js +parallel/test-timers-dispose.js +parallel/test-disable-sigusr1.js +parallel/test-whatwg-readablebytestream.js +parallel/test-timers-setimmediate-infinite-loop.js +parallel/test-webcrypto-derivebits-ecdh.js +parallel/test-file.js +parallel/test-vm-measure-memory.js +parallel/test-inspector-stress-http.js +parallel/test-trace-exit-stack-limit.js +parallel/test-fs-whatwg-url.js +parallel/test-fs-writev-sync.js +parallel/test-http2-respond-file-fd-range.js +parallel/test-tls-timeout-server-2.js +parallel/test-stdin-hang.js +parallel/test-debugger-watch-validation.js +parallel/test-stream-readable-error-end.js +parallel/test-http-response-cork.js +parallel/test-http-zero-length-write.js +parallel/test-stream-pipe-error-unhandled.js +parallel/test-crypto-keygen-async-explicit-elliptic-curve.js +parallel/test-vm-global-property-interceptors.js +parallel/test-http-client-set-timeout-after-end.js +parallel/test-net-server-listen-remove-callback.js +parallel/test-http-response-add-header-after-sent.js +parallel/test-whatwg-encoding-custom-textdecoder-api-invalid-label.js +parallel/test-errors-systemerror-stackTraceLimit-deleted-and-Error-sealed.js +parallel/test-domain-multi.js +parallel/test-http-client-override-global-agent.js +parallel/test-http-client-abort-keep-alive-queued-unix-socket.js +parallel/test-diagnostics-channel-http2-server-stream-finish.js +parallel/test-crypto-default-shake-lengths.js +parallel/test-http-client-parse-error.js +parallel/test-quic-internal-setcallbacks.js +parallel/test-process-euid-egid.js +parallel/test-stdio-closed.js +parallel/test-whatwg-events-customevent.js +parallel/test-event-emitter-add-listeners.js +parallel/test-tls-connect-pipe.js +parallel/test-zlib.js +parallel/test-child-process-recv-handle.js +parallel/test-crypto-keygen-async-named-elliptic-curve.js +parallel/test-tls-ticket-invalid-arg.js +parallel/test-net-connect-memleak.js +parallel/test-http-server.js +parallel/test-crypto-cipheriv-decipheriv.js +parallel/test-dgram-send-callback-buffer.js +parallel/test-http-keep-alive-timeout-custom.js +parallel/test-stream-duplex-writable-finished.js +parallel/test-path-dirname.js +parallel/test-inspector-runtime-evaluate-with-timeout.js +parallel/test-domain-no-error-handler-abort-on-uncaught-2.js +parallel/test-fs-write-file-flush.js +parallel/test-http2-perf_hooks.js +parallel/test-fs-make-callback.js +parallel/test-async-hooks-worker-asyncfn-terminate-4.js +parallel/test-fs-watch-recursive-add-file-to-new-folder.js +parallel/test-stream-typedarray.js +parallel/test-buffer-inheritance.js +parallel/test-async-hooks-disable-gc-tracking.js +parallel/test-module-run-main-monkey-patch.js +parallel/test-string-decoder-fuzz.js +parallel/test-http-conn-reset.js +parallel/test-pipe-stream.js +parallel/test-url-parse-query.js +parallel/test-ref-unref-return.js +parallel/test-async-hooks-execution-async-resource-await.js +parallel/test-buffer-write.js +parallel/test-worker-stack-overflow-stack-size.js +parallel/test-tls-multi-key.js +parallel/test-http2-compat-client-upload-reject.js +parallel/test-fs-rename-type-check.js +parallel/test-repl-eval-error-after-close.js +parallel/test-fs-promises-writefile-typedarray.js +parallel/test-zlib-close-after-error.js +parallel/test-tls-client-renegotiation-13.js +parallel/test-common-countdown.js +parallel/test-global-console-exists.js +parallel/test-fs-watch-recursive-add-file-to-existing-subfolder.js +parallel/test-child-process-spawnsync-timeout.js +parallel/test-console-tty-colors.js +parallel/test-timers-promises.js +parallel/test-http-set-header-chain.js +parallel/test-tls-client-getephemeralkeyinfo.js +parallel/test-http-server-capture-rejections.js +parallel/test-timers-unenroll-unref-interval.js +parallel/test-fs-symlink-dir-junction.js +parallel/test-http-connect.js +parallel/test-http-response-multiheaders.js +parallel/test-stream-write-drain.js +parallel/test-repl-null-thrown.js +parallel/test-http2-goaway-delayed-request.js +parallel/test-util-text-decoder.js +parallel/test-domain-stack-empty-in-process-uncaughtexception.js +parallel/test-permission-warning-flags.js +parallel/test-tls-connect-hwm-option.js +parallel/test-require-resolve-opts-paths-relative.js +parallel/test-whatwg-webstreams-transfer.js +parallel/test-fs-readfile-zero-byte-liar.js +parallel/test-dgram-sendto.js +parallel/test-stringbytes-external.js +parallel/test-http-agent-abort-controller.js +parallel/test-stream-await-drain-writers-in-synchronously-recursion-write.js +parallel/test-stream-transform-constructor-set-methods.js +parallel/test-inspector-async-hook-setup-at-signal.js +parallel/test-buffer-writefloat.js +parallel/test-timers-uncaught-exception.js +parallel/test-fs-promises-file-handle-writeFile.js +parallel/test-http-unix-socket.js +parallel/test-next-tick-fixed-queue-regression.js +parallel/test-tls-request-timeout.js +parallel/test-zlib-brotli.js +parallel/test-domain-error-types.js +parallel/test-inspector-esm.js +parallel/test-repl-tab-complete-buffer.js +parallel/test-crypto-keygen.js +parallel/test-snapshot-dns-resolve-localhost-promise.js +parallel/test-primitive-timer-leak.js +parallel/test-whatwg-url-custom-setters.js +parallel/test-zlib-random-byte-pipes.js +parallel/test-dns-memory-error.js +parallel/test-http-server-destroy-socket-on-client-error.js +parallel/test-permission-fs-require.js +parallel/test-cluster-kill-infinite-loop.js +parallel/test-http2-info-headers-errors.js +parallel/test-whatwg-events-event-constructors.js +parallel/test-event-emitter-prepend.js +parallel/test-http-client-reject-unexpected-agent.js +parallel/test-diagnostics-channel-module-import.js +parallel/test-cluster-http-pipe.js +parallel/test-zlib-from-gzip-with-trailing-garbage.js +parallel/test-stream-pipe-same-destination-twice.js +parallel/test-buffer-equals.js +parallel/test-fs-promises-file-handle-dispose.js +parallel/test-http2-too-many-streams.js +parallel/test-set-process-debug-port.js +parallel/test-debugger-pid.js +parallel/test-eslint-documented-deprecation-codes.js +parallel/test-snapshot-worker.js +parallel/test-tls-client-allow-partial-trust-chain.js +parallel/test-fs-promises-writefile-with-fd.js +parallel/test-http-server-keep-alive-max-requests-null.js +parallel/test-http2-large-writes-session-memory-leak.js +parallel/test-process-umask-mask.js +parallel/test-http-status-reason-invalid-chars.js +parallel/test-http2-compat-serverrequest-trailers.js +parallel/test-worker-message-port-multiple-sharedarraybuffers.js +parallel/test-stream-unpipe-event.js +parallel/test-http-incoming-message-connection-setter.js +parallel/test-cli-node-options.js +parallel/test-http-abort-client.js +parallel/test-https-localaddress.js +parallel/test-domain-with-abort-on-uncaught-exception.js +parallel/test-dgram-send-callback-recursive.js +parallel/test-fs-stream-destroy-emit-error.js +parallel/test-zlib-object-write.js +parallel/test-stream-duplex-props.js +parallel/test-stream-decoder-objectmode.js +parallel/test-child-process-fork-exec-argv.js +parallel/test-http-outgoing-properties.js +parallel/test-fs-read-promises-optional-params.js +parallel/test-http-response-writehead-returns-this.js +parallel/test-worker-arraybuffer-zerofill.js +parallel/test-http2-compat-expect-continue.js +parallel/test-inspector-exception.js +parallel/test-runner-aliases.js +parallel/test-https-agent-create-connection.js +parallel/test-buffer-constructor-deprecation-error.js +parallel/test-stream-flatMap.js +parallel/test-http2-misc-util.js +parallel/test-crypto-gcm-implicit-short-tag.js +parallel/test-repl-preview-without-inspector.js +parallel/test-http-client-check-http-token.js +parallel/test-http-set-cookies.js +parallel/test-http-socket-encoding-error.js +parallel/test-dgram-ipv6only.js +parallel/test-repl-preview.js +parallel/test-http2-unbound-socket-proxy.js +parallel/test-trace-events-category-used.js +parallel/test-crypto-dh-odd-key.js +parallel/test-ttywrap-invalid-fd.js +parallel/test-buffer-fill.js +parallel/test-process-exit-code.js +parallel/test-worker-exit-from-uncaught-exception.js +parallel/test-debugger-sb-before-load.js +parallel/test-require-empty-main.js +parallel/test-vm-set-property-proxy.js +parallel/test-worker-message-not-serializable.js +parallel/test-repl-unsupported-option.js +parallel/test-dns-setserver-when-querying.js +parallel/test-async-hooks-promise-enable-disable.js +parallel/test-whatwg-url-custom-tostringtag.js +parallel/test-webcrypto-getRandomValues.js +parallel/test-v8-getheapsnapshot-twice.js +parallel/test-fs-write-file-invalid-path.js +parallel/test-module-wrap.js +parallel/test-webcrypto-derivekey.js +parallel/test-stream-writable-destroy.js +parallel/test-fs-promises-file-handle-sync.js +parallel/test-http-debug.js +parallel/test-sqlite-statement-sync.js +parallel/test-worker-message-port-wasm-module.js +parallel/test-vm-sigint-existing-handler.js +parallel/test-next-tick-ordering.js +parallel/test-fs-rmdir-recursive-warns-on-file.js +parallel/test-webcrypto-export-import-cfrg.js +parallel/test-crypto-keygen-async-explicit-elliptic-curve-encrypted.js.js +parallel/test-cli-syntax-piped-bad.js +parallel/test-net-connect-nodelay.js +parallel/test-diagnostics-channel-net.js +parallel/test-no-addons-resolution-condition.js +parallel/test-event-emitter-method-names.js +parallel/test-net-write-arguments.js +parallel/test-repl-inspector.js +parallel/test-repl-programmatic-history.js +parallel/test-vm-set-proto-null-on-globalthis.js +parallel/test-net-isip.js +parallel/test-module-circular-symlinks.js +parallel/test-process-emitwarning.js +parallel/test-child-process-fork-dgram.js +parallel/test-trace-events-file-pattern.js +parallel/test-stream-readable-invalid-chunk.js +parallel/test-crypto-keygen-missing-oid.js +parallel/test-crypto-oneshot-hash.js +parallel/test-process-external-stdio-close.js +parallel/test-http-max-headers-count.js +parallel/test-http-client-timeout-with-data.js +parallel/test-dns-lookup-promises-options-deprecated.js +parallel/test-tls-connect-timeout-option.js +parallel/test-tls-cnnic-whitelist.js +parallel/test-fs-write-stream-throw-type-error.js +parallel/test-data-url.js +parallel/test-worker-error-stack-getter-throws.js +parallel/test-net-connect-options-port.js +parallel/test-fs-internal-assertencoding.js +parallel/test-worker-execargv.js +parallel/test-domain-promise.js +parallel/test-http-server-connections-checking-leak.js +parallel/test-cli-permission-deny-fs.js +parallel/test-common-gc.js +parallel/test-async-local-storage-enter-with.js +parallel/test-http-incoming-matchKnownFields.js +parallel/test-http2-respond-file-compat.js +parallel/test-heap-prof-basic.js +parallel/test-inspector-reported-host.js +parallel/test-https-server-request-timeout.js +parallel/test-http-agent-uninitialized-with-handle.js +parallel/test-http-highwatermark.js +parallel/test-promise-hook-on-before.js +parallel/test-console-issue-43095.js +parallel/test-async-wrap-promise-after-enabled.js +parallel/test-http-pipeline-assertionerror-finish.js +parallel/test-heap-prof-exit.js +parallel/test-repl-editor.js +parallel/test-child-process-cwd.js +parallel/test-http2-server-unknown-protocol.js +parallel/test-http-request-host-header.js +parallel/test-vm-parse-abort-on-uncaught-exception.js +parallel/test-net-server-unref-persistent.js +parallel/test-readline-reopen.js +parallel/test-v8-flag-type-check.js +parallel/test-http-client-invalid-path.js +parallel/test-crypto-dh-constructor.js +parallel/test-cli-permission-multiple-allow.js +parallel/test-dgram-address.js +parallel/test-tls-ip-servername-deprecation.js +parallel/test-tls-connect-simple.js +parallel/test-http-byteswritten.js +parallel/test-http-timeout.js +parallel/test-tls-destroy-stream.js +parallel/test-icu-transcode.js +parallel/test-global-encoder.js +parallel/test-domain-throw-error-then-throw-from-uncaught-exception-handler.js +parallel/test-dgram-send-empty-array.js +parallel/test-domain-load-after-set-uncaught-exception-capture.js +parallel/test-child-process-stdio-inherit.js +parallel/test-http-connect-req-res.js +parallel/test-repl-save-load-load-dir.js +parallel/test-stream-readable-didRead.js +parallel/test-worker-process-env.js +parallel/test-fs-existssync-false.js +parallel/test-async-hooks-disable-during-promise.js +parallel/test-v8-serdes.js +parallel/test-inspector-module.js +parallel/test-global-webstreams.js +parallel/test-worker-unsupported-path.js +parallel/test-vm-options-validation.js +parallel/test-stream-pipeline-queued-end-in-destroy.js +parallel/test-async-hooks-prevent-double-destroy.js +parallel/test-stream-pipe-flow.js +parallel/test-http2-compat-serverresponse-finished.js +parallel/test-crypto-dh-shared.js +parallel/test-tls-max-send-fragment.js +parallel/test-child-process-silent.js +parallel/test-handle-wrap-close-abort.js +parallel/test-http2-status-code-invalid.js +parallel/test-http-dump-req-when-res-ends.js +parallel/test-tls-root-certificates.js +parallel/test-fs-watch-recursive-validate.js +parallel/test-http2-origin.js +parallel/test-net-isipv6.js +parallel/test-http2-client-request-listeners-warning.js +parallel/test-querystring-multichar-separator.js +parallel/test-whatwg-writablestream-close.js +parallel/test-process-exit-from-before-exit.js +parallel/test-process-available-memory.js +parallel/test-stream-set-default-hwm.js +parallel/test-http2-res-writable-properties.js +parallel/test-repl-tab-complete-computed-props.js +parallel/test-stream-passthrough-drain.js +parallel/test-heapsnapshot-near-heap-limit-worker.js +parallel/test-fs-promises.js +parallel/test-dgram-socket-buffer-size.js +parallel/test-util-inspect-long-running.js +parallel/test-permission-fs-symlink.js +parallel/test-fs-realpath-pipe.js +parallel/test-child-process-validate-stdio.js +parallel/test-process-kill-pid.js +parallel/test-async-local-storage-bind.js +parallel/test-url-parse-format.js +parallel/test-stream-toWeb-allows-server-response.js +parallel/test-debugger-clear-breakpoints.js +parallel/test-fs-promises-watch.js +parallel/test-child-process-server-close.js +parallel/test-stream-add-abort-signal.js +parallel/test-http-no-read-no-dump.js +parallel/test-compile-cache-permission-disallowed.js +parallel/test-net-socket-destroy-twice.js +parallel/test-fs-readfilesync-enoent.js +parallel/test-events-once.js +parallel/test-tls-keyengine-invalid-arg-type.js +parallel/test-net-listen-invalid-port.js +parallel/test-dgram-connect-send-callback-buffer-length.js +parallel/test-stdio-pipe-stderr.js +parallel/test-env-newprotomethod-remove-unnecessary-prototypes.js +parallel/test-util-format.js +parallel/test-trace-env-stack.js +parallel/test-worker-sharedarraybuffer-from-worker-thread.js +parallel/test-http-date-header.js +parallel/test-internal-validators-validateoneof.js +parallel/test-https-autoselectfamily.js +parallel/test-event-emitter-check-listener-leaks.js +parallel/test-zlib-flush-flags.js +parallel/test-repl-sigint.js +parallel/test-http2-connect-method-extended-cant-turn-off.js +parallel/test-debugger-unavailable-port.js +parallel/test-accessor-properties.js +parallel/test-crypto-webcrypto-aes-decrypt-tag-too-small.js +parallel/test-https-timeout-server.js +parallel/test-compile-cache-typescript-strip-sourcemaps.js +parallel/test-stream3-pause-then-read.js +parallel/test-crypto-keygen-async-elliptic-curve-jwk-ec.js +parallel/test-http-url.parse-basic.js +parallel/test-http-contentLength0.js +parallel/test-http2-stream-client.js +parallel/test-stream-readable-resumeScheduled.js +parallel/test-disable-proto-delete.js +parallel/test-http-outgoing-proto.js +parallel/test-arm-math-illegal-instruction.js +parallel/test-child-process-ipc.js +parallel/test-http2-compat-serverresponse-statusmessage-property.js +parallel/test-uv-binding-constant.js +parallel/test-http-client-timeout-event.js +parallel/test-domain-intercept.js +parallel/test-stream-transform-callback-twice.js +parallel/test-crypto-key-objects-messageport.js +parallel/test-emit-after-uncaught-exception.js +parallel/test-cli-eval.js +parallel/test-http-double-content-length.js +parallel/test-child-process-destroy.js +parallel/test-async-wrap-destroyid.js +parallel/test-webstorage.js +parallel/test-http-1.0-keep-alive.js +parallel/test-domain-fs-enoent-stream.js +parallel/test-http-outgoing-end-multiple.js +parallel/test-pipe-abstract-socket.js +parallel/test-worker-event.js +parallel/test-buffer-compare-offset.js +parallel/test-crypto-keygen-async-elliptic-curve-jwk.js +parallel/test-domain-no-error-handler-abort-on-uncaught-9.js +parallel/test-dgram-close-is-not-callback.js +parallel/test-https-agent-session-injection.js +parallel/test-process-setgroups.js +parallel/test-http-readable-data-event.js +parallel/test-fs-watch-stop-async.js +parallel/test-inspector-open-coverage.js +parallel/test-cluster-send-socket-to-worker-http-server.js +parallel/test-http2-compat-serverrequest.js +parallel/test-http-max-http-headers.js +parallel/test-repl-tab-complete-require.js +parallel/test-net-socket-ready-without-cb.js +parallel/test-tls-get-ca-certificates-extra-subset.js +parallel/test-vm-codegen.js +parallel/test-child-process-fork-no-shell.js +parallel/test-sigint-infinite-loop.js +parallel/test-promise-hook-create-hook.js +parallel/test-http2-dont-override.js +parallel/test-child-process-default-options.js +parallel/test-worker-cleanexit-with-moduleload.js +parallel/test-http-request-large-payload.js +parallel/test-http-outgoing-buffer.js +parallel/test-https-server-options-incoming-message.js +parallel/test-freelist.js +parallel/test-http2-server-push-stream.js +parallel/test-cluster-rr-domain-listen.js +parallel/test-https-foafssl.js +parallel/test-http2-client-destroy.js +parallel/test-crypto-dh-errors.js +parallel/test-zlib-dictionary.js +parallel/test-fs-write-file-buffer.js +parallel/test-http2-compat-serverresponse-close.js +parallel/test-http2-large-write-destroy.js +parallel/test-http2-server-setLocalWindowSize.js +parallel/test-worker-heap-statistics.js +parallel/test-shadow-realm.js +parallel/test-repl-require-self-referential.js +parallel/test-worker-stdio-flush-inflight.js +parallel/test-fs-write-reuse-callback.js +parallel/test-net-server-nodelay.js +parallel/test-net-listen-handle-in-cluster-1.js +parallel/test-http-agent-timeout-option.js +parallel/test-timers-socket-timeout-removes-other-socket-unref-timer.js +parallel/test-http-buffer-sanity.js +parallel/test-path-extname.js +parallel/test-stream-writable-aborted.js +parallel/test-tls-finished.js +parallel/test-webcrypto-random.js +parallel/test-http-status-code.js +parallel/test-vm-harmony-symbols.js +parallel/test-http-agent-null.js +parallel/test-http2-socket-proxy-handler-for-has.js +parallel/test-path-relative.js +parallel/test-domain-set-uncaught-exception-capture-after-load.js +parallel/test-zlib-zstd-pledged-src-size.js +parallel/test-child-process-stdio.js +parallel/test-repl-completion-on-getters-disabled.js +parallel/test-worker-console-listeners.js +parallel/test-net-pipe-connect-errors.js +parallel/test-snapshot-error.js +parallel/test-http-outgoing-renderHeaders.js +parallel/test-child-process-send-type-error.js +parallel/test-compile-cache-success.js +parallel/test-http-timeout-overflow.js +parallel/test-zlib-brotli-from-string.js +parallel/test-timers-immediate-queue-throw.js +parallel/test-http2-server-close-idle-connection.js +parallel/test-cli-eval-event.js +parallel/test-http-chunked-304.js +parallel/test-debugger-heap-profiler.js +parallel/test-debug-process.js +parallel/test-process-exception-capture-errors.js +parallel/test-stream-duplex-readable-end.js +parallel/test-child-process-stdout-ipc.js +parallel/test-process-threadCpuUsage-worker-threads.js +parallel/test-http2-status-code.js +parallel/test-tls-client-abort2.js +parallel/test-v8-global-setter.js +parallel/test-module-parent-setter-deprecation.js +parallel/test-net-options-lookup.js +parallel/test-http2-close-while-writing.js +parallel/test-preload-self-referential.js +parallel/test-socketaddress.js +parallel/test-util-callbackify.js +parallel/test-http-outgoing-first-chunk-singlebyte-encoding.js +parallel/test-http2-sent-headers.js +parallel/test-http2-util-asserts.js +parallel/test-http-1.0.js +parallel/test-performance-nodetiming.js +parallel/test-net-large-string.js +parallel/test-http2-compat-serverrequest-host.js +parallel/test-async-local-storage-deep-stack.js +parallel/test-dgram-connect-send-multi-string-array.js +parallel/test-stream2-pipe-error-handling.js +parallel/test-http-server-keep-alive-timeout.js +parallel/test-zlib-zero-byte.js +parallel/test-tls-snicallback-error.js +parallel/test-eslint-async-iife-no-unused-result.js +parallel/test-readline.js +parallel/test-fs-append-file-sync.js +parallel/test-stream-transform-hwm0.js +parallel/test-inspector-network-content-type.js +parallel/test-http-client-agent-abort-close-event.js +parallel/test-internal-fs.js +parallel/test-fs-readfilesync-pipe-large.js +parallel/test-crypto-randomfillsync-regression.js +parallel/test-http-keepalive-request.js +parallel/test-zlib-flush-drain.js +parallel/test-stream-drop-take.js +parallel/test-http2-server-timeout.js +parallel/test-tls-ecdh-auto.js +parallel/test-performance-eventlooputil.js +parallel/test-stream-readable-strategy-option.js +parallel/test-http2-util-assert-valid-pseudoheader.js +parallel/test-console-table.js +parallel/test-http2-connect-tls-with-delay.js +parallel/test-http-url.parse-only-support-http-https-protocol.js +parallel/test-net-local-address-port.js +parallel/test-vm-context-property-forwarding.js +parallel/test-permission-no-addons.js +parallel/test-tls-wrap-no-abort.js +parallel/test-http-agent-timeout.js +parallel/test-windows-failed-heap-allocation.js +parallel/test-dgram-connect-send-multi-buffer-copy.js +parallel/test-fs-write-buffer.js +parallel/test-v8-take-coverage.js +parallel/test-http-catch-uncaughtexception.js +parallel/test-dgram-oob-buffer.js +parallel/test-debugger-preserve-breaks.js +parallel/test-fs-write-buffer-large.js +parallel/test-crypto-default-shake-lengths-oneshot.js +parallel/test-runner-test-fullname.js +parallel/test-tls-pfx-authorizationerror.js +parallel/test-runner-reporters.js +parallel/test-vm-module-errors.js +parallel/test-tls-get-ca-certificates-system-without-flag.js +parallel/test-stream-writable-decoded-encoding.js +parallel/test-repl-uncaught-exception-evalcallback.js +parallel/test-http-max-header-size-per-stream.js +parallel/test-repl-domain.js +parallel/test-promise-swallowed-event.js +parallel/test-sqlite-named-parameters.js +parallel/test-tls-session-cache.js +parallel/test-dgram-send-callback-multi-buffer-empty-address.js +parallel/test-worker-cleanexit-with-js.js +parallel/test-stream2-basic.js +parallel/test-https-argument-of-creating.js +parallel/test-diagnostics-channel-tracing-channel-has-subscribers.js +parallel/test-http2-stream-destroy-event-order.js +parallel/test-fs-mkdir-recursive-eaccess.js +parallel/test-tls-get-ca-certificates-error.js +parallel/test-runner-todo-skip-tests.js +parallel/test-net-socket-timeout-unref.js +parallel/test-permission-fs-read.js +parallel/test-http-localaddress-bind-error.js +parallel/test-net-end-without-connect.js +parallel/test-heap-prof-exec-argv.js +parallel/test-util-primordial-monkeypatching.js +parallel/test-crypto-keygen-key-objects.js +parallel/test-http-server-stale-close.js +parallel/test-repl-autocomplete.js +parallel/test-crypto-scrypt.js +parallel/test-internal-util-classwrapper.js +parallel/test-child-process-kill.js +parallel/test-internal-process-binding.js +parallel/test-fs-read-stream-autoClose.js +parallel/test-security-revert-unknown.js +parallel/test-http-client-read-in-error.js +parallel/test-events-listener-count-with-listener.js +parallel/test-inspector-vm-global-accessors-getter-sideeffect.js +parallel/test-stream-ispaused.js +parallel/test-timers-max-duration-warning.js +parallel/test-diagnostics-channel-tracing-channel-promise-error.js +parallel/test-cluster-ipc-throw.js +parallel/test-http2-util-nghttp2error.js +parallel/test-timers-immediate-promisified.js +parallel/test-worker-safe-getters.js +parallel/test-net-listen-close-server.js +parallel/test-http2-allow-http1.js +parallel/test-http-destroyed-socket-write2.js +parallel/test-stream-end-of-streams.js +parallel/test-stream-readable-with-unimplemented-_read.js +parallel/test-http-client-timeout-on-connect.js +parallel/test-dgram-send-callback-buffer-length-empty-address.js +parallel/test-http-client-encoding.js +parallel/test-internal-util-normalizeencoding.js +parallel/test-stream-construct.js +parallel/test-vm-measure-memory-multi-context.js +parallel/test-assert-fail-deprecation.js +parallel/test-process-uid-gid.js +parallel/test-https-set-timeout-server.js +parallel/test-http2-server-startup.js +parallel/test-handle-wrap-hasref.js +parallel/test-util-getcallsite.js +parallel/test-http-request-agent.js +parallel/test-process-env-sideeffects.js +parallel/test-stream2-readable-wrap-error.js +parallel/test-find-package-json.js +parallel/test-tls-client-resume.js +parallel/test-buffer-failed-alloc-typed-arrays.js +parallel/test-http-missing-header-separator-lf.js +parallel/test-tls-get-ca-certificates-bundled-subset.js +parallel/test-promise-unhandled-warn-no-hook.js +parallel/test-http-client-abort-response-event.js +parallel/test-bash-completion.js +parallel/test-console-clear.js +parallel/test-repl-envvars.js +parallel/test-stream-pipeline-duplex.js +parallel/test-http2-compat-expect-handling.js +parallel/test-listen-fd-detached-inherit.js +parallel/test-net-socket-setnodelay.js +parallel/test-require-node-prefix.js +parallel/test-cluster-dgram-2.js +parallel/test-corepack-version.js +parallel/test-stream-readable-data.js +parallel/test-math-random.js +parallel/test-domain-no-error-handler-abort-on-uncaught-6.js +parallel/test-crypto-lazy-transform-writable.js +parallel/test-child-process-net-reuseport.js +parallel/test-errors-systemerror.js +parallel/test-fs-fmap.js +parallel/test-http2-reset-flood.js +parallel/test-worker-mjs-workerdata.js +parallel/test-net-connect-buffer2.js +parallel/test-http-response-statuscode.js +parallel/test-http-client-abort-keep-alive-destroy-res.js +parallel/test-event-emitter-listener-count.js +parallel/test-http2-premature-close.js +parallel/test-tls-connect-given-socket.js +parallel/test-async-hooks-run-in-async-scope-caught-exception.js +parallel/test-worker-message-port-transfer-target.js +parallel/test-readline-carriage-return-between-chunks.js +parallel/test-streams-highwatermark.js +parallel/test-stream-once-readable-pipe.js +parallel/test-console-no-swallow-stack-overflow.js +parallel/test-fs-write-stream-err.js +parallel/test-child-process-internal.js +parallel/test-listen-fd-cluster.js +parallel/test-spawn-cmd-named-pipe.js +parallel/test-http2-client-priority-before-connect.js +parallel/test-stdout-stderr-write.js +parallel/test-debugger-breakpoint-exists.js +parallel/test-fs-sir-writes-alot.js +parallel/test-dgram-connect-send-callback-multi-buffer.js +parallel/test-fs-readdir-stack-overflow.js +parallel/test-http-chunked-smuggling.js +parallel/test-stream-readable-hwm-0.js +parallel/test-whatwg-webstreams-adapters-streambase.js +parallel/test-startup-empty-regexp-statics.js +parallel/test-http2-respond-file-fd-invalid.js +parallel/test-http2-misbehaving-flow-control.js +parallel/test-cluster-rr-ref.js +parallel/test-domain-no-error-handler-abort-on-uncaught-0.js +parallel/test-fs-read-offset-null.js +parallel/test-http-agent-remove.js +parallel/test-module-wrapper.js +parallel/test-process-beforeexit-throw-exit.js +parallel/test-http2-compat-write-head-after-close.js +parallel/test-https-server-close-destroy-timeout.js +parallel/test-https-eof-for-eom.js +parallel/test-heap-prof-interval.js +parallel/test-cluster-dgram-reuse.js +parallel/test-fs-watch-file-enoent-after-deletion.js +parallel/test-net-connect-options-ipv6.js +parallel/test-buffer-pending-deprecation.js +parallel/test-source-map-api.js +parallel/test-fs-watch-recursive-add-file-with-url.js +parallel/test-http-client-incomingmessage-destroy.js +parallel/test-http-req-close-robust-from-tampering.js +parallel/test-permission-fs-windows-path.js +parallel/test-fs-readdir-ucs2.js +parallel/test-https-abortcontroller.js +parallel/test-http-upgrade-binary.js +parallel/test-http-agent-domain-reused-gc.js +parallel/test-webcrypto-sign-verify.js +parallel/test-buffer-compare.js +parallel/test-path.js +parallel/test-promise-unhandled-silent.js +parallel/test-timers-refresh-in-callback.js +parallel/test-promise-hook-on-resolve.js +parallel/test-http-agent-maxtotalsockets.js +parallel/test-error-format-list.js +parallel/test-http2-head-request.js +parallel/test-permission-fs-read-entrypoint.js +parallel/test-fs-truncate-sync.js +parallel/test-http2-respond-file-error-pipe-offset.js +parallel/test-http-client-abort-destroy.js +parallel/test-tls-client-default-ciphers.js +parallel/test-whatwg-encoding-custom-textdecoder-streaming.js +parallel/test-http-client-abort-unix-socket.js +parallel/test-stream-push-order.js +parallel/test-worker-message-port-move.js +parallel/test-http-client-with-create-connection.js +parallel/test-http2-respond-file.js +parallel/test-preload.js +parallel/test-http2-respond-nghttperrors.js +parallel/test-require-mjs.js +parallel/test-internal-fs-syncwritestream.js +parallel/test-http2-create-client-secure-session.js +parallel/test-trace-events-async-hooks-dynamic.js +parallel/test-file-write-stream4.js +parallel/test-tick-processor-version-check.js +parallel/test-http2-window-size.js +parallel/test-http2-respond-file-404.js +parallel/test-diagnostics-channel-symbol-named.js +parallel/test-tls-key-mismatch.js +parallel/test-http-server-write-end-after-end.js +parallel/test-stream-write-destroy.js +parallel/test-http-client-insecure-http-parser-error.js +parallel/test-stream-destroy-event-order.js +parallel/test-diagnostics-channel-http2-client-stream-finish.js +parallel/test-runner-extraneous-async-activity.js +parallel/test-heap-prof-loop-drained.js +parallel/test-error-prepare-stack-trace.js +parallel/test-vm-timeout-escape-promise-2.js +parallel/test-permission-fs-traversal-path.js +parallel/test-net-socket-close-after-end.js +parallel/test-stream-unshift-empty-chunk.js +parallel/test-net-autoselectfamily-attempt-timeout-default-value.js +parallel/test-timers-to-primitive.js +parallel/test-tls-exportkeyingmaterial.js +parallel/test-dgram-close-signal.js +parallel/test-heap-prof-name.js +parallel/test-http2-altsvc.js +parallel/test-net-remote-address-port.js +parallel/test-process-env-tz.js +parallel/test-http-proxy.js +parallel/test-crypto-dh-leak.js +parallel/test-tls-server-parent-constructor-options.js +parallel/test-http-client-headers-array.js +parallel/test-net-bytes-read.js +parallel/test-http2-multistream-destroy-on-read-tls.js +parallel/test-buffer-tostring-4gb.js +parallel/test-cluster-process-disconnect.js +parallel/test-tls-cert-chains-in-ca.js +parallel/test-disable-proto-throw.js +parallel/test-zlib-params.js +parallel/test-http2-pipe-named-pipe.js +parallel/test-require-process.js +parallel/test-eval.js +parallel/test-worker-terminate-null-handler.js +parallel/test-http-client-spurious-aborted.js +parallel/test-http-agent-false.js +parallel/test-quic-internal-endpoint-stats-state.js +parallel/test-tls-alert.js +parallel/test-tls-legacy-pfx.js +parallel/test-inspector-not-blocked-on-idle.js +parallel/test-eslint-prefer-common-mustnotcall.js +parallel/test-performance-measure.js +parallel/test-http2-too-many-headers.js +parallel/test-fs-writev-promises.js +parallel/test-tls-get-ca-certificates-default.js +parallel/test-child-process-can-write-to-stdout.js +parallel/test-net-normalize-args.js +parallel/test-tls-clientcertengine-unsupported.js +parallel/test-http-header-owstext.js +parallel/test-buffer-copy.js +parallel/test-vm-measure-memory-lazy.js +parallel/test-dns-get-server.js +parallel/test-webcrypto-sign-verify-hmac.js +parallel/test-domain-run.js +parallel/test-fs-write-stream-file-handle-2.js +parallel/test-async-local-storage-snapshot.js +parallel/test-http2-write-callbacks.js +parallel/test-child-process-spawn-timeout-kill-signal.js +parallel/test-stdout-stderr-reading.js +parallel/test-promise-reject-callback-exception.js +parallel/test-webcrypto-encrypt-decrypt-aes.js +parallel/test-fs-promises-write-optional-params.js +parallel/test-net-listening.js +parallel/test-domain-bind-timeout.js +parallel/test-fs-readdir-types.js +parallel/test-http2-respond-with-file-connection-abort.js +parallel/test-process-getgroups.js +parallel/test-stream-pipe-cleanup.js +parallel/test-http2-malformed-altsvc.js +parallel/test-http-chunk-extensions-limit.js +parallel/test-broadcastchannel-custom-inspect.js +parallel/test-stream-writableState-uncorked-bufferedRequestCount.js +parallel/test-net-better-error-messages-listen.js +parallel/test-http2-client-upload-reject.js +parallel/test-debugger-exceptions.js +parallel/test-fs-mkdtempDisposableSync.js +parallel/test-dns-resolveany-bad-ancount.js +parallel/test-inspector-strip-types.js +parallel/test-mime-api.js +parallel/test-webcrypto-derivebits-hkdf.js +parallel/test-http-many-ended-pipelines.js +parallel/test-performanceobserver-gc.js +parallel/test-worker-crypto-sign-transfer-result.js +parallel/test-repl-autolibs.js +parallel/test-whatwg-encoding-custom-textdecoder-ignorebom.js +parallel/test-stream-readable-emit-readable-short-stream.js +parallel/test-beforeexit-event-exit.js +parallel/test-net-stream.js +parallel/test-stream-big-packet.js +parallel/test-vm-indexed-properties.js +parallel/test-cluster-worker-exit.js +parallel/test-dgram-send-error.js +parallel/test-net-autoselectfamily-commandline-option.js +parallel/test-console-count.js +parallel/test-repl-definecommand.js +parallel/test-worker-esm-missing-main.js +parallel/test-timers-user-call.js +parallel/test-tls-connect-secure-context.js +parallel/test-debugger-low-level.js +parallel/test-http2-https-fallback.js +parallel/test-fs-write-stream-autoclose-option.js +parallel/test-http-remove-header-stays-removed.js +parallel/test-structuredClone-domexception.js +parallel/test-module-multi-extensions.js +parallel/test-dgram-udp4.js +parallel/test-fs-mkdir-mode-mask.js +parallel/test-tls-invoke-queued.js +parallel/test-promise-unhandled-silent-no-hook.js +parallel/test-http2-server-close-callback.js +parallel/test-http2-server-rfc-9113-server.js +parallel/test-net-connect-abort-controller.js +parallel/test-worker-message-type-unknown.js +parallel/test-net-timeout-no-handle.js +parallel/test-dgram-connect-send-empty-array.js +parallel/test-config-json-schema.js +parallel/test-readline-input-onerror.js +parallel/test-http-pipe-fs.js +parallel/test-webstreams-pipeline.js +parallel/test-url-is-url-internal.js +parallel/test-http-incoming-message-options.js +parallel/test-http-outgoing-message-write-callback.js +parallel/test-async-local-storage-exit-does-not-leak.js +parallel/test-fs-read-type.js +parallel/test-async-hooks-worker-asyncfn-terminate-2.js +parallel/test-vm-new-script-new-context.js +parallel/test-whatwg-encoding-custom-interop.js +parallel/test-webstreams-finished.js +parallel/test-net-during-close.js +parallel/test-event-emitter-once.js +parallel/test-stream-writable-final-async.js +parallel/test-fs-open-no-close.js +parallel/test-path-glob.js +parallel/test-http2-multi-content-length.js +parallel/test-timers-process-tampering.js +parallel/test-url-relative.js +parallel/test-messageevent-brandcheck.js +parallel/test-eslint-prefer-util-format-errors.js +parallel/test-net-child-process-connect-reset.js +parallel/test-worker-nearheaplimit-deadlock.js +parallel/test-http2-max-concurrent-streams.js +parallel/test-http2-padding-aligned.js +parallel/test-diagnostics-channel-tracing-channel-sync-early-exit.js +parallel/test-http2-invalid-last-stream-id.js +parallel/test-tls-ecdh.js +parallel/test-process-cpuUsage.js +parallel/test-dgram-send-empty-packet.js +parallel/test-permission-fs-absolute-path.js +parallel/test-stream-readableListening-state.js +parallel/test-fs-readfile-pipe.js +parallel/test-listen-fd-detached.js +parallel/test-fs-watch-recursive-update-file.js +parallel/test-http-perf_hooks.js +parallel/test-vm-function-declaration.js +parallel/test-env-var-no-warnings.js +parallel/test-child-process-spawn-shell.js +parallel/test-runner-root-duration.js +parallel/test-http-socket-error-listeners.js +parallel/test-child-process-send-returns-boolean.js +parallel/test-net-socket-write-error.js +parallel/test-punycode.js +parallel/test-worker-vm-context-terminate.js +parallel/test-https-agent-session-reuse.js +parallel/test-stream-objectmode-undefined.js +parallel/test-http2-client-unescaped-path.js +parallel/test-dns-perf_hooks.js +parallel/test-tls-connect-abort-controller.js +parallel/test-whatwg-url-custom-searchparams-foreach.js +parallel/test-vm-context-dont-contextify.js +parallel/test-readline-promises-tab-complete.js +parallel/test-cluster-server-restart-none.js +parallel/test-https-truncate.js +parallel/test-dgram-custom-lookup.js +parallel/test-http2-compat-serverresponse-headers-send-date.js +parallel/test-assert-deep-with-error.js +parallel/test-fs-promises-file-handle-close-errors.js +parallel/test-repl-reverse-search.js +parallel/test-child-process-uid-gid.js +parallel/test-assert-partial-deep-equal.js +parallel/test-http-automatic-headers.js +parallel/test-http2-create-client-session.js +parallel/test-http2-connect-options.js +parallel/test-http2-generic-streams.js +parallel/test-stream-readable-destroy.js +parallel/test-stream-error-once.js +parallel/test-permission-allow-wasi-cli.js +parallel/test-stream-writable-constructor-set-methods.js +parallel/test-next-tick.js +parallel/test-http2-ping.js +parallel/test-abort-controller-any-timeout.js +parallel/test-tty-stdin-pipe.js +parallel/test-http2-invalidheaderfields-client.js +parallel/test-events-static-geteventlisteners.js +parallel/test-https-agent-servername.js +parallel/test-http-invalid-path-chars.js +parallel/test-next-tick-when-exiting.js +parallel/test-http-response-multi-content-length.js +parallel/test-net-sync-cork.js +parallel/test-file-write-stream5.js +parallel/test-repl-context.js +parallel/test-dgram-recv-error.js +parallel/test-http-blank-header.js +parallel/test-crypto-keygen-async-encrypted-private-key.js +parallel/test-inspector-network-http.js +parallel/test-http-invalid-urls.js +parallel/test-zlib-write-after-close.js +parallel/test-net-server-listen-options.js +parallel/test-worker-exit-code.js +parallel/test-snapshot-coverage.js +parallel/test-whatwg-url-custom-searchparams-delete.js +parallel/test-console-not-call-toString.js +parallel/test-net-autoselectfamily-default.js +parallel/test-webcrypto-cryptokey-workers.js +parallel/test-stream-readable-readable-then-resume.js +parallel/test-zlib-write-after-flush.js +parallel/test-event-emitter-set-max-listeners-side-effects.js +parallel/test-http-response-splitting.js +parallel/test-https-client-reject.js +parallel/test-fs-watchfile.js +parallel/test-vm-timeout-escape-promise.js +parallel/test-util-inspect.js +parallel/test-cli-syntax-piped-good.js +parallel/test-buffer-over-max-length.js +parallel/test-domain-async-id-map-leak.js +parallel/test-dns-channel-cancel.js +parallel/test-console-self-assign.js +parallel/test-net-better-error-messages-path.js +parallel/test-cluster-basic.js +parallel/test-stream3-cork-end.js +parallel/test-http2-large-write-close.js +parallel/test-http-outgoing-destroyed.js +parallel/test-buffer-writeuint.js +parallel/test-internal-util-helpers.js +parallel/test-promises-warning-on-unhandled-rejection.js +parallel/test-worker-stack-overflow.js +parallel/test-net-listen-twice.js +parallel/test-fs-rmdir-recursive-sync-warns-on-file.js +parallel/test-http-server-reject-chunked-with-content-length.js +parallel/test-http2-onping.js +parallel/test-net-writable.js +parallel/test-dns-default-order-ipv4.js +parallel/test-timers-next-tick.js +parallel/test-net-server-unref.js +parallel/test-v8-coverage.js +parallel/test-diagnostics-channel-http.js +parallel/test-console-async-write-error.js +parallel/test-vm-strict-mode.js +parallel/test-fs-rmdir-recursive.js +parallel/test-diagnostics-channel-tracing-channel-callback-early-exit.js +parallel/test-stream-readable-unpipe-resume.js +parallel/test-tcp-wrap-listen.js +parallel/test-domain-no-error-handler-abort-on-uncaught-8.js +parallel/test-socket-writes-before-passed-to-tls-socket.js +parallel/test-performance-gc.js +parallel/test-cluster-worker-kill-signal.js +parallel/test-process-execve-abort.js +parallel/test-whatwg-url-custom-global.js +parallel/test-fileurltopathbuffer.js +parallel/test-stream-wrap-encoding.js +parallel/test-tls-get-ca-certificates-extra.js +parallel/test-icu-data-dir.js +parallel/test-process-raw-debug.js +parallel/test-cluster-send-deadlock.js +parallel/test-http2-compat-serverresponse-flushheaders.js +parallel/test-buffer-from.js +parallel/test-inspect-address-in-use.js +parallel/test-internal-util-weakreference.js +parallel/test-force-repl.js +parallel/test-event-emitter-symbols.js +parallel/test-os-eol.js +parallel/test-https-socket-options.js +parallel/test-http-server-close-idle.js +parallel/test-net-socket-connect-invalid-autoselectfamily.js +parallel/test-cluster-primary-error.js +parallel/test-tls-wrap-econnreset.js +parallel/test-http2-removed-header-stays-removed.js +parallel/test-tls-interleave.js +parallel/test-http-server-clear-timer.js +parallel/test-http-information-processing.js +parallel/test-stream-readable-aborted.js +parallel/test-trace-events-v8.js +parallel/test-http-response-no-headers.js +parallel/test-http-dummy-characters-smuggling.js +parallel/test-http-client-timeout-agent.js +parallel/test-http-server-request-timeout-upgrade.js +parallel/test-readline-emit-keypress-events.js +parallel/test-worker-nested-on-process-exit.js +parallel/test-tls-socket-snicallback-without-server.js +parallel/test-dgram-create-socket-handle-fd.js +parallel/test-http-client-abort2.js +parallel/test-common-expect-warning.js +parallel/test-repl-import-referrer.js +parallel/test-util-isDeepStrictEqual.js +parallel/test-worker-message-port-arraybuffer.js +parallel/test-http-server-multiheaders.js +parallel/test-http-keepalive-free.js +parallel/test-performance-global.js +parallel/test-tls-socket-close.js +parallel/test-pipe-outgoing-message-data-emitted-after-ended.js +parallel/test-fs-util-validateoffsetlength.js +parallel/test-fs-fsync.js +parallel/test-crypto-keygen-key-object-without-encoding.js +parallel/test-http-outgoing-finish-writable.js +parallel/test-tls-socket-destroy.js +parallel/test-util-deprecate.js +parallel/test-cluster-disconnect-unshared-udp.js +parallel/test-diagnostics-channel-http2-client-stream-start.js +parallel/test-repl-clear-immediate-crash.js +parallel/test-tls-external-accessor.js +parallel/test-http2-max-settings.js +parallel/test-dgram-connect-send-default-host.js +parallel/test-webcrypto-util.js +parallel/test-domain-top-level-error-handler-throw.js +parallel/test-timers-unref.js +parallel/test-repl-tab.js +parallel/test-stream-uint8array.js +parallel/test-tls-disable-renegotiation.js +parallel/test-dns-lookupService.js +parallel/test-net-socket-connect-without-cb.js +parallel/test-child-process-stdio-big-write-end.js +parallel/test-fs-fchmod.js +parallel/test-http2-binding.js +parallel/test-snapshot-typescript.js +parallel/test-child-process-exec-timeout-kill.js +parallel/test-repl-throw-null-or-undefined.js +parallel/test-repl-array-prototype-tempering.js +parallel/test-tls-reuse-host-from-socket.js +parallel/test-async-hooks-vm-gc.js +parallel/test-child-process-ipc-next-tick.js +parallel/test-fs-truncate-clear-file-zero.js +parallel/test-promise-unhandled-flag.js +parallel/test-inspect-support-for-node_options.js +parallel/test-assert-calltracker-getCalls.js +parallel/test-pending-deprecation.js +parallel/test-http-client-default-headers-exist.js +parallel/test-http-set-max-idle-http-parser.js +parallel/test-crypto-dh-stateless.js +parallel/test-timers-refresh.js +parallel/test-cluster-dgram-1.js +parallel/test-internal-socket-list-receive.js +parallel/test-stream-reduce.js +parallel/test-child-process-fork-close.js +parallel/test-dgram-abort-closed.js +parallel/test-http-write-head.js +parallel/test-fs-realpath-buffer-encoding.js +parallel/test-crypto-subtle-cross-realm.js +parallel/test-child-process-stdout-flush-exit.js +parallel/test-vm-createcacheddata.js +parallel/test-http2-session-gc-while-write-scheduled.js +parallel/test-internal-module-require.js +parallel/test-worker-abort-on-uncaught-exception-terminate.js +parallel/test-stream-pipeline.js +parallel/test-module-loading-globalpaths.js +parallel/test-fs-readfile-pipe-large.js +parallel/test-http-client-close-with-default-agent.js +parallel/test-buffer-indexof.js +parallel/test-child-process-stdio-overlapped.js +parallel/test-async-hooks-top-level-clearimmediate.js +parallel/test-dns-setlocaladdress.js +parallel/test-url-fileurltopath.js +parallel/test-shadow-realm-gc-module.js +parallel/test-diagnostics-channel-module-require-error.js +parallel/test-http-server-request-timeout-keepalive.js +parallel/test-snapshot-basic.js +parallel/test-crypto-prime.js +parallel/test-v8-deserialize-buffer.js +parallel/test-stream3-cork-uncork.js +parallel/test-runner-misc.js +parallel/test-compile-cache-api-permission.js +parallel/test-http-url.parse-path.js +parallel/test-net-socket-local-address.js +parallel/test-fs-mkdir.js +parallel/test-fs-watch-recursive-sync-write.js +parallel/test-http2-server-settimeout-no-callback.js +parallel/test-http2-compat-serverresponse-headers-after-destroy.js +parallel/test-permission-wasi.js +parallel/test-trace-events-binding.js +parallel/test-worker-track-unmanaged-fds.js +parallel/test-repl-require-context.js +parallel/test-repl-pretty-stack-custom-writer.js +parallel/test-async-hooks-enable-before-promise-resolve.js +parallel/test-http-client-get-url.js +parallel/test-tls-transport-destroy-after-own-gc.js +parallel/test-stream2-readable-wrap-destroy.js +parallel/test-internal-net-isLoopback.js +parallel/test-tls-client-reject-12.js +parallel/test-fs-read-file-sync-hostname.js +parallel/test-mime-whatwg.js +parallel/test-eslint-non-ascii-character.js +parallel/test-tls-psk-errors.js +parallel/test-repl-tab-complete-no-warn.js +parallel/test-inspector-inspect-brk-node.js +parallel/test-timers-this.js +parallel/test-repl-save-load-load-non-existent.js +parallel/test-zlib-flush-write-sync-interleaved.js +parallel/test-cluster-disconnect-idle-worker.js +parallel/test-require-invalid-package.js +parallel/test-http-client-close-event.js +parallel/test-fs-read-optional-params.js +parallel/test-http-server-options-incoming-message.js +parallel/test-child-process-stdin-ipc.js +parallel/test-tls-env-bad-extra-ca.js +parallel/test-assert-calltracker-report.js +parallel/test-http2-session-graceful-close.js +parallel/test-whatwg-events-add-event-listener-options-signal.js +parallel/test-cluster-child-index-dgram.js +parallel/test-tls-reinitialize-listeners.js +parallel/test-zlib-failed-init.js +parallel/test-datetime-change-notify.js +parallel/test-repl-strict-mode-previews.js +parallel/test-http2-propagate-session-destroy-code.js +parallel/test-https-pfx.js +parallel/test-stream-readable-hwm-0-async.js +parallel/test-tls-junk-server.js +parallel/test-tls-client-resume-12.js +parallel/test-repl-use-global.js +parallel/test-path-normalize.js +parallel/test-crypto-domains.js +parallel/test-cluster-worker-isdead.js +parallel/test-delayed-require.js +parallel/test-stdin-script-child.js +parallel/test-http2-stream-removelisteners-after-close.js +parallel/test-stdin-pause-resume.js +parallel/test-child-process-spawn-controller.js +parallel/test-http-req-res-close.js +parallel/test-fs-syncwritestream.js +parallel/test-worker-unsupported-things.js +parallel/test-http2-compat-errors.js +parallel/test-https-options-boolean-check.js +parallel/test-promise-unhandled-throw-handler.js +parallel/test-promise-hook-on-after.js +parallel/test-module-globalpaths-nodepath.js +parallel/test-worker-process-cwd.js +parallel/test-tls-secure-context-usage-order.js +parallel/test-shadow-realm-module.js +parallel/test-http2-respond-file-204.js +parallel/test-inspector-close-worker.js +parallel/test-worker-ref.js +parallel/test-inspector-has-inspector-false.js +parallel/test-repl-inspect-defaults.js +parallel/test-querystring.js +parallel/test-fs-rmdir-type-check.js +parallel/test-child-process-exec-abortcontroller-promisified.js +parallel/test-runner-typechecking.js +parallel/test-crypto-keygen-no-rsassa-pss-params.js +parallel/test-tls-empty-sni-context.js +parallel/test-exception-handler2.js +parallel/test-zlib-destroy-pipe.js +parallel/test-wrap-js-stream-duplex.js +parallel/test-runner-mocking.js +parallel/test-repl-load-multiline-from-history.js +parallel/test-http2-client-onconnect-errors.js +parallel/test-worker-stdio-from-preload-module.js +parallel/test-vm-access-process-env.js +parallel/test-tls-close-event-after-write.js +parallel/test-net-eaddrinuse.js +parallel/test-cluster-eaccess.js +parallel/test-performance-nodetiming-uvmetricsinfo.js +parallel/test-snapshot-argv1.js +parallel/test-tls-client-renegotiation-limit.js +parallel/test-http2-server-shutdown-before-respond.js +parallel/test-domain-thrown-error-handler-stack.js +parallel/test-fs-writestream-open-write.js +parallel/test-worker-heap-snapshot.js +parallel/test-process-env-allowed-flags-are-documented.js +parallel/test-https-timeout-server-2.js +parallel/test-http2-priority-cycle-.js +parallel/test-tls-check-server-identity.js +parallel/test-process-getactiveresources.js +parallel/test-fs-buffer.js +parallel/test-tls-ca-concat.js +parallel/test-buffer-tostring-rangeerror.js +parallel/test-stream-pipeline-listeners.js +parallel/test-http2-compat-serverresponse-statuscode.js +parallel/test-inspector-network-data-sent.js +parallel/test-repl-end-emits-exit.js +parallel/test-repl-tab-complete-import.js +parallel/test-async-hooks-http-parser-destroy.js +parallel/test-tls-connect-stream-writes.js +parallel/test-zlib-deflate-constructors.js +parallel/test-child-process-stdio-merge-stdouts-into-cat.js +parallel/test-domain-uncaught-exception.js +parallel/test-tls-ticket.js +parallel/test-child-process-send-keep-open.js +parallel/test-fs-read-stream-encoding.js +parallel/test-warn-sigprof.js +parallel/test-x509-escaping.js +parallel/test-stream2-decode-partial.js +parallel/test-cluster-accept-fail.js +parallel/test-http-parser.js +parallel/test-stream-duplex-from.js +parallel/test-repl-save-load-save-without-name.js +parallel/test-repl-custom-eval-previews.js +parallel/test-path-zero-length-strings.js +parallel/test-http-outgoing-finished.js +parallel/test-http2-update-settings.js +parallel/test-https-server-options-server-response.js +parallel/test-net-bytes-written-large.js +parallel/test-tls-on-empty-socket.js +parallel/test-whatwg-url-custom-searchparams-getall.js +parallel/test-http-server-connection-list-when-close.js +parallel/test-crypto-keygen-duplicate-deprecated-option.js +parallel/test-os-userinfo-handles-getter-errors.js +parallel/test-fs-buffertype-writesync.js +parallel/test-http2-invalidheaderfield.js +parallel/test-http-header-obstext.js +parallel/test-zlib-no-stream.js +parallel/test-async-hooks-execution-async-resource.js +parallel/test-domain-multiple-errors.js +parallel/test-process-execve-worker-threads.js +parallel/test-compile-cache-api-flush.js +parallel/test-https-connecting-to-http.js +parallel/test-repl-unexpected-token-recoverable.js +parallel/test-abortsignal-cloneable.js +parallel/test-diagnostics-channel-safe-subscriber-errors.js +parallel/test-cluster-dgram-bind-fd.js +parallel/test-repl-tab-complete-files.js +parallel/test-net-dns-custom-lookup.js +parallel/test-vm-proxy-failure-CP.js +parallel/test-tls-timeout-server.js +parallel/test-http2-trailers-after-session-close.js +parallel/test-async-hooks-fatal-error.js +parallel/test-event-emitter-error-monitor.js +parallel/test-dgram-close-in-listening.js +parallel/test-cli-node-print-help.js +parallel/test-asyncresource-bind.js +parallel/test-http-outgoing-message-inheritance.js +parallel/test-http2-client-write-empty-string.js +parallel/test-stream-readable-next-no-null.js +parallel/test-module-symlinked-peer-modules.js +parallel/test-http-head-response-has-no-body.js +parallel/test-module-prototype-mutation.js +parallel/test-stream-events-prepend.js +parallel/test-domain-from-timer.js +parallel/test-inspector-connect-to-main-thread.js +parallel/test-process-emit.js +parallel/test-signal-unregister.js +parallel/test-readline-undefined-columns.js +parallel/test-compile-cache-updated-file.js +parallel/test-net-listen-after-destroying-stdin.js +parallel/test-http-transfer-encoding-repeated-chunked.js +parallel/test-http2-client-shutdown-before-connect.js +parallel/test-permission-allow-child-process-cli.js +parallel/test-v8-startup-snapshot-api.js +parallel/test-trace-events-dynamic-enable-workers-disabled.js +parallel/test-dgram-connect-send-empty-buffer.js +parallel/test-eslint-documented-errors.js +parallel/test-tls-passphrase.js +parallel/test-http-chunked.js +parallel/test-dns-resolveany.js +parallel/test-fs-write-file.js +parallel/test-set-incoming-message-header.js +parallel/test-assert-fail.js +parallel/test-tls-wrap-econnreset-pipe.js +parallel/test-webcrypto-encrypt-decrypt-rsa.js +parallel/test-worker-terminate-microtask-loop.js +parallel/test-cluster-worker-init.js +parallel/test-eventemitter-asyncresource.js +parallel/test-stream2-finish-pipe.js +parallel/test-http2-client-set-priority.js +parallel/test-buffer-of-no-deprecation.js +parallel/test-stream-readable-flow-recursion.js +parallel/test-worker-message-port-drain.js +parallel/test-child-process-exec-any-shells-windows.js +parallel/test-net-perf_hooks.js +parallel/test-stream-finished.js +parallel/test-diagnostics-channel-process.js +parallel/test-messageport-hasref.js +parallel/test-tz-version.js +parallel/test-tls-socket-default-options.js +parallel/test-fs-readv-promisify.js +parallel/test-webstream-readable-from.js +parallel/test-process-setsourcemapsenabled.js +parallel/test-inspector-debug-end.js +parallel/test-worker-http2-generic-streams-terminate.js +parallel/test-assert-typedarray-deepequal.js +parallel/test-fs-copyfile.js +parallel/test-net-reconnect.js +parallel/test-tls-buffersize.js +parallel/test-require-json.js +parallel/test-http-parser-multiple-execute.js +parallel/test-buffer-set-inspect-max-bytes.js +parallel/test-net-connect-reset-after-destroy.js +parallel/test-fs-write-stream-change-open.js +parallel/test-fs-filehandle-use-after-close.js +parallel/test-heap-prof-sigint.js +parallel/test-cluster-fork-stdio.js +parallel/test-child-process-send-cb.js +parallel/test-event-emitter-errors.js +parallel/test-fs-promises-readfile-with-fd.js +parallel/test-repl-options.js +parallel/test-stream-transform-objectmode-falsey-value.js +parallel/test-http2-compat-aborted.js +parallel/test-internal-socket-list-send.js +parallel/test-path-basename.js +parallel/test-fs-opendir.js +parallel/test-cppheap-stats.js +parallel/test-snapshot-config.js +parallel/test-http2-autoselect-protocol.js +parallel/test-trace-events-net.js +parallel/test-http2-compat-serverresponse-settimeout.js +parallel/test-fs-write-no-fd.js +parallel/test-tls-zero-clear-in.js +parallel/test-worker-syntax-error-file.js +parallel/test-http-header-overflow.js +parallel/test-http-keep-alive-timeout.js +parallel/test-tls-env-extra-ca-no-crypto.js +parallel/test-inspector-async-context-brk.js +parallel/test-eventtarget-memoryleakwarning.js +parallel/test-diagnostic-channel-http-response-created.js +parallel/test-cluster-worker-handle-close.js +parallel/test-trace-events-api-worker-disabled.js +parallel/test-internal-util-decorate-error-stack.js +parallel/test-net-connect-options-invalid.js +parallel/test-stream-pipe-after-end.js +parallel/test-whatwg-url-custom-searchparams-has.js +parallel/test-net-server-close.js +parallel/test-whatwg-url-canparse.js +parallel/test-dgram-bind-socket-close-before-lookup.js +parallel/test-snapshot-stack-trace-limit-mutation.js +parallel/test-fs-promises-exists.js +parallel/test-http2-trailers.js +parallel/test-repl-top-level-await.js +parallel/test-buffer-slow.js +parallel/test-tls-sni-server-client.js +parallel/test-net-server-reset.js +parallel/test-http-server-timeouts-validation.js +parallel/test-diagnostics-channel-tracing-channel-sync-error.js +parallel/test-cluster-disconnect-with-no-workers.js +parallel/test-shadow-realm-gc.js +parallel/test-http-client-request-options.js +parallel/test-dgram-setTTL.js +parallel/test-net-persistent-ref-unref.js +parallel/test-console-instance.js +parallel/test-fs-watch-abort-signal.js +parallel/test-fs-realpath-on-substed-drive.js +parallel/test-dns-channel-cancel-promise.js +parallel/test-tls-multi-pfx.js +parallel/test-http2-perform-server-handshake.js +parallel/test-readable-from-web-enqueue-then-close.js +parallel/test-force-repl-with-eval.js +parallel/test-http2-server-errors.js +parallel/test-worker-terminate-http2-respond-with-file.js +parallel/test-child-process-spawnsync-shell.js +parallel/test-crypto-pbkdf2.js +parallel/test-http-transfer-encoding-smuggling.js +parallel/test-whatwg-readablebytestream-bad-buffers-and-views.js +parallel/test-querystring-escape.js +parallel/test-buffer-zero-fill.js +parallel/test-http-server-close-all.js +parallel/test-domain-emit-error-handler-stack.js +parallel/test-eslint-prefer-assert-iferror.js +parallel/test-tls-destroy-stream-12.js +parallel/test-vm-module-link.js +parallel/test-http2-compat-method-connect.js +parallel/test-process-abort.js +parallel/test-dgram-bind.js +parallel/test-child-process-exec-stdout-stderr-data-string.js +parallel/test-vm-is-context.js +parallel/test-whatwg-url-custom-deepequal.js +parallel/test-zlib-flush.js +parallel/test-worker-process-env-shared.js +parallel/test-http-information-headers.js +parallel/test-child-process-detached.js +parallel/test-fs-promises-writefile.js +parallel/test-crypto-keygen-rfc8017-a-2-3.js +parallel/test-stream-catch-rejections.js +parallel/test-worker-uncaught-exception.js +parallel/test-http-write-head-after-set-header.js +parallel/test-tls-alert-handling.js +parallel/test-console-log-throw-primitive.js +parallel/test-pipe-abstract-socket-http.js +parallel/test-cluster-disconnect-unshared-tcp.js +parallel/test-tls-set-encoding.js +parallel/test-runner-enable-source-maps-issue.js +parallel/test-trace-events-promises.js +parallel/test-tls-close-notify.js +parallel/test-fs-readfile-unlink.js +parallel/test-diagnostics-channel-tracing-channel-sync-run-stores.js +parallel/test-fs-close.js +parallel/test-worker-message-transfer-port-mark-as-untransferable.js +parallel/test-http2-respond-with-fd-errors.js +parallel/test-crypto-keygen-async-encrypted-private-key-der.js +parallel/test-timers-interval-throw.js +parallel/test-dns-setservers-type-check.js +parallel/test-path-isabsolute.js +parallel/test-fs-chmod.js +parallel/test-compile-cache-typescript-esm.js +parallel/test-timers-timeout-promisified.js +parallel/test-cli-node-options-disallowed.js +parallel/test-net-connect-options-allowhalfopen.js +parallel/test-webstreams-compose.js +parallel/test-http-max-header-size.js +parallel/test-process-env-symbols.js +parallel/test-repl-custom-eval.js +parallel/test-repl-syntax-error-handling.js +parallel/test-child-process-fork-and-spawn.js +parallel/test-stream-pipe-deadlock.js +parallel/test-stream2-unpipe-drain.js +parallel/test-blob-createobjecturl.js +parallel/test-zlib-brotli-16GB.js +parallel/test-process-next-tick.js +parallel/test-diagnostic-channel-http-request-created.js +parallel/test-repl-tab-complete.js +parallel/test-v8-collect-gc-profile.js +parallel/test-assert.js +parallel/test-timers-unrefed-in-beforeexit.js +parallel/test-repl-uncaught-exception-standalone.js +parallel/test-vm-getters.js +parallel/test-vm-syntax-error-message.js +parallel/test-domain-nested-throw.js +parallel/test-buffer-slice.js +parallel/test-runner-option-validation.js +parallel/test-https-connect-address-family.js +parallel/test-tls-fast-writing.js +parallel/test-timers-reset-process-domain-on-throw.js +parallel/test-http-url.parse-https.request.js +parallel/test-child-process-fork-getconnections.js +parallel/test-net-client-bind-twice.js +parallel/test-fs-fchown.js +parallel/test-inspector-open.js +parallel/test-worker.js +parallel/test-cluster-setup-primary.js +parallel/test-sqlite-timeout.js +parallel/test-vm-global-identity.js +parallel/test-net-persistent-keepalive.js +parallel/test-http-uncaught-from-request-callback.js +parallel/test-intl-v8BreakIterator.js +parallel/test-h2-large-header-cause-client-to-hangup.js +parallel/test-repl-save-load-editor-mode.js +parallel/test-http-server-headers-timeout-interrupted-headers.js +parallel/test-stdin-child-proc.js +parallel/test-fs-read-stream-pos.js +parallel/test-buffer-tostring.js +parallel/test-worker-message-port-message-port-transferring.js +parallel/test-http-request-method-delete-payload.js +parallel/test-err-name-deprecation.js +parallel/test-stream-base-typechecking.js +parallel/test-http-parser-memory-retention.js +parallel/test-fs-append-file.js +parallel/test-repl-empty.js +parallel/test-diagnostics-channel-tracing-channel-promise-early-exit.js +parallel/test-fs-read-stream.js +parallel/test-stream2-push.js +parallel/test-https-localaddress-bind-error.js +parallel/test-stdout-close-catch.js +parallel/test-diagnostics-channel-http2-client-stream-error.js +parallel/test-sqlite-session.js +parallel/test-stream2-readable-non-empty-end.js +parallel/test-stream-readable-object-multi-push-async.js +parallel/test-tls-socket-constructor-alpn-options-parsing.js +parallel/test-repl-cli-eval.js +parallel/test-fs-non-number-arguments-throw.js +parallel/test-http-response-setheaders.js +parallel/test-process-env-ignore-getter-setter.js +parallel/test-trace-events-worker-metadata-with-name.js +parallel/test-dsa-fips-invalid-key.js +parallel/test-http-client-timeout-option-with-agent.js +parallel/test-directory-import.js +parallel/test-http2-misbehaving-multiplex.js +parallel/test-validators.js +parallel/test-http2-session-stream-state.js +parallel/test-startup-large-pages.js +parallel/test-worker-workerdata-messageport.js +parallel/test-tls-psk-circuit.js +parallel/test-repl-tab-complete-custom-completer.js +parallel/test-worker-messaging-errors-handler.js +parallel/test-stream-writable-change-default-encoding.js +parallel/test-tls-server-verify.js +parallel/test-http-server-async-dispose.js +parallel/test-net-socket-destroy-send.js +parallel/test-runner-filetest-location.js +parallel/test-assert-checktag.js +parallel/test-error-aggregateTwoErrors.js +parallel/test-tls-cert-regression.js +parallel/test-worker-workerdata-sharedarraybuffer.js +parallel/test-process-constants-noatime.js +parallel/test-assert-first-line.js +parallel/test-http-autoselectfamily.js +parallel/test-blob.js +parallel/test-require-dot.js +parallel/test-event-emitter-num-args.js +parallel/test-quic-internal-endpoint-options.js +parallel/test-tls-peer-certificate-encoding.js +parallel/test-crypto-keygen-invalid-parameter-encoding-ec.js +parallel/test-http-res-write-after-end.js +parallel/test-compile-cache-api-success.js +parallel/test-quic-internal-endpoint-listen-defaults.js +parallel/test-preload-print-process-argv.js +parallel/test-trace-events-worker-metadata.js +parallel/test-fs-readfile.js +parallel/test-http2-serve-file.js +parallel/test-inspector-waiting-for-disconnect.js +parallel/test-shadow-realm-globals.js +parallel/test-http2-compat-write-early-hints-invalid-argument-type.js +parallel/test-worker-memory.js +parallel/test-tls-client-auth.js +parallel/test-fs-write-stream-close-without-callback.js +parallel/test-domain-nested.js +parallel/test-net-autoselectfamily-attempt-timeout-cli-option.js +parallel/test-fs-existssync-memleak-longpath.js +parallel/test-cluster-bind-twice.js +parallel/test-repl-harmony.js +parallel/test-domain-no-error-handler-abort-on-uncaught-5.js +parallel/test-whatwg-url-properties.js +parallel/test-crypto-hash-stream-pipe.js +parallel/test-child-process-exec-timeout-not-expired.js +parallel/test-inspector-exit-worker-in-wait-for-connection.js +parallel/test-zlib-truncated.js +parallel/test-dgram-send-callback-multi-buffer.js +parallel/test-readline-line-separators.js +parallel/test-internal-async-context-frame-enabled.js +parallel/test-repl-pretty-custom-stack.js +parallel/test-inspector-enabled.js +parallel/test-worker-message-port-message-before-close.js +parallel/test-vm-syntax-error-stderr.js +parallel/test-tls-hello-parser-failure.js +parallel/test-microtask-queue-run.js +parallel/test-http-request-join-authorization-headers.js +parallel/test-http-abort-queued.js +parallel/test-worker-relative-path-double-dot.js +parallel/test-whatwg-url-custom-searchparams-set.js +parallel/test-timers-timeout-to-interval.js +parallel/test-repl-unsafe-array-iteration.js +parallel/test-crypto-hmac.js +parallel/test-inspector-worker-target.js +parallel/test-https-agent-unref-socket.js +parallel/test-timers-clear-object-does-not-throw-error.js +parallel/test-buffer-iterator.js +parallel/test-fs-open-mode-mask.js +parallel/test-http2-compat-serverrequest-pipe.js +parallel/test-fs-read-stream-patch-open.js +parallel/test-http-upgrade-agent.js +parallel/test-domain-timers-uncaught-exception.js +parallel/test-http-upgrade-reconsume-stream.js +parallel/test-fs-symlink-longpath.js +parallel/test-worker-data-url.js +parallel/test-net-connect-buffer.js +parallel/test-process-exception-capture.js +parallel/test-tls-basic-validations.js +parallel/test-http2-client-setLocalWindowSize.js +parallel/test-require-extensions-same-filename-as-dir-trailing-slash.js +parallel/test-stream-pipe-error-handling.js +parallel/test-cluster-bind-privileged-port.js +parallel/test-child-process-stdin.js +parallel/test-runner-assert.js +parallel/test-repl.js +parallel/test-sqlite-custom-functions.js +parallel/test-crypto-keygen-empty-passphrase-no-prompt.js +parallel/test-http-upgrade-client.js +parallel/test-dgram-createSocket-type.js +parallel/test-dns.js +parallel/test-repl-require-after-write.js +parallel/test-process-redirect-warnings-env.js +parallel/test-http-upgrade-server2.js +parallel/test-zlib-sync-no-event.js +parallel/test-crypto-dh-stateless-async.js +parallel/test-net-allow-half-open.js +parallel/test-tls-addca.js +parallel/test-http-default-encoding.js +parallel/test-http2-server-set-header.js +parallel/test-crypto-keygen-rfc8017-9-1.js +parallel/test-http2-compat-socket-set.js +parallel/test-module-main-extension-lookup.js +parallel/test-cluster-net-server-drop-connection.js +parallel/test-stream2-unpipe-leak.js +parallel/test-module-parent-deprecation.js +parallel/test-dgram-cluster-close-in-listening.js +parallel/test-module-builtin.js +parallel/test-http-url.parse-auth.js +parallel/test-compile-cache-api-error.js +parallel/test-http2-destroy-after-write.js +parallel/test-stream-compose-operator.js +parallel/test-net-bytes-stats.js +parallel/test-http2-zero-length-header.js +parallel/test-http-request-invalid-method-error.js +parallel/test-fs-promises-mkdtempDisposable.js +parallel/test-net-server-listen-handle.js +parallel/test-worker-message-port-transfer-terminate.js +parallel/test-v8-flag-pool-size-0.js +parallel/test-https-host-headers.js +parallel/test-child-process-exec-error.js +parallel/test-snapshot-console.js +parallel/test-fs-read.js +parallel/test-repl-let-process.js +parallel/test-http2-request-response-proto.js +parallel/test-net-autoselectfamily.js +parallel/test-tls-streamwrap-buffersize.js +parallel/test-fs-watchfile-bigint.js +parallel/test-http-client-res-destroyed.js +parallel/test-assert-if-error.js +parallel/test-timers-immediate-queue.js +parallel/test-ttywrap-stack.js +parallel/test-child-process-spawn-argv0.js +parallel/test-worker-message-port.js +parallel/test-net-server-drop-connections.js +parallel/test-domain-crypto.js +parallel/test-stream2-set-encoding.js +parallel/test-cluster-shared-handle-bind-error.js +parallel/test-worker-unref-from-message-during-exit.js +parallel/test-stream3-pipeline-async-iterator.js +parallel/test-net-server-close-before-calling-lookup-callback.js +parallel/test-tls-getcertificate-x509.js +parallel/test-cluster-net-listen.js +parallel/test-compile-cache-permission-allowed.js +parallel/test-http2-exceeds-server-trailer-size.js +parallel/test-stream-unshift-read-race.js +parallel/test-inspector-network-arbitrary-data.js +parallel/test-timers-same-timeout-wrong-list-deleted.js +parallel/test-http2-options-server-request.js +parallel/test-fs-write-stream-patch-open.js +parallel/test-v8-collect-gc-profile-exit-before-stop.js +parallel/test-eval-strict-referenceerror.js +parallel/test-snapshot-stack-trace-limit.js +parallel/test-diagnostics-channel-module-require.js +parallel/test-worker-resource-limits.js +parallel/test-runner-mock-timers.js +parallel/test-crypto-x509.js +parallel/test-http-parser-free.js +parallel/test-promise-unhandled-warn.js +parallel/test-https-client-override-global-agent.js +parallel/test-queue-microtask-uncaught-asynchooks.js +parallel/test-dgram-send-callback-buffer-length.js +parallel/test-fs-link.js +parallel/test-http2-compat-serverresponse-write.js +parallel/test-blob-file-backed.js +parallel/test-inspector-has-idle.js +parallel/test-dns-cancel-reverse-lookup.js +parallel/test-async-hooks-promise.js +parallel/test-http2-compat-serverrequest-settimeout.js +parallel/test-eslint-prefer-assert-methods.js +parallel/test-stream2-large-read-stall.js +parallel/test-http-chunk-problem.js +parallel/test-http-keep-alive-pipeline-max-requests.js +parallel/test-http-abort-before-end.js +parallel/test-diagnostics-channel-tracing-channel-sync.js +parallel/test-dns-default-order-verbatim.js +parallel/test-http-server-headers-timeout-keepalive.js +parallel/test-https-drain.js +parallel/test-cluster-server-restart-rr.js +parallel/test-inspector-emit-protocol-event.js +parallel/test-whatwg-readablebytestreambyob.js +parallel/test-http2-compat-serverrequest-end.js +parallel/test-process-ref-unref.js +parallel/test-module-children.js +parallel/test-crypto-dh-modp2.js +parallel/test-diagnostics-channel-tracing-channel-args-types.js +parallel/test-inspector-async-hook-after-done.js +parallel/test-crypto-sec-level.js +parallel/test-process-argv-0.js +parallel/test-http-pause-resume-one-end.js +parallel/test-child-process-execFile-promisified-abortController.js +parallel/test-net-throttle.js +parallel/test-http2-error-order.js +parallel/test-readline-position.js +parallel/test-inspector-heap-allocation-tracker.js +parallel/test-fs-chmod-mask.js +parallel/test-http2-byteswritten-server.js +parallel/test-fs-rmdir-recursive-warns-not-found.js +parallel/test-dgram-implicit-bind.js +parallel/test-http2-many-writes-and-destroy.js +parallel/test-net-socket-no-halfopen-enforcer.js +parallel/test-vm-proxies.js +parallel/test-runner-no-isolation-filtering.js +parallel/test-vm-module-reevaluate.js +parallel/test-http2-util-update-options-buffer.js +parallel/test-http-server-keepalive-req-gc.js +parallel/test-internal-errors.js +parallel/test-debugger-random-port.js +parallel/test-child-process-exec-cwd.js +parallel/test-http-response-readable.js +parallel/test-stream-readable-unshift.js +parallel/test-stream-pipe-flow-after-unpipe.js +parallel/test-http-server-options-server-response.js +parallel/test-webcrypto-sign-verify-eddsa.js +parallel/test-fs-stream-construct-compat-error-write.js +parallel/test-net-connect-immediate-finish.js +parallel/test-inspector.js +parallel/test-fs-promises-file-handle-stream.js +parallel/test-vm-module-modulerequests.js +parallel/test-snapshot-eval.js +parallel/test-fs-watch-recursive-add-file.js +parallel/test-http2-compat-write-early-hints-invalid-argument-value.js +parallel/test-http2-server-rfc-9113-client.js +parallel/test-stream2-transform.js +parallel/test-filehandle-close.js +parallel/test-http-client-readable.js +parallel/test-trace-events-vm.js +parallel/test-fs-lchown-negative-one.js +parallel/test-dns-set-default-order.js +parallel/test-os.js +parallel/test-permission-fs-wildcard.js +parallel/test-worker-message-event.js +parallel/test-vm-strict-assign.js +parallel/test-fs-watch-recursive-promise.js +parallel/test-tls-set-ciphers.js +parallel/test-crypto-subtle-zero-length.js +parallel/test-timers-immediate-unref-nested-once.js +parallel/test-v8-string-is-one-byte-representation.js +parallel/test-net-access-byteswritten.js +parallel/test-buffer-constants.js +parallel/test-trace-events-get-category-enabled-buffer.js +parallel/test-stdio-undestroy.js +parallel/test-tls-get-ca-certificates-system.js +parallel/test-trace-events-fs-sync.js +parallel/test-util-inspect-proxy.js +parallel/test-crypto-dh-padding.js +parallel/test-buffer-new.js +parallel/test-timers-clear-null-does-not-throw-error.js +parallel/test-windows-abort-exitcode.js +parallel/test-zlib-write-after-end.js +parallel/test-http-client-immediate-error.js +parallel/test-fs-stream-double-close.js +parallel/test-runner-root-after-with-refed-handles.js +parallel/test-eslint-no-array-destructuring.js +parallel/test-worker-exit-heapsnapshot.js +parallel/test-stdin-script-child-option.js +parallel/test-inspector-console.js +parallel/test-buffer-swap.js +parallel/test-crypto-domain.js +parallel/test-worker-stdio.js +parallel/test-fs-ready-event-stream.js +parallel/test-http2-server-push-disabled.js +parallel/test-url-format.js +parallel/test-async-wrap-pop-id-during-load.js +parallel/test-stream-pipe-event.js +parallel/test-repl-setprompt.js +parallel/test-repl-multiline-navigation.js +parallel/test-buffer-tostring-range.js +parallel/test-child-process-spawnsync-args.js +parallel/test-require-cache.js +parallel/test-vm-context-async-script.js +parallel/test-fs-read-stream-fd.js +parallel/test-inspector-network-fetch.js +parallel/test-process-getactiverequests.js +parallel/test-fs-copyfile-respect-permissions.js +parallel/test-stream-readable-add-chunk-during-data.js +parallel/test-fs-watch-recursive-delete.js +parallel/test-stream-transform-split-objectmode.js +parallel/test-global-setters.js +parallel/test-net-server-options.js +parallel/test-fs-read-stream-resume.js +parallel/test-http2-server-push-stream-head.js +parallel/test-repl-function-definition-edge-case.js +parallel/test-runner-force-exit-flush.js +parallel/test-dns-lookup-promises.js +parallel/test-http2-compat-serverrequest-headers.js +parallel/test-diagnostics-channel-bind-store.js +parallel/test-fs-sync-fd-leak.js +parallel/test-npm-install.js +parallel/test-v8-query-objects.js +parallel/test-permission-fs-write-v8.js +parallel/test-net-pause-resume-connecting.js +parallel/test-http-outgoing-settimeout.js +parallel/test-error-reporting.js +parallel/test-http-server-reject-cr-no-lf.js +parallel/test-util-deprecate-invalid-code.js +parallel/test-http2-compat-serverresponse.js +parallel/test-net-connect-reset-before-connected.js +parallel/test-fs-symlink.js +parallel/test-webstream-encoding-inspect.js +parallel/test-worker-fs-stat-watcher.js +parallel/test-http-upgrade-advertise.js +parallel/test-http2-misused-pseudoheaders.js +parallel/test-zlib-invalid-arg-value-brotli-compress.js +parallel/test-event-emitter-subclass.js +parallel/test-http2-client-settings-before-connect.js +parallel/test-zlib-reset-before-write.js +parallel/test-worker-messaging-errors-timeout.js +parallel/test-repl-stdin-push-null.js +parallel/test-cluster-worker-disconnect-on-error.js +parallel/test-trace-events-console.js +parallel/test-stream-readable-resume-hwm.js +parallel/test-npm-version.js +parallel/test-trace-events-none.js +parallel/test-buffer-resizable.js +parallel/test-http2-no-more-streams.js +parallel/test-whatwg-encoding-custom-textdecoder.js +parallel/test-fs-promises-readfile.js +parallel/test-tls-async-cb-after-socket-end.js +parallel/test-process-no-deprecation.js +parallel/test-fs-chown-negative-one.js +parallel/test-timers-clearImmediate-als.js +parallel/test-http2-multiplex.js +parallel/test-buffer-isascii.js +parallel/test-http-server-headers-timeout-pipelining.js +parallel/test-http2-tls-disconnect.js +parallel/test-path-posix-exists.js +parallel/test-fs-symlink-dir-junction-relative.js +parallel/test-socket-options-invalid.js +parallel/test-vm-create-and-run-in-context.js +parallel/test-process-umask.js +parallel/test-http-server-multiheaders2.js +parallel/test-tls-ticket-12.js +parallel/test-uv-errno.js +parallel/test-fs-write-stream-file-handle.js +parallel/test-async-hooks-destroy-on-gc.js +parallel/test-http-keep-alive-drop-requests.js +parallel/test-weakref.js +parallel/test-http-content-length-mismatch.js +parallel/test-http2-create-client-connect.js +parallel/test-http2-debug.js +parallel/test-console-diagnostics-channels.js +parallel/test-http-after-connect.js +parallel/test-timers-non-integer-delay.js +parallel/test-zlib-close-in-ondata.js +parallel/test-fs-write-stream-end.js +parallel/test-readable-from.js +parallel/test-cluster-uncaught-exception.js +parallel/test-tls-connect-no-host.js +parallel/test-stream-writable-invalid-chunk.js +parallel/test-whatwg-webstreams-coverage.js +parallel/test-performance-function-async.js +parallel/test-worker-nested-uncaught.js +parallel/test-diagnostics-channel-http2-server-stream-created.js +parallel/test-tls-wrap-econnreset-localaddress.js +parallel/test-fs-close-errors.js +parallel/test-process-getactiveresources-track-interval-lifetime.js +parallel/test-http2-respond-file-push.js +parallel/test-console.js +parallel/test-process-execve-socket.js +parallel/test-http-client-abort.js +parallel/test-vm-global-property-prototype.js +parallel/test-tls-multiple-cas-as-string.js +parallel/test-tls-keylog-tlsv13.js +parallel/test-worker-message-port-transfer-native.js +parallel/test-fs-truncate.js +parallel/test-async-hooks-recursive-stack-runInAsyncScope.js +parallel/test-fs-mkdtemp.js +parallel/test-https-server-connections-checking-leak.js +parallel/test-child-process-spawnsync-env.js +parallel/test-http-keep-alive-max-requests.js +parallel/test-whatwg-url-custom-searchparams.js +parallel/test-events-getmaxlisteners.js +parallel/test-worker-voluntarily-exit-followed-by-addition.js +parallel/test-inspector-contexts.js +parallel/test-inspector-bindings.js +parallel/test-zlib-brotli-from-brotli.js +parallel/test-http-server-request-timeout-pipelining.js +parallel/test-fs-watch-stop-sync.js +parallel/test-quic-handshake.js +parallel/test-diagnostics-channel-memory-leak.js +parallel/test-promise-unhandled-default.js +parallel/test-runner-mock-timers-scheduler.js +parallel/test-crypto-keygen-eddsa.js +parallel/test-tls-canonical-ip.js +parallel/test-debugger-restart-message.js +parallel/test-process-execpath.js +parallel/test-crypto-keygen-promisify.js +parallel/test-eslint-require-common-first.js +parallel/test-child-process-spawn-typeerror.js +parallel/test-async-hooks-worker-asyncfn-terminate-1.js +parallel/test-http-server-client-error.js +parallel/test-http2-ping-settings-heapdump.js +parallel/test-http-full-response.js +parallel/test-http-client-unescaped-path.js +parallel/test-https-server-close-all.js +parallel/test-net-server-max-connections.js +parallel/test-vm-module-dynamic-import-promise.js +parallel/test-sync-fileread.js +parallel/test-fs-makeStatsCallback.js +parallel/test-child-process-stdio-reuse-readable-stdio.js +parallel/test-runner-exit-code.js +parallel/test-stdout-cannot-be-closed-child-process-pipe.js +parallel/test-worker-esm-exit.js +parallel/test-buffer-write-fast.js +parallel/test-process-chdir-errormessage.js +parallel/test-net-persistent-nodelay.js +parallel/test-tls-enable-trace.js +parallel/test-http-upgrade-server.js +parallel/test-stream-readable-pause-and-resume.js +parallel/test-dgram-send-multi-buffer-copy.js +parallel/test-fs-realpath.js +parallel/test-worker-beforeexit-throw-exit.js +parallel/test-tls-server-setkeycert.js +parallel/test-whatwg-encoding-custom-api-basics.js +parallel/test-whatwg-webstreams-adapters-to-streamwritable.js +parallel/test-v8-flags.js +parallel/test-tls-clientcertengine-invalid-arg-type.js +parallel/test-http-no-content-length.js +parallel/test-webcrypto-keygen.js +parallel/test-net-server-drop-connections-in-cluster.js +parallel/test-http2-cancel-while-client-reading.js +parallel/test-child-process-dgram-reuseport.js +parallel/test-trace-events-async-hooks.js +parallel/test-runner-subtest-after-hook.js +parallel/test-domain-no-error-handler-abort-on-uncaught-1.js +parallel/test-repl-dynamic-import.js +parallel/test-fs-unlink-type-check.js +parallel/test-inspector-ip-detection.js +parallel/test-stream-transform-split-highwatermark.js +parallel/test-zlib-destroy.js +parallel/test-errors-aborterror.js +parallel/test-diagnostics-channel-object-channel-pub-sub.js +parallel/test-http-server-unconsume-consume.js +parallel/test-timers-immediate-unref-simple.js +parallel/test-fs-promises-file-handle-chmod.js +parallel/test-no-node-snapshot.js +parallel/test-dgram-udp6-link-local-address.js +parallel/test-eslint-prefer-primordials.js +parallel/test-tls-connect-allow-half-open-option.js +parallel/test-http-client-error-rawbytes.js +parallel/test-tls-cert-ext-encoding.js +parallel/test-process-kill-null.js +parallel/test-worker-message-port-wasm-threads.js +parallel/test-crypto-padding-aes256.js +parallel/test-http2-respond-no-data.js +parallel/test-worker-execargv-invalid.js +parallel/test-fs-readfile-flags.js +parallel/test-buffer-fakes.js +parallel/test-http2-timeouts.js +parallel/test-tls-use-after-free-regression.js +parallel/test-net-socket-byteswritten.js +parallel/test-pipe-unref.js +parallel/test-worker-messaging-errors-invalid.js +parallel/test-worker-dns-terminate-during-query.js +parallel/test-stream-compose.js +parallel/test-stream-pipe-await-drain-push-while-write.js +parallel/test-timers-nan-duration-warning.js +parallel/test-http-url.parse-search.js +parallel/test-child-process-exec-std-encoding.js +parallel/test-fs-watch-close-when-destroyed.js +parallel/test-http2-capture-rejection.js +parallel/test-cli-options-negation.js +parallel/test-permission-fs-symlink-target-write.js +parallel/test-diagnostics-channel-net-client-socket-tls.js +parallel/test-debugger-list.js +parallel/test-internal-validators-validateport.js +parallel/test-dgram-listen-after-bind.js +parallel/test-http-expect-handling.js +parallel/test-vm-module-synthetic.js +parallel/test-http-max-sockets.js +parallel/test-http-response-remove-header-after-sent.js +parallel/test-dgram-msgsize.js +parallel/test-crypto-publicDecrypt-fails-first-time.js +parallel/test-resource-usage.js +parallel/test-buffer-constructor-outside-node-modules.js +parallel/test-file-write-stream2.js +parallel/test-async-wrap-trigger-id.js +parallel/test-vm-no-dynamic-import-callback.js +parallel/test-cluster-setup-primary-multiple.js +parallel/test-process-env-windows-error-reset.js +parallel/test-net-server-try-ports.js +parallel/test-http-malformed-request.js +parallel/test-h2leak-destroy-session-on-socket-ended.js +parallel/test-fs-read-stream-double-close.js +parallel/test-runner-filter-warning.js +parallel/test-http-head-response-has-no-body-end-implicit-headers.js +parallel/test-net-socket-end-callback.js +parallel/test-worker-message-port-transfer-filehandle.js +parallel/test-fs-rmdir-recursive-throws-not-found.js +parallel/test-diagnostics-channel-tracing-channel-callback-run-stores.js +parallel/test-tls-no-sslv3.js +parallel/test-http-unix-socket-keep-alive.js +parallel/test-fetch-mock.js +parallel/test-require-symlink.js +parallel/test-cluster-worker-wait-server-close.js +parallel/test-https-byteswritten.js +parallel/test-next-tick-ordering2.js +parallel/test-repl-tab-complete-nested-repls.js +parallel/test-fs-readv.js +parallel/test-permission-inspector-brk.js +parallel/test-process-binding-internalbinding-allowlist.js +parallel/test-eval-disallow-code-generation-from-strings.js +parallel/test-cluster-worker-forced-exit.js +parallel/test-compile-cache-api-tmpdir.js +parallel/test-async-hooks-run-in-async-scope-this-arg.js +parallel/test-worker-http2-stream-terminate.js +parallel/test-worker-dns-terminate.js +parallel/test-snapshot-dns-lookup-localhost.js +parallel/test-inspector-already-activated-cli.js +parallel/test-stream-pipeline-with-empty-string.js +parallel/test-compile-cache-typescript-strip-miss.js +parallel/test-inspector-async-stack-traces-promise-then.js +parallel/test-queue-microtask.js +parallel/test-stream-write-final.js +parallel/test-http-outgoing-destroy.js +parallel/test-net-connect-keepalive.js +parallel/test-cluster-fork-windowsHide.js +parallel/test-https-server-headers-timeout.js +parallel/test-http-client-pipe-end.js +parallel/test-tls-peer-certificate-multi-keys.js +parallel/test-primordials-promise.js +parallel/test-module-version.js +parallel/test-fs-promises-watch-iterator.js +parallel/test-pipe-address.js +parallel/test-heapdump-async-hooks-init-promise.js +parallel/test-stream-readable-setEncoding-null.js +parallel/test-vm-create-context-circular-reference.js +parallel/test-trace-exit.js +parallel/test-async-local-storage-http-agent.js +parallel/test-net-server-blocklist.js +parallel/test-console-stdio-setters.js +parallel/test-process-exit.js +parallel/test-global-webcrypto.js +parallel/test-process-really-exit.js +parallel/test-cluster-disconnect.js +parallel/test-timers.js +parallel/test-http-dont-set-default-headers-with-setHost.js +parallel/test-stream-inheritance.js +parallel/test-http-server-request-timeout-interrupted-body.js +parallel/test-http2-client-stream-destroy-before-connect.js +parallel/test-stream-readable-dispose.js +parallel/test-vm-source-map-url.js +parallel/test-eslint-alphabetize-primordials.js +parallel/test-inspector-host-warning.js +parallel/test-domain-add-remove.js +parallel/test-child-process-disconnect.js +parallel/test-diagnostics-channel-http2-client-stream-created.js +parallel/test-fs-readdir-buffer.js +parallel/test-inspector-scriptparsed-context.js +parallel/test-timers-negative-duration-warning-emit-once-per-process.js +parallel/test-http-server-de-chunked-trailer.js +parallel/test-http2-client-rststream-before-connect.js +parallel/test-cli-syntax-eval.js +parallel/test-require-extensions-main.js +parallel/test-querystring-maxKeys-non-finite.js +parallel/test-url-parse-invalid-input.js +parallel/test-pipe-return-val.js +parallel/test-blocklist.js +parallel/test-crypto-update-encoding.js +parallel/test-stream-writable-samecb-singletick.js +parallel/test-fs-fchown-negative-one.js +parallel/test-process-threadCpuUsage-main-thread.js +parallel/test-http2-methods.js +parallel/test-process-execve-on-exit.js +parallel/test-process-exec-argv.js +parallel/test-cli-node-options-docs.js +parallel/test-trace-events-fs-async.js +parallel/test-readable-large-hwm.js +fixtures/workload/fibonacci.js +fixtures/workload/bounded.js +fixtures/workload/fibonacci-worker.js +fixtures/workload/fibonacci-worker-argv.js +fixtures/workload/allocation.js +fixtures/workload/allocation-worker.js +fixtures/workload/allocation-worker-argv.js +fixtures/warning_node_modules/new-buffer-cjs.js +fixtures/warning_node_modules/node_modules/new-buffer-esm/index.js +fixtures/warning_node_modules/node_modules/new-buffer-cjs/index.js +fixtures/console/hello_world.js +fixtures/console/console_low_stack_space.js +fixtures/console/2100bytes.js +fixtures/console/console.js +fixtures/console/force_colors.js +fixtures/overwrite-config-preload-module.js +fixtures/path.js +fixtures/nested-index/three.js +fixtures/nested-index/two/index.js +fixtures/nested-index/two/hello.js +fixtures/nested-index/one/index.js +fixtures/nested-index/one/hello.js +fixtures/nested-index/three/index.js +fixtures/self_ref_module/index.js +fixtures/v8-coverage/spawn-subprocess-no-cov.js +fixtures/v8-coverage/async-hooks.js +fixtures/v8-coverage/basic.js +fixtures/v8-coverage/combined_coverage/first.test.js +fixtures/v8-coverage/combined_coverage/second.test.js +fixtures/v8-coverage/combined_coverage/common.js +fixtures/v8-coverage/stop-coverage.js +fixtures/v8-coverage/spawn-subprocess.js +fixtures/v8-coverage/subprocess.js +fixtures/v8-coverage/worker.js +fixtures/v8-coverage/take-coverage.js +fixtures/v8-coverage/interval.js +fixtures/disable-warning-worker.js +fixtures/debugger-util-regression-fixture.js +fixtures/global/plain.js +fixtures/print-10-lines.js +fixtures/test-repl-tab-completion/helloworld.js +fixtures/permission/inspector-brk.js +fixtures/permission/required-module.js +fixtures/permission/hello-world.js +fixtures/permission/loader/index.js +fixtures/permission/main-module.js +fixtures/permission/simple-loader.js +fixtures/test-init-index/index.js +fixtures/empty.js +fixtures/echo.js diff --git a/SOURCES/v8.pc.in b/SOURCES/v8.pc.in new file mode 100644 index 0000000..adcb06b --- /dev/null +++ b/SOURCES/v8.pc.in @@ -0,0 +1,9 @@ +prefix=@PREFIX@ +includedir=@INCLUDEDIR@ +libdir=@LIBDIR@ + +Name: @PKGCONFNAME@ +Description: JavaScript Runtime +Version: @V8_VERSION@ +Libs: -L${libdir} -lv8 +Cflags: -I${includedir} diff --git a/SPECS/nodejs.spec b/SPECS/nodejs.spec index 7021757..4af0549 100644 --- a/SPECS/nodejs.spec +++ b/SPECS/nodejs.spec @@ -1,244 +1,169 @@ -%global with_debug 0 +## START: Set by rpmautospec +## (rpmautospec version 0.7.3) +## RPMAUTOSPEC: autorelease, autochangelog +%define autorelease(e:s:pb:n) %{?-p:0.}%{lua: + release_number = 7; + base_release_number = tonumber(rpm.expand("%{?-b*}%{!?-b:1}")); + print(release_number + base_release_number - 1); +}%{?-e:.%{-e*}}%{?-s:.%{-s*}}%{!?-n:%{?dist}} +## END: Set by rpmautospec -# PowerPC, s390x and aarch64 segfault during Debug builds -# https://github.com/nodejs/node/issues/20642 -%ifarch %{power64} s390x aarch64 -%global with_debug 0 +# This should be moved to rpm-redhat-config or similar as soon as feasible +# NOTE: %%SOURCE macros are not yet defined, so explicit path is needed +%{load:%{_sourcedir}/nodejs.srpm.macros} + +# === Versions of any software shipped in the main nodejs tarball +%nodejs_define_version node 1:24.4.1-%{autorelease} -p + +# The following ones are generated via script; +# expect anything between the markers to be overwritten on any update. + +# BEGIN automatic-version-macros # DO NOT REMOVE THIS LINE! +# Version from node-v24.4.1/src/node_version.h +%global node_soversion 137 + +# Version from node-v24.4.1/deps/ada/ada.h +%nodejs_define_version ada 3.2.4 +# Version from node-v24.4.1/deps/brotli/c/common/version.h +%nodejs_define_version brotli 1.1.0 +# Version from node-v24.4.1/deps/cares/include/ares_version.h +%nodejs_define_version c_ares 1.34.5 +# Version from node-v24.4.1/deps/histogram/include/hdr/hdr_histogram_version.h +%nodejs_define_version histogram 0.11.8 +# Version from node-v24.4.1/tools/icu/current_ver.dep +%nodejs_define_version icu 77.1 -p +# Version from node-v24.4.1/deps/uv/include/uv/version.h +%nodejs_define_version libuv 1.51.0 +# Version from node-v24.4.1/deps/llhttp/include/llhttp.h +%nodejs_define_version llhttp 9.3.0 +# Version from node-v24.4.1/deps/nghttp2/lib/includes/nghttp2/nghttp2ver.h +%nodejs_define_version nghttp2 1.66.0 +# Version from node-v24.4.1/deps/ngtcp2/nghttp3/lib/includes/nghttp3/version.h +%nodejs_define_version nghttp3 1.6.0 +# Version from node-v24.4.1/deps/ngtcp2/ngtcp2/lib/includes/ngtcp2/version.h +%nodejs_define_version ngtcp2 1.11.0 +# Version from node-v24.4.1/deps/cjs-module-lexer/src/package.json +%nodejs_define_version nodejs-cjs-module-lexer 2.1.0 +# Version from node-v24.4.1/lib/punycode.js +%nodejs_define_version nodejs-punycode 2.1.0 +# Version from node-v24.4.1/deps/undici/src/package.json +%nodejs_define_version nodejs-undici 7.11.0 +# Version from node-v24.4.1/deps/npm/package.json +%nodejs_define_version npm 1:11.4.2 +# Version from node-v24.4.1/deps/sqlite/sqlite3.h +%nodejs_define_version sqlite 3.50.2 +# Version from node-v24.4.1/deps/uvwasi/include/uvwasi.h +%nodejs_define_version uvwasi 0.0.21 +# Version from node-v24.4.1/deps/v8/include/v8-version.h +%nodejs_define_version v8 3:13.6.233.10 -p +# Version from node-v24.4.1/deps/zlib/zlib.h +%nodejs_define_version zlib 1.3.1 +# END automatic-version-macros # DO NOT REMOVE THIS LINE! + +# Special release for sub-packages with their own version string. +# The complex release string ensures that the subpackage release is always increasing, +# even in the event that the main package version changes +# while the sub-package version stays the same. +%global nodejs_subpackage_release %{node_epoch}.%{node_version}.%{node_release} + +# === Conditional build – global options +# Use all vendored dependencies when bootstrapping +%bcond all_deps_bundled %{with bootstrap} + +# === Distro-wide build configuration adjustments === +# v8 cannot be built with LTO enabled; +# the rest of the build should be LTO enabled via the configure script +%global _lto_cflags %{nil} + +# === Additional definitions === +# Architecture-dependent suffix for requiring/providing .so names +%if 0%{?__isa_bits} == 64 +%global _so_arch_suffix ()(64bit) %endif +# place for data files +%global nodejs_datadir %{_datarootdir}/node-%{node_version_major} +# place for (npm) packages used by multiple streams and/or that are stream-agnostic (do not care) +%global nodejs_common_sitelib %{_prefix}/lib/node_modules +# place for (npm) packages specific to this stream +%global nodejs_private_sitelib %{_prefix}/lib/node_modules_%{node_version_major} -# bundle dependencies that are not available as Fedora modules -%bcond_with bootstrap +Name: nodejs +Epoch: %{node_epoch} +Version: %{node_version} +Release: %{node_release} -# == Master Relase == -# This is used by both the nodejs package and the npm subpackage that -# has a separate version - the name is special so that rpmdev-bumpspec -# will bump this rather than adding .1 to the end. -%global baserelease 1 +Summary: JavaScript runtime +License: Apache-2.0 AND Artistic-2.0 AND BSD-2-Clause AND BSD-3-Clause AND BlueOak-1.0.0 AND CC-BY-3.0 AND CC0-1.0 AND ISC AND MIT +URL: https://nodejs.org -%{?!_pkgdocdir:%global _pkgdocdir %{_docdir}/%{name}-%{version}} +ExclusiveArch: %{nodejs_arches} +# v8 does not build on i686 any more +ExcludeArch: %{ix86} -# == Node.js Version == -# Note: Fedora should only ship LTS versions of Node.js (currently expected -# to be major versions with even numbers). The odd-numbered versions are new -# feature releases that are only supported for nine months, which is shorter -# than a Fedora release lifecycle. -%global nodejs_epoch 1 -%global nodejs_major 10 -%global nodejs_minor 24 -%global nodejs_patch 0 -%global nodejs_abi %{nodejs_major}.%{nodejs_minor} -# nodejs_soversion - from NODE_MODULE_VERSION in src/node_version.h -%global nodejs_soversion 64 -%global nodejs_version %{nodejs_major}.%{nodejs_minor}.%{nodejs_patch} -%global nodejs_release %{baserelease} +# SPEC tools – additiona macros, dependency generators, and utilities +BuildRequires: chrpath +BuildRequires: git-core +BuildRequires: jq +BuildRequires: nodejs-packaging +# Build system and supporting tools +BuildRequires: gcc-toolset-12 +BuildRequires: pkgconf, ninja-build +BuildRequires: python%{python3_pkgversion}-devel +BuildRequires: %{py3_dist setuptools jinja2} +# Additional libraries, either system or vendored ones +BuildRequires: pkgconfig(openssl) >= 3.0.2 +%nodejs_declare_bundled -a ada +%nodejs_declare_bundled -a brotli -plibbrotlidec,libbrotlienc +%nodejs_declare_bundled -a c-ares +%nodejs_declare_bundled -a histogram +%nodejs_declare_bundled -a icu +%nodejs_declare_bundled -a libuv +%nodejs_declare_bundled -a llhttp +%nodejs_declare_bundled -a nghttp2 +%nodejs_declare_bundled -a nghttp3 +%nodejs_declare_bundled -a ngtcp2 +%nodejs_declare_bundled -a nodejs-cjs-module-lexer +%nodejs_declare_bundled -a nodejs-punycode -npunycode +%nodejs_declare_bundled -a nodejs-undici +%nodejs_declare_bundled -a sqlite -psqlite3 +%nodejs_declare_bundled -a uvwasi +%nodejs_declare_bundled -a v8 +%nodejs_declare_bundled -a zlib -p +# Run-time dependencies of the main package +Requires: ca-certificates +# Required and/or recommended sub-packages +Requires: %{name}-libs%{?_isa} = %{node_evr} +Recommends: %{name}-docs = %{node_evr} +Recommends: %{name}-full-i18n%{?_isa} = %{node_evr} +Recommends: npm >= %{npm_epoch}:%{npm_version}-%{nodejs_subpackage_release} +# Virtual provides +Provides: nodejs(abi) = %{node_soversion}, nodejs(abi%{node_version_major}) = %{node_soversion} +Provides: nodejs(engine) = %{node_version} -%global nodejs_datadir %{_datarootdir}/nodejs +# Main source tarball; see packaging/make-nodejs-tarball.sh on how it is created +Source: node-v%{node_version}-stripped.tar.gz +# Sources 001-099: reserved for additional sources to be installed +# - Full ICU database data +Source001: https://github.com/unicode-org/icu/releases/download/release-%{icu_version_major}-%{icu_version_minor}/icu4c-%{icu_version_major}_%{icu_version_minor}-data-bin-b.zip +Source002: https://github.com/unicode-org/icu/releases/download/release-%{icu_version_major}-%{icu_version_minor}/icu4c-%{icu_version_major}_%{icu_version_minor}-data-bin-l.zip +# - Downstream/distribution configuration files +Source003: nodejs.pc.in +Source004: v8.pc.in +Source005: npmrc.in +# - Check section tests +Source010: test-runner.sh +Source011: test-should-pass.txt +Source020: i18n-btest402.js +# Source 100+: Packaging support files that won't be installed +# - Packaging supports scripts and Makefile, used to semi-automate RPM updates. See the Makefile in the tarball on how this is created. +Source100: packaging-scripts.tar.gz +# - Additional SRPM macros +Source101: nodejs.srpm.macros -# == Bundled Dependency Versions == -# v8 - from deps/v8/include/v8-version.h -# Epoch is set to ensure clean upgrades from the old v8 package -%global v8_epoch 1 -%global v8_major 6 -%global v8_minor 8 -%global v8_build 275 -%global v8_patch 32 -# V8 presently breaks ABI at least every x.y release while never bumping SONAME -%global v8_abi %{v8_major}.%{v8_minor} -%global v8_version %{v8_major}.%{v8_minor}.%{v8_build}.%{v8_patch} -%global v8_release %{nodejs_epoch}.%{nodejs_major}.%{nodejs_minor}.%{nodejs_patch}.%{nodejs_release} - -# c-ares - from deps/cares/include/ares_version.h -# https://github.com/nodejs/node/pull/9332 -%global c_ares_major 1 -%global c_ares_minor 15 -%global c_ares_patch 0 -%global c_ares_version %{c_ares_major}.%{c_ares_minor}.%{c_ares_patch} - -# http-parser - from deps/http_parser/http_parser.h -%global http_parser_major 2 -%global http_parser_minor 9 -%global http_parser_patch 4 -%global http_parser_version %{http_parser_major}.%{http_parser_minor}.%{http_parser_patch} - -# libuv - from deps/uv/include/uv/version.h -%global libuv_major 1 -%global libuv_minor 34 -%global libuv_patch 2 -%global libuv_version %{libuv_major}.%{libuv_minor}.%{libuv_patch} - -# nghttp2 - from deps/nghttp2/lib/includes/nghttp2/nghttp2ver.h -%global nghttp2_major 1 -%global nghttp2_minor 41 -%global nghttp2_patch 0 -%global nghttp2_version %{nghttp2_major}.%{nghttp2_minor}.%{nghttp2_patch} - -# ICU - from tools/icu/current_ver.dep -%global icu_major 64 -%global icu_minor 2 -%global icu_version %{icu_major}.%{icu_minor} - -%global icudatadir %{nodejs_datadir}/icudata -%{!?little_endian: %global little_endian %(%{__python3} -c "import sys;print (0 if sys.byteorder=='big' else 1)")} -# " this line just fixes syntax highlighting for vim that is confused by the above and continues literal - - -# punycode - from lib/punycode.js -# Note: this was merged into the mainline since 0.6.x -# Note: this will be unmerged in an upcoming major release -%global punycode_major 2 -%global punycode_minor 1 -%global punycode_patch 0 -%global punycode_version %{punycode_major}.%{punycode_minor}.%{punycode_patch} - -# npm - from deps/npm/package.json -%global npm_epoch 1 -%global npm_major 6 -%global npm_minor 14 -%global npm_patch 11 -%global npm_version %{npm_major}.%{npm_minor}.%{npm_patch} - -# In order to avoid needing to keep incrementing the release version for the -# main package forever, we will just construct one for npm that is guaranteed -# to increment safely. Changing this can only be done during an update when the -# base npm version number is increasing. -%global npm_release %{nodejs_epoch}.%{nodejs_major}.%{nodejs_minor}.%{nodejs_patch}.%{nodejs_release} - -# brotli - from deps/brotli/c/common/version.h -# v10.x doesn't have --shared-brotli configure option, so we have to bundle it -%global brotli_major 1 -%global brotli_minor 0 -%global brotli_patch 7 -%global brotli_version %{brotli_major}.%{brotli_minor}.%{brotli_patch} - -Name: nodejs -Epoch: %{nodejs_epoch} -Version: %{nodejs_version} -Release: %{nodejs_release}%{?dist} -Summary: JavaScript runtime -License: MIT and ASL 2.0 and ISC and BSD -Group: Development/Languages -URL: http://nodejs.org/ - -ExclusiveArch: %{nodejs_arches} - -# nodejs bundles openssl, but we use the system version in Fedora -# because openssl contains prohibited code, we remove openssl completely from -# the tarball, using the script in Source100 -Source0: node-v%{nodejs_version}-stripped.tar.gz -Source1: npmrc -Source2: btest402.js -Source3: https://github.com/unicode-org/icu/releases/download/release-%{icu_major}-%{icu_minor}/icu4c-%{icu_major}_%{icu_minor}-src.tgz -Source100: %{name}-tarball.sh - -# The native module Requires generator remains in the nodejs SRPM, so it knows -# the nodejs and v8 versions. The remainder has migrated to the -# nodejs-packaging SRPM. -Source7: nodejs_native.attr - -# Disable running gyp on bundled deps we don't use -Patch1: 0001-Disable-running-gyp-on-shared-deps.patch - -# Suppress the message from npm to run `npm -g update npm` -# This does bad things on an RPM-managed npm. -Patch2: 0002-Suppress-NPM-message-to-run-global-update.patch - -# Upstream patch to enable auto-detection of full ICU data -# https://github.com/nodejs/node/pull/30825 -Patch3: 0003-build-auto-load-ICU-data-from-with-icu-default-data-.patch - -# CVE-2020-7774 -Patch4: 0004-CVE-2020-7774-nodejs-y18n-prototype-pollution-vulnerability.patch - -BuildRequires: make -BuildRequires: python2-devel -BuildRequires: python3-devel -BuildRequires: zlib-devel -BuildRequires: gcc >= 6.3.0 -BuildRequires: gcc-c++ >= 6.3.0 -# needed to generate bundled provides for npm dependencies -# https://src.fedoraproject.org/rpms/nodejs/pull-request/2 -# https://pagure.io/nodejs-packaging/pull-request/10 -BuildRequires: nodejs-packaging -BuildRequires: chrpath -BuildRequires: libatomic - -%if %{with bootstrap} -Provides: bundled(http-parser) = %{http_parser_version} -Provides: bundled(libuv) = %{libuv_version} -Provides: bundled(nghttp2) = %{nghttp2_version} -%else -BuildRequires: systemtap-sdt-devel -BuildRequires: libuv-devel >= 1:%{libuv_version} -Requires: libuv >= 1:%{libuv_version} -BuildRequires: libnghttp2-devel >= %{nghttp2_version} -Requires: libnghttp2 >= %{nghttp2_version} -BuildRequires: http-parser-devel >= %{http_parser_version} -Requires: http-parser >= %{http_parser_version} - -%endif - -BuildRequires: openssl-devel - -# we need the system certificate store -Requires: ca-certificates - -# Pull in the full-icu data by default -Recommends: nodejs-full-i18n%{?_isa} = %{nodejs_epoch}:%{version}-%{release} - -# we need ABI virtual provides where SONAMEs aren't enough/not present so deps -# break when binary compatibility is broken -Provides: nodejs(abi) = %{nodejs_abi} -Provides: nodejs(abi%{nodejs_major}) = %{nodejs_abi} -Provides: nodejs(v8-abi) = %{v8_abi} -Provides: nodejs(v8-abi%{v8_major}) = %{v8_abi} - -# this corresponds to the "engine" requirement in package.json -Provides: nodejs(engine) = %{nodejs_version} - -# Node.js currently has a conflict with the 'node' package in Fedora -# The ham-radio group has agreed to rename their binary for us, but -# in the meantime, we're setting an explicit Conflicts: here -Conflicts: node <= 0.3.2-12 - -# The punycode module was absorbed into the standard library in v0.6. -# It still exists as a seperate package for the benefit of users of older -# versions. Since we've never shipped anything older than v0.10 in Fedora, -# we don't need the seperate nodejs-punycode package, so we Provide it here so -# dependent packages don't need to override the dependency generator. -# See also: RHBZ#11511811 -# UPDATE: punycode will be deprecated and so we should unbundle it in Node v8 -# and use upstream module instead -# https://github.com/nodejs/node/commit/29e49fc286080215031a81effbd59eac092fff2f -Provides: nodejs-punycode = %{punycode_version} -Provides: npm(punycode) = %{punycode_version} - -# Node.js has forked c-ares from upstream in an incompatible way, so we need -# to carry the bundled version internally. -# See https://github.com/nodejs/node/commit/766d063e0578c0f7758c3a965c971763f43fec85 -Provides: bundled(c-ares) = %{c_ares_version} - -# Node.js is closely tied to the version of v8 that is used with it. It makes -# sense to use the bundled version because upstream consistently breaks ABI -# even in point releases. Node.js upstream has now removed the ability to build -# against a shared system version entirely. -# See https://github.com/nodejs/node/commit/d726a177ed59c37cf5306983ed00ecd858cfbbef -Provides: bundled(v8) = %{v8_version} - -# Node.js is bound to a specific version of ICU which may not match the OS -# We cannot pin the OS to this version of ICU because every update includes -# an ABI-break, so we'll use the bundled copy. -Provides: bundled(icu) = %{icu_version} - -# Make sure we keep NPM up to date when we update Node.js -%if 0%{?rhel} -# EPEL doesn't support Recommends, so make it strict -Requires: npm = %{npm_epoch}:%{npm_version}-%{npm_release}%{?dist} -%else -Recommends: npm = %{npm_epoch}:%{npm_version}-%{npm_release}%{?dist} -%endif - -# Provide bundled brotli until we can build it with system package -Provides: bundled(brotli) = %{brotli_version} +%patchlist +0001-Remove-unused-OpenSSL-config.patch +0005-v8-highway-Fix-for-GCC-15-compiler-error-on-PPC8-PPC.patch +0001-fips-disable-options.patch %description Node.js is a platform built on Chrome's JavaScript runtime @@ -247,648 +172,389 @@ Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient, perfect for data-intensive real-time applications that run across distributed devices. +%package devel +Summary: JavaScript runtime – development headers +Requires: nodejs%{?_isa} = %{node_evr} +Requires: nodejs-libs%{?_isa} = %{node_evr} +Requires: nodejs-packaging +Requires: openssl-devel%{?_isa} +%{!?with_bundled_brotli:Requires: brotli-devel%{?_isa}} +%{!?with_bundled_libuv:Requires: libuv-devel%{?_isa}} +%{!?with_bundled_zlib:Requires: zlib-devel%{?_isa}} +# Note: -devel sub-packages of the various streams conflict with each other, +# as the headers cannot be easily namespaced (would break at lease node-gyp search path). +# Hence the Provides: in place of metapackage. +Provides: nodejs-devel = %{node_evr} -%package devel -Summary: JavaScript runtime - development headers -Group: Development/Languages -Requires: %{name}%{?_isa} = %{epoch}:%{nodejs_version}-%{nodejs_release}%{?dist} -Requires: openssl-devel%{?_isa} -Requires: zlib-devel%{?_isa} -Requires: nodejs-packaging - -%if %{with bootstrap} -# deps are bundled -%else -Requires: http-parser-devel%{?_isa} -Requires: libuv-devel%{?_isa} -%endif - -%description devel +%description devel Development headers for the Node.js JavaScript runtime. +%package -n v8-%{v8_version_major}.%{v8_version_minor}-devel +Summary: v8 – development headers +Epoch: %{v8_epoch} +Version: %{v8_version} +Release: %{nodejs_subpackage_release} -%package full-i18n -Summary: Non-English locale data for Node.js -Requires: %{name}%{?_isa} = %{nodejs_epoch}:%{nodejs_version}-%{nodejs_release}%{?dist} +Requires: nodejs-devel%{?_isa} = %{node_evr} +Requires: nodejs-libs%{?_isa} = %{node_evr} +Provides: v8-devel = %{v8_epoch}:%{v8_version}-%{nodejs_subpackage_release} +Obsoletes: v8-devel <= 2:10.2.154, v8-314-devel <= 2:3.14 -%description full-i18n -Optional data files to provide full-icu support for Node.js. Remove this -package to save space if non-English locales are not needed. +%description -n v8-%{v8_version_major}.%{v8_version_minor}-devel +Development headers for the v8 runtime. +%package libs +Summary: Node.js and v8 libraries +# v8 used to be a separate package; keep providing it virtually +Provides: v8 = %{v8_epoch}:%{v8_version}-%{nodejs_subpackage_release} +Provides: v8%{?_isa} = %{v8_epoch}:%{v8_version}-%{nodejs_subpackage_release} +Obsoletes: v8 < 1:6.7.17-10 +Provides: libv8.so.%{v8_version_major}%{?_so_arch_suffix} = %{v8_epoch}:%{v8_version} +Provides: libv8_libbase.so.%{v8_version_major}%{?_so_arch_suffix} = %{v8_epoch}:%{v8_version} +Provides: libv8_libplatform.so.%{v8_version_major}%{?_so_arch_suffix} = %{v8_epoch}:%{v8_version} -%package -n npm -Summary: Node.js Package Manager -Epoch: %{npm_epoch} -Version: %{npm_version} -Release: %{npm_release}%{?dist} +%description libs +Libraries to support Node.js and provide stable v8 interfaces. -# We used to ship npm separately, but it is so tightly integrated with Node.js -# (and expected to be present on all Node.js systems) that we ship it bundled -# now. -Obsoletes: npm < 0:3.5.4-6 -Provides: npm = %{npm_epoch}:%{npm_version} -Requires: nodejs = %{nodejs_epoch}:%{nodejs_version}-%{nodejs_release}%{?dist} +%package full-i18n +Summary: Non-English locale data for Node.js +Requires: nodejs%{?_isa} = %{node_evr} -# Do not add epoch to the virtual NPM provides or it will break -# the automatic dependency-generation script. -Provides: npm(npm) = %{npm_version} +%description full-i18n +Optional data files to provide full ICU support for Node.js. +Remove this package to save space if non-English locales are not needed. + +%package docs +Summary: Node.js API documentation +BuildArch: noarch +Requires(meta): nodejs = %{node_evr} + +%description docs +The API documentation for the Node.js JavaScript runtime. + +%package -n npm +Summary: Node.js Package Manager +Epoch: %{npm_epoch} +Version: %{npm_version} +Release: %{nodejs_subpackage_release} + +BuildArch: noarch +Requires: nodejs = %{node_evr} +Recommends: nodejs-docs = %{node_evr} +Provides: npm(npm) = %{npm_version} %description -n npm npm is a package manager for node.js. You can use it to install and publish your node programs. It manages dependencies and does other cool stuff. -%package docs -Summary: Node.js API documentation -Group: Documentation -BuildArch: noarch - -# We don't require that the main package be installed to -# use the docs, but if it is installed, make sure the -# version always matches -Conflicts: %{name} > %{nodejs_epoch}:%{nodejs_version}-%{nodejs_release}%{?dist} -Conflicts: %{name} < %{nodejs_epoch}:%{nodejs_version}-%{nodejs_release}%{?dist} - -%description docs -The API documentation for the Node.js JavaScript runtime. - - %prep -%autosetup -p1 -n node-v%{nodejs_version} +%autosetup -n node-v%{node_version} -S git_am +# clean the archive of the de-vendored dependencies, ensuring they are not used +readonly -a devendored_paths=( + deps/v8/third_party/jinja2 tools/inspector_protocol/jinja2 + %{?!with_bundled_brotli:deps/brotli} + %{?!with_bundled_c_ares:deps/cares} + %{?!with_bundled_libuv:deps/uv} + %{?!with_bundled_nodejs_cjs_module_lexer:deps/cjs-module-lexer} + %{?!with_bundled_nodejs_undici:deps/undici} + %{?!with_bundled_sqlite:deps/sqlite} + %{?!with_bundled_zlib:deps/zlib} +) +rm -rf "${devendored_paths[@]}" -# remove bundled dependencies that we aren't building -rm -rf deps/zlib - -# Replace any instances of unversioned python' with python2 -pathfix.py -i %{__python2} -pn $(find -type f ! -name "*.js") -find . -type f -exec sed -i "s~/usr\/bin\/env python~/usr/bin/python2~" {} \; -find . -type f -exec sed -i "s~/usr\/bin\/python\W~/usr/bin/python2~" {} \; -sed -i "s~python~python2~" $(find . -type f | grep "gyp$") -sed -i "s~usr\/bin\/python2~usr\/bin\/python3~" ./deps/v8/tools/gen-inlining-tests.py -sed -i "s~usr\/bin\/python.*$~usr\/bin\/python2~" ./deps/v8/tools/mb/mb_unittest.py -find . -type f -exec sed -i "s~python -c~python2 -c~" {} \; -sed -i "s~which('python')~which('python2')~" configure +# use system python throughout the whole sources +readonly -a potential_python_scripts=( + $(grep --recursive --files-with-matches --max-count=1 python) +) +%py3_shebang_fix "${potential_python_scripts[@]}" %build +# activate gcc-toolset-12 +# - disable annobin watermarking +# https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/9/html/developing_c_and_cpp_applications_in_rhel_9/assembly_additional-toolsets-for-development-rhel-9_developing-applications#ref_specifics-of-annobin-in-gcc-toolset-12_gcc-toolset-12 +. /opt/rh/gcc-toolset-12/enable +%undefine _annotated_build -%ifarch s390 s390x %{arm} %ix86 -# Decrease debuginfo verbosity to reduce memory consumption during final -# library linking -%global optflags %(echo %{optflags} | sed 's/-g /-g1 /') +# additional build flags +readonly -a extra_cflags=( + # Decrease debuginfo verbosity; otherwise, + # the linker will run out of memory when linking v8 + -g1 + # For i686 compatibility, build with defines from libuv (rhbz#892601) + -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 + # Do not use OpenSSL Engine API (RHEL-33743) + -DOPENSSL_NO_ENGINE + # 2022-07-14: There's a bug in either torque or gcc that causes a + # segmentation fault on ppc64le and s390x if compiled with -O2. Things + # run fine on -O1 and -O3, so we'll just go with -O3 (like upstream) + # while this gets sorted out. + -O3 + # v8 segfaults when Identical Code Folding is enabled + # - https://github.com/nodejs/node/issues/47865 + -fno-ipa-icf +) +# configuration flags +readonly -a configure_flags=( + # Basic build options + --verbose --ninja + # Use FHS and build separate libnode.so + --prefix=%{_prefix} --shared --libdir=%{_lib} + # Use system OpenSSL + --shared-openssl + --openssl-is-fips + --openssl-conf-name=openssl_conf + --openssl-use-def-ca-store + # Link with system libraries where appropriate + %{?!with_bundled_brotli:--shared-brotli} + %{?!with_bundled_c_ares:--shared-cares} + %{?!with_bundled_libuv:--shared-libuv} + %{?!with_bundled_sqlite:--shared-sqlite} + %{?!with_bundled_zlib:--shared-zlib} +%if %{without bundled_nodejs_cjs_module_lexer} + --shared-builtin-cjs_module_lexer/lexer-path=%{nodejs_common_sitelib}/cjs-module-lexer/lexer.js + --shared-builtin-cjs_module_lexer/dist/lexer-path=%{nodejs_common_sitelib}/cjs-module-lexer/dist/lexer.js %endif - -export RHEL_ALLOW_PYTHON2_FOR_BUILD=1 -export CC='%{__cc}' -export CXX='%{__cxx}' - -# build with debugging symbols and add defines from libuv (#892601) -# Node's v8 breaks with GCC 6 because of incorrect usage of methods on -# NULL objects. We need to pass -fno-delete-null-pointer-checks -export CFLAGS='%{optflags} \ - -D_LARGEFILE_SOURCE \ - -D_FILE_OFFSET_BITS=64 \ - -DZLIB_CONST \ - -fno-delete-null-pointer-checks' -export CXXFLAGS='%{optflags} \ - -D_LARGEFILE_SOURCE \ - -D_FILE_OFFSET_BITS=64 \ - -DZLIB_CONST \ - -fno-delete-null-pointer-checks' - -# Explicit new lines in C(XX)FLAGS can break naive build scripts -export CFLAGS="$(echo ${CFLAGS} | tr '\n\\' ' ')" -export CXXFLAGS="$(echo ${CXXFLAGS} | tr '\n\\' ' ')" - -export LDFLAGS="%{build_ldflags}" - -%if %{with bootstrap} -./configure --prefix=%{_prefix} \ - --shared-openssl \ - --shared-zlib \ - --without-dtrace \ - --with-intl=small-icu \ - --openssl-use-def-ca-store -%else -./configure --prefix=%{_prefix} \ - --shared-openssl \ - --shared-zlib \ - --shared-libuv \ - --shared-http-parser \ - --shared-nghttp2 \ - --with-dtrace \ - --with-intl=small-icu \ - --with-icu-default-data-dir=%{icudatadir} \ - --openssl-use-def-ca-store +%if %{without bundled_nodejs_undici} + --shared-builtin-undici/undici-path=%{nodejs_common_sitelib}/undici/loader.js %endif + # Enable LTO where possible + --enable-lto + # Compile with small icu, extendable via full-i18n subpackage + --with-intl=small-icu --with-icu-default-data-dir=%{nodejs_datadir}/icudata + # Do not ship corepack + --without-corepack + # Use local headers for native addons when available + --use-prefix-to-find-headers +) -%if %{?with_debug} == 1 -# Setting BUILDTYPE=Debug builds both release and debug binaries -make BUILDTYPE=Debug %{?_smp_mflags} -%else -make BUILDTYPE=Release %{?_smp_mflags} -%endif - -# Extract the ICU data and convert it to the appropriate endianness -pushd deps/ -tar xfz %SOURCE3 - -pushd icu/source - -mkdir -p converted -%if 0%{?little_endian} -# The little endian data file is included in the ICU sources -install -Dpm0644 data/in/icudt%{icu_major}l.dat converted/ - -%else -# For the time being, we need to build ICU and use the included `icupkg` tool -# to convert the little endian data file into a big-endian one. -# At some point in the future, ICU releases will start including both data -# files and we should switch to those. -mkdir -p data/out/tmp - -%configure -%make_build - -icu_root=$(pwd) -LD_LIBRARY_PATH=./lib ./bin/icupkg -tb data/in/icudt%{icu_major}l.dat \ - converted/icudt%{icu_major}b.dat -%endif - -popd # icu/source -popd # deps - +export CFLAGS="${CFLAGS} ${extra_cflags[*]}" CXXFLAGS="${CXXFLAGS} ${extra_cflags[*]}" +%python3 configure.py "${configure_flags[@]}" +%ninja_build -C out/Release %install -export RHEL_ALLOW_PYTHON2_FOR_BUILD=1 +# Fill in values in configuration file templates +# usage: mkconfig [additional sed options] config_file +mkconfig() { + local -ra replace_opts=( + -e 's;@INCLUDEDIR@;%{_includedir};g' + -e 's;@LIBDIR@;%{_libdir};g' + -e 's;@NODEJS_VERSION@;%{node_version};g' + -e 's;@PREFIX@;%{_prefix};g' + -e 's;@PYTHON3@;%{python3};g' + -e 's;@SYSCONFDIR@;%{_sysconfdir};g' + -e 's;@V8_VERSION@;%{v8_version};g' + ) -rm -rf %{buildroot} + sed --regexp-extended "${replace_opts[@]}" "$@" +} -./tools/install.py install %{buildroot} %{_prefix} +# === Base installation +%{python3} tools/install.py install --dest-dir="${RPM_BUILD_ROOT}" --prefix="%{_prefix}" -# Set the binary permissions properly -chmod 0755 %{buildroot}/%{_bindir}/node -chrpath --delete %{buildroot}%{_bindir}/node +# Correct the main binary permissions and remove RPATH +chmod 0755 "${RPM_BUILD_ROOT}%{_bindir}/node" +chrpath --delete "${RPM_BUILD_ROOT}%{_bindir}/node" -%if %{?with_debug} == 1 -# Install the debug binary and set its permissions -install -Dpm0755 out/Debug/node %{buildroot}/%{_bindir}/node_g -%endif +# Provide library symlinks +pushd "${RPM_BUILD_ROOT}%{_libdir}" +# - devel symlink for libnode.so +ln -srf libnode.so.%{node_soversion} libnode.so +# - compatibility symlinks for libv8 +for soname in libv8{,_libbase,_libplatform}; do + ln -srf libnode.so.%{node_soversion} "${soname}.so.%{v8_version_major}.%{v8_version_minor}" + ln -srf libnode.so.%{node_soversion} "${soname}.so" +done +popd # from ${RPM_BUILD_ROOT}%%{_libdir} -# own the sitelib directory -mkdir -p %{buildroot}%{_prefix}/lib/node_modules +# Massage includedir +pushd "${RPM_BUILD_ROOT}%{_includedir}" +# - provide compatibility symlinks for libv8 +for header in node/libplatform node/v8*.h node/cppgc; do + ln -srf "${header}" "$(basename "${header}")" +done +# - config.gypi is platform-dependent and would conflict between arches +mv node/config.gypi node/config-%{_arch}.gypi +popd # ${RPM_BUILD_ROOT}%%{_includedir} -# ensure Requires are added to every native module that match the Provides from -# the nodejs build in the buildroot -install -Dpm0644 %{SOURCE7} %{buildroot}%{_rpmconfigdir}/fileattrs/nodejs_native.attr -cat << EOF > %{buildroot}%{_rpmconfigdir}/nodejs_native.req -#!/bin/sh -echo 'nodejs(abi%{nodejs_major}) >= %nodejs_abi' -echo 'nodejs(v8-abi%{v8_major}) >= %v8_abi' -EOF -chmod 0755 %{buildroot}%{_rpmconfigdir}/nodejs_native.req +# Install node-gyp configuration files +install -p -Dt "${RPM_BUILD_ROOT}%{nodejs_datadir}" common.gypi -# install documentation -mkdir -p %{buildroot}%{_pkgdocdir}/html -cp -pr doc/* %{buildroot}%{_pkgdocdir}/html -rm -f %{buildroot}%{_pkgdocdir}/html/nodejs.1 +# Create pkg-config files +readonly PKGCONFDIR="${RPM_BUILD_ROOT}%{_libdir}/pkgconfig" +mkdir -p "${PKGCONFDIR}" +mkconfig -e 's;@PKGCONFNAME@;nodejs;g' \ + <%{SOURCE3} >"${PKGCONFDIR}/nodejs.pc" +mkconfig -e 's;@PKGCONFNAME@;v8-%{v8_version_major}.%{v8_version_minor};g' \ + <%{SOURCE4} >"${PKGCONFDIR}/v8-%{v8_version_major}.%{v8_version_minor}.pc" -# node-gyp needs common.gypi too -mkdir -p %{buildroot}%{_datadir}/node -cp -p common.gypi %{buildroot}%{_datadir}/node +# Install documentation +mkdir -p "${RPM_BUILD_ROOT}%{_pkgdocdir}/html" +cp -pr doc/* "${RPM_BUILD_ROOT}%{_pkgdocdir}/html" +rm -f "${RPM_BUILD_ROOT}%{_pkgdocdir}/html/node.1" -# Install the GDB init tool into the documentation directory -mv %{buildroot}/%{_datadir}/doc/node/gdbinit %{buildroot}/%{_pkgdocdir}/gdbinit +# Some debugger support files from v8 are provided as documentation from upstream; +# move them to the correct directory (according to us). +pushd "${RPM_BUILD_ROOT}%{_defaultdocdir}" +mv -t "${RPM_BUILD_ROOT}%{_pkgdocdir}" node/gdbinit node/lldb_commands.py +popd # from ${RPM_BUILD_ROOT}%%{_defaultdocdir} -# install NPM docs to mandir -mkdir -p %{buildroot}%{_mandir} \ - %{buildroot}%{_pkgdocdir}/npm +# === Full ICU data installation +# Unzip the data themselves, and make the appropriate documentation available for %%doc +if test "$(%{python3} -Ic 'import sys; print(sys.byteorder)')" = "little"; then +readonly icu_source='%{SOURCE2}' icu_data_file='icudt%{icu_version_major}l.dat' +else +readonly icu_source='%{SOURCE1}' icu_data_file='icudt%{icu_version_major}b.dat' +fi +readonly icu_data_dir="${RPM_BUILD_ROOT}%{nodejs_datadir}/icudata" +readonly icu_doc_dir="full-icu" -cp -pr deps/npm/man/* %{buildroot}%{_mandir}/ -rm -rf %{buildroot}%{_prefix}/lib/node_modules/npm/man -ln -sf %{_mandir} %{buildroot}%{_prefix}/lib/node_modules/npm/man +unzip -od "${icu_data_dir}" "${icu_source}" "${icu_data_file}" +unzip -od "${icu_doc_dir}" "${icu_source}" -x "${icu_data_file}" -# Install Gatsby HTML documentation to %{_pkgdocdir} -cp -pr deps/npm/docs %{buildroot}%{_pkgdocdir}/npm/ -rm -rf %{buildroot}%{_prefix}/lib/node_modules/npm/docs -ln -sf %{_pkgdocdir}/npm %{buildroot}%{_prefix}/lib/node_modules/npm/docs +# === NPM installation and tweaks +# Correct permissions in provided scripts +# - There are executable scripts for Windows PowerShell; RPM would try to pull it as a dependency +# - Not all executable bits should be removed; the -not -path lines are the ones that will be kept untouched +declare NPM_DIR="${RPM_BUILD_ROOT}%{nodejs_common_sitelib}/npm" +find "${NPM_DIR}" \ + -not -path "${NPM_DIR}/bin/*" \ + -not -path "${NPM_DIR}/node_modules/node-gyp/bin/node-gyp.js" \ + -not -path "${NPM_DIR}/node_modules/@npmcli/run-script/lib/node-gyp-bin/node-gyp" \ + -type f -executable \ + -execdir chmod -x '{}' + -# Node tries to install some python files into a documentation directory -# (and not the proper one). Remove them for now until we figure out what to -# do with them. -rm -f %{buildroot}/%{_defaultdocdir}/node/lldb_commands.py \ - %{buildroot}/%{_defaultdocdir}/node/lldbinit +# Remove (empty) project-specific .npmrc from npm itself, +# to avoid confusion with the distro-wide configuration below +rm -f "${NPM_DIR}/.npmrc" +# Create distribution-wide configuration file +mkconfig <%{SOURCE5} >"${NPM_DIR}/npmrc" -# Some NPM bundled deps are executable but should not be. This causes -# unnecessary automatic dependencies to be added. Make them not executable. -# Skip the npm bin directory or the npm binary will not work. -find %{buildroot}%{_prefix}/lib/node_modules/npm \ - -not -path "%{buildroot}%{_prefix}/lib/node_modules/npm/bin/*" \ - -executable -type f \ - -exec chmod -x {} \; - -# The above command is a little overzealous. Add a few permissions back. -chmod 0755 %{buildroot}%{_prefix}/lib/node_modules/npm/node_modules/npm-lifecycle/node-gyp-bin/node-gyp -chmod 0755 %{buildroot}%{_prefix}/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js - -# Drop the NPM default configuration in place -mkdir -p %{buildroot}%{_sysconfdir} -cp %{SOURCE1} %{buildroot}%{_sysconfdir}/npmrc - -# NPM upstream expects it to be in /usr/etc/npmrc, so we'll put a symlink here -# This is done in the interests of keeping /usr read-only. -mkdir -p %{buildroot}%{_prefix}/etc -ln -s %{_sysconfdir}/npmrc %{buildroot}%{_prefix}/etc/npmrc - -# Install the full-icu data files -install -Dpm0644 -t %{buildroot}%{icudatadir} deps/icu/source/converted/* +# Install HTML documentation to %%_pkgdocdir +mkdir -p "${RPM_BUILD_ROOT}%{_pkgdocdir}/npm/" +cp -prt "${RPM_BUILD_ROOT}%{_pkgdocdir}/npm/" deps/npm/docs +# - replace the docs in $NPM_DIR with symlink to the doc dir +rm -rf "${NPM_DIR}/docs" +ln -srf "${RPM_BUILD_ROOT}%{_pkgdocdir}/npm/docs" "${NPM_DIR}/docs" +# Install man pages to %%_mandir +mkdir -p "${RPM_BUILD_ROOT}%{_mandir}" +cp -prt "${RPM_BUILD_ROOT}%{_mandir}" deps/npm/man/* +# – replace man pages in $NPM_DIR with symlinks to the man dir +rm -rf "${NPM_DIR}/man" +ln -srf "${RPM_BUILD_ROOT}%{_mandir}" "${NPM_DIR}/man" %check -# Fail the build if the versions don't match -%{buildroot}/%{_bindir}/node -e "require('assert').equal(process.versions.node, '%{nodejs_version}')" -%{buildroot}/%{_bindir}/node -e "require('assert').equal(process.versions.v8.replace(/-node\.\d+$/, ''), '%{v8_version}')" -%{buildroot}/%{_bindir}/node -e "require('assert').equal(process.versions.ares.replace(/-DEV$/, ''), '%{c_ares_version}')" +# === Common test environment +export LD_LIBRARY_PATH="${RPM_BUILD_ROOT}%{_libdir}:${LD_LIBRARY_PATH}" -# Ensure we have punycode and that the version matches -%{buildroot}/%{_bindir}/node -e "require(\"assert\").equal(require(\"punycode\").version, '%{punycode_version}')" +# "aliases" to the just-build binaries +node() { + "${RPM_BUILD_ROOT}%{_bindir}/node" \ + --icu-data-dir="${RPM_BUILD_ROOT}%{nodejs_datadir}/icudata" \ + "$@" +} +npm() { + node "${RPM_BUILD_ROOT}%{_bindir}/npm" "$@" +} -# Ensure we have npm and that the version matches -NODE_PATH=%{buildroot}%{_prefix}/lib/node_modules:%{buildroot}%{_prefix}/lib/node_modules/npm/node_modules %{buildroot}/%{_bindir}/node -e "require(\"assert\").equal(require(\"npm\").version, '%{npm_version}')" +# === Sanity check for important versions +node -e 'require("assert").equal(process.versions.node, "%{node_version}")' +node -e 'require("assert").equal(process.versions.v8.replace(/-node\.\d+$/, ""), "%{v8_version}")' +node -e 'require("assert").equal(process.versions.ares.replace(/-DEV$/, ""), "%{c_ares_version}")' +node --no-deprecation -e 'require("assert").equal(require("punycode").version, "%{nodejs_punycode_version}")' -# Make sure i18n support is working -NODE_PATH=%{buildroot}%{_prefix}/lib/node_modules:%{buildroot}%{_prefix}/lib/node_modules/npm/node_modules %{buildroot}/%{_bindir}/node --icu-data-dir=%{buildroot}%{icudatadir} %{SOURCE2} +npm version --json | jq --exit-status '.npm == "%{npm_version}"' +# === Custom and/or devendored parts sanity checks +# - full i18n support is available +node '%{SOURCE20}' +# - npm update notifier is disabled +npm config list --json | jq --exit-status '.["update-notifier"] == false' -%pretrans -n npm -p --- Remove all of the symlinks from the bundled npm node_modules directory --- This scriptlet can be removed in Fedora 31 -base_path = "%{_prefix}/lib/node_modules/npm/node_modules/" -d_st = posix.stat(base_path) -if d_st then - for f in posix.files(base_path) do - path = base_path..f - st = posix.stat(path) - if st and st.type == "link" then - os.remove(path) - end - end -end - --- Replace the npm man directory with a symlink --- Drop this scriptlet when F31 is EOL -path = "%{_prefix}/lib/node_modules/npm/man" -st = posix.stat(path) -if st and st.type == "directory" then - status = os.rename(path, path .. ".rpmmoved") - if not status then - suffix = 0 - while not status do - suffix = suffix + 1 - status = os.rename(path .. ".rpmmoved", path .. ".rpmmoved." .. suffix) - end - os.rename(path, path .. ".rpmmoved") - end -end +# === Upstream test suite +bash '%{SOURCE10}' "${RPM_BUILD_ROOT}%{_bindir}/node" test/ '%{SOURCE11}' %files +%doc README.md CHANGELOG.md GOVERNANCE.md onboarding.md +%license LICENSE +%dir %{nodejs_datadir}/ +%dir %{nodejs_common_sitelib}/ %{_bindir}/node -%dir %{_prefix}/lib/node_modules -%dir %{_datadir}/node -%dir %{_datadir}/systemtap -%dir %{_datadir}/systemtap/tapset -%{_datadir}/systemtap/tapset/node.stp +%{_mandir}/man1/node.1* -%if %{with bootstrap} -# no dtrace -%else -%dir %{_usr}/lib/dtrace -%{_usr}/lib/dtrace/node.d -%endif +%files libs +%license LICENSE +%{_libdir}/libnode.so.%{node_soversion} +%{_libdir}/libv8.so.%{v8_version_major}.%{v8_version_minor} +%{_libdir}/libv8_libbase.so.%{v8_version_major}.%{v8_version_minor} +%{_libdir}/libv8_libplatform.so.%{v8_version_major}.%{v8_version_minor} -%{_rpmconfigdir}/fileattrs/nodejs_native.attr -%{_rpmconfigdir}/nodejs_native.req -%license LICENSE -%doc AUTHORS CHANGELOG.md COLLABORATOR_GUIDE.md GOVERNANCE.md README.md -%doc %{_mandir}/man1/node.1* - - -%files devel -%if %{?with_debug} == 1 -%{_bindir}/node_g -%endif -%{_includedir}/node -%{_datadir}/node/common.gypi +%files devel +%license LICENSE +%dir %{nodejs_datadir}/ +%{_includedir}/node/ +%{_libdir}/libnode.so +%{_libdir}/pkgconfig/nodejs.pc %{_pkgdocdir}/gdbinit +%{_pkgdocdir}/lldb_commands.py +%{nodejs_datadir}/common.gypi +%files -n v8-%{v8_version_major}.%{v8_version_minor}-devel +%license LICENSE +%{_includedir}/cppgc +%{_includedir}/libplatform +%{_includedir}/v8*.h +%{_libdir}/libv8.so +%{_libdir}/libv8_libbase.so +%{_libdir}/libv8_libplatform.so +%{_libdir}/pkgconfig/v8-%{v8_version_major}.%{v8_version_minor}.pc -%files full-i18n -%dir %{icudatadir} -%{icudatadir}/icudt%{icu_major}*.dat +%files full-i18n +%doc full-icu/icu4c-%{icu_version_major}_%{icu_version_minor}-data-bin-?-README.md +%license full-icu/LICENSE +%dir %{nodejs_datadir}/ +%{nodejs_datadir}/icudata/ - -%files -n npm +%files -n npm +%doc deps/npm/README.md +%license deps/npm/LICENSE +%dir %{nodejs_datadir}/ +%dir %{nodejs_common_sitelib}/ %{_bindir}/npm %{_bindir}/npx -%{_prefix}/lib/node_modules/npm -%config(noreplace) %{_sysconfdir}/npmrc -%{_prefix}/etc/npmrc -%ghost %{_sysconfdir}/npmignore -%doc %{_mandir}/man1/npm*.1* -%doc %{_mandir}/man1/npx.1* -%doc %{_mandir}/man5/folders.5* -%doc %{_mandir}/man5/install.5* -%doc %{_mandir}/man5/npmrc.5* -%doc %{_mandir}/man5/package-json.5* -%doc %{_mandir}/man5/package-lock-json.5* -%doc %{_mandir}/man5/package-locks.5* -%doc %{_mandir}/man5/shrinkwrap-json.5* -%doc %{_mandir}/man7/config.7* -%doc %{_mandir}/man7/developers.7* -%doc %{_mandir}/man7/disputes.7* -%doc %{_mandir}/man7/orgs.7* -%doc %{_mandir}/man7/registry.7* -%doc %{_mandir}/man7/removal.7* -%doc %{_mandir}/man7/scope.7* -%doc %{_mandir}/man7/scripts.7* -%doc %{_mandir}/man7/semver.7* - - -%files docs -%dir %{_pkgdocdir} -%{_pkgdocdir}/html -%{_pkgdocdir}/npm/docs +%{_mandir}/ +%{nodejs_common_sitelib}/npm/ +%exclude %{_mandir}/man1/node*.1* +%files docs +%doc doc/README.md +%license LICENSE +%dir %{_pkgdocdir} +%{_pkgdocdir}/html/ +%{_pkgdocdir}/npm/ %changelog -* Wed Feb 24 2021 Zuzana Svetlikova - 1:10.24.0-1 -- Resolves: RHBZ#1932373, RHBZ#1932426 -- Resolves CVE-2021-22883 and CVE-2021-22884 -- remove -debug-nghttp2 flag (1930775) -- remove ini patch merged upstream +## START: Generated by rpmautospec +* Tue Sep 02 2025 tjuhasz - 1:24.4.1-7 +- Add patch to prevent fips usage segfault -* Mon Jan 18 2021 Zuzana Svetlikova - 1:10.23.1-1 -- January Security release -- https://nodejs.org/en/blog/vulnerability/january-2021-security-releases/ -- Rebase to 10.23.1 -- Resolves: RHBZ#1916461, RHBZ#1914789 -- Resolves: RHBZ#1914783, RHBZ#1916462, RHBZ#1916395, RHBZ#1916459 -- Resolves: RHBZ#1916691, RHBZ#1916689, RHBZ#1916388 -- Remove dot-prop patch, as it is fixed by npm rebase +* Thu Aug 21 2025 Jan Staněk - 1:24.4.1-6 +- Rename nodejs-npm back to npm -* Tue Sep 22 2020 Jan Staněk - 1:10.22.1-1 -- Security rebase to 10.22.1 +* Wed Aug 06 2025 Jan Staněk - 1:24.4.1-5 +- Make nodejs-npm provide npm as well -* Wed Jun 17 2020 Zuzana Svetlikova - 1:10.21.0-3 -- Resolves: RHBZ#1845307 -- Remove brotli-devel requires from nodejs-devel +* Fri Aug 01 2025 Jan Staněk - 1:24.4.1-4 +- Remove sqlite extension test -* Tue Jun 16 2020 Zuzana Svetlikova - 1:10.21.0-2 -- Resolves: RHBZ#1845307 -- Turn off debug builds +* Fri Aug 01 2025 Jan Staněk - 1:24.4.1-3 +- Switch to compilation using gcc-toolset-12 -* Mon Jun 15 2020 Zuzana Svetlikova - 1:10.21.0-1 -- Security update to 10.21.0 -- Resolves: RHBZ#1845307 -- Fixes CVE-2020-11080, CVE-2020-8174, CVE-2020-10531 -- Bundle brotli, because --shared-brotli configure option is missing -- Add i18n subpackage - -* Wed Mar 18 2020 Zuzana Svetlikova - 1:10.19.0-2 -- Resolves: RHBZ#1811499 - -* Mon Feb 10 2020 Jan Staněk - 1:10.19.0-1 -- Rebase to 10.19.0 to fix CVE-2019-15604 to CVE-2019-15606 - -* Tue Sep 10 2019 Jan Staněk - 1:10.16.3-1 -- Rebase to 10.16.3 to fix CVE-2019-9511 to CVE-2019-9518 - -* Thu Mar 14 2019 Zuzana Svetlikova - 1:10.14.1-2 -- move nodejs-packaging BR out of conditional - -* Tue Dec 11 2018 Zuzana Svetlikova - 1:10.14.1-1 -- Resolves: RHBZ#1644207 -- fixes node-gyp permissions -- rebase - -* Thu Oct 11 2018 Jan Staněk - 1:10.11.0-2 -- BuildRequire nodejs-packaging for proper npm dependency generation -- Resolves: rhbz#1615947 - -* Mon Oct 08 2018 Jan Staněk - 1:10.11.0-1 -- Rebase to 10.11.0 -- Import changes from fedora -- Resolves: rhbz#1621766 - -* Mon Jul 30 2018 Zuzana Svetlikova - 1:10.7.0-5 -- Import sources from fedora -- Allow using python2 at %%build and %%install -- turn off debug for aarch64 - -* Fri Jul 20 2018 Stephen Gallagher - 1:10.7.0-4 -- Fix npm upgrade scriptlet -- Fix unexpected trailing .1 in npm release field - -* Fri Jul 20 2018 Stephen Gallagher - 1:10.7.0-3 -- Restore annotations to binaries -- Fix unexpected trailing .1 in release field - -* Thu Jul 19 2018 Stephen Gallagher - 1:10.7.0-2 -- Update to 10.7.0 -- https://nodejs.org/en/blog/release/v10.7.0/ -- https://nodejs.org/en/blog/release/v10.6.0/ - -* Fri Jul 13 2018 Fedora Release Engineering - 1:10.5.0-1.1 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild - -* Thu Jun 21 2018 Stephen Gallagher - 1:10.5.0-1 -- Update to 10.5.0 -- https://nodejs.org/en/blog/release/v10.5.0/ - -* Thu Jun 14 2018 Stephen Gallagher - 1:10.4.1-1 -- Update to 10.4.1 to address security issues -- https://nodejs.org/en/blog/release/v10.4.1/ -- Resolves: rhbz#1590801 -- Resolves: rhbz#1591014 -- Resolves: rhbz#1591019 - -* Thu Jun 07 2018 Stephen Gallagher - 1:10.4.0-1 -- Update to 10.4.0 -- https://nodejs.org/en/blog/release/v10.4.0/ - -* Wed May 30 2018 Stephen Gallagher - 1:10.3.0-1 -- Update to 10.3.0 -- Update npm to 6.1.0 -- https://nodejs.org/en/blog/release/v10.3.0/ - -* Tue May 29 2018 Stephen Gallagher - 1:10.2.1-2 -- Fix up bare 'python' to be python2 -- Drop redundant entry in docs section - -* Fri May 25 2018 Stephen Gallagher - 1:10.2.1-1 -- Update to 10.2.1 -- https://nodejs.org/en/blog/release/v10.2.1/ - -* Wed May 23 2018 Stephen Gallagher - 1:10.2.0-1 -- Update to 10.2.0 -- https://nodejs.org/en/blog/release/v10.2.0/ - -* Thu May 10 2018 Stephen Gallagher - 1:10.1.0-3 -- Fix incorrect rpm macro - -* Thu May 10 2018 Stephen Gallagher - 1:10.1.0-2 -- Include upstream v8 fix for ppc64[le] -- Disable debug build on ppc64[le] and s390x - -* Wed May 09 2018 Stephen Gallagher - 1:10.1.0-1 -- Update to 10.1.0 -- https://nodejs.org/en/blog/release/v10.1.0/ -- Reenable node_g binary - -* Thu Apr 26 2018 Stephen Gallagher - 1:10.0.0-1 -- Update to 10.0.0 -- https://nodejs.org/en/blog/release/v10.0.0/ -- Drop workaround patch -- Temporarily drop node_g binary due to - https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85587 - -* Fri Apr 13 2018 Rafael dos Santos - 1:9.11.1-2 -- Use standard Fedora linker flags (bug #1543859) - -* Thu Apr 05 2018 Stephen Gallagher - 1:9.11.1-1 -- Update to 9.11.1 -- https://nodejs.org/en/blog/release/v9.11.0/ -- https://nodejs.org/en/blog/release/v9.11.1/ - -* Wed Mar 28 2018 Stephen Gallagher - 1:9.10.0-1 -- Update to 9.10.0 -- https://nodejs.org/en/blog/release/v9.10.0/ - -* Wed Mar 21 2018 Stephen Gallagher - 1:9.9.0-1 -- Update to 9.9.0 -- https://nodejs.org/en/blog/release/v9.9.0/ - -* Thu Mar 08 2018 Stephen Gallagher - 1:9.8.0-1 -- Update to 9.8.0 -- https://nodejs.org/en/blog/release/v9.8.0/ - -* Thu Mar 01 2018 Stephen Gallagher - 1:9.7.0-1 -- Update to 9.7.0 -- https://nodejs.org/en/blog/release/v9.7.0/ -- Work around F28 build issue - -* Sun Feb 25 2018 Stephen Gallagher - 1:9.6.1-1 -- Update to 9.6.1 -- https://nodejs.org/en/blog/release/v9.6.1/ -- https://nodejs.org/en/blog/release/v9.6.0/ - -* Mon Feb 05 2018 Stephen Gallagher - 1:9.5.0-1 -- Package Node.js 9.5.0 - -* Thu Jan 11 2018 Stephen Gallagher - 1:8.9.4-2 -- Fix incorrect Requires: - -* Thu Jan 11 2018 Stephen Gallagher - 1:8.9.4-1 -- Update to 8.9.4 -- https://nodejs.org/en/blog/release/v8.9.4/ -- Switch to system copy of nghttp2 - -* Fri Dec 08 2017 Stephen Gallagher - 1:8.9.3-2 -- Update to 8.9.3 -- https://nodejs.org/en/blog/release/v8.9.3/ -- https://nodejs.org/en/blog/release/v8.9.2/ - -* Thu Nov 30 2017 Pete Walter - 1:8.9.1-2 -- Rebuild for ICU 60.1 - -* Thu Nov 09 2017 Zuzana Svetlikova - 1:8.9.1-1 -- Update to 8.9.1 - -* Tue Oct 31 2017 Stephen Gallagher - 1:8.9.0-1 -- Update to 8.9.0 -- Drop upstreamed patch - -* Thu Oct 26 2017 Stephen Gallagher - 1:8.8.1-1 -- Update to 8.8.1 to fix a regression - -* Wed Oct 25 2017 Zuzana Svetlikova - 1:8.8.0-1 -- Security update to 8.8.0 -- https://nodejs.org/en/blog/release/v8.8.0/ - -* Sun Oct 15 2017 Zuzana Svetlikova - 1:8.7.0-1 -- Update to 8.7.0 -- https://nodejs.org/en/blog/release/v8.7.0/ - -* Fri Oct 06 2017 Zuzana Svetlikova - 1:8.6.0-2 -- Use bcond macro instead of bootstrap conditional - -* Wed Sep 27 2017 Zuzana Svetlikova - 1:8.6.0-1 -- Fix nghttp2 version -- Update to 8.6.0 -- https://nodejs.org/en/blog/release/v8.6.0/ - -* Wed Sep 20 2017 Zuzana Svetlikova - 1:8.5.0-3 -- Build with bootstrap + bundle libuv for modularity -- backport patch for aarch64 debug build - -* Wed Sep 13 2017 Stephen Gallagher - 1:8.5.0-2 -- Disable debug builds on aarch64 due to https://github.com/nodejs/node/issues/15395 - -* Tue Sep 12 2017 Stephen Gallagher - 1:8.5.0-1 -- Update to v8.5.0 -- https://nodejs.org/en/blog/release/v8.5.0/ - -* Thu Sep 07 2017 Zuzana Svetlikova - 1:8.4.0-2 -- Refactor openssl BR - -* Wed Aug 16 2017 Zuzana Svetlikova - 1:8.4.0-1 -- Update to v8.4.0 -- https://nodejs.org/en/blog/release/v8.4.0/ -- http2 is now supported, add bundled nghttp2 -- remove openssl 1.0.1 patches, we won't be using them in fedora - -* Thu Aug 10 2017 Zuzana Svetlikova - 1:8.3.0-1 -- Update to v8.3.0 -- https://nodejs.org/en/blog/release/v8.3.0/ -- update V8 to 6.0 -- update minimal gcc and g++ requirements to 4.9.4 - -* Wed Aug 09 2017 Tom Hughes - 1:8.2.1-2 -- Bump release to fix broken dependencies - -* Thu Aug 03 2017 Fedora Release Engineering - 1:8.2.1-1.2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild - -* Wed Jul 26 2017 Fedora Release Engineering - 1:8.2.1-1.1 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild - -* Fri Jul 21 2017 Stephen Gallagher - 1:8.2.1-1 -- Update to v8.2.1 -- https://nodejs.org/en/blog/release/v8.2.1/ - -* Thu Jul 20 2017 Stephen Gallagher - 1:8.2.0-1 -- Update to v8.2.0 -- https://nodejs.org/en/blog/release/v8.2.0/ -- Update npm to 5.3.0 -- Adds npx command - -* Tue Jul 18 2017 Igor Gnatenko - 1:8.1.4-3 -- s/BuildRequires/Requires/ for http-parser-devel%%{?_isa} - -* Mon Jul 17 2017 Zuzana Svetlikova - 1:8.1.4-2 -- Rename python-devel to python2-devel -- own %%{_pkgdocdir}/npm - -* Tue Jul 11 2017 Stephen Gallagher - 1:8.1.4-1 -- Update to v8.1.4 -- https://nodejs.org/en/blog/release/v8.1.4/ -- Drop upstreamed c-ares patch - -* Thu Jun 29 2017 Zuzana Svetlikova - 1:8.1.3-1 -- Update to v8.1.3 -- https://nodejs.org/en/blog/release/v8.1.3/ - -* Wed Jun 28 2017 Zuzana Svetlikova - 1:8.1.2-1 -- Update to v8.1.2 -- remove GCC 7 patch, as it is now fixed in node >= 6.12 +* Fri Aug 01 2025 Jan Staněk - 1:24.4.1-2 +- Remove parallel-installable bits +* Fri Aug 01 2025 Jan Staněk +- Import package from c10s +## END: Generated by rpmautospec