- New nodejs major version 22.1.0

For overview of changes and details since 21.x and earlier see
  https://github.com/nodejs/node/blob/main/doc/changelogs/CHANGELOG_V22.md#22.1.0
- Imported patches from 21.x:
  * cares_public_headers.patch
  * fix_ci_tests.patch
  * flaky_test_rerun.patch
  * gcc13.patch
  * legacy_python.patch
  * linker_lto_jobs.patch
  * manual_configure.patch
  * node-gyp-addon-gypi.patch
  * node-gyp-config.patch
  * nodejs-libpath.patch
  * npm_search_paths.patch
  * openssl_binary_detection.patch
  * qemu_timeouts_arches.patch
  * skip_no_console.patch
  * sle12_python3_compat.patch
  * test-skip-y2038-on-32bit-time_t.patch
  * versioned.patch

OBS-URL: https://build.opensuse.org/package/show/devel:languages:nodejs/nodejs22?expand=0&rev=1
This commit is contained in:
Adam Majer 2024-05-15 15:22:04 +00:00 committed by Git OBS Bridge
commit f60c62a795
28 changed files with 2225 additions and 0 deletions

23
.gitattributes vendored Normal file
View File

@ -0,0 +1,23 @@
## Default LFS
*.7z filter=lfs diff=lfs merge=lfs -text
*.bsp filter=lfs diff=lfs merge=lfs -text
*.bz2 filter=lfs diff=lfs merge=lfs -text
*.gem filter=lfs diff=lfs merge=lfs -text
*.gz filter=lfs diff=lfs merge=lfs -text
*.jar filter=lfs diff=lfs merge=lfs -text
*.lz filter=lfs diff=lfs merge=lfs -text
*.lzma filter=lfs diff=lfs merge=lfs -text
*.obscpio filter=lfs diff=lfs merge=lfs -text
*.oxt filter=lfs diff=lfs merge=lfs -text
*.pdf filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.rpm filter=lfs diff=lfs merge=lfs -text
*.tbz filter=lfs diff=lfs merge=lfs -text
*.tbz2 filter=lfs diff=lfs merge=lfs -text
*.tgz filter=lfs diff=lfs merge=lfs -text
*.ttf filter=lfs diff=lfs merge=lfs -text
*.txz filter=lfs diff=lfs merge=lfs -text
*.whl filter=lfs diff=lfs merge=lfs -text
*.xz filter=lfs diff=lfs merge=lfs -text
*.zip filter=lfs diff=lfs merge=lfs -text
*.zst filter=lfs diff=lfs merge=lfs -text

41
SHASUMS256.txt Normal file
View File

@ -0,0 +1,41 @@
5a6ddbc1fb0035bc7fa76e8da108b7a9866b47ea2a9f34225ddc6aac2c9007a3 node-v22.1.0-aix-ppc64.tar.gz
5c0d1008bb8a2653f25d162fe9af6fdb264ab8e61a784a52eed5a84077269fae node-v22.1.0-arm64.msi
93904abf2b6afd0dc2a7c2947a83e10ed65cc39171db17663edb6f763aaa5a57 node-v22.1.0-darwin-arm64.tar.gz
f3222c15342919f16516e1d409dc885d4e448e4ce386ca6552f6d96c8a6d496b node-v22.1.0-darwin-arm64.tar.xz
3a2c351b3eeeb4d12dee978f93f8f510589384b66a09feb903b609a58cf1bb5b node-v22.1.0-darwin-x64.tar.gz
3e5bf773f01cdb9d03e12d89393ef12dee200c073163c82bc2eddffa36869747 node-v22.1.0-darwin-x64.tar.xz
5c00fa0f18d75c39a4a1068833999cc02620e467877e65ea59ecfaa092dc686a node-v22.1.0-headers.tar.gz
b2f2319803f4dde2c1e4ab2d6040680eedc98b76336a10019801f85b2c50b398 node-v22.1.0-headers.tar.xz
9c111af1f951e8869615bca3601ce7ab6969374933bdba6397469843b808f222 node-v22.1.0-linux-arm64.tar.gz
030fc4d4cfdd2a2dc5f19aa577bf3dadbc042363b28e0ef66b1e7c8072e7445e node-v22.1.0-linux-arm64.tar.xz
e2d46a045ab4e14e7234162c8167bed96c71ac82fbfae1feac21d77ea44c62d0 node-v22.1.0-linux-armv7l.tar.gz
48f197fa1ae7ad80f01c759ef0d91bb637f09cb04f7fa2eb57c7de79b2cf7bbd node-v22.1.0-linux-armv7l.tar.xz
df47c5506bc865b093cfa0411b4adbb66187da00decd05a83c22b9d5ffdca088 node-v22.1.0-linux-ppc64le.tar.gz
9cfbb9d64c51aa238a8f4697faeb71ccf846155f3a0b9f5acb686a8f3554eb07 node-v22.1.0-linux-ppc64le.tar.xz
1961314d0d51cf9c4719705ba809f8451597c577dfb0cb500a058115a05d586a node-v22.1.0-linux-s390x.tar.gz
da9d2f03bdaec5233adc360e517b8f4c2ebe283a9737f9065c829362b31c04de node-v22.1.0-linux-s390x.tar.xz
d8ae35a9e2bb0c0c0611ee9bacf564ea51cc8291ace1447f95ee6aeaf4f1d61d node-v22.1.0-linux-x64.tar.gz
22330ad3a1796ac30d75fab6f98cbe2b883239d4e31c2a52ec8f4e6cc52ace54 node-v22.1.0-linux-x64.tar.xz
969680f15ac27f88197735b18bc4d60b1b275a1b30dd6fb16104c5126d199a00 node-v22.1.0.pkg
1179664c69612f3f67df6fac32008df31f92e28c61d57c1e3297b84ea8879b5b node-v22.1.0.tar.gz
9d7d5f40d9dbd6260c99b5e494b5f9bc755e8f0ffac70e121adce5fb442f23cb node-v22.1.0.tar.xz
0a3d5932ff8d7aac36d5d763feb5de1da442a56ff7378222d9840d77e0db8b62 node-v22.1.0-win-arm64.7z
d32cf67728183026a236256ae488b27b77daa13c2faca83328dc5d188718ecdf node-v22.1.0-win-arm64.zip
c3c57c78d3a5fbd223a6e17efc3052c5eee19e827a591148d7e5f68cf98e504b node-v22.1.0-win-x64.7z
4b0f90bc3f1f41df16f9022ecded0c4eff55f8c3ece66ba348275c69fea4eb8e node-v22.1.0-win-x64.zip
d1933f9813da34fdef20a1c2c8e82fa735ec96c503ecd818795ad8fab4a92d08 node-v22.1.0-win-x86.7z
3db474ecb74ab91ed7a2edc282a9ee77e297db00afad150a7fe33f24c2181c7c node-v22.1.0-win-x86.zip
bae87f5171ec151846dff560dd78230e568b56151fd1bde41a1c7e9178d840e7 node-v22.1.0-x64.msi
7496b237a0ff72b120d7ce2f90d2c75dae85b128dd0c0c16c2536d1e7fa519cd node-v22.1.0-x86.msi
b424b2c9485e39ec031ef01f1fcbdc736e9d57b05b93a135fb723afc052e52bc win-arm64/node.exe
b552cb4f049fd4ce7b791ff9ab3964d5dfed118a737b0ac3ff67dad21c7de129 win-arm64/node.lib
d4e0f343358bab4d08309aec6d5d7531c253c34b187e0d5c9d9528b6f8a3115f win-arm64/node_pdb.7z
a75e9e3857acb8b13102c30f1eba8268a4531fd0eae94c185b5a5b2d004df20b win-arm64/node_pdb.zip
80db531026ff474745f03beb98f28c51914e0202e58cd87a1104f71ed0d8b118 win-x64/node.exe
7e8534fb900597f0d66c41bcae423f0bfe23290b09f20bb57cd07c2622db4ec4 win-x64/node.lib
10e8dd46f0d9b7a69ba73a38f45b7a866e4077a80a219489e5cfe820f1174db3 win-x64/node_pdb.7z
408fd5b2a28339051e0ce2830b4dc1ddfa2c4944abb24837644efaa8d78d8f96 win-x64/node_pdb.zip
cd6f3255b1ca77ed4dd81e56184329e5bf2a68c54152a93490c3f3e896bfc906 win-x86/node.exe
0f5f7f3178e3c605ecc460ed2157a7e02157c283cbf0274284e4258f3378135c win-x86/node.lib
e3eea39004ec58042bb46e80cd65286e4a8f34c484cb8c13bdaa3f7a74fff7ae win-x86/node_pdb.7z
3c3562e258ad58a271fc408ece941e6162f8a3e48a9e94818c44d2a93cbce726 win-x86/node_pdb.zip

BIN
SHASUMS256.txt.sig Normal file

Binary file not shown.

32
_constraints Normal file
View File

@ -0,0 +1,32 @@
<?xml version="1.0"?>
<constraints>
<hardware>
<disk>
<size unit="G">8</size>
</disk>
<physicalmemory>
<size unit="M">10000</size>
</physicalmemory>
</hardware>
<overwrite>
<conditions>
<arch>aarch64</arch>
</conditions>
<hardware>
<cpu>
<flag>asimdrdm</flag>
</cpu>
</hardware>
</overwrite>
<overwrite>
<conditions>
<arch>armv6l</arch>
<arch>armv7l</arch>
</conditions>
<hardware>
<physicalmemory>
<size unit="G">5</size>
</physicalmemory>
</hardware>
</overwrite>
</constraints>

16
bash_output_helper.bash Normal file
View File

@ -0,0 +1,16 @@
#
# Node can break stdin/stdout/stderr by setting them O_NONBLOCK
# and then not resetting it back to blocking mode on exit
# This function redirects stdio descriptors via new logging pipe
#
function decoupled_cmd
{
mkfifo _log
($@) < /dev/null > _log 2>_log &
cat _log
rm _log
wait $!
}

View File

@ -0,0 +1,13 @@
Index: node-v14.17.5/src/cares_wrap.h
===================================================================
--- node-v14.17.5.orig/src/cares_wrap.h
+++ node-v14.17.5/src/cares_wrap.h
@@ -22,7 +22,7 @@
# include <netdb.h>
#endif // __POSIX__
-# include <ares_nameser.h>
+#include <arpa/nameser.h>
namespace node {
namespace cares_wrap {

133
fix_ci_tests.patch Normal file
View File

@ -0,0 +1,133 @@
Author: Adam Majer <amajer@suse.de>
Date: Dec 20 09:18:49 UTC 2017
Summary: Fix CI unit tests framework for OBS building
Index: node-v21.7.1/test/parallel/test-node-output-v8-warning.mjs
===================================================================
--- node-v21.7.1.orig/test/parallel/test-node-output-v8-warning.mjs
+++ node-v21.7.1/test/parallel/test-node-output-v8-warning.mjs
@@ -15,7 +15,7 @@ describe('v8 output', { concurrency: tru
.replaceAll('*test*', '*')
.replaceAll(/.*?\*fixtures\*v8\*/g, '(node:*) V8: *') // Replace entire path before fixtures/v8
.replaceAll('*fixtures*v8*', '*')
- .replaceAll('node --', '* --');
+ .replace(/node\d+ --/, '* --');
}
const common = snapshot
.transform(snapshot.replaceWindowsLineEndings, snapshot.replaceWindowsPaths, replaceNodeVersion);
Index: node-v21.7.1/test/parallel/test-module-loading-globalpaths.js
===================================================================
--- node-v21.7.1.orig/test/parallel/test-module-loading-globalpaths.js
+++ node-v21.7.1/test/parallel/test-module-loading-globalpaths.js
@@ -11,6 +11,9 @@ const { addLibraryPath } = require('../c
addLibraryPath(process.env);
+common.skip('hardcoded global paths');
+return;
+
if (process.argv[2] === 'child') {
console.log(require(pkgName).string);
} else {
Index: node-v21.7.1/test/parallel/test-tls-passphrase.js
===================================================================
--- node-v21.7.1.orig/test/parallel/test-tls-passphrase.js
+++ node-v21.7.1/test/parallel/test-tls-passphrase.js
@@ -223,7 +223,7 @@ server.listen(0, common.mustCall(functio
}, onSecureConnect());
})).unref();
-const errMessageDecrypt = /bad decrypt/;
+const errMessageDecrypt = /bad (decrypt|password read)/;
// Missing passphrase
assert.throws(function() {
Index: node-v21.7.1/test/parallel/test-repl-envvars.js
===================================================================
--- node-v21.7.1.orig/test/parallel/test-repl-envvars.js
+++ node-v21.7.1/test/parallel/test-repl-envvars.js
@@ -2,7 +2,9 @@
// Flags: --expose-internals
-require('../common');
+const common = require('../common');
+common.skip('Not running test in OBS');
+
const stream = require('stream');
const { describe, test } = require('node:test');
const REPL = require('internal/repl');
Index: node-v21.7.1/Makefile
===================================================================
--- node-v21.7.1.orig/Makefile
+++ node-v21.7.1/Makefile
@@ -389,7 +389,6 @@ ADDONS_HEADERS_PREREQS := tools/install.
$(wildcard deps/uv/include/*/*.h) \
$(wildcard deps/v8/include/*.h) \
$(wildcard deps/v8/include/*/*.h) \
- deps/zlib/zconf.h deps/zlib/zlib.h \
src/node.h src/node_api.h src/js_native_api.h src/js_native_api_types.h \
src/node_api_types.h src/node_buffer.h src/node_object_wrap.h \
src/node_version.h
@@ -560,7 +559,8 @@ test-ci-js: | clear-stalled
.PHONY: test-ci
# Related CI jobs: most CI tests, excluding node-test-commit-arm-fanned
test-ci: LOGLEVEL := info
-test-ci: | clear-stalled bench-addons-build build-addons build-js-native-api-tests build-node-api-tests doc-only
+test-ci: | clear-stalled bench-addons-build build-addons build-js-native-api-tests build-node-api-tests
+ strip $(NODE_EXE)
out/Release/cctest --gtest_output=xml:out/junit/cctest.xml
$(PYTHON) tools/test.py $(PARALLEL_ARGS) -p tap --logfile test.tap \
--mode=$(BUILDTYPE_LOWER) --flaky-tests=$(FLAKY_TESTS) \
@@ -742,7 +742,8 @@ apidocs_json = $(addprefix out/,$(apidoc
apiassets = $(subst api_assets,api/assets,$(addprefix out/,$(wildcard doc/api_assets/*)))
tools/doc/node_modules: tools/doc/package.json
- @if [ "$(shell $(node_use_openssl))" != "true" ]; then \
+ echo "Skipping tools/doc/node_modules"
+# @if [ "$(shell $(node_use_openssl))" != "true" ]; then \
echo "Skipping tools/doc/node_modules (no crypto)"; \
else \
cd tools/doc && $(call available-node,$(run-npm-ci)) \
Index: node-v21.7.1/tools/test.py
===================================================================
--- node-v21.7.1.orig/tools/test.py
+++ node-v21.7.1/tools/test.py
@@ -1362,7 +1362,7 @@ def BuildOptions():
result.add_option("-s", "--suite", help="A test suite",
default=[], action="append")
result.add_option("-t", "--timeout", help="Timeout in seconds",
- default=120, type="int")
+ default=1200, type="int")
result.add_option("--arch", help='The architecture to run tests for',
default='none')
result.add_option("--snapshot", help="Run the tests with snapshot turned on",
Index: node-v21.7.1/test/parallel/test-crypto-dh.js
===================================================================
--- node-v21.7.1.orig/test/parallel/test-crypto-dh.js
+++ node-v21.7.1/test/parallel/test-crypto-dh.js
@@ -92,7 +92,7 @@ const crypto = require('crypto');
dh3.computeSecret('');
}, { message: common.hasOpenSSL3 && !hasOpenSSL3WithNewErrorMessage ?
'error:02800080:Diffie-Hellman routines::invalid secret' :
- 'Supplied key is too small' });
+ /(Supplied key is too small|invalid public key)/ });
}
}
Index: node-v21.7.1/benchmark/misc/startup-cli-version.js
===================================================================
--- node-v21.7.1.orig/benchmark/misc/startup-cli-version.js
+++ node-v21.7.1/benchmark/misc/startup-cli-version.js
@@ -11,10 +11,10 @@ const path = require('path');
// indispensible part of the CLI.
const bench = common.createBenchmark(main, {
cli: [
- 'tools/node_modules/eslint/bin/eslint.js',
'deps/npm/bin/npx-cli.js',
'deps/npm/bin/npm-cli.js',
'deps/corepack/dist/corepack.js',
+ 'tools/node_modules/eslint/bin/eslint.js',
],
count: [30],
});

21
flaky_test_rerun.patch Normal file
View File

@ -0,0 +1,21 @@
Index: node-v16.13.0/tools/test.py
===================================================================
--- node-v16.13.0.orig/tools/test.py
+++ node-v16.13.0/tools/test.py
@@ -586,6 +586,16 @@ class TestCase(object):
self.context.store_unexpected_output)
def Run(self):
+ reruns = 0
+ while (reruns < 5):
+ reruns += 1
+ result = self.OriginalRun()
+ if (not result.HasFailed()):
+ break
+ print("FLAKY TEST rerun: ", self.GetCommand())
+ return result
+
+ def OriginalRun(self):
try:
result = self.RunCommand(self.GetCommand(), {
"TEST_SERIAL_ID": "%d" % self.serial_id,

36
gcc13.patch Normal file
View File

@ -0,0 +1,36 @@
Index: node-v22.1.0/deps/v8/src/builtins/builtins-array-gen.cc
===================================================================
--- node-v22.1.0.orig/deps/v8/src/builtins/builtins-array-gen.cc
+++ node-v22.1.0/deps/v8/src/builtins/builtins-array-gen.cc
@@ -18,6 +18,7 @@
#include "src/objects/arguments-inl.h"
#include "src/objects/elements-kind.h"
#include "src/objects/property-cell.h"
+#include "src/wasm/wasm-objects.h"
namespace v8 {
namespace internal {
Index: node-v22.1.0/deps/v8/src/builtins/builtins-array.cc
===================================================================
--- node-v22.1.0.orig/deps/v8/src/builtins/builtins-array.cc
+++ node-v22.1.0/deps/v8/src/builtins/builtins-array.cc
@@ -23,6 +23,7 @@
#include "src/objects/objects-inl.h"
#include "src/objects/prototype.h"
#include "src/objects/smi.h"
+#include "src/wasm/wasm-objects.h"
namespace v8 {
namespace internal {
Index: node-v22.1.0/deps/v8/src/codegen/tnode.h
===================================================================
--- node-v22.1.0.orig/deps/v8/src/codegen/tnode.h
+++ node-v22.1.0/deps/v8/src/codegen/tnode.h
@@ -8,6 +8,7 @@
#include <type_traits>
#include "src/codegen/machine-type.h"
+#include "src/wasm/wasm-objects.h"
#include "src/objects/tagged.h"
namespace v8 {

26
legacy_python.patch Normal file
View File

@ -0,0 +1,26 @@
Index: node-v18.11.0/tools/utils.py
===================================================================
--- node-v18.11.0.orig/tools/utils.py
+++ node-v18.11.0/tools/utils.py
@@ -26,10 +26,10 @@
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-import glob
import platform
import re
import sys
+from pathlib import Path
# Reads a .list file into an array of strings
@@ -109,7 +109,8 @@ def IsWindows():
def SearchFiles(dir, ext):
- list = glob.glob(dir+ '/**/*.' + ext, recursive=True)
+ list = Path(dir).glob('**/*.' + ext)
+ list = [ str(x) for x in list ]
if sys.platform == 'win32':
list = [ x.replace('\\', '/')for x in list]
return sorted(list)

25
linker_lto_jobs.patch Normal file
View File

@ -0,0 +1,25 @@
Purpose of these dependencies is to make sure that the linker
is run serially over these binaries instead of in parallel.
OBS workers run out of memory as each executable seems to require
upward of 5G RAM
Index: node-v21.5.0/node.gyp
===================================================================
--- node-v21.5.0.orig/node.gyp
+++ node-v21.5.0/node.gyp
@@ -1053,6 +1053,7 @@
'deps/simdjson/simdjson.gyp:simdjson',
'deps/simdutf/simdutf.gyp:simdutf',
'deps/ada/ada.gyp:ada',
+ 'fuzz_env'
],
'includes': [
@@ -1129,6 +1130,7 @@
'deps/histogram/histogram.gyp:histogram',
'deps/uvwasi/uvwasi.gyp:uvwasi',
'deps/ada/ada.gyp:ada',
+ 'cctest'
],
'includes': [

20
manual_configure.patch Normal file
View File

@ -0,0 +1,20 @@
Author: Adam Majer <amajer@suse.de>
Date: Wed May 23 14:13:33 CEST 2018
Summary: This config.h is defined by hand
Gyp doesn't run autotools, so this config is not quite correct.
Update to prevent implicit defines to be used.
Index: node-git.8dae89b396/deps/nghttp2/lib/includes/config.h
===================================================================
--- node-git.8dae89b396.orig/deps/nghttp2/lib/includes/config.h
+++ node-git.8dae89b396/deps/nghttp2/lib/includes/config.h
@@ -71,7 +71,7 @@ typedef intptr_t ssize_t;
/* #undef HAVE_NETDB_H */
/* Define to 1 if you have the <netinet/in.h> header file. */
-/* #undef HAVE_NETINET_IN_H */
+#define HAVE_NETINET_IN_H 1
/* Define to 1 if you have the <pwd.h> header file. */
/* #undef HAVE_PWD_H */

112
node-gyp-addon-gypi.patch Normal file
View File

@ -0,0 +1,112 @@
Index: node-v21.7.1/addon-rpm.gypi
===================================================================
--- /dev/null
+++ node-v21.7.1/addon-rpm.gypi
@@ -0,0 +1,35 @@
+{
+ 'target_defaults': {
+ 'type': 'loadable_module',
+ 'product_prefix': '',
+ 'include_dirs': [
+ '/usr/include/node22/',
+ '/usr/include/'
+ ],
+
+ 'target_conditions': [
+ ['_type=="loadable_module"', {
+ 'product_extension': 'node',
+ 'defines': [ 'BUILDING_NODE_EXTENSION' ],
+ }]
+ ],
+
+ 'conditions': [
+ [ 'OS=="mac"', {
+ 'libraries': [ '-undefined dynamic_lookup' ],
+ 'xcode_settings': {
+ 'DYLIB_INSTALL_NAME_BASE': '@rpath'
+ },
+ }],
+ [ 'OS=="win"', {
+ 'libraries': [ '-l<(node_root_dir)/$(Configuration)/node.lib' ],
+ # warning C4251: 'node::ObjectWrap::handle_' : class 'v8::Persistent<T>'
+ # needs to have dll-interface to be used by clients of class 'node::ObjectWrap'
+ 'msvs_disabled_warnings': [ 4251 ],
+ }],
+ [ 'OS=="freebsd" or OS=="openbsd" or OS=="solaris" or (OS=="linux" and target_arch!="ia32")', {
+ 'cflags': [ '-fPIC' ],
+ }]
+ ]
+ }
+}
Index: node-v21.7.1/deps/npm/node_modules/node-gyp/lib/configure.js
===================================================================
--- node-v21.7.1.orig/deps/npm/node_modules/node-gyp/lib/configure.js
+++ node-v21.7.1/deps/npm/node_modules/node-gyp/lib/configure.js
@@ -36,10 +36,6 @@ async function configure (gyp, argv) {
if ('v' + release.version !== process.version) {
// if --target was given, then determine a target version to compile for
log.verbose('get node dir', 'compiling against --target node version: %s', release.version)
- } else {
- // if no --target was specified then use the current host node version
- log.verbose('get node dir', 'no --target version specified, falling back to host node version: %s', release.version)
- }
if (!release.semver) {
// could not parse the version string with semver
@@ -54,6 +50,12 @@ async function configure (gyp, argv) {
log.verbose('get node dir', 'target node version installed:', release.versionDir)
nodeDir = path.resolve(gyp.devDir, release.versionDir)
+ } else {
+ // if no --target was specified then use RPM-installed headers
+ log.verbose('get node dir', 'no --target version specified, falling back to RPM installed headers')
+ nodeDir = '/usr/include/node22'
+ createBuildDir()
+ }
}
return createBuildDir()
@@ -201,8 +203,16 @@ async function configure (gyp, argv) {
// this logic ported from the old `gyp_addon` python file
const gypScript = path.resolve(__dirname, '..', 'gyp', 'gyp_main.py')
- const addonGypi = path.resolve(__dirname, '..', 'addon.gypi')
- let commonGypi = path.resolve(nodeDir, 'include/node/common.gypi')
+ let addon_gypi_file = gyp.opts.target || gyp.opts.nodedir ? 'addon.gypi' : 'addon-rpm.gypi'
+ let addonGypi = path.resolve(__dirname, '..', addon_gypi_file)
+ let commonGypi = path.resolve(nodeDir, 'include/node22/common.gypi')
+
+ try {
+ await fs.stat(commonGypi)
+ } catch (err) {
+ commonGypi = path.resolve(nodeDir, 'include/node/common.gypi')
+ }
+
try {
await fs.stat(commonGypi)
} catch (err) {
Index: node-v21.7.1/deps/npm/node_modules/node-gyp/addon.gypi
===================================================================
--- node-v21.7.1.orig/deps/npm/node_modules/node-gyp/addon.gypi
+++ node-v21.7.1/deps/npm/node_modules/node-gyp/addon.gypi
@@ -18,6 +18,7 @@
],
'include_dirs': [
+ '<(node_root_dir)/include/node22',
'<(node_root_dir)/include/node',
'<(node_root_dir)/src',
'<(node_root_dir)/deps/openssl/config',
Index: node-v21.7.1/tools/build_addons.py
===================================================================
--- node-v21.7.1.orig/tools/build_addons.py
+++ node-v21.7.1/tools/build_addons.py
@@ -27,7 +27,7 @@ def generate_headers(headers_dir, instal
def rebuild_addons(args):
headers_dir = os.path.abspath(args.headers_dir)
out_dir = os.path.abspath(args.out_dir)
- node_bin = os.path.join(out_dir, 'node')
+ node_bin = os.path.join(out_dir, 'node22')
if args.is_win:
node_bin += '.exe'

13
node-gyp-config.patch Normal file
View File

@ -0,0 +1,13 @@
Index: node-v19.1.0/deps/npm/node_modules/node-gyp/lib/configure.js
===================================================================
--- node-v19.1.0.orig/deps/npm/node_modules/node-gyp/lib/configure.js
+++ node-v19.1.0/deps/npm/node_modules/node-gyp/lib/configure.js
@@ -96,7 +96,7 @@ function configure (gyp, argv, callback)
log.verbose('build/' + configFilename, 'creating config file')
- var config = process.config || {}
+ var config = JSON.parse(JSON.stringify(process.config || {}))
var defaults = config.target_defaults
var variables = config.variables

3
node-v22.1.0.tar.xz Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:9d7d5f40d9dbd6260c99b5e494b5f9bc755e8f0ffac70e121adce5fb442f23cb
size 44377532

3
node_modules.tar.xz Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:c0f0958b5c1bfbe30d6794d857e1f0095cef384e3c077136e5b89dd1027f40f3
size 1418716

54
nodejs-libpath.patch Normal file
View File

@ -0,0 +1,54 @@
Index: node-v20.12.0/tools/install.py
===================================================================
--- node-v20.12.0.orig/tools/install.py
+++ node-v20.12.0/tools/install.py
@@ -6,6 +6,7 @@ import errno
import os
import shutil
import sys
+from distutils import sysconfig
import re
def abspath(*args):
@@ -66,6 +67,10 @@ def try_copy(options, path, dest):
try_unlink(target_path) # prevent ETXTBSY errors
return shutil.copy2(source_path, target_path)
+def libdir(options):
+ libdir_fq = sysconfig.get_config_var("LIBDIR")
+ return re.sub("^" + re.escape(options.prefix + "/"), "", libdir_fq)
+
def try_remove(options, path, dest):
source_path, target_path = mkpaths(options, path, dest)
if not options.silent:
@@ -82,7 +87,7 @@ def uninstall(options, paths, dest):
try_remove(options, path, dest)
def package_files(options, action, name, bins):
- target_path = os.path.join('lib/node_modules', name)
+ target_path = os.path.join(libdir(options), 'node_modules', name)
# don't install npm if the target path is a symlink, it probably means
# that a dev version of npm is installed there
@@ -103,7 +108,7 @@ def package_files(options, action, name,
if action == uninstall:
action(options, [link_path], os.path.join('bin', bin_name))
elif action == install:
- try_symlink(options, os.path.join('../lib/node_modules', name, bin_target), link_path)
+ try_symlink(options, os.path.join('..', libdir(options), 'node_modules', name, bin_target), link_path)
else:
assert 0 # unhandled action type
Index: node-v20.12.0/lib/internal/modules/cjs/loader.js
===================================================================
--- node-v20.12.0.orig/lib/internal/modules/cjs/loader.js
+++ node-v20.12.0/lib/internal/modules/cjs/loader.js
@@ -1529,7 +1529,7 @@ Module._initPaths = function() {
path.resolve(process.execPath, '..') :
path.resolve(process.execPath, '..', '..');
- const paths = [path.resolve(prefixDir, 'lib', 'node')];
+ const paths = ['/usr/lib/node'];
if (homeDir) {
ArrayPrototypeUnshift(paths, path.resolve(homeDir, '.node_libraries'));

BIN
nodejs.keyring Normal file

Binary file not shown.

26
nodejs22.changes Normal file
View File

@ -0,0 +1,26 @@
-------------------------------------------------------------------
Tue May 14 14:25:41 UTC 2024 - Adam Majer <adam.majer@suse.de>
- New nodejs major version 22.1.0
For overview of changes and details since 21.x and earlier see
https://github.com/nodejs/node/blob/main/doc/changelogs/CHANGELOG_V22.md#22.1.0
- Imported patches from 21.x:
* cares_public_headers.patch
* fix_ci_tests.patch
* flaky_test_rerun.patch
* gcc13.patch
* legacy_python.patch
* linker_lto_jobs.patch
* manual_configure.patch
* node-gyp-addon-gypi.patch
* node-gyp-config.patch
* nodejs-libpath.patch
* npm_search_paths.patch
* openssl_binary_detection.patch
* qemu_timeouts_arches.patch
* skip_no_console.patch
* sle12_python3_compat.patch
* test-skip-y2038-on-32bit-time_t.patch
* versioned.patch

1144
nodejs22.spec Normal file

File diff suppressed because it is too large Load Diff

32
npm_search_paths.patch Normal file
View File

@ -0,0 +1,32 @@
Index: node-v22.1.0/deps/npm/lib/commands/help-search.js
===================================================================
--- node-v22.1.0.orig/deps/npm/lib/commands/help-search.js
+++ node-v22.1.0/deps/npm/lib/commands/help-search.js
@@ -17,7 +17,7 @@ class HelpSearch extends BaseCommand {
throw this.usageError()
}
- const docPath = path.resolve(this.npm.npmRoot, 'docs/content')
+ const docPath = '/usr/share/doc/packages/nodejs'
let files = await glob(`${globify(docPath)}/*/*.md`)
// preserve glob@8 behavior
files = files.sort((a, b) => a.localeCompare(b, 'en'))
Index: node-v22.1.0/deps/npm/lib/npm.js
===================================================================
--- node-v22.1.0.orig/deps/npm/lib/npm.js
+++ node-v22.1.0/deps/npm/lib/npm.js
@@ -338,7 +338,13 @@ class Npm {
}
get globalPrefix () {
- return this.config.globalPrefix
+ let prefix = this.config.globalPrefix
+
+ // don't poop all over distro territory - use /usr/local instead
+ if (prefix === '/usr')
+ return '/usr/local'
+
+ return prefix;
}
get localPrefix () {

View File

@ -0,0 +1,42 @@
Allow non-standard openssl binary names
Index: node-v14.15.1/test/common/index.js
===================================================================
--- node-v14.15.1.orig/test/common/index.js
+++ node-v14.15.1/test/common/index.js
@@ -797,20 +797,28 @@ const common = {
get opensslCli() {
if (opensslCli !== null) return opensslCli;
+ let cli_candidates = [];
+
if (process.config.variables.node_shared_openssl) {
// Use external command
- opensslCli = 'openssl';
+ cli_candidates = cli_candidates.concat(['openssl-1_1', 'openssl']);
} else {
// Use command built from sources included in Node.js repository
- opensslCli = path.join(path.dirname(process.execPath), 'openssl-cli');
+ cli_candidates.push(path.join(path.dirname(process.execPath), 'openssl-cli'));
}
- if (exports.isWindows) opensslCli += '.exe';
+ let checkOpensslCli = function(opensslCli) {
+ if (exports.isWindows) opensslCli += '.exe';
+ const opensslCmd = spawnSync(opensslCli, ['version']);
+ if (opensslCmd.status !== 0 || opensslCmd.error !== undefined) {
+ // OpenSSL command cannot be executed
+ opensslCli = false;
+ }
+ return opensslCli;
+ };
- const opensslCmd = spawnSync(opensslCli, ['version']);
- if (opensslCmd.status !== 0 || opensslCmd.error !== undefined) {
- // OpenSSL command cannot be executed
- opensslCli = false;
+ for (let i=0; i<cli_candidates.length && !opensslCli; i=i+1) {
+ opensslCli = checkOpensslCli(cli_candidates[i]);
}
return opensslCli;
},

View File

@ -0,0 +1,14 @@
Index: node-v22.1.0/test/common/index.js
===================================================================
--- node-v22.1.0.orig/test/common/index.js
+++ node-v22.1.0/test/common/index.js
@@ -275,6 +275,9 @@ function platformTimeout(ms) {
if (isPi)
return multipliers.two * ms; // Raspberry Pi devices
+ if (process.arch === 'riscv64') // usermode qemu slow
+ return multipliers.seven * ms;
+
return ms;
}

29
skip_no_console.patch Normal file
View File

@ -0,0 +1,29 @@
Index: node-v14.3.0/test/parallel/test-repl-mode.js
===================================================================
--- node-v14.3.0.orig/test/parallel/test-repl-mode.js
+++ node-v14.3.0/test/parallel/test-repl-mode.js
@@ -1,9 +1,11 @@
'use strict';
-require('../common');
+const common = require('../common');
const assert = require('assert');
const Stream = require('stream');
const repl = require('repl');
+common.skipIfDumbTerminal();
+
const tests = [
testSloppyMode,
testStrictMode,
Index: node-v14.3.0/test/parallel/test-repl-strict-mode-previews.js
===================================================================
--- node-v14.3.0.orig/test/parallel/test-repl-strict-mode-previews.js
+++ node-v14.3.0/test/parallel/test-repl-strict-mode-previews.js
@@ -5,6 +5,7 @@
const common = require('../common');
common.skipIfInspectorDisabled();
+common.skipIfDumbTerminal();
if (process.argv[2] === 'child') {
const stream = require('stream');

View File

@ -0,0 +1,35 @@
Index: node-v19.1.0/configure
===================================================================
--- node-v19.1.0.orig/configure
+++ node-v19.1.0/configure
@@ -23,7 +23,7 @@ except ImportError:
from distutils.spawn import find_executable as which
print('Node.js configure: Found Python {}.{}.{}...'.format(*sys.version_info))
-acceptable_pythons = ((3, 11), (3, 10), (3, 9), (3, 8), (3, 7), (3, 6))
+acceptable_pythons = ((3, 11), (3, 10), (3, 9), (3, 8), (3, 7), (3, 6), (3, 4))
if sys.version_info[:2] in acceptable_pythons:
import configure
else:
Index: node-v19.1.0/deps/npm/node_modules/node-gyp/lib/find-python.js
===================================================================
--- node-v19.1.0.orig/deps/npm/node_modules/node-gyp/lib/find-python.js
+++ node-v19.1.0/deps/npm/node_modules/node-gyp/lib/find-python.js
@@ -15,7 +15,7 @@ const programFiles = process.env.Program
const programFilesX86 = process.env['ProgramFiles(x86)'] || `${programFiles} (x86)`
const winDefaultLocationsArray = []
-for (const majorMinor of ['39', '38', '37', '36']) {
+for (const majorMinor of ['39', '38', '37', '36', '34']) {
if (foundLocalAppData) {
winDefaultLocationsArray.push(
`${localAppData}\\Programs\\Python\\Python${majorMinor}\\python.exe`,
@@ -49,7 +49,7 @@ PythonFinder.prototype = {
log: logWithPrefix(log, 'find Python'),
argsExecutable: ['-c', 'import sys; print(sys.executable);'],
argsVersion: ['-c', 'import sys; print("%s.%s.%s" % sys.version_info[:3]);'],
- semverRange: '>=3.6.0',
+ semverRange: '>=3.4.0',
// These can be overridden for testing:
execFile: cp.execFile,

View File

@ -0,0 +1,45 @@
Skip 'test/parallel/test-fs-utimes-y2K38.js' on some platforms.
This test fails if coreutils' touch was built with 64-bit time_t,
while nodejs was built with 32-bit time_t. This is currently the case
on i586, ppc and arm. Skip the failing last command on those
platforms.
The failure was seen since coreutils-9.0.
Remove this patch once nodejs(1) also builds with 64-bit time_t.
---
test/parallel/test-fs-utimes-y2K38.js | 17 +++++++++++++++++
1 file changed, 17 insertions(+)
Index: node-v16.6.2/test/parallel/test-fs-utimes-y2K38.js
===================================================================
--- node-v16.6.2.orig/test/parallel/test-fs-utimes-y2K38.js
+++ node-v16.6.2/test/parallel/test-fs-utimes-y2K38.js
@@ -20,6 +20,26 @@ if (!common.isWindows) {
common.skip('File system appears to lack Y2K38 support (touch failed)');
}
+ // SUSE: touch-9.0 may succeed on platforms with 32-bit time_t,
+ // but the test would fail. Skip on those platforms for now.
+ const unameResult = spawnSync('uname',
+ ['-m'],
+ { encoding: 'utf8' });
+ if (unameResult.status === 0) {
+ if (unameResult.stdout.trim() === 'i686') {
+ common.skip('SUSE: test skipped on platforms with 32-bit time_t');
+ }
+ if (unameResult.stdout.trim() === 'ppc') {
+ common.skip('SUSE: test skipped on platforms with 32-bit time_t');
+ }
+ if (unameResult.stdout.trim() === 'armv6l') {
+ common.skip('SUSE: test skipped on platforms with 32-bit time_t');
+ }
+ if (unameResult.stdout.trim() === 'armv7l') {
+ common.skip('SUSE: test skipped on platforms with 32-bit time_t');
+ }
+ }
+
// On some file systems that lack Y2K38 support, `touch` will succeed but
// the time will be incorrect.
const dateResult = spawnSync('date',

13
update_npm_tarball.sh Normal file
View File

@ -0,0 +1,13 @@
#!/bin/bash
#
# Fetch npm module tarball that is required to run unit tests
# which are not provided by upstream tarball
#
set -e
tar Jxf node-v*.tar.xz
cd node-v*/tools/doc
npm ci
cd ../..
exec tar Jcf ../node_modules.tar.xz tools/doc/node_modules

274
versioned.patch Normal file
View File

@ -0,0 +1,274 @@
Author: Adam Majer <amajer@suse.de>
Date: Fri May 11 16:10:16 CEST 2018
Summary: Generate versioned binaries
Generate versioned binaries and install paths
so we can allow concurrent installations and
management via update_alternatives.
This is also important for generation of binary
modules for multiple versions of NodeJS
Index: node-v22.1.0/Makefile
===================================================================
--- node-v22.1.0.orig/Makefile
+++ node-v22.1.0/Makefile
@@ -76,7 +76,7 @@ BUILDTYPE_LOWER := $(shell echo $(BUILDT
EXEEXT := $(shell $(PYTHON) -c \
"import sys; print('.exe' if sys.platform == 'win32' else '')")
-NODE_EXE = node$(EXEEXT)
+NODE_EXE = node22$(EXEEXT)
# Use $(PWD) so we can cd to anywhere before calling this
NODE ?= "$(PWD)/$(NODE_EXE)"
NODE_G_EXE = node_g$(EXEEXT)
Index: node-v22.1.0/tools/install.py
===================================================================
--- node-v22.1.0.orig/tools/install.py
+++ node-v22.1.0/tools/install.py
@@ -87,7 +87,7 @@ def uninstall(options, paths, dest):
try_remove(options, path, dest)
def package_files(options, action, name, bins):
- target_path = os.path.join(libdir(options), 'node_modules', name)
+ target_path = os.path.join(libdir(options), 'node_modules', name + '21')
# don't install npm if the target path is a symlink, it probably means
# that a dev version of npm is installed there
@@ -108,19 +108,19 @@ def package_files(options, action, name,
if action == uninstall:
action(options, [link_path], os.path.join('bin', bin_name))
elif action == install:
- try_symlink(options, os.path.join('..', libdir(options), 'node_modules', name, bin_target), link_path)
+ try_symlink(options, os.path.join('..', libdir(options), 'node_modules', name + '21', bin_target), link_path)
else:
assert 0 # unhandled action type
def npm_files(options, action):
package_files(options, action, 'npm', {
- 'npm': 'bin/npm-cli.js',
- 'npx': 'bin/npx-cli.js',
+ 'npm22': 'bin/npm-cli.js',
+ 'npx22': 'bin/npx-cli.js',
})
def corepack_files(options, action):
package_files(options, action, 'corepack', {
- 'corepack': 'dist/corepack.js',
+ 'corepack22': 'dist/corepack.js',
# Not the default just yet:
# 'yarn': 'dist/yarn.js',
# 'yarnpkg': 'dist/yarn.js',
@@ -149,7 +149,7 @@ def subdir_files(options, path, dest, ac
action(options, files_in_path, subdir + os.path.sep)
def files(options, action):
- node_bin = 'node'
+ node_bin = 'node22'
if options.is_win:
node_bin += '.exe'
action(options, [os.path.join(options.build_dir, node_bin)], os.path.join('bin', node_bin))
@@ -190,7 +190,7 @@ def files(options, action):
if 'openbsd' in sys.platform:
action(options, ['doc/node.1'], 'man/man1/')
else:
- action(options, ['doc/node.1'], 'share/man/man1/')
+ action(options, ['doc/node.1'], 'share/man/man1/node22.1')
if 'true' == options.variables.get('node_install_npm'):
npm_files(options, action)
@@ -333,28 +333,28 @@ def headers(options, action):
'src/node_buffer.h',
'src/node_object_wrap.h',
'src/node_version.h',
- ], 'include/node/')
+ ], 'include/node22/')
# Add the expfile that is created on AIX
if sys.platform.startswith('aix') or sys.platform == "os400":
- action(options, ['out/Release/node.exp'], 'include/node/')
+ action(options, ['out/Release/node.exp'], 'include/node22/')
- subdir_files(options, os.path.join(options.v8_dir, 'include'), 'include/node/', wanted_v8_headers)
+ subdir_files(options, os.path.join(options.v8_dir, 'include'), 'include/node22/', wanted_v8_headers)
if 'false' == options.variables.get('node_shared_libuv'):
- subdir_files(options, 'deps/uv/include', 'include/node/', action)
+ subdir_files(options, 'deps/uv/include', 'include/node22/', action)
if 'true' == options.variables.get('node_use_openssl') and \
'false' == options.variables.get('node_shared_openssl'):
- subdir_files(options, 'deps/openssl/openssl/include/openssl', 'include/node/openssl/', action)
- subdir_files(options, 'deps/openssl/config/archs', 'include/node/openssl/archs', action)
- subdir_files(options, 'deps/openssl/config', 'include/node/openssl', action)
+ subdir_files(options, 'deps/openssl/openssl/include/openssl', 'include/node22/openssl/', action)
+ subdir_files(options, 'deps/openssl/config/archs', 'include/node22/openssl/archs', action)
+ subdir_files(options, 'deps/openssl/config', 'include/node22/openssl', action)
if 'false' == options.variables.get('node_shared_zlib'):
action(options, [
'deps/zlib/zconf.h',
'deps/zlib/zlib.h',
- ], 'include/node/')
+ ], 'include/node22/')
if sys.platform == 'zos':
zoslibinc = os.environ.get('ZOSLIB_INCLUDES')
Index: node-v22.1.0/doc/node.1
===================================================================
--- node-v22.1.0.orig/doc/node.1
+++ node-v22.1.0/doc/node.1
@@ -31,24 +31,24 @@
.Dt NODE 1
.
.Sh NAME
-.Nm node
+.Nm node22
.Nd server-side JavaScript runtime
.
.\"======================================================================
.Sh SYNOPSIS
-.Nm node
+.Nm node22
.Op Ar options
.Op Ar v8-options
.Op Fl e Ar string | Ar script.js | Fl
.Op Fl -
.Op Ar arguments ...
.
-.Nm node
+.Nm node22
.Cm inspect
.Op Fl e Ar string | Ar script.js | Fl | Ar <host>:<port>
.Ar ...
.
-.Nm node
+.Nm node22
.Op Fl -v8-options
.
.\"======================================================================
Index: node-v22.1.0/src/node_main.cc
===================================================================
--- node-v22.1.0.orig/src/node_main.cc
+++ node-v22.1.0/src/node_main.cc
@@ -94,6 +94,7 @@ int wmain(int argc, wchar_t* wargv[]) {
// UNIX
int main(int argc, char* argv[]) {
+ setenv("NODE_VERSION", "22", 0);
return node::Start(argc, argv);
}
#endif
Index: node-v22.1.0/tools/test.py
===================================================================
--- node-v22.1.0.orig/tools/test.py
+++ node-v22.1.0/tools/test.py
@@ -954,7 +954,7 @@ class Context(object):
if self.vm is not None:
return self.vm
if arch == 'none':
- name = 'out/Debug/node' if mode == 'debug' else 'out/Release/node'
+ name = 'out/Debug/node' if mode == 'debug' else 'out/Release/node22'
else:
name = 'out/%s.%s/node' % (arch, mode)
Index: node-v22.1.0/node.gyp
===================================================================
--- node-v22.1.0.orig/node.gyp
+++ node-v22.1.0/node.gyp
@@ -24,8 +24,8 @@
'node_shared_openssl%': 'false',
'node_v8_options%': '',
'node_enable_v8_vtunejit%': 'false',
- 'node_core_target_name%': 'node',
- 'node_lib_target_name%': 'libnode',
+ 'node_core_target_name%': 'node22',
+ 'node_lib_target_name%': 'libnode22',
'node_intermediate_lib_type%': 'static_library',
'node_builtin_modules_path%': '',
'linked_module_files': [
Index: node-v22.1.0/test/fixtures/errors/promise_unhandled_warn_with_error.snapshot
===================================================================
--- node-v22.1.0.orig/test/fixtures/errors/promise_unhandled_warn_with_error.snapshot
+++ node-v22.1.0/test/fixtures/errors/promise_unhandled_warn_with_error.snapshot
@@ -6,5 +6,5 @@
at *
at *
at *
-(Use `node --trace-warnings ...` to show where the warning was created)
+(Use `node22 --trace-warnings ...` to show where the warning was created)
(node:*) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https:*nodejs.org*api*cli.html#cli_unhandled_rejections_mode). (rejection id: 1)
Index: node-v22.1.0/test/parallel/test-snapshot-warning.js
===================================================================
--- node-v22.1.0.orig/test/parallel/test-snapshot-warning.js
+++ node-v22.1.0/test/parallel/test-snapshot-warning.js
@@ -60,7 +60,7 @@ tmpdir.refresh();
stderr(output) {
let match = output.match(/Warning: test warning/g);
assert.strictEqual(match.length, 1);
- match = output.match(/Use `node --trace-warnings/g);
+ match = output.match(/Use `node22 --trace-warnings/g);
assert.strictEqual(match.length, 1);
return true;
}
@@ -79,7 +79,7 @@ tmpdir.refresh();
// Warnings should not be handled more than once.
let match = output.match(/Warning: test warning/g);
assert.strictEqual(match.length, 1);
- match = output.match(/Use `node --trace-warnings/g);
+ match = output.match(/Use `node22 --trace-warnings/g);
assert.strictEqual(match.length, 1);
return true;
}
@@ -114,7 +114,7 @@ tmpdir.refresh();
console.log(warningFile1, ':', warnings1);
let match = warnings1.match(/Warning: test warning/g);
assert.strictEqual(match.length, 1);
- match = warnings1.match(/Use `node --trace-warnings/g);
+ match = warnings1.match(/Use `node22 --trace-warnings/g);
assert.strictEqual(match.length, 1);
fs.rmSync(warningFile1, {
maxRetries: 3, recursive: false, force: true
@@ -140,6 +140,6 @@ tmpdir.refresh();
console.log(warningFile2, ':', warnings1);
match = warnings2.match(/Warning: test warning/g);
assert.strictEqual(match.length, 1);
- match = warnings2.match(/Use `node --trace-warnings/g);
+ match = warnings2.match(/Use `node22 --trace-warnings/g);
assert.strictEqual(match.length, 1);
}
Index: node-v22.1.0/test/fixtures/errors/throw_error_with_getter_throw.snapshot
===================================================================
--- node-v22.1.0.orig/test/fixtures/errors/throw_error_with_getter_throw.snapshot
+++ node-v22.1.0/test/fixtures/errors/throw_error_with_getter_throw.snapshot
@@ -3,6 +3,6 @@
throw { * eslint-disable-line no-throw-literal
^
[object Object]
-(Use `node --trace-uncaught ...` to show where the exception was thrown)
+(Use `node22 --trace-uncaught ...` to show where the exception was thrown)
Node.js *
Index: node-v22.1.0/test/fixtures/errors/throw_undefined.snapshot
===================================================================
--- node-v22.1.0.orig/test/fixtures/errors/throw_undefined.snapshot
+++ node-v22.1.0/test/fixtures/errors/throw_undefined.snapshot
@@ -3,6 +3,6 @@
throw undefined;
^
undefined
-(Use `node --trace-uncaught ...` to show where the exception was thrown)
+(Use `node22 --trace-uncaught ...` to show where the exception was thrown)
Node.js *
Index: node-v22.1.0/test/fixtures/errors/throw_null.snapshot
===================================================================
--- node-v22.1.0.orig/test/fixtures/errors/throw_null.snapshot
+++ node-v22.1.0/test/fixtures/errors/throw_null.snapshot
@@ -3,6 +3,6 @@
throw null;
^
null
-(Use `node --trace-uncaught ...` to show where the exception was thrown)
+(Use `node22 --trace-uncaught ...` to show where the exception was thrown)
Node.js *