Sync from SUSE:SLFO:Main nodejs20 revision 5d1a80ee6af19d06fa0d5bdb9470c213
This commit is contained in:
commit
54578ff8a0
23
.gitattributes
vendored
Normal file
23
.gitattributes
vendored
Normal 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
41
SHASUMS256.txt
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
43a881788549e1b3425eb5f2b92608f438f146e08213de09c5bd5ff841cae7ae node-v20.11.1-aix-ppc64.tar.gz
|
||||||
|
3f8e77b775372c0b27d2b85ce899d80339691f480e64dde43d4eb01504a58679 node-v20.11.1-arm64.msi
|
||||||
|
e0065c61f340e85106a99c4b54746c5cee09d59b08c5712f67f99e92aa44995d node-v20.11.1-darwin-arm64.tar.gz
|
||||||
|
fd771bf3881733bfc0622128918ae6baf2ed1178146538a53c30ac2f7006af5b node-v20.11.1-darwin-arm64.tar.xz
|
||||||
|
c52e7fb0709dbe63a4cbe08ac8af3479188692937a7bd8e776e0eedfa33bb848 node-v20.11.1-darwin-x64.tar.gz
|
||||||
|
ed69f1f300beb75fb4cad45d96aacd141c3ddca03b6d77c76b42cb258202363d node-v20.11.1-darwin-x64.tar.xz
|
||||||
|
0aa42c91b441e945ff43bd3a837759c58b436de57dcd033d02e5cbcd2fba1f87 node-v20.11.1-headers.tar.gz
|
||||||
|
edce238817acf5adce3123366b55304aff2a1f0849231d1b49f42370e454b6f8 node-v20.11.1-headers.tar.xz
|
||||||
|
e34ab2fc2726b4abd896bcbff0250e9b2da737cbd9d24267518a802ed0606f3b node-v20.11.1-linux-arm64.tar.gz
|
||||||
|
c957f29eb4e341903520caf362534f0acd1db7be79c502ae8e283994eed07fe1 node-v20.11.1-linux-arm64.tar.xz
|
||||||
|
e42791f76ece283c7a4b97fbf716da72c5128c54a9779f10f03ae74a4bcfb8f6 node-v20.11.1-linux-armv7l.tar.gz
|
||||||
|
28e0120d2d150a8f41717899d33167b8b32053778665583d49ff971bfd188d1b node-v20.11.1-linux-armv7l.tar.xz
|
||||||
|
9823305ac3a66925a9b61d8032f6bbb4c3e33c28e7f957ebb27e49732feffb23 node-v20.11.1-linux-ppc64le.tar.gz
|
||||||
|
51343cacf5cdf5c4b5e93e919d19dd373d6ef43d5f2c666eae299f26e31d08b5 node-v20.11.1-linux-ppc64le.tar.xz
|
||||||
|
4c66b2f247fdd8720853321526d7cda483018fcb32014b75c30f3a54ecacaea7 node-v20.11.1-linux-s390x.tar.gz
|
||||||
|
b32616b705cd0ddbb230b95c693e3d7a37becc2ced9bcadea8dc824cceed6be0 node-v20.11.1-linux-s390x.tar.xz
|
||||||
|
bf3a779bef19452da90fb88358ec2c57e0d2f882839b20dc6afc297b6aafc0d7 node-v20.11.1-linux-x64.tar.gz
|
||||||
|
d8dab549b09672b03356aa2257699f3de3b58c96e74eb26a8b495fbdc9cf6fbe node-v20.11.1-linux-x64.tar.xz
|
||||||
|
f1cd449fcbeb1b948e8498cb8edd9655fa319d109a7f4c5bd96a9b122b91538a node-v20.11.1-win-arm64.7z
|
||||||
|
e85461ec124956a2853c4ee6e13c4f4889d63c88beb3d530c1ee0c4b51dc10e7 node-v20.11.1-win-arm64.zip
|
||||||
|
fb9b5348259988a562a48eed7349e7e716c0bec78d98ad0a336b2993a8b3bf34 node-v20.11.1-win-x64.7z
|
||||||
|
bc032628d77d206ffa7f133518a6225a9c5d6d9210ead30d67e294ff37044bda node-v20.11.1-win-x64.zip
|
||||||
|
c2b1863d8979546804a39fc63d0a9bc9c6e49cb2f6c9d1e52844a24629b24765 node-v20.11.1-win-x86.7z
|
||||||
|
b98e95f78416d1359b647cfa09ba2a48b76d41b56a776df822bf36ffe8e76a2d node-v20.11.1-win-x86.zip
|
||||||
|
c54f5f7e2416e826fd84e878f28e3b53363ae9c3f60a140af4434b2453b5ae89 node-v20.11.1-x64.msi
|
||||||
|
63e2aed4dabb96eed6903a3974e006d3c29c218472aac60ae3c3c7de00df13b1 node-v20.11.1-x86.msi
|
||||||
|
c46019a095a1549d000e85da13f17972a448e0be5854a51786ecccde7278a012 node-v20.11.1.pkg
|
||||||
|
4af1ba6ea848cc05908b8a62b02fb27684dd52b2a7988ee82b0cfa72deb90b94 node-v20.11.1.tar.gz
|
||||||
|
77813edbf3f7f16d2d35d3353443dee4e61d5ee84d9e3138c7538a3c0ca5209e node-v20.11.1.tar.xz
|
||||||
|
a5a9d30a8f7d56e00ccb27c1a7d24c8d0bc96a2689ebba8eb7527698793496f1 win-arm64/node.exe
|
||||||
|
93529170cebe57c0f4830a4cc6a261b6cc9bcf0cd8b3e88ac4995a5015031d79 win-arm64/node.lib
|
||||||
|
c14c6e927406b8683cbfb8a67ca4c8fd5093ca7812b5b1627e3d6a53d3674565 win-arm64/node_pdb.7z
|
||||||
|
68034cd09d8dfaa755d1b280da13e20388cc486ac57b037b3e11dfe2d6b74284 win-arm64/node_pdb.zip
|
||||||
|
bc585910690318aaebe3c57669cb83ca9d1e5791efd63195e238f54686e6c2ec win-x64/node.exe
|
||||||
|
53a982d490cb9fcc4b231a8b95147de423b36186bc6f4ba5697b20117fdcbd5d win-x64/node.lib
|
||||||
|
ccac9f2f5219ed858aeddb306d6493478ba9675c7cbf009e83742437d6752c4f win-x64/node_pdb.7z
|
||||||
|
bec5da4035c84580843978a59ef9bcc1c0eaca881cf9e1c94e63a1862cf14421 win-x64/node_pdb.zip
|
||||||
|
3829137e062b1e2eb9947ef05e4b717ae578a8fce1c5c60fe4f6ae7ef2ec0240 win-x86/node.exe
|
||||||
|
c5321bb65dcecb3989f9b8f6ec56369c16627ca4bade0c78afb6b88f7dde50e4 win-x86/node.lib
|
||||||
|
20ca60ced1fc21f15ea952b4406aec6bde39d20eab11cf042040628841b2249e win-x86/node_pdb.7z
|
||||||
|
bef05cebedce5949ae35e87e7d4789c16fa73caf478483fcf92e5dbb9ba5d774 win-x86/node_pdb.zip
|
BIN
SHASUMS256.txt.sig
Normal file
BIN
SHASUMS256.txt.sig
Normal file
Binary file not shown.
32
_constraints
Normal file
32
_constraints
Normal 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
16
bash_output_helper.bash
Normal 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 $!
|
||||||
|
}
|
||||||
|
|
46
c-ares-fixes.patch
Normal file
46
c-ares-fixes.patch
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
Index: node-v20.11.0/test/parallel/test-dns-resolveany-bad-ancount.js
|
||||||
|
===================================================================
|
||||||
|
--- node-v20.11.0.orig/test/parallel/test-dns-resolveany-bad-ancount.js
|
||||||
|
+++ node-v20.11.0/test/parallel/test-dns-resolveany-bad-ancount.js
|
||||||
|
@@ -7,6 +7,8 @@ const dgram = require('dgram');
|
||||||
|
const dnsPromises = dns.promises;
|
||||||
|
|
||||||
|
const server = dgram.createSocket('udp4');
|
||||||
|
+const resolver = new dns.Resolver({ timeout: 100, tries: 1 });
|
||||||
|
+const resolverPromises = new dnsPromises.Resolver({ timeout: 100, tries: 1 });
|
||||||
|
|
||||||
|
server.on('message', common.mustCall((msg, { address, port }) => {
|
||||||
|
const parsed = dnstools.parseDNSPacket(msg);
|
||||||
|
@@ -18,16 +20,20 @@ server.on('message', common.mustCall((ms
|
||||||
|
questions: parsed.questions,
|
||||||
|
answers: { type: 'A', address: '1.2.3.4', ttl: 123, domain },
|
||||||
|
});
|
||||||
|
- // Overwrite the # of answers with 2, which is incorrect.
|
||||||
|
+ // Overwrite the # of answers with 2, which is incorrect. The response is
|
||||||
|
+ // discarded in c-ares >= 1.21.0. This is the reason why a small timeout is
|
||||||
|
+ // used in the `Resolver` constructor. See
|
||||||
|
+ // https://github.com/nodejs/node/pull/50743#issue-1994909204
|
||||||
|
buf.writeUInt16LE(2, 6);
|
||||||
|
server.send(buf, port, address);
|
||||||
|
}, 2));
|
||||||
|
|
||||||
|
server.bind(0, common.mustCall(async () => {
|
||||||
|
const address = server.address();
|
||||||
|
- dns.setServers([`127.0.0.1:${address.port}`]);
|
||||||
|
+ resolver.setServers([`127.0.0.1:${address.port}`]);
|
||||||
|
+ resolverPromises.setServers([`127.0.0.1:${address.port}`]);
|
||||||
|
|
||||||
|
- dnsPromises.resolveAny('example.org')
|
||||||
|
+ resolverPromises.resolveAny('example.org')
|
||||||
|
.then(common.mustNotCall())
|
||||||
|
.catch(common.expectsError({
|
||||||
|
// May return EBADRESP or ETIMEOUT
|
||||||
|
@@ -36,7 +42,7 @@ server.bind(0, common.mustCall(async ()
|
||||||
|
hostname: 'example.org'
|
||||||
|
}));
|
||||||
|
|
||||||
|
- dns.resolveAny('example.org', common.mustCall((err) => {
|
||||||
|
+ resolver.resolveAny('example.org', common.mustCall((err) => {
|
||||||
|
assert.notStrictEqual(err.code, 'SUCCESS');
|
||||||
|
assert.strictEqual(err.syscall, 'queryAny');
|
||||||
|
assert.strictEqual(err.hostname, 'example.org');
|
13
cares_public_headers.patch
Normal file
13
cares_public_headers.patch
Normal 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 {
|
151
fix_ci_tests.patch
Normal file
151
fix_ci_tests.patch
Normal file
@ -0,0 +1,151 @@
|
|||||||
|
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-v20.11.0/test/parallel/test-module-loading-globalpaths.js
|
||||||
|
===================================================================
|
||||||
|
--- node-v20.11.0.orig/test/parallel/test-module-loading-globalpaths.js
|
||||||
|
+++ node-v20.11.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-v20.11.0/test/parallel/test-tls-passphrase.js
|
||||||
|
===================================================================
|
||||||
|
--- node-v20.11.0.orig/test/parallel/test-tls-passphrase.js
|
||||||
|
+++ node-v20.11.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-v20.11.0/test/parallel/test-repl-envvars.js
|
||||||
|
===================================================================
|
||||||
|
--- node-v20.11.0.orig/test/parallel/test-repl-envvars.js
|
||||||
|
+++ node-v20.11.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-v20.11.0/Makefile
|
||||||
|
===================================================================
|
||||||
|
--- node-v20.11.0.orig/Makefile
|
||||||
|
+++ node-v20.11.0/Makefile
|
||||||
|
@@ -545,7 +545,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) \
|
||||||
|
@@ -726,7 +727,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-v20.11.0/tools/test.py
|
||||||
|
===================================================================
|
||||||
|
--- node-v20.11.0.orig/tools/test.py
|
||||||
|
+++ node-v20.11.0/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-v20.11.0/test/parallel/test-crypto-dh.js
|
||||||
|
===================================================================
|
||||||
|
--- node-v20.11.0.orig/test/parallel/test-crypto-dh.js
|
||||||
|
+++ node-v20.11.0/test/parallel/test-crypto-dh.js
|
||||||
|
@@ -90,9 +90,7 @@ const crypto = require('crypto');
|
||||||
|
const hasOpenSSL3WithNewErrorMessage = (v >= 0x300000c0 && v <= 0x30100000) || (v >= 0x30100040 && v <= 0x30200000);
|
||||||
|
assert.throws(() => {
|
||||||
|
dh3.computeSecret('');
|
||||||
|
- }, { message: common.hasOpenSSL3 && !hasOpenSSL3WithNewErrorMessage ?
|
||||||
|
- 'error:02800080:Diffie-Hellman routines::invalid secret' :
|
||||||
|
- 'Supplied key is too small' });
|
||||||
|
+ }, /(error:02800080:Diffie-Hellman routines::invalid secret|error:05066066:Diffie-Hellman routines:compute_key:invalid public key|Supplied key is too small)/);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Index: node-v20.11.0/test/parallel/test-node-output-errors.mjs
|
||||||
|
===================================================================
|
||||||
|
--- node-v20.11.0.orig/test/parallel/test-node-output-errors.mjs
|
||||||
|
+++ node-v20.11.0/test/parallel/test-node-output-errors.mjs
|
||||||
|
@@ -28,6 +28,7 @@ describe('errors output', { concurrency:
|
||||||
|
.replaceAll(/\/(\w)/g, '*$1')
|
||||||
|
.replaceAll('*test*', '*')
|
||||||
|
.replaceAll('*fixtures*errors*', '*')
|
||||||
|
+ .replace(/`node\d+ --/, '`node --')
|
||||||
|
.replaceAll('file:**', 'file:*/');
|
||||||
|
}
|
||||||
|
|
||||||
|
Index: node-v20.11.0/test/parallel/test-crypto-fips.js
|
||||||
|
===================================================================
|
||||||
|
--- node-v20.11.0.orig/test/parallel/test-crypto-fips.js
|
||||||
|
+++ node-v20.11.0/test/parallel/test-crypto-fips.js
|
||||||
|
@@ -3,6 +3,8 @@
|
||||||
|
const common = require('../common');
|
||||||
|
if (!common.hasCrypto)
|
||||||
|
common.skip('missing crypto');
|
||||||
|
+if (common.hasOpenSSL3)
|
||||||
|
+ common.skip('skipped fips test on openssl 3.x, to be fixed later');
|
||||||
|
|
||||||
|
const assert = require('assert');
|
||||||
|
const spawnSync = require('child_process').spawnSync;
|
||||||
|
Index: node-v20.11.0/benchmark/misc/startup-cli-version.js
|
||||||
|
===================================================================
|
||||||
|
--- node-v20.11.0.orig/benchmark/misc/startup-cli-version.js
|
||||||
|
+++ node-v20.11.0/benchmark/misc/startup-cli-version.js
|
||||||
|
@@ -10,9 +10,9 @@ 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/npm-cli.js',
|
||||||
|
'deps/corepack/dist/corepack.js',
|
||||||
|
+ 'tools/node_modules/eslint/bin/eslint.js',
|
||||||
|
],
|
||||||
|
count: [30],
|
||||||
|
});
|
||||||
|
Index: node-v20.11.0/test/parallel/test-node-output-v8-warning.mjs
|
||||||
|
===================================================================
|
||||||
|
--- node-v20.11.0.orig/test/parallel/test-node-output-v8-warning.mjs
|
||||||
|
+++ node-v20.11.0/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 --', '* --');
|
||||||
|
+ .replaceAll(/node\d+ --/g, '* --');
|
||||||
|
}
|
||||||
|
const common = snapshot
|
||||||
|
.transform(snapshot.replaceWindowsLineEndings, snapshot.replaceWindowsPaths, replaceNodeVersion);
|
21
flaky_test_rerun.patch
Normal file
21
flaky_test_rerun.patch
Normal 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
36
gcc13.patch
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
Index: node-v20.0.0/deps/v8/src/builtins/builtins-array-gen.cc
|
||||||
|
===================================================================
|
||||||
|
--- node-v20.0.0.orig/deps/v8/src/builtins/builtins-array-gen.cc
|
||||||
|
+++ node-v20.0.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-v20.0.0/deps/v8/src/builtins/builtins-array.cc
|
||||||
|
===================================================================
|
||||||
|
--- node-v20.0.0.orig/deps/v8/src/builtins/builtins-array.cc
|
||||||
|
+++ node-v20.0.0/deps/v8/src/builtins/builtins-array.cc
|
||||||
|
@@ -22,6 +22,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-v20.0.0/deps/v8/src/codegen/tnode.h
|
||||||
|
===================================================================
|
||||||
|
--- node-v20.0.0.orig/deps/v8/src/codegen/tnode.h
|
||||||
|
+++ node-v20.0.0/deps/v8/src/codegen/tnode.h
|
||||||
|
@@ -6,6 +6,7 @@
|
||||||
|
#define V8_CODEGEN_TNODE_H_
|
||||||
|
|
||||||
|
#include "src/codegen/machine-type.h"
|
||||||
|
+#include "src/wasm/wasm-objects.h"
|
||||||
|
|
||||||
|
namespace v8 {
|
||||||
|
namespace internal {
|
26
legacy_python.patch
Normal file
26
legacy_python.patch
Normal 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
25
linker_lto_jobs.patch
Normal 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-v19.7.0/node.gyp
|
||||||
|
===================================================================
|
||||||
|
--- node-v19.7.0.orig/node.gyp
|
||||||
|
+++ node-v19.7.0/node.gyp
|
||||||
|
@@ -951,6 +951,7 @@
|
||||||
|
'deps/uvwasi/uvwasi.gyp:uvwasi',
|
||||||
|
'deps/simdutf/simdutf.gyp:simdutf',
|
||||||
|
'deps/ada/ada.gyp:ada',
|
||||||
|
+ 'fuzz_env'
|
||||||
|
],
|
||||||
|
|
||||||
|
'includes': [
|
||||||
|
@@ -1047,6 +1048,7 @@
|
||||||
|
'deps/histogram/histogram.gyp:histogram',
|
||||||
|
'deps/uvwasi/uvwasi.gyp:uvwasi',
|
||||||
|
'deps/ada/ada.gyp:ada',
|
||||||
|
+ 'cctest'
|
||||||
|
],
|
||||||
|
|
||||||
|
'includes': [
|
20
manual_configure.patch
Normal file
20
manual_configure.patch
Normal 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 */
|
78
node-gyp-addon-gypi.patch
Normal file
78
node-gyp-addon-gypi.patch
Normal file
@ -0,0 +1,78 @@
|
|||||||
|
Index: node-v20.10.0/addon-rpm.gypi
|
||||||
|
===================================================================
|
||||||
|
--- /dev/null
|
||||||
|
+++ node-v20.10.0/addon-rpm.gypi
|
||||||
|
@@ -0,0 +1,35 @@
|
||||||
|
+{
|
||||||
|
+ 'target_defaults': {
|
||||||
|
+ 'type': 'loadable_module',
|
||||||
|
+ 'product_prefix': '',
|
||||||
|
+ 'include_dirs': [
|
||||||
|
+ '/usr/include/node20/',
|
||||||
|
+ '/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-v20.10.0/deps/npm/node_modules/node-gyp/lib/configure.js
|
||||||
|
===================================================================
|
||||||
|
--- node-v20.10.0.orig/deps/npm/node_modules/node-gyp/lib/configure.js
|
||||||
|
+++ node-v20.10.0/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/node20'
|
||||||
|
+ createBuildDir()
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
|
||||||
|
return createBuildDir()
|
||||||
|
@@ -201,7 +203,8 @@ 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 addon_gypi_file = gyp.opts.target || gyp.opts.nodedir ? 'addon.gypi' : 'addon-rpm.gypi'
|
||||||
|
+ var addonGypi = path.resolve(__dirname, '..', addon_gypi_file)
|
||||||
|
let commonGypi = path.resolve(nodeDir, 'include/node/common.gypi')
|
||||||
|
try {
|
||||||
|
await fs.stat(commonGypi)
|
13
node-gyp-config.patch
Normal file
13
node-gyp-config.patch
Normal 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
|
||||||
|
|
BIN
node-gyp_7.1.2.tar.xz
(Stored with Git LFS)
Normal file
BIN
node-gyp_7.1.2.tar.xz
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
node-v20.11.1.tar.xz
(Stored with Git LFS)
Normal file
BIN
node-v20.11.1.tar.xz
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
node_modules.tar.xz
(Stored with Git LFS)
Normal file
BIN
node_modules.tar.xz
(Stored with Git LFS)
Normal file
Binary file not shown.
54
nodejs-libpath.patch
Normal file
54
nodejs-libpath.patch
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
Index: node-v18.9.0/tools/install.py
|
||||||
|
===================================================================
|
||||||
|
--- node-v18.9.0.orig/tools/install.py
|
||||||
|
+++ node-v18.9.0/tools/install.py
|
||||||
|
@@ -7,6 +7,7 @@ import errno
|
||||||
|
import os
|
||||||
|
import shutil
|
||||||
|
import sys
|
||||||
|
+from distutils import sysconfig
|
||||||
|
import re
|
||||||
|
|
||||||
|
# set at init time
|
||||||
|
@@ -66,6 +67,10 @@ def try_copy(path, dst):
|
||||||
|
try_unlink(target_path) # prevent ETXTBSY errors
|
||||||
|
return shutil.copy2(source_path, target_path)
|
||||||
|
|
||||||
|
+def libdir():
|
||||||
|
+ libdir_fq = sysconfig.get_config_var("LIBDIR")
|
||||||
|
+ return re.sub("^" + re.escape(node_prefix + "/"), "", libdir_fq)
|
||||||
|
+
|
||||||
|
def try_remove(path, dst):
|
||||||
|
source_path, target_path = mkpaths(path, dst)
|
||||||
|
print('removing %s' % target_path)
|
||||||
|
@@ -81,7 +86,7 @@ def uninstall(paths, dst):
|
||||||
|
try_remove(path, dst)
|
||||||
|
|
||||||
|
def package_files(action, name, bins):
|
||||||
|
- target_path = 'lib/node_modules/' + name + '/'
|
||||||
|
+ target_path = libdir() + '/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
|
||||||
|
@@ -101,7 +106,7 @@ def package_files(action, name, bins):
|
||||||
|
if action == uninstall:
|
||||||
|
action([link_path], 'bin/' + bin_name)
|
||||||
|
elif action == install:
|
||||||
|
- try_symlink('../lib/node_modules/' + name + '/' + bin_target, link_path)
|
||||||
|
+ try_symlink('../' + libdir() + '/node_modules/' + name + '/' + bin_target, link_path)
|
||||||
|
else:
|
||||||
|
assert 0 # unhandled action type
|
||||||
|
|
||||||
|
Index: node-v18.9.0/lib/internal/modules/cjs/loader.js
|
||||||
|
===================================================================
|
||||||
|
--- node-v18.9.0.orig/lib/internal/modules/cjs/loader.js
|
||||||
|
+++ node-v18.9.0/lib/internal/modules/cjs/loader.js
|
||||||
|
@@ -1254,7 +1254,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
BIN
nodejs.keyring
Normal file
Binary file not shown.
303
nodejs20.changes
Normal file
303
nodejs20.changes
Normal file
@ -0,0 +1,303 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Fri Feb 16 16:04:46 UTC 2024 - Adam Majer <adam.majer@suse.de>
|
||||||
|
|
||||||
|
- Update to 20.11.1: (security updates)
|
||||||
|
* (CVE-2024-21892, bsc#1219992) - Code injection and privilege escalation through Linux capabilities- (High)
|
||||||
|
* (CVE-2024-22019, bsc#1219993) - http: Reading unprocessed HTTP request with unbounded chunk extension allows DoS attacks- (High)
|
||||||
|
* (CVE-2024-21896, bsc#1219994) - Path traversal by monkey-patching Buffer internals- (High)
|
||||||
|
* (CVE-2024-22017, bsc#1219995) - setuid() does not drop all privileges due to io_uring - (High)
|
||||||
|
* (CVE-2023-46809, bsc#1219997) - Node.js is vulnerable to the Marvin Attack (timing variant of the Bleichenbacher attack against PKCS#1 v1.5 padding) - (Medium)
|
||||||
|
* (CVE-2024-21891, bsc#1219998) - Multiple permission model bypasses due to improper path traversal sequence sanitization - (Medium)
|
||||||
|
* (CVE-2024-21890, bsc#1219999) - Improper handling of wildcards in --allow-fs-read and --allow-fs-write (Medium)
|
||||||
|
* (CVE-2024-22025, bsc#1220014) - Denial of Service by resource exhaustion in fetch() brotli decoding - (Medium)
|
||||||
|
* undici version 5.28.3 (CVE-2024-24758, bsc#1220017)
|
||||||
|
* libuv version 1.48.0 (CVE-2024-24806, bsc#1219724)
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Mon Feb 12 14:27:04 UTC 2024 - Adam Majer <adam.majer@suse.de>
|
||||||
|
|
||||||
|
- update to 20.11.0:
|
||||||
|
* esm: add import.meta.dirname and import.meta.filename
|
||||||
|
* fs: add c++ fast path for writeFileSync utf8
|
||||||
|
* module: remove useCustomLoadersIfPresent flag
|
||||||
|
* module: bootstrap module loaders in shadow realm
|
||||||
|
* src: add --disable-warning option
|
||||||
|
* src: create per isolate proxy env template
|
||||||
|
* src: make process binding data weak
|
||||||
|
* stream: use Array for Readable buffer
|
||||||
|
* stream: optimize creation
|
||||||
|
* test_runner: adds built in lcov reporter
|
||||||
|
* test_runner: add Date to the supported mock APIs
|
||||||
|
* test_runner, cli: add --test-timeout flag
|
||||||
|
|
||||||
|
- c-ares-fixes.patch, fix_ci_tests.patch: refreshed
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Mon Jan 29 10:04:22 UTC 2024 - Adam Majer <adam.majer@suse.de>
|
||||||
|
|
||||||
|
- fix_ci_tests.patch: disable test_crypto_fips for openssl 3.x,
|
||||||
|
to be fixed soon (bsc#1219152)
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Mon Jan 8 15:36:04 UTC 2024 - Adam Majer <adam.majer@suse.de>
|
||||||
|
|
||||||
|
- c-ares-fixes.patch: add additional backports for unit test fixes
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Tue Jan 2 16:14:58 UTC 2024 - Adam Majer <adam.majer@suse.de>
|
||||||
|
|
||||||
|
- c-ares-fixes.patch: fixes unit tests for new c-ares
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Thu Nov 23 08:02:58 UTC 2023 - Adam Majer <adam.majer@suse.de> - 20.10.0
|
||||||
|
|
||||||
|
- Update to 20.10.0:
|
||||||
|
* --experimental-default-type flag to flip module defaults
|
||||||
|
* The new flag --experimental-detect-module can be used to
|
||||||
|
automatically run ES modules when their syntax can be detected.
|
||||||
|
* Added flush option in file system functions for fs.writeFile functions
|
||||||
|
* Added experimental WebSocket client
|
||||||
|
* vm: fix V8 compilation cache support for vm.Script. This fixes
|
||||||
|
performance regression since v16.x when support for
|
||||||
|
importModuleDynamically was added to vm.Script
|
||||||
|
|
||||||
|
For details, see
|
||||||
|
https://github.com/nodejs/node/blob/main/doc/changelogs/CHANGELOG_V20.md#20.10.0
|
||||||
|
|
||||||
|
- nodejs20-zlib-1.3.patch: upstreamed, removed
|
||||||
|
- fix_ci_tests.patch, node-gyp-addon-gypi.patch: refreshed
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Thu Nov 9 09:05:33 UTC 2023 - Adam Majer <adam.majer@suse.de>
|
||||||
|
|
||||||
|
- Update to 20.9.0:
|
||||||
|
* No changes, just LTS transition
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Fri Oct 27 09:10:38 UTC 2023 - Adam Majer <adam.majer@suse.de>
|
||||||
|
|
||||||
|
- fix_ci_tests.patch: adapt for openssl 3.1.4
|
||||||
|
|
||||||
|
--------------------------------------------------------------------
|
||||||
|
Tue Oct 24 11:21:41 UTC 2023 - Dominique Leuenberger <dimstar@opensuse.org>
|
||||||
|
|
||||||
|
- Add nodejs20-zlib-1.3.patch: Support zlib version with only
|
||||||
|
major.minor versions, like zlib 1.3.
|
||||||
|
|
||||||
|
------------------------------------------------------------------
|
||||||
|
Mon Oct 16 09:28:06 UTC 2023 - Adam Majer <adam.majer@suse.de> - 20.8.1
|
||||||
|
|
||||||
|
- Security fixes relase 20.8.1
|
||||||
|
* (CVE-2023-44487, bsc#1216190): nghttp2 Security Release
|
||||||
|
* (CVE-2023-45143, bsc#1216205): undici Security Release
|
||||||
|
* (CVE-2023-39332, bsc#1216271): Path traversal through path stored in Uint8Array
|
||||||
|
* (CVE-2023-39331, bsc#1216270): Permission model improperly protects against path traversal
|
||||||
|
* (CVE-2023-38552, bsc#1216272): Integrity checks according to policies can be circumvented
|
||||||
|
* (CVE-2023-39333, bsc#1216273): Code injection via WebAssembly export names
|
||||||
|
|
||||||
|
- fix_ci_tests.patch: refreshed
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Thu Oct 5 13:45:41 UTC 2023 - Adam Majer <adam.majer@suse.de> - 20.8.0
|
||||||
|
|
||||||
|
- Update to 20.8.0:
|
||||||
|
* Stream performance improvements
|
||||||
|
* Rework of memory management in vm APIs with the importModuleDynamically
|
||||||
|
option
|
||||||
|
* test_runner:
|
||||||
|
+ accept testOnly in run
|
||||||
|
+ add junit reporter
|
||||||
|
|
||||||
|
- fix_ci_tests.patch: refreshed
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Tue Sep 19 14:40:13 UTC 2023 - Adam Majer <adam.majer@suse.de> - 20.7.0
|
||||||
|
|
||||||
|
- Update to 20.7.0:
|
||||||
|
* src: support multiple --env-file declarations
|
||||||
|
* deps: upgrade npm to 10.1.0
|
||||||
|
* doc: move and rename loaders section
|
||||||
|
* lib: add api to detect whether source-maps are enabled
|
||||||
|
* src,permission: add multiple allow-fs-* flags
|
||||||
|
* test_runner: expose location of tests
|
||||||
|
|
||||||
|
- z13.patch: upstreamed
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Mon Sep 18 10:08:42 UTC 2023 - Adam Majer <adam.majer@suse.de>
|
||||||
|
|
||||||
|
- Update to 20.6.1:
|
||||||
|
* f0ff63fbc32ea55f3d92c5c89fdb91ec47786859.patch: removed, upstreamed
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Fri Sep 8 10:46:20 UTC 2023 - Adam Majer <adam.majer@suse.de>
|
||||||
|
|
||||||
|
- f0ff63fbc32ea55f3d92c5c89fdb91ec47786859.patch: fixes issues with
|
||||||
|
Angular and other software that tries to load ECM modules in
|
||||||
|
somewhat circular fashion ending up with multiple executions.
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Tue Sep 5 09:29:49 UTC 2023 - Adam Majer <adam.majer@suse.de> - 20.6.0
|
||||||
|
|
||||||
|
- Update to 20.6.0:
|
||||||
|
* add support for .env files to configure envrionment variables
|
||||||
|
* import.meta.resolve unflagged
|
||||||
|
* deps: npm updated to 9.8.1
|
||||||
|
- nodejs.keyring: updated to include current upstream releasers
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Fri Aug 25 14:34:21 UTC 2023 - Adam Majer <adam.majer@suse.de>
|
||||||
|
|
||||||
|
- Temporarily bundle ICU for SLE15 SP6 (jsc#PED-4819)
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Thu Aug 10 13:51:20 UTC 2023 - Adam Majer <adam.majer@suse.de>
|
||||||
|
|
||||||
|
- Update to version 20.5.1:
|
||||||
|
* (CVE-2023-32002, bsc#1214150): Policies can be bypassed
|
||||||
|
via Module._load (High)
|
||||||
|
* (CVE-2023-32558, bsc#1214155): process.binding() can bypass
|
||||||
|
the permission model through path traversal (High)
|
||||||
|
* (CVE-2023-32004, bsc#1214152): Permission model can be bypassed
|
||||||
|
by specifying a path traversal sequence in a Buffer (High)
|
||||||
|
* (CVE-2023-32006, bsc#1214156): Policies can be bypassed
|
||||||
|
by module.constructor.createRequire (Medium)
|
||||||
|
* (CVE-2023-32559, bsc#1214154): Policies can be bypassed
|
||||||
|
via process.binding (Medium)
|
||||||
|
* (CVE-2023-32005, bsc#1214153): fs.statfs can bypass
|
||||||
|
the permission model (Low)
|
||||||
|
* (CVE-2023-32003, bsc#1214151): fs.mkdtemp() and fs.mkdtempSync()
|
||||||
|
can bypass the permission model (Low)
|
||||||
|
- Changes in 20.5.0:
|
||||||
|
* events: allow safely adding listener to abortSignal
|
||||||
|
* fs: add a fast-path for readFileSync utf-8
|
||||||
|
* test_runner: add shards support
|
||||||
|
- Changes in 20.4.0:
|
||||||
|
* tls: add ALPNCallback server option for dynamic ALPN negotiation
|
||||||
|
* adds support for ECMAScript Explicit Resource Management
|
||||||
|
* adds Mock Timer support to test module
|
||||||
|
|
||||||
|
For details see,
|
||||||
|
https://github.com/nodejs/node/blob/main/doc/changelogs/CHANGELOG_V20.md#20.5.1
|
||||||
|
|
||||||
|
versioned.patch: refreshed
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Wed Jun 21 11:24:39 UTC 2023 - Adam Majer <adam.majer@suse.de>
|
||||||
|
|
||||||
|
- Update to version 20.3.1 (security fixes only). The following
|
||||||
|
CVEs are fixed in this release:
|
||||||
|
* (CVE-2023-30581, bsc#1212574): mainModule.__proto__ Bypass
|
||||||
|
Experimental Policy Mechanism (High)
|
||||||
|
* (CVE-2023-30584, bsc#1212575): Path Traversal Bypass in
|
||||||
|
Experimental Permission Model (High)
|
||||||
|
* (CVE-2023-30587, bsc#1212576): Bypass of Experimental
|
||||||
|
Permission Model via Node.js Inspector (High)
|
||||||
|
* (CVE-2023-30582, bsc#1212577): Inadequate Permission Model
|
||||||
|
Allows Unauthorized File Watching (Medium)
|
||||||
|
* (CVE-2023-30583, bsc#1212578): Bypass of Experimental
|
||||||
|
Permission Model via fs.openAsBlob() (Medium)
|
||||||
|
* (CVE-2023-30585, bsc#1212579): Privilege escalation via
|
||||||
|
Malicious Registry Key manipulation during Node.js
|
||||||
|
installer repair process (Medium)
|
||||||
|
* (CVE-2023-30586, bsc#1212580): Bypass of Experimental
|
||||||
|
Permission Model via Arbitrary OpenSSL Engines (Medium)
|
||||||
|
* (CVE-2023-30588, bsc#1212581): Process interuption due to invalid
|
||||||
|
Public Key information in x509 certificates (Medium)
|
||||||
|
* (CVE-2023-30589, bsc#1212582): HTTP Request Smuggling via
|
||||||
|
Empty headers separated by CR (Medium)
|
||||||
|
* (CVE-2023-30590, bsc#1212583): DiffieHellman does not
|
||||||
|
generate keys after setting a private key (Medium)
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Thu Jun 15 11:25:18 UTC 2023 - Adam Majer <adam.majer@suse.de>
|
||||||
|
|
||||||
|
- Update to version 20.3.0:
|
||||||
|
* deps: upgrade to libuv 1.45.0, including significant performance
|
||||||
|
improvements to file system operations on Linux
|
||||||
|
* module: change default resolver to not throw on unknown scheme
|
||||||
|
* stream: deprecate asIndexedPairs
|
||||||
|
|
||||||
|
- versioned.patch, fix_ci_tests.patch: refreshed
|
||||||
|
- openssl3_1-adapt_tests.patch: upstreamed and removed
|
||||||
|
|
||||||
|
For details see,
|
||||||
|
https://github.com/nodejs/node/blob/main/doc/changelogs/CHANGELOG_V20.md#20.3.0
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Mon May 22 14:45:27 UTC 2023 - Adam Majer <adam.majer@suse.de>
|
||||||
|
|
||||||
|
- Fix build on SLE12SP5
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Fri May 19 12:17:15 UTC 2023 - Adam Majer <adam.majer@suse.de>
|
||||||
|
|
||||||
|
- Update to version 20.2.0:
|
||||||
|
* http: prevent writing to the body when not allowed by HTTP spec
|
||||||
|
* sea: add option to disable the experimental SEA warning
|
||||||
|
* test_runner: add skip, todo, and only shorthands to test
|
||||||
|
* url: add value argument to URLSearchParams has and delete methods
|
||||||
|
|
||||||
|
For details see,
|
||||||
|
https://github.com/nodejs/node/blob/main/doc/changelogs/CHANGELOG_V20.md#20.2.0
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Mon May 15 14:03:24 UTC 2023 - Adam Majer <adam.majer@suse.de>
|
||||||
|
|
||||||
|
- fix_ci_tests.patch: increase default timeout on unit tests
|
||||||
|
to 20min from 2min. This seems to have lead to build failures
|
||||||
|
on some platforms, like s390x in Factory. (bsc#1211407)
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Fri May 12 07:52:30 UTC 2023 - Adam Majer <adam.majer@suse.de>
|
||||||
|
|
||||||
|
- z13.patch: fixes illegal instruction error on z13 and older s390
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Thu May 10 13:09:58 UTC 2023 - Otto Hollmann <otto.hollmann@suse.com>
|
||||||
|
|
||||||
|
- Adapt tests for OpenSSL 3.1 [bsc#1209430]
|
||||||
|
* Add openssl3_1-adapt_tests.patch
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Thu May 4 13:26:26 UTC 2023 - Adam Majer <adam.majer@suse.de> - 20.1.0
|
||||||
|
|
||||||
|
- Update to version 20.1.0
|
||||||
|
assert: deprecate CallTracker
|
||||||
|
dns: expose getDefaultResultOrder
|
||||||
|
doc: add KhafraDev to collaborators
|
||||||
|
fs: add recursive option to readdir and opendir
|
||||||
|
fs: add support for mode flag to specify the copy behavior
|
||||||
|
of the cp methods
|
||||||
|
http: add highWaterMark option http.createServer
|
||||||
|
stream: preserve object mode in compose
|
||||||
|
test_runner: add testNamePatterns to run API
|
||||||
|
test_runner: execute before hook on test
|
||||||
|
test_runner: support combining coverage reports
|
||||||
|
wasi: make returnOnExit true by default
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Wed Apr 19 13:16:54 UTC 2023 - Adam Majer <adam.majer@suse.de> - 20.0.0
|
||||||
|
|
||||||
|
- Package new version 20.0.0
|
||||||
|
For overview of changes and details since 19.x and earlier see
|
||||||
|
https://github.com/nodejs/node/blob/main/doc/changelogs/CHANGELOG_V20.md#20.0.0
|
||||||
|
|
||||||
|
- imported the following patches from prior patches:
|
||||||
|
+ cares_public_headers.patch
|
||||||
|
+ fix_ci_tests.patch
|
||||||
|
+ flaky_test_rerun.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
|
||||||
|
|
1132
nodejs20.spec
Normal file
1132
nodejs20.spec
Normal file
File diff suppressed because it is too large
Load Diff
32
npm_search_paths.patch
Normal file
32
npm_search_paths.patch
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
Index: node-v19.9.0/deps/npm/lib/commands/help-search.js
|
||||||
|
===================================================================
|
||||||
|
--- node-v19.9.0.orig/deps/npm/lib/commands/help-search.js
|
||||||
|
+++ node-v19.9.0/deps/npm/lib/commands/help-search.js
|
||||||
|
@@ -16,7 +16,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-v19.9.0/deps/npm/lib/npm.js
|
||||||
|
===================================================================
|
||||||
|
--- node-v19.9.0.orig/deps/npm/lib/npm.js
|
||||||
|
+++ node-v19.9.0/deps/npm/lib/npm.js
|
||||||
|
@@ -408,7 +408,13 @@ class Npm extends EventEmitter {
|
||||||
|
}
|
||||||
|
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
|
set globalPrefix (r) {
|
42
openssl_binary_detection.patch
Normal file
42
openssl_binary_detection.patch
Normal 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;
|
||||||
|
},
|
14
qemu_timeouts_arches.patch
Normal file
14
qemu_timeouts_arches.patch
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
Index: node-v18.10.0/test/common/index.js
|
||||||
|
===================================================================
|
||||||
|
--- node-v18.10.0.orig/test/common/index.js
|
||||||
|
+++ node-v18.10.0/test/common/index.js
|
||||||
|
@@ -260,6 +260,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
29
skip_no_console.patch
Normal 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');
|
35
sle12_python3_compat.patch
Normal file
35
sle12_python3_compat.patch
Normal 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,
|
45
test-skip-y2038-on-32bit-time_t.patch
Normal file
45
test-skip-y2038-on-32bit-time_t.patch
Normal 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
13
update_npm_tarball.sh
Normal 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
|
188
versioned.patch
Normal file
188
versioned.patch
Normal file
@ -0,0 +1,188 @@
|
|||||||
|
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-v20.5.1/Makefile
|
||||||
|
===================================================================
|
||||||
|
--- node-v20.5.1.orig/Makefile
|
||||||
|
+++ node-v20.5.1/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 = node20$(EXEEXT)
|
||||||
|
NODE ?= ./$(NODE_EXE)
|
||||||
|
NODE_G_EXE = node_g$(EXEEXT)
|
||||||
|
NPM ?= ./deps/npm/bin/npm-cli.js
|
||||||
|
Index: node-v20.5.1/tools/install.py
|
||||||
|
===================================================================
|
||||||
|
--- node-v20.5.1.orig/tools/install.py
|
||||||
|
+++ node-v20.5.1/tools/install.py
|
||||||
|
@@ -86,7 +86,7 @@ def uninstall(paths, dst):
|
||||||
|
try_remove(path, dst)
|
||||||
|
|
||||||
|
def package_files(action, name, bins):
|
||||||
|
- target_path = libdir() + '/node_modules/' + name + '/'
|
||||||
|
+ target_path = libdir() + '/node_modules/' + name + '20/'
|
||||||
|
|
||||||
|
# don't install npm if the target path is a symlink, it probably means
|
||||||
|
# that a dev version of npm is installed there
|
||||||
|
@@ -106,19 +106,19 @@ def package_files(action, name, bins):
|
||||||
|
if action == uninstall:
|
||||||
|
action([link_path], 'bin/' + bin_name)
|
||||||
|
elif action == install:
|
||||||
|
- try_symlink('../' + libdir() + '/node_modules/' + name + '/' + bin_target, link_path)
|
||||||
|
+ try_symlink('../' + libdir() + '/node_modules/' + name + '20/' + bin_target, link_path)
|
||||||
|
else:
|
||||||
|
assert 0 # unhandled action type
|
||||||
|
|
||||||
|
def npm_files(action):
|
||||||
|
package_files(action, 'npm', {
|
||||||
|
- 'npm': 'bin/npm-cli.js',
|
||||||
|
- 'npx': 'bin/npx-cli.js',
|
||||||
|
+ 'npm20': 'bin/npm-cli.js',
|
||||||
|
+ 'npx20': 'bin/npx-cli.js',
|
||||||
|
})
|
||||||
|
|
||||||
|
def corepack_files(action):
|
||||||
|
package_files(action, 'corepack', {
|
||||||
|
- 'corepack': 'dist/corepack.js',
|
||||||
|
+ 'corepack20': 'dist/corepack.js',
|
||||||
|
# Not the default just yet:
|
||||||
|
# 'yarn': 'dist/yarn.js',
|
||||||
|
# 'yarnpkg': 'dist/yarn.js',
|
||||||
|
@@ -147,7 +147,7 @@ def subdir_files(path, dest, action):
|
||||||
|
|
||||||
|
def files(action):
|
||||||
|
is_windows = sys.platform == 'win32'
|
||||||
|
- output_file = 'node'
|
||||||
|
+ output_file = 'node20'
|
||||||
|
output_prefix = 'out/Release/'
|
||||||
|
|
||||||
|
if is_windows:
|
||||||
|
@@ -189,7 +189,7 @@ def files(action):
|
||||||
|
if 'freebsd' in sys.platform or 'openbsd' in sys.platform:
|
||||||
|
action(['doc/node.1'], 'man/man1/')
|
||||||
|
else:
|
||||||
|
- action(['doc/node.1'], 'share/man/man1/')
|
||||||
|
+ action(['doc/node.1'], 'share/man/man1/node20.1')
|
||||||
|
|
||||||
|
if 'true' == variables.get('node_install_npm'):
|
||||||
|
npm_files(action)
|
||||||
|
@@ -276,28 +276,28 @@ def headers(action):
|
||||||
|
'src/node_buffer.h',
|
||||||
|
'src/node_object_wrap.h',
|
||||||
|
'src/node_version.h',
|
||||||
|
- ], 'include/node/')
|
||||||
|
+ ], 'include/node20/')
|
||||||
|
|
||||||
|
# Add the expfile that is created on AIX
|
||||||
|
if sys.platform.startswith('aix') or sys.platform == "os400":
|
||||||
|
- action(['out/Release/node.exp'], 'include/node/')
|
||||||
|
+ action(['out/Release/node.exp'], 'include/node20/')
|
||||||
|
|
||||||
|
- subdir_files('deps/v8/include', 'include/node/', wanted_v8_headers)
|
||||||
|
+ subdir_files('deps/v8/include', 'include/node20/', wanted_v8_headers)
|
||||||
|
|
||||||
|
if 'false' == variables.get('node_shared_libuv'):
|
||||||
|
- subdir_files('deps/uv/include', 'include/node/', action)
|
||||||
|
+ subdir_files('deps/uv/include', 'include/node20/', action)
|
||||||
|
|
||||||
|
if 'true' == variables.get('node_use_openssl') and \
|
||||||
|
'false' == variables.get('node_shared_openssl'):
|
||||||
|
- subdir_files('deps/openssl/openssl/include/openssl', 'include/node/openssl/', action)
|
||||||
|
- subdir_files('deps/openssl/config/archs', 'include/node/openssl/archs', action)
|
||||||
|
- subdir_files('deps/openssl/config', 'include/node/openssl', action)
|
||||||
|
+ subdir_files('deps/openssl/openssl/include/openssl', 'include/node20/openssl/', action)
|
||||||
|
+ subdir_files('deps/openssl/config/archs', 'include/node20/openssl/archs', action)
|
||||||
|
+ subdir_files('deps/openssl/config', 'include/node20/openssl', action)
|
||||||
|
|
||||||
|
if 'false' == variables.get('node_shared_zlib'):
|
||||||
|
action([
|
||||||
|
'deps/zlib/zconf.h',
|
||||||
|
'deps/zlib/zlib.h',
|
||||||
|
- ], 'include/node/')
|
||||||
|
+ ], 'include/node20/')
|
||||||
|
|
||||||
|
if sys.platform == 'zos':
|
||||||
|
zoslibinc = os.environ.get('ZOSLIB_INCLUDES')
|
||||||
|
Index: node-v20.5.1/doc/node.1
|
||||||
|
===================================================================
|
||||||
|
--- node-v20.5.1.orig/doc/node.1
|
||||||
|
+++ node-v20.5.1/doc/node.1
|
||||||
|
@@ -31,24 +31,24 @@
|
||||||
|
.Dt NODE 1
|
||||||
|
.
|
||||||
|
.Sh NAME
|
||||||
|
-.Nm node
|
||||||
|
+.Nm node20
|
||||||
|
.Nd server-side JavaScript runtime
|
||||||
|
.
|
||||||
|
.\"======================================================================
|
||||||
|
.Sh SYNOPSIS
|
||||||
|
-.Nm node
|
||||||
|
+.Nm node20
|
||||||
|
.Op Ar options
|
||||||
|
.Op Ar v8-options
|
||||||
|
.Op Fl e Ar string | Ar script.js | Fl
|
||||||
|
.Op Fl -
|
||||||
|
.Op Ar arguments ...
|
||||||
|
.
|
||||||
|
-.Nm node
|
||||||
|
+.Nm node20
|
||||||
|
.Cm inspect
|
||||||
|
.Op Fl e Ar string | Ar script.js | Fl | Ar <host>:<port>
|
||||||
|
.Ar ...
|
||||||
|
.
|
||||||
|
-.Nm node
|
||||||
|
+.Nm node20
|
||||||
|
.Op Fl -v8-options
|
||||||
|
.
|
||||||
|
.\"======================================================================
|
||||||
|
Index: node-v20.5.1/src/node_main.cc
|
||||||
|
===================================================================
|
||||||
|
--- node-v20.5.1.orig/src/node_main.cc
|
||||||
|
+++ node-v20.5.1/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", "20", 0);
|
||||||
|
return node::Start(argc, argv);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
Index: node-v20.5.1/tools/test.py
|
||||||
|
===================================================================
|
||||||
|
--- node-v20.5.1.orig/tools/test.py
|
||||||
|
+++ node-v20.5.1/tools/test.py
|
||||||
|
@@ -947,7 +947,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/node20'
|
||||||
|
else:
|
||||||
|
name = 'out/%s.%s/node' % (arch, mode)
|
||||||
|
|
||||||
|
Index: node-v20.5.1/node.gyp
|
||||||
|
===================================================================
|
||||||
|
--- node-v20.5.1.orig/node.gyp
|
||||||
|
+++ node-v20.5.1/node.gyp
|
||||||
|
@@ -23,8 +23,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%': 'node20',
|
||||||
|
+ 'node_lib_target_name%': 'libnode20',
|
||||||
|
'node_intermediate_lib_type%': 'static_library',
|
||||||
|
'node_builtin_modules_path%': '',
|
||||||
|
'linked_module_files': [
|
Loading…
Reference in New Issue
Block a user