Sync from SUSE:SLFO:Main nodejs22 revision cacbf1d4d20e57f8a03a3c1775dc777c

This commit is contained in:
Adrian Schröter 2024-12-13 10:44:42 +01:00
commit 4f817406fc
27 changed files with 2309 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 @@
9fe24a08564eca8ce7e6ea3dfa58bc91ec5512f194e6871a388254c3ebe4f0a4 node-v22.10.0-aix-ppc64.tar.gz
fa56d6db05ce3909025d75fac8cf32a054c4a74291b4748fae544d4ff935c25e node-v22.10.0-arm64.msi
75e5b78d59187ca936e67f0b88a6db913f4ab8bb83a27a1d0a34f98089cb4f77 node-v22.10.0-darwin-arm64.tar.gz
1e075186b54bac99434c5a41f5bf526e9729c8010dc05cb0da426fb0d5b97170 node-v22.10.0-darwin-arm64.tar.xz
f8d4a064d3edd49900187e301424a7d7d30f75b60f618811d2aad80b665b42d5 node-v22.10.0-darwin-x64.tar.gz
a50a35778fd57ddd90eb1ecbf56ea3a640d932c7d31a0bc2bb164df34f889156 node-v22.10.0-darwin-x64.tar.xz
8e82810f179f82016f75e6259a6d53b26674268cb074c544780ec3819157d1d0 node-v22.10.0-headers.tar.gz
f588b2f9fade83d56cd9965d52ae91b32de0f35393c8e889a52870746940b3b6 node-v22.10.0-headers.tar.xz
17abee3dfe6ffcda95cab08bb5f43de7f88d04e9607c517e701c6e623358dc7c node-v22.10.0-linux-arm64.tar.gz
53f51efe5bf4cd6b7745e910d9a33216b6be5a89b107226862f4a6f27aab84fd node-v22.10.0-linux-arm64.tar.xz
cd0bd2cd4098db1dde29314a60287661484e18df708ac94532e5a34f99eb6fd4 node-v22.10.0-linux-armv7l.tar.gz
cea813eba9b5d43911414c9df03119c47e53c3f303c42bd5f2960aedfcf7df10 node-v22.10.0-linux-armv7l.tar.xz
52fb8ae36061e64d39499be50a1193fc1f10fa667b4211b651576db65b5558da node-v22.10.0-linux-ppc64le.tar.gz
7a83a0f9a674fe0c4b0405d4ba704bafe339fc520873b9260d752436bf1f268e node-v22.10.0-linux-ppc64le.tar.xz
6e976e9278f66e654f208fdca1bae80f49705f51ab4c47ef1acb5bd59b16e640 node-v22.10.0-linux-s390x.tar.gz
caad0bef82f163be6c8d19a6d79bb7a443b3676266fa67bb0325cbc61a1df136 node-v22.10.0-linux-s390x.tar.xz
674fef1891cc9927b5dc2b0ee2399b77f6621e6b3157f563a9e9491ad3db107b node-v22.10.0-linux-x64.tar.gz
406791658a8bce3bc21fab786f45877adad391ea20badc87e1d65c7478b75062 node-v22.10.0-linux-x64.tar.xz
afc49ad90023d7809e7ed0d6b86167e476c21e6482c202e71b49a369302bcedf node-v22.10.0-win-arm64.7z
2a9ffdc69df610821b5fb8b7e19cb0c627a2576c0af5b327ba2cdf9149db4f96 node-v22.10.0-win-arm64.zip
c5105910002a7cf89eaacc27fb85cb2f8551c0f7797ac52118f2398210d6135e node-v22.10.0-win-x64.7z
d68dce8f7a73305a496e719485ca6647387d9410cb7eb5933b5d9b4afc5593bd node-v22.10.0-win-x64.zip
b0149ff0fa094cc765c2e373b1010776bab18a2eac6a7d3800e0599f11da1aa3 node-v22.10.0-win-x86.7z
dff73b6fd3545addabafd453b61ca5d50d2454d05d53a6094bcc428a0aa22de3 node-v22.10.0-win-x86.zip
9d8fad0dc2da2c57e6fdf38fc85a23dc5ebcd5c414d8dd2948b3c45bd2398895 node-v22.10.0-x64.msi
daca38d494c4d6d023ea0cc4d5f7974173256b80a5e485bf7fcaace62c36df85 node-v22.10.0-x86.msi
af7ec12e66beae77b8f4090e7560d53f953ace17af0c6fc658a8453221de2f85 node-v22.10.0.pkg
42e4ab4ce34383488185cef6f06f8d1267bf91ebc5c6596fc3786efb0f8b5aaa node-v22.10.0.tar.gz
3180710d3130ad9df01466abf010e408d41b374be54301d1480d10eca73558e0 node-v22.10.0.tar.xz
d4f4462472ae44f6b804d729bc6e09fbecdb95994be8af35584297b637cd8af1 win-arm64/node.exe
ad65afe5b192644fec9d599c77f0e38a8421d0d7ad2389679882a288c8df444b win-arm64/node.lib
5cb82d77cebf4c82acb9123827d1ada295dce4907bd9f75966f989e112e9f7a2 win-arm64/node_pdb.7z
b551a239370533dcb1f595d35b9540cb906a926387d373f4e0dde8de424267a0 win-arm64/node_pdb.zip
741a6d3a636ccb3290fc3141e3604913d89e430e0c1bd098734cc3380a7c6b3b win-x64/node.exe
3581a06b68c4584d146372113eaa8c4d102127222e5041195ba38f185eef419c win-x64/node.lib
40e2dbf9fb9c66f579d348e2ecd30a4ffadc3b00f9895107f915b82323cd1096 win-x64/node_pdb.7z
1c478d40aadaeb0ad173ba01983a3bb6909777d1b35497b8e4f508acea02a26b win-x64/node_pdb.zip
ca29a0d009d4e39ebca9bc84a859f30ccddeb31f31573d2d62be579d7c3daef0 win-x86/node.exe
45399070d1d247cf223d12e80d3e638635af24d2f7a4714bc8e38a6a918f162a win-x86/node.lib
a35f8ad5b3ebfe652ffba108e3220115088d4a755af0305bdd6ece0295e4c07d win-x86/node_pdb.7z
e985894dd6ae194ef302f831a10268aa33412db046b670a121603184dbacbb04 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 {

128
fix_ci_tests.patch Normal file
View File

@ -0,0 +1,128 @@
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-v22.10.0/test/parallel/test-node-output-v8-warning.mjs
===================================================================
--- node-v22.10.0.orig/test/parallel/test-node-output-v8-warning.mjs
+++ node-v22.10.0/test/parallel/test-node-output-v8-warning.mjs
@@ -15,7 +15,7 @@ describe('v8 output', { concurrency: !pr
.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-v22.10.0/test/parallel/test-module-loading-globalpaths.js
===================================================================
--- node-v22.10.0.orig/test/parallel/test-module-loading-globalpaths.js
+++ node-v22.10.0/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-v22.10.0/test/parallel/test-tls-passphrase.js
===================================================================
--- node-v22.10.0.orig/test/parallel/test-tls-passphrase.js
+++ node-v22.10.0/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-v22.10.0/test/parallel/test-repl-envvars.js
===================================================================
--- node-v22.10.0.orig/test/parallel/test-repl-envvars.js
+++ node-v22.10.0/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-v22.10.0/Makefile
===================================================================
--- node-v22.10.0.orig/Makefile
+++ node-v22.10.0/Makefile
@@ -399,7 +399,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
@@ -572,6 +571,7 @@ test-ci-js: | clear-stalled ## Build and
# Related CI jobs: most CI tests, excluding node-test-commit-arm-fanned
test-ci: LOGLEVEL := info ## Build and test everything (CI).
test-ci: | clear-stalled bench-addons-build build-addons build-js-native-api-tests build-node-api-tests doc-only
+ 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) \
@@ -752,7 +752,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-v22.10.0/tools/test.py
===================================================================
--- node-v22.10.0.orig/tools/test.py
+++ node-v22.10.0/tools/test.py
@@ -1386,7 +1386,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-v22.10.0/test/parallel/test-crypto-dh.js
===================================================================
--- node-v22.10.0.orig/test/parallel/test-crypto-dh.js
+++ node-v22.10.0/test/parallel/test-crypto-dh.js
@@ -93,7 +93,7 @@ const crypto = require('crypto');
dh3.computeSecret('');
}, { message: common.hasOpenSSL3 && !hasOpenSSL3WithNewErrorMessage ?
'Unspecified validation error' :
- 'Supplied key is too small' });
+ /(Supplied key is too small|invalid public key)/ });
}
}
Index: node-v22.10.0/test/parallel/test-dns.js
===================================================================
--- node-v22.10.0.orig/test/parallel/test-dns.js
+++ node-v22.10.0/test/parallel/test-dns.js
@@ -403,7 +403,7 @@ assert.throws(() => {
const server = dgram.createSocket('udp4');
- server.on('message', common.mustCall((msg, { address, port }) => {
+ server.on('message', common.mustCallAtLeast((msg, { address, port }) => {
const parsed = dnstools.parseDNSPacket(msg);
const domain = parsed.questions[0].domain;
assert.strictEqual(domain, 'example.org');

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-v22.10.0/node.gyp
===================================================================
--- node-v22.10.0.orig/node.gyp
+++ node-v22.10.0/node.gyp
@@ -1193,6 +1193,7 @@
'deps/simdutf/simdutf.gyp:simdutf',
'deps/ada/ada.gyp:ada',
'deps/nbytes/nbytes.gyp:nbytes',
+ 'fuzz_env'
],
'includes': [
@@ -1273,6 +1274,7 @@
'deps/sqlite/sqlite.gyp:sqlite',
'deps/ada/ada.gyp:ada',
'deps/nbytes/nbytes.gyp:nbytes',
+ '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'

BIN
node-v22.10.0.tar.xz (Stored with Git LFS) Normal file

Binary file not shown.

BIN
node_modules.tar.xz (Stored with Git LFS) Normal file

Binary file not shown.

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.

151
nodejs22.changes Normal file
View File

@ -0,0 +1,151 @@
-------------------------------------------------------------------
Mon Oct 28 11:43:07 UTC 2024 - Adam Majer <adam.majer@suse.de>
- Update to 22.10.0:
* crypto: add KeyObject.prototype.toCryptoKey
* crypto: add Date fields for validTo and validFrom
* http2: expose nghttp2_option_set_stream_reset_rate_limit as an option
* lib: propagate aborted state to dependent signals before firing events
* module: support loading entrypoint as url
* module: implement flushCompileCache()
* module: throw when invalid argument is passed to enableCompileCache()
* module: write compile cache to temporary file and then rename it
* process: add process.features.require_module
* process: add process.features.typescript
* test_runner: support custom arguments in run()
* test_runner: add 'test:summary' event
* test_runner: add support for coverage via run()
* worker: add markAsUncloneable api
- Changes since 22.9.0:
* util: getCallSite has been introduced. It allows users to retrieve the stacktrace of the current execution.
* tls: Exposes X509_V_FLAG_PARTIAL_CHAIN to tls.createSecureContext
* src: create handle scope in FastInternalModuleStat
* stream: relocate the status checking code in the onwritecomplete
* repl: doc-deprecate instantiating node:repl classes without new
* zlib: deprecate instantiating classes without new
- Changes since 22.8.0:
* vm: New option for vm.createContext() to create a context with a freezable globalThis
* src,lib: add performance.uvMetricsInfo
* net: exclude ipv6 loopback addresses from server.listen
* test_runner: support running tests in process
* test_runner: defer inheriting hooks until run()
- Changes since 22.7.0:
* Experimental transform types support
* Module syntax detection (the --experimental-detect-module flag) is now enabled by default.
* Performance Improvements to Buffer
- Changes since 22.6.0:
* lib,src: drop --experimental-network-imports
* http: add diagnostics channel http.client.request.error
* deps: V8: backport 7857eb34db42
* stream: expose DuplexPair API
* test_runner: fix support watch with run(), add globPatterns option
* meta: add jake to collaborators
* test_runner: refactor snapshots to get file from context
* test_runner: add context.filePath
- Changes since 22.5.0:
* http: expose websockets
* lib: add node:sqlite module
* module: add __esModule to require()'d ESM
* path: add matchesGlob method
* process: port on-exit-leak-free to core
* stream: pipeline wait for close before calling the callback
* test_runner: support glob matching coverage files
* worker: add postMessageToThread
- Changes since 22.4.1:
* (CVE-2024-36138, bsc#1227560) - Bypass incomplete fix of CVE-2024-27980 (High)
* (CVE-2024-22020, bsc#1227554) - Bypass network import restriction via data URL (Medium)
* (CVE-2024-22018, bsc#1227562) - fs.lstat bypasses permission model (Low)
* (CVE-2024-36137, bsc#1227561) - fs.fchown/fchmod bypasses permission model (Low)
* (CVE-2024-37372, bsc#1227563) - Permission model improperly processes UNC paths (Low)
- Changes since 22.4.0:
* deps,lib,src: add experimental web storage
* doc: doc-only deprecate OpenSSL engine-based APIs
* inspector: fix disable async hooks on Debugger.setAsyncCallStackDepth
* lib: add diagnostics_channel events to module loading
* util: support --no- for argument with boolean type for parseArgs
- fix_ci_tests.patch: refreshed, add compat for c-ares 1.30
- linker_lto_jobs.patch, versioned.patch, qemu_timeouts_arches.patch: refreshed
- nodejs.keyring: add C0D6248439F1D5604AAFFB4021D900FFDB233756
-------------------------------------------------------------------
Fri Jun 14 10:58:52 UTC 2024 - Adam Majer <adam.majer@suse.de>
- Update to 22.3.0:
* buffer: add .bytes() method to Blob
* doc: add context.assert docs
* doc: improve explanation about built-in modules
* fs: mark recursive cp methods as stable
* net: add new net.server.listen tracing channel
* module: print amount of load time of a cjs module
* process: add process.getBuiltinModule(id)
* cli: add NODE_RUN_PACKAGE_JSON_PATH env
* cli: add NODE_RUN_SCRIPT_NAME env to node --run
* lib: add EventSource Client
* lib: replace MessageEvent with undici's
* src: traverse parent folders while running --run
* src,permission: --allow-wasi & prevent WASI exec
* test_runner: support module mocking
* test_runner: add snapshot testing
* test_runner: add context.fullName
- fix_ci_tests.patch: partially upstreamed and refreshed
-------------------------------------------------------------------
Wed May 22 10:49:02 UTC 2024 - Adam Majer <adam.majer@suse.de>
- Update to 22.2.0:
* cli: allow running wasm in limited vmem with --disable-wasm-trap-handler
* doc: add pimterry to collaborators
* fs: allow 'withFileTypes' to be used with globs
* inspector: introduce the --inspect-wait flag
* lib,src: remove --experimental-policy
* perf_hooks: add deliveryType and responseStatus fields
* test_runner: support test plans
* zlib: expose zlib.crc32()
- linker_lto_jobs.patch: refreshed
- fix_ci_tests.patch: partially upstreamed, refreshed
- skip_no_console.patch: dropped, upstreamed
-------------------------------------------------------------------
Wed May 22 09:04:46 UTC 2024 - Adam Majer <adam.majer@suse.de>
- fix_ci_tests.patch: add fix for issue #53085
-------------------------------------------------------------------
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
- v8-i586.patch: fix 32bit build with new gcc
- 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

1157
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.10.0/test/common/index.js
===================================================================
--- node-v22.10.0.orig/test/common/index.js
+++ node-v22.10.0/test/common/index.js
@@ -293,6 +293,9 @@ function platformTimeout(ms) {
return multipliers.four * ms;
}
+ if (process.arch === 'riscv64') // usermode qemu slow
+ return multipliers.seven * ms;
+
return ms;
}

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

40
v8-i586.patch Normal file
View File

@ -0,0 +1,40 @@
Index: node-v22.1.0/deps/v8/src/compiler/backend/ia32/instruction-selector-ia32.cc
===================================================================
--- node-v22.1.0.orig/deps/v8/src/compiler/backend/ia32/instruction-selector-ia32.cc
+++ node-v22.1.0/deps/v8/src/compiler/backend/ia32/instruction-selector-ia32.cc
@@ -1161,7 +1161,7 @@ template <typename Adapter>
void VisitAtomicExchange(InstructionSelectorT<Adapter>* selector,
typename Adapter::node_t node, ArchOpcode opcode,
MachineRepresentation rep) {
- using node_t = Adapter::node_t;
+ using node_t = typename Adapter::node_t;
IA32OperandGeneratorT<Adapter> g(selector);
node_t base = selector->input_at(node, 0);
node_t index = selector->input_at(node, 1);
@@ -1732,7 +1732,7 @@ template <typename Adapter>
void VisitWord32PairShift(InstructionSelectorT<Adapter>* selector,
InstructionCode opcode,
typename Adapter::node_t node) {
- using node_t = Adapter::node_t;
+ using node_t = typename Adapter::node_t;
IA32OperandGeneratorT<Adapter> g(selector);
node_t shift = selector->input_at(node, 2);
@@ -2507,7 +2507,7 @@ template <typename Adapter>
void VisitAtomicBinOp(InstructionSelectorT<Adapter>* selector,
typename Adapter::node_t node, ArchOpcode opcode,
MachineRepresentation rep) {
- using node_t = Adapter::node_t;
+ using node_t = typename Adapter::node_t;
AddressingMode addressing_mode;
IA32OperandGeneratorT<Adapter> g(selector);
node_t base = selector->input_at(node, 0);
@@ -2528,7 +2528,7 @@ void VisitAtomicBinOp(InstructionSelecto
template <typename Adapter>
void VisitPairAtomicBinOp(InstructionSelectorT<Adapter>* selector,
typename Adapter::node_t node, ArchOpcode opcode) {
- using node_t = Adapter::node_t;
+ using node_t = typename Adapter::node_t;
IA32OperandGeneratorT<Adapter> g(selector);
node_t base = selector->input_at(node, 0);
node_t index = selector->input_at(node, 1);

227
versioned.patch Normal file
View File

@ -0,0 +1,227 @@
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.10.0/Makefile
===================================================================
--- node-v22.10.0.orig/Makefile
+++ node-v22.10.0/Makefile
@@ -79,7 +79,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.10.0/tools/install.py
===================================================================
--- node-v22.10.0.orig/tools/install.py
+++ node-v22.10.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 + '22')
# 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 + '22', 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.10.0/doc/node.1
===================================================================
--- node-v22.10.0.orig/doc/node.1
+++ node-v22.10.0/doc/node.1
@@ -28,24 +28,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.10.0/src/node_main.cc
===================================================================
--- node-v22.10.0.orig/src/node_main.cc
+++ node-v22.10.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.10.0/tools/test.py
===================================================================
--- node-v22.10.0.orig/tools/test.py
+++ node-v22.10.0/tools/test.py
@@ -972,7 +972,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.10.0/node.gyp
===================================================================
--- node-v22.10.0.orig/node.gyp
+++ node-v22.10.0/node.gyp
@@ -27,8 +27,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.10.0/test/parallel/test-snapshot-warning.js
===================================================================
--- node-v22.10.0.orig/test/parallel/test-snapshot-warning.js
+++ node-v22.10.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);
}