File versioned.patch of Package nodejs21

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-v21.1.0/Makefile
===================================================================
--- node-v21.1.0.orig/Makefile
+++ node-v21.1.0/Makefile
@@ -76,7 +76,7 @@ BUILDTYPE_LOWER := $(shell echo $(BUILDT
 EXEEXT := $(shell $(PYTHON) -c \
 		"import sys; print('.exe' if sys.platform == 'win32' else '')")
 
-NODE_EXE = node$(EXEEXT)
+NODE_EXE = node21$(EXEEXT)
 NODE ?= ./$(NODE_EXE)
 NODE_G_EXE = node_g$(EXEEXT)
 NPM ?= ./deps/npm/bin/npm-cli.js
Index: node-v21.1.0/tools/install.py
===================================================================
--- node-v21.1.0.orig/tools/install.py
+++ node-v21.1.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 + '21/'
 
   # 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 + '21/' + 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',
+    'npm21': 'bin/npm-cli.js',
+    'npx21': 'bin/npx-cli.js',
   })
 
 def corepack_files(action):
   package_files(action, 'corepack', {
-    'corepack': 'dist/corepack.js',
+    'corepack21': '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 = 'node21'
   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/node21.1')
 
   if 'true' == variables.get('node_install_npm'):
     npm_files(action)
@@ -325,28 +325,28 @@ def headers(action):
     'src/node_buffer.h',
     'src/node_object_wrap.h',
     'src/node_version.h',
-  ], 'include/node/')
+  ], 'include/node21/')
 
   # 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/node21/')
 
-  subdir_files('deps/v8/include', 'include/node/', wanted_v8_headers)
+  subdir_files('deps/v8/include', 'include/node21/', wanted_v8_headers)
 
   if 'false' == variables.get('node_shared_libuv'):
-    subdir_files('deps/uv/include', 'include/node/', action)
+    subdir_files('deps/uv/include', 'include/node21/', 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/node21/openssl/', action)
+    subdir_files('deps/openssl/config/archs', 'include/node21/openssl/archs', action)
+    subdir_files('deps/openssl/config', 'include/node21/openssl', action)
 
   if 'false' == variables.get('node_shared_zlib'):
     action([
       'deps/zlib/zconf.h',
       'deps/zlib/zlib.h',
-    ], 'include/node/')
+    ], 'include/node21/')
 
   if sys.platform == 'zos':
     zoslibinc = os.environ.get('ZOSLIB_INCLUDES')
Index: node-v21.1.0/doc/node.1
===================================================================
--- node-v21.1.0.orig/doc/node.1
+++ node-v21.1.0/doc/node.1
@@ -31,24 +31,24 @@
 .Dt NODE 1
 .
 .Sh NAME
-.Nm node
+.Nm node21
 .Nd server-side JavaScript runtime
 .
 .\"======================================================================
 .Sh SYNOPSIS
-.Nm node
+.Nm node21
 .Op Ar options
 .Op Ar v8-options
 .Op Fl e Ar string | Ar script.js | Fl
 .Op Fl -
 .Op Ar arguments ...
 .
-.Nm node
+.Nm node21
 .Cm inspect
 .Op Fl e Ar string | Ar script.js | Fl | Ar <host>:<port>
 .Ar ...
 .
-.Nm node
+.Nm node21
 .Op Fl -v8-options
 .
 .\"======================================================================
Index: node-v21.1.0/src/node_main.cc
===================================================================
--- node-v21.1.0.orig/src/node_main.cc
+++ node-v21.1.0/src/node_main.cc
@@ -94,6 +94,7 @@ int wmain(int argc, wchar_t* wargv[]) {
 // UNIX
 
 int main(int argc, char* argv[]) {
+  setenv("NODE_VERSION", "21", 0);
   return node::Start(argc, argv);
 }
 #endif
Index: node-v21.1.0/tools/test.py
===================================================================
--- node-v21.1.0.orig/tools/test.py
+++ node-v21.1.0/tools/test.py
@@ -953,7 +953,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/node21'
     else:
       name = 'out/%s.%s/node' % (arch, mode)
 
Index: node-v21.1.0/node.gyp
===================================================================
--- node-v21.1.0.orig/node.gyp
+++ node-v21.1.0/node.gyp
@@ -24,8 +24,8 @@
     'node_shared_openssl%': 'false',
     'node_v8_options%': '',
     'node_enable_v8_vtunejit%': 'false',
-    'node_core_target_name%': 'node',
-    'node_lib_target_name%': 'libnode',
+    'node_core_target_name%': 'node21',
+    'node_lib_target_name%': 'libnode21',
     'node_intermediate_lib_type%': 'static_library',
     'node_builtin_modules_path%': '',
     'linked_module_files': [
Index: node-v21.1.0/test/fixtures/errors/promise_unhandled_warn_with_error.snapshot
===================================================================
--- node-v21.1.0.orig/test/fixtures/errors/promise_unhandled_warn_with_error.snapshot
+++ node-v21.1.0/test/fixtures/errors/promise_unhandled_warn_with_error.snapshot
@@ -6,5 +6,5 @@
     at *
     at *
     at *
-(Use `node --trace-warnings ...` to show where the warning was created)
+(Use `node21 --trace-warnings ...` to show where the warning was created)
 (node:*) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https:*nodejs.org*api*cli.html#cli_unhandled_rejections_mode). (rejection id: 1)
Index: node-v21.1.0/test/parallel/test-snapshot-warning.js
===================================================================
--- node-v21.1.0.orig/test/parallel/test-snapshot-warning.js
+++ node-v21.1.0/test/parallel/test-snapshot-warning.js
@@ -60,7 +60,7 @@ tmpdir.refresh();
     stderr(output) {
       let match = output.match(/Warning: test warning/g);
       assert.strictEqual(match.length, 1);
-      match = output.match(/Use `node --trace-warnings/g);
+      match = output.match(/Use `node21 --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 `node21 --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 `node21 --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 `node21 --trace-warnings/g);
   assert.strictEqual(match.length, 1);
 }
Index: node-v21.1.0/test/fixtures/errors/throw_error_with_getter_throw.snapshot
===================================================================
--- node-v21.1.0.orig/test/fixtures/errors/throw_error_with_getter_throw.snapshot
+++ node-v21.1.0/test/fixtures/errors/throw_error_with_getter_throw.snapshot
@@ -3,6 +3,6 @@
 throw {  * eslint-disable-line no-throw-literal
 ^
 [object Object]
-(Use `node --trace-uncaught ...` to show where the exception was thrown)
+(Use `node21 --trace-uncaught ...` to show where the exception was thrown)
 
 Node.js *
Index: node-v21.1.0/test/fixtures/errors/throw_undefined.snapshot
===================================================================
--- node-v21.1.0.orig/test/fixtures/errors/throw_undefined.snapshot
+++ node-v21.1.0/test/fixtures/errors/throw_undefined.snapshot
@@ -3,6 +3,6 @@
 throw undefined;
 ^
 undefined
-(Use `node --trace-uncaught ...` to show where the exception was thrown)
+(Use `node21 --trace-uncaught ...` to show where the exception was thrown)
 
 Node.js *
Index: node-v21.1.0/test/fixtures/errors/throw_null.snapshot
===================================================================
--- node-v21.1.0.orig/test/fixtures/errors/throw_null.snapshot
+++ node-v21.1.0/test/fixtures/errors/throw_null.snapshot
@@ -3,6 +3,6 @@
 throw null;
 ^
 null
-(Use `node --trace-uncaught ...` to show where the exception was thrown)
+(Use `node21 --trace-uncaught ...` to show where the exception was thrown)
 
 Node.js *
openSUSE Build Service is sponsored by