From 460cb873eb6b2760468c250f3dd3da3f7c67e27aea6407ef45be0206b5205af4 Mon Sep 17 00:00:00 2001 From: Adam Majer Date: Wed, 3 Apr 2024 14:44:33 +0000 Subject: [PATCH] OBS-URL: https://build.opensuse.org/package/show/devel:languages:nodejs/nodejs21?expand=0&rev=22 --- fix_ci_tests.patch | 60 +++++++++++++++++++++++++------------------- nodejs-libpath.patch | 22 ++++++++-------- nodejs21.spec | 60 ++++++++++++++++---------------------------- versioned.patch | 8 +++--- 4 files changed, 71 insertions(+), 79 deletions(-) diff --git a/fix_ci_tests.patch b/fix_ci_tests.patch index 60fad66..c3755e0 100644 --- a/fix_ci_tests.patch +++ b/fix_ci_tests.patch @@ -2,10 +2,10 @@ Author: Adam Majer Date: Dec 20 09:18:49 UTC 2017 Summary: Fix CI unit tests framework for OBS building -Index: node-v21.6.1/test/parallel/test-node-output-v8-warning.mjs +Index: node-v21.7.1/test/parallel/test-node-output-v8-warning.mjs =================================================================== ---- node-v21.6.1.orig/test/parallel/test-node-output-v8-warning.mjs -+++ node-v21.6.1/test/parallel/test-node-output-v8-warning.mjs +--- node-v21.7.1.orig/test/parallel/test-node-output-v8-warning.mjs ++++ node-v21.7.1/test/parallel/test-node-output-v8-warning.mjs @@ -15,7 +15,7 @@ describe('v8 output', { concurrency: tru .replaceAll('*test*', '*') .replaceAll(/.*?\*fixtures\*v8\*/g, '(node:*) V8: *') // Replace entire path before fixtures/v8 @@ -15,10 +15,10 @@ Index: node-v21.6.1/test/parallel/test-node-output-v8-warning.mjs } const common = snapshot .transform(snapshot.replaceWindowsLineEndings, snapshot.replaceWindowsPaths, replaceNodeVersion); -Index: node-v21.6.1/test/parallel/test-module-loading-globalpaths.js +Index: node-v21.7.1/test/parallel/test-module-loading-globalpaths.js =================================================================== ---- node-v21.6.1.orig/test/parallel/test-module-loading-globalpaths.js -+++ node-v21.6.1/test/parallel/test-module-loading-globalpaths.js +--- node-v21.7.1.orig/test/parallel/test-module-loading-globalpaths.js ++++ node-v21.7.1/test/parallel/test-module-loading-globalpaths.js @@ -11,6 +11,9 @@ const { addLibraryPath } = require('../c addLibraryPath(process.env); @@ -29,10 +29,10 @@ Index: node-v21.6.1/test/parallel/test-module-loading-globalpaths.js if (process.argv[2] === 'child') { console.log(require(pkgName).string); } else { -Index: node-v21.6.1/test/parallel/test-tls-passphrase.js +Index: node-v21.7.1/test/parallel/test-tls-passphrase.js =================================================================== ---- node-v21.6.1.orig/test/parallel/test-tls-passphrase.js -+++ node-v21.6.1/test/parallel/test-tls-passphrase.js +--- node-v21.7.1.orig/test/parallel/test-tls-passphrase.js ++++ node-v21.7.1/test/parallel/test-tls-passphrase.js @@ -223,7 +223,7 @@ server.listen(0, common.mustCall(functio }, onSecureConnect()); })).unref(); @@ -42,10 +42,10 @@ Index: node-v21.6.1/test/parallel/test-tls-passphrase.js // Missing passphrase assert.throws(function() { -Index: node-v21.6.1/test/parallel/test-repl-envvars.js +Index: node-v21.7.1/test/parallel/test-repl-envvars.js =================================================================== ---- node-v21.6.1.orig/test/parallel/test-repl-envvars.js -+++ node-v21.6.1/test/parallel/test-repl-envvars.js +--- node-v21.7.1.orig/test/parallel/test-repl-envvars.js ++++ node-v21.7.1/test/parallel/test-repl-envvars.js @@ -2,7 +2,9 @@ // Flags: --expose-internals @@ -57,11 +57,19 @@ Index: node-v21.6.1/test/parallel/test-repl-envvars.js const stream = require('stream'); const { describe, test } = require('node:test'); const REPL = require('internal/repl'); -Index: node-v21.6.1/Makefile +Index: node-v21.7.1/Makefile =================================================================== ---- node-v21.6.1.orig/Makefile -+++ node-v21.6.1/Makefile -@@ -545,7 +545,8 @@ test-ci-js: | clear-stalled +--- node-v21.7.1.orig/Makefile ++++ node-v21.7.1/Makefile +@@ -389,7 +389,6 @@ ADDONS_HEADERS_PREREQS := tools/install. + $(wildcard deps/uv/include/*/*.h) \ + $(wildcard deps/v8/include/*.h) \ + $(wildcard deps/v8/include/*/*.h) \ +- deps/zlib/zconf.h deps/zlib/zlib.h \ + src/node.h src/node_api.h src/js_native_api.h src/js_native_api_types.h \ + src/node_api_types.h src/node_buffer.h src/node_object_wrap.h \ + src/node_version.h +@@ -560,7 +559,8 @@ test-ci-js: | clear-stalled .PHONY: test-ci # Related CI jobs: most CI tests, excluding node-test-commit-arm-fanned test-ci: LOGLEVEL := info @@ -71,7 +79,7 @@ Index: node-v21.6.1/Makefile 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 +@@ -742,7 +742,8 @@ apidocs_json = $(addprefix out/,$(apidoc apiassets = $(subst api_assets,api/assets,$(addprefix out/,$(wildcard doc/api_assets/*))) tools/doc/node_modules: tools/doc/package.json @@ -81,10 +89,10 @@ Index: node-v21.6.1/Makefile echo "Skipping tools/doc/node_modules (no crypto)"; \ else \ cd tools/doc && $(call available-node,$(run-npm-ci)) \ -Index: node-v21.6.1/tools/test.py +Index: node-v21.7.1/tools/test.py =================================================================== ---- node-v21.6.1.orig/tools/test.py -+++ node-v21.6.1/tools/test.py +--- node-v21.7.1.orig/tools/test.py ++++ node-v21.7.1/tools/test.py @@ -1362,7 +1362,7 @@ def BuildOptions(): result.add_option("-s", "--suite", help="A test suite", default=[], action="append") @@ -94,10 +102,10 @@ Index: node-v21.6.1/tools/test.py result.add_option("--arch", help='The architecture to run tests for', default='none') result.add_option("--snapshot", help="Run the tests with snapshot turned on", -Index: node-v21.6.1/test/parallel/test-crypto-dh.js +Index: node-v21.7.1/test/parallel/test-crypto-dh.js =================================================================== ---- node-v21.6.1.orig/test/parallel/test-crypto-dh.js -+++ node-v21.6.1/test/parallel/test-crypto-dh.js +--- node-v21.7.1.orig/test/parallel/test-crypto-dh.js ++++ node-v21.7.1/test/parallel/test-crypto-dh.js @@ -92,7 +92,7 @@ const crypto = require('crypto'); dh3.computeSecret(''); }, { message: common.hasOpenSSL3 && !hasOpenSSL3WithNewErrorMessage ? @@ -107,10 +115,10 @@ Index: node-v21.6.1/test/parallel/test-crypto-dh.js } } -Index: node-v21.6.1/benchmark/misc/startup-cli-version.js +Index: node-v21.7.1/benchmark/misc/startup-cli-version.js =================================================================== ---- node-v21.6.1.orig/benchmark/misc/startup-cli-version.js -+++ node-v21.6.1/benchmark/misc/startup-cli-version.js +--- node-v21.7.1.orig/benchmark/misc/startup-cli-version.js ++++ node-v21.7.1/benchmark/misc/startup-cli-version.js @@ -11,10 +11,10 @@ const path = require('path'); // indispensible part of the CLI. const bench = common.createBenchmark(main, { diff --git a/nodejs-libpath.patch b/nodejs-libpath.patch index ceb8732..7416139 100644 --- a/nodejs-libpath.patch +++ b/nodejs-libpath.patch @@ -1,7 +1,7 @@ -Index: node-v21.7.1/tools/install.py +Index: node-v20.12.0/tools/install.py =================================================================== ---- node-v21.7.1.orig/tools/install.py -+++ node-v21.7.1/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 @@ -14,9 +14,9 @@ Index: node-v21.7.1/tools/install.py try_unlink(target_path) # prevent ETXTBSY errors return shutil.copy2(source_path, target_path) -+def libdir(): ++def libdir(options): + libdir_fq = sysconfig.get_config_var("LIBDIR") -+ return re.sub("^" + re.escape(node_prefix + "/"), "", libdir_fq) ++ return re.sub("^" + re.escape(options.prefix + "/"), "", libdir_fq) + def try_remove(options, path, dest): source_path, target_path = mkpaths(options, path, dest) @@ -26,7 +26,7 @@ Index: node-v21.7.1/tools/install.py def package_files(options, action, name, bins): - target_path = os.path.join('lib/node_modules', name) -+ target_path = os.path.join(libdir(), '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 @@ -35,15 +35,15 @@ Index: node-v21.7.1/tools/install.py 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(), '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-v21.7.1/lib/internal/modules/cjs/loader.js +Index: node-v20.12.0/lib/internal/modules/cjs/loader.js =================================================================== ---- node-v21.7.1.orig/lib/internal/modules/cjs/loader.js -+++ node-v21.7.1/lib/internal/modules/cjs/loader.js -@@ -1528,7 +1528,7 @@ Module._initPaths = function() { +--- 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, '..', '..'); diff --git a/nodejs21.spec b/nodejs21.spec index 169718d..8dca3bb 100644 --- a/nodejs21.spec +++ b/nodejs21.spec @@ -15,17 +15,7 @@ # Please submit bugfixes or comments via https://bugs.opensuse.org/ # -########################################################### -# -# WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! -# -# This spec file is generated from a template hosted at -# https://github.com/AdamMajer/nodejs-packaging -# -########################################################### -# Fedora doesn't have rpm-config-SUSE which provides -# ext_man in /usr/lib/rpm/macros.d/macros.obs %if 0%{?fedora_version} %define ext_man .gz %endif @@ -134,12 +124,12 @@ Source1: https://nodejs.org/dist/v%{version}/SHASUMS256.txt Source2: https://nodejs.org/dist/v%{version}/SHASUMS256.txt.sig Source3: nodejs.keyring -# Python 3.4 compatible node-gyp -### https://github.com/nodejs/node-gyp.git -### git archive v7.1.2 | xz > node-gyp_7.1.2.tar.xz -Source5: node-gyp_7.1.2.tar.xz -# Only required to run unit tests in NodeJS 10+ -Source10: update_npm_tarball.sh +# Python 3.4 compatible node-gyp +### https://github.com/nodejs/node-gyp.git +### git archive v7.1.2 | xz > node-gyp_7.1.2.tar.xz +Source5: node-gyp_7.1.2.tar.xz +# Only required to run unit tests in NodeJS 10+ +Source10: update_npm_tarball.sh Source11: node_modules.tar.xz Source20: bash_output_helper.bash @@ -150,8 +140,6 @@ Patch5: sle12_python3_compat.patch Patch7: manual_configure.patch Patch13: openssl_binary_detection.patch - - ## Patches specific to SUSE and openSUSE Patch100: linker_lto_jobs.patch # PATCH-FIX-OPENSUSE -- set correct path for dtrace if it is built @@ -178,8 +166,8 @@ Patch305: qemu_timeouts_arches.patch Patch308: node-gyp-config.patch Patch309: gcc13.patch -BuildRequires: pkg-config BuildRequires: fdupes +BuildRequires: pkg-config BuildRequires: procps BuildRequires: xz BuildRequires: zlib-devel @@ -199,10 +187,10 @@ BuildRequires: config(netcfg) %if 0%{?suse_version} == 1110 # GCC 5 is only available in the SUSE:SLE-11:SP4:Update repository (SDK). %if %node_version_number >= 8 -BuildRequires: gcc5-c++ +BuildRequires: gcc5-c++ %define forced_gcc_version 5 %else -BuildRequires: gcc48-c++ +BuildRequires: gcc48-c++ %define forced_gcc_version 4.8 %endif %endif @@ -212,15 +200,15 @@ BuildRequires: gcc48-c++ # for SLE-12:Update targets %if 0%{?suse_version} == 1315 %if %node_version_number >= 17 -BuildRequires: gcc12-c++ +BuildRequires: gcc12-c++ %define forced_gcc_version 12 %else %if %node_version_number >= 14 -BuildRequires: gcc9-c++ +BuildRequires: gcc9-c++ %define forced_gcc_version 9 %else %if %node_version_number >= 8 -BuildRequires: gcc7-c++ +BuildRequires: gcc7-c++ %define forced_gcc_version 7 %endif %endif @@ -229,7 +217,7 @@ BuildRequires: gcc7-c++ %if 0%{?suse_version} == 1500 %if %node_version_number >= 17 -BuildRequires: gcc12-c++ +BuildRequires: gcc12-c++ %define forced_gcc_version 12 %endif %endif @@ -240,7 +228,6 @@ BuildRequires: gcc12-c++ BuildRequires: gcc-c++ %endif - # Python dependencies %if %node_version_number >= 14 @@ -266,8 +253,8 @@ BuildRequires: python %endif %if 0%{?suse_version} >= 1500 && %{node_version_number} >= 10 -BuildRequires: user(nobody) BuildRequires: group(nobody) +BuildRequires: user(nobody) %endif # shared openssl @@ -282,11 +269,10 @@ BuildRequires: openssl >= %{openssl_req_ver} BuildRequires: (libopenssl1_1-hmac if libopenssl-1_1-devel) BuildRequires: (libopenssl3-hmac if libopenssl-3-devel) %else -BuildRequires: openssl-1_1 >= %{openssl_req_ver} BuildRequires: libopenssl1_1-hmac +BuildRequires: openssl-1_1 >= %{openssl_req_ver} %endif - # /suse_version %endif @@ -369,8 +355,8 @@ ExclusiveArch: not_buildable %endif %endif -Provides: bundled(uvwasi) = 0.0.20 Provides: bundled(libuv) = 1.48.0 +Provides: bundled(uvwasi) = 0.0.20 Provides: bundled(v8) = 11.8.172.17 %if %{with intree_brotli} Provides: bundled(brotli) = 1.1.0 @@ -378,12 +364,11 @@ Provides: bundled(brotli) = 1.1.0 BuildRequires: pkgconfig(libbrotlidec) %endif - +Provides: bundled(base64) = 0.5.2 Provides: bundled(llhttp) = 9.1.3 Provides: bundled(ngtcp2) = 1.3.0 -Provides: bundled(base64) = 0.5.2 -Provides: bundled(simdutf) = 4.0.8 Provides: bundled(simdjson) = 3.7.0 +Provides: bundled(simdutf) = 4.0.8 # bundled url-ada parser, not ada Provides: bundled(ada) = 2.7.6 @@ -404,8 +389,8 @@ provided by npm. Summary: Development headers for NodeJS 21.x Group: Development/Languages/NodeJS Provides: nodejs-devel = %{version} -Requires: npm21 = %{version} Requires: %{name} = %{version} +Requires: npm21 = %{version} %description devel This package provides development headers for Node.js needed for creation @@ -422,12 +407,12 @@ Requires: nodejs-common Requires: nodejs21 = %{version} Provides: nodejs-npm = %{version} Obsoletes: nodejs-npm < 4.0.0 -Provides: npm(npm) = 10.5.0 Provides: npm = %{version} +Provides: npm(npm) = 10.5.0 %if 0%{?suse_version} >= 1500 %if %{node_version_number} >= 10 -Requires: user(nobody) Requires: group(nobody) +Requires: user(nobody) %endif %endif Provides: bundled(node-abbrev) = 2.0.0 @@ -714,8 +699,6 @@ find -name \*~ -print0 -delete # abnormalities from patching find \( -name \*.js.orig -or -name \*.md.orig -or -name \*.1.orig \) -delete - - %build # normalize shebang %if %{node_version_number} >= 12 @@ -1099,6 +1082,7 @@ update-alternatives --remove corepack-default %{_bindir}/corepack%{node_version_ %endif %else + %pre # remove files that are no longer owned but provided by update-alternatives if ! [ -L %{_mandir}/man1/node.1%{ext_man} ]; then diff --git a/versioned.patch b/versioned.patch index 7e91aad..231a156 100644 --- a/versioned.patch +++ b/versioned.patch @@ -29,8 +29,8 @@ Index: node-v21.7.1/tools/install.py try_remove(options, path, dest) def package_files(options, action, name, bins): -- target_path = os.path.join(libdir(), 'node_modules', name) -+ target_path = os.path.join(libdir(), 'node_modules', name + '21') +- target_path = os.path.join(libdir(options), 'node_modules', name) ++ target_path = os.path.join(libdir(options), 'node_modules', name + '21') # don't install npm if the target path is a symlink, it probably means # that a dev version of npm is installed there @@ -38,8 +38,8 @@ Index: node-v21.7.1/tools/install.py if action == uninstall: action(options, [link_path], os.path.join('bin', bin_name)) elif action == install: -- try_symlink(options, os.path.join('..', libdir(), 'node_modules', name, bin_target), link_path) -+ try_symlink(options, os.path.join('..', libdir(), 'node_modules', name + 21, bin_target), link_path) +- try_symlink(options, os.path.join('..', libdir(options), 'node_modules', name, bin_target), link_path) ++ try_symlink(options, os.path.join('..', libdir(options), 'node_modules', name + 21, bin_target), link_path) else: assert 0 # unhandled action type