nodejs18/versioned.patch
Adam Majer b6349c1613 - Update to NodeJS 18.14.2 LTS:
* deps: upgrade npm to 9.5.0
  * deps: update undici to 5.20.0
- Changes in version 18.14.1:
  * fixes permissions policies can be bypassed via process.mainModule
    (bsc#1208481, CVE-2023-23918)
  * fixes insecure loading of ICU data through ICU_DATA environment
    variable (bsc#1208487, CVE-2023-23920)
  * fixes OpenSSL error handling issues in nodejs crypto library
    (bsc#1208483, CVE-2023-23919)
  * updates undici to v5.19.1
    + Fetch API in Node.js did not protect against CRLF injection in host headers
    + Regular Expression Denial of Service in Headers in Node.js fetch API
    (bsc#1208413, bsc#1208485, CVE-2023-24807, CVE-2023-23936)

- Update to NodeJS 18.14.0 LTS:
  * deps:
    + update npm to 9.2.0
  * http:
    + join authorization headers
    + improved timeout defaults handling
  * stream:
    + implement finished() for ReadableStream and WritableStream
- refreshed patches: linker_lto_jobs.patch, npm_search_paths.patch,
  versioned.patch

OBS-URL: https://build.opensuse.org/package/show/devel:languages:nodejs/nodejs18?expand=0&rev=47
2023-02-22 14:23:30 +00:00

349 lines
11 KiB
Diff

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-v18.14.0/Makefile
===================================================================
--- node-v18.14.0.orig/Makefile
+++ node-v18.14.0/Makefile
@@ -76,7 +76,7 @@ BUILDTYPE_LOWER := $(shell echo $(BUILDT
EXEEXT := $(shell $(PYTHON) -c \
"import sys; print('.exe' if sys.platform == 'win32' else '')")
-NODE_EXE = node$(EXEEXT)
+NODE_EXE = node18$(EXEEXT)
NODE ?= ./$(NODE_EXE)
NODE_G_EXE = node_g$(EXEEXT)
NPM ?= ./deps/npm/bin/npm-cli.js
Index: node-v18.14.0/tools/install.py
===================================================================
--- node-v18.14.0.orig/tools/install.py
+++ node-v18.14.0/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 + '18/'
# 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 + '18/' + 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',
+ 'npm18': 'bin/npm-cli.js',
+ 'npx18': 'bin/npx-cli.js',
})
def corepack_files(action):
package_files(action, 'corepack', {
- 'corepack': 'dist/corepack.js',
+ 'corepack18': '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 = 'node18'
output_prefix = 'out/Release/'
if is_windows:
@@ -186,7 +186,7 @@ def files(action):
action(['out/Release/node.d'], 'lib/dtrace/node.d')
# behave similarly for systemtap
- action(['src/node.stp'], 'share/systemtap/tapset/')
+ action(['src/node.stp'], 'share/systemtap/tapset/node18.stp')
action(['deps/v8/tools/gdbinit'], 'share/doc/node/')
action(['deps/v8/tools/lldb_commands.py'], 'share/doc/node/')
@@ -194,7 +194,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/node18.1')
if 'true' == variables.get('node_install_npm'):
npm_files(action)
@@ -281,28 +281,28 @@ def headers(action):
'src/node_buffer.h',
'src/node_object_wrap.h',
'src/node_version.h',
- ], 'include/node/')
+ ], 'include/node18/')
# Add the expfile that is created on AIX
if sys.platform.startswith('aix'):
- action(['out/Release/node.exp'], 'include/node/')
+ action(['out/Release/node.exp'], 'include/node18/')
- subdir_files('deps/v8/include', 'include/node/', wanted_v8_headers)
+ subdir_files('deps/v8/include', 'include/node18/', wanted_v8_headers)
if 'false' == variables.get('node_shared_libuv'):
- subdir_files('deps/uv/include', 'include/node/', action)
+ subdir_files('deps/uv/include', 'include/node18/', 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/node18/openssl/', action)
+ subdir_files('deps/openssl/config/archs', 'include/node18/openssl/archs', action)
+ subdir_files('deps/openssl/config', 'include/node18/openssl', action)
if 'false' == variables.get('node_shared_zlib'):
action([
'deps/zlib/zconf.h',
'deps/zlib/zlib.h',
- ], 'include/node/')
+ ], 'include/node18/')
if sys.platform == 'zos':
zoslibinc = os.environ.get('ZOSLIB_INCLUDES')
Index: node-v18.14.0/doc/node.1
===================================================================
--- node-v18.14.0.orig/doc/node.1
+++ node-v18.14.0/doc/node.1
@@ -31,24 +31,24 @@
.Dt NODE 1
.
.Sh NAME
-.Nm node
+.Nm node18
.Nd server-side JavaScript runtime
.
.\"======================================================================
.Sh SYNOPSIS
-.Nm node
+.Nm node18
.Op Ar options
.Op Ar v8-options
.Op Fl e Ar string | Ar script.js | Fl
.Op Fl -
.Op Ar arguments ...
.
-.Nm node
+.Nm node18
.Cm inspect
.Op Fl e Ar string | Ar script.js | Fl | Ar <host>:<port>
.Ar ...
.
-.Nm node
+.Nm node18
.Op Fl -v8-options
.
.\"======================================================================
Index: node-v18.14.0/src/node.stp
===================================================================
--- node-v18.14.0.orig/src/node.stp
+++ node-v18.14.0/src/node.stp
@@ -19,7 +19,7 @@
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
// USE OR OTHER DEALINGS IN THE SOFTWARE.
-probe node_net_server_connection = process("node").mark("net__server__connection")
+probe node_net_server_connection = process("node18").mark("net__server__connection")
{
remote = user_string($arg2);
port = $arg3;
@@ -32,7 +32,7 @@ probe node_net_server_connection = proce
fd);
}
-probe node_net_stream_end = process("node").mark("net__stream__end")
+probe node_net_stream_end = process("node18").mark("net__stream__end")
{
remote = user_string($arg2);
port = $arg3;
@@ -45,7 +45,7 @@ probe node_net_stream_end = process("nod
fd);
}
-probe node_http_server_request = process("node").mark("http__server__request")
+probe node_http_server_request = process("node18").mark("http__server__request")
{
remote = user_string($arg3);
port = $arg4;
@@ -62,7 +62,7 @@ probe node_http_server_request = process
fd);
}
-probe node_http_server_response = process("node").mark("http__server__response")
+probe node_http_server_response = process("node18").mark("http__server__response")
{
remote = user_string($arg2);
port = $arg3;
@@ -75,7 +75,7 @@ probe node_http_server_response = proces
fd);
}
-probe node_http_client_request = process("node").mark("http__client__request")
+probe node_http_client_request = process("node18").mark("http__client__request")
{
remote = user_string($arg3);
port = $arg4;
@@ -92,7 +92,7 @@ probe node_http_client_request = process
fd);
}
-probe node_http_client_response = process("node").mark("http__client__response")
+probe node_http_client_response = process("node18").mark("http__client__response")
{
remote = user_string($arg2);
port = $arg3;
@@ -105,7 +105,7 @@ probe node_http_client_response = proces
fd);
}
-probe node_gc_start = process("node").mark("gc__start")
+probe node_gc_start = process("node18").mark("gc__start")
{
scavenge = 1 << 0;
compact = 1 << 1;
@@ -125,7 +125,7 @@ probe node_gc_start = process("node").ma
flags);
}
-probe node_gc_stop = process("node").mark("gc__done")
+probe node_gc_stop = process("node18").mark("gc__done")
{
scavenge = 1 << 0;
compact = 1 << 1;
Index: node-v18.14.0/deps/npm/man/man1/npm.1
===================================================================
--- node-v18.14.0.orig/deps/npm/man/man1/npm.1
+++ node-v18.14.0/deps/npm/man/man1/npm.1
@@ -1,11 +1,11 @@
.TH "NPM" "1" "January 2023" "" ""
.SH "NAME"
-\fBnpm\fR - javascript package manager
+\fBnpm18\fR - javascript package manager
.SS "Synopsis"
.P
.RS 2
.nf
-npm
+npm18
.fi
.RE
.P
@@ -19,7 +19,7 @@ npm is the package manager for the Node
.P
It is extremely configurable to support a variety of use cases. Most commonly, you use it to publish, discover, install, and develop node programs.
.P
-Run \fBnpm help\fR to get a list of available commands.
+Run \fBnpm18 help\fR to get a list of available commands.
.SS "Important"
.P
npm comes preconfigured to use npm's public registry at https://registry.npmjs.org by default. Use of the npm public registry is subject to terms of use available at https://docs.npmjs.com/policies/terms.
@@ -115,17 +115,17 @@ Or suggest formal RFC proposals:
.SS "See Also"
.RS 0
.IP \(bu 4
-npm help help
+npm18 help help
.IP \(bu 4
\fBpackage.json\fR \fI\(la/configuring-npm/package-json\(ra\fR
.IP \(bu 4
-npm help npmrc
+npm18 help npmrc
.IP \(bu 4
-npm help config
+npm18 help config
.IP \(bu 4
-npm help install
+npm18 help install
.IP \(bu 4
-npm help prefix
+npm18 help prefix
.IP \(bu 4
-npm help publish
+npm18 help publish
.RE 0
Index: node-v18.14.0/src/node_main.cc
===================================================================
--- node-v18.14.0.orig/src/node_main.cc
+++ node-v18.14.0/src/node_main.cc
@@ -90,6 +90,7 @@ int wmain(int argc, wchar_t* wargv[]) {
// UNIX
int main(int argc, char* argv[]) {
+ setenv("NODE_VERSION", "18", 0);
return node::Start(argc, argv);
}
#endif
Index: node-v18.14.0/tools/test.py
===================================================================
--- node-v18.14.0.orig/tools/test.py
+++ node-v18.14.0/tools/test.py
@@ -954,7 +954,7 @@ class Context(object):
if self.vm is not None:
return self.vm
if arch == 'none':
- name = 'out/Debug/node' if mode == 'debug' else 'out/Release/node'
+ name = 'out/Debug/node' if mode == 'debug' else 'out/Release/node18'
else:
name = 'out/%s.%s/node' % (arch, mode)
Index: node-v18.14.0/node.gyp
===================================================================
--- node-v18.14.0.orig/node.gyp
+++ node-v18.14.0/node.gyp
@@ -25,8 +25,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%': 'node18',
+ 'node_lib_target_name%': 'libnode18',
'node_intermediate_lib_type%': 'static_library',
'node_builtin_modules_path%': '',
# We list the deps/ files out instead of globbing them in js2c.py since we
Index: node-v18.14.0/deps/npm/man/man1/npx.1
===================================================================
--- node-v18.14.0.orig/deps/npm/man/man1/npx.1
+++ node-v18.14.0/deps/npm/man/man1/npx.1
@@ -1,14 +1,14 @@
.TH "NPX" "1" "January 2023" "" ""
.SH "NAME"
-\fBnpx\fR - Run a command from a local or remote npm package
+\fBnpx18\fR - Run a command from a local or remote npm package
.SS "Synopsis"
.P
.RS 2
.nf
-npx -- <pkg>\[lB]@<version>\[rB] \[lB]args...\[rB]
-npx --package=<pkg>\[lB]@<version>\[rB] -- <cmd> \[lB]args...\[rB]
-npx -c '<cmd> \[lB]args...\[rB]'
-npx --package=foo -c '<cmd> \[lB]args...\[rB]'
+npx18 -- <pkg>\[lB]@<version>\[rB] \[lB]args...\[rB]
+npx18 --package=<pkg>\[lB]@<version>\[rB] -- <cmd> \[lB]args...\[rB]
+npx18 -c '<cmd> \[lB]args...\[rB]'
+npx18 --package=foo -c '<cmd> \[lB]args...\[rB]'
.fi
.RE
.SS "Description"