[packages/nodejs] - up to 12.14.1
arekm
arekm at pld-linux.org
Sat Jan 25 23:06:05 CET 2020
commit c2768f1e12a0cfce140d972e078ea5a948c2cc0d
Author: Arkadiusz Miśkiewicz <arekm at maven.pl>
Date: Sat Jan 25 23:05:50 2020 +0100
- up to 12.14.1
0001-Disable-running-gyp-on-shared-deps.patch | 29 ++++++
0002-Install-both-binaries-and-use-libdir.patch | 86 ++++++++++++++++++
nodejs-lib64path.patch | 16 ++--
nodejs-shared.patch | 112 ------------------------
nodejs-soname.patch | 10 ---
nodejs.spec | 58 ++++++------
uv-fpic.patch | 20 -----
7 files changed, 152 insertions(+), 179 deletions(-)
---
diff --git a/nodejs.spec b/nodejs.spec
index 89a7f1e..b68ab05 100644
--- a/nodejs.spec
+++ b/nodejs.spec
@@ -4,7 +4,7 @@
# Conditional build:
%bcond_without system_uv # system uv
-%bcond_with shared # build libnode.so shared library
+%bcond_with httpparse # use system http-parser and llhttp
# NOTES:
# - https://nodejs.org/en/download/releases/
@@ -14,31 +14,38 @@
# add-on binaries can be loaded in to without needing to be re-compiled. It
# used to be stored as hex value in earlier versions, but is now represented as
# an integer.
-%define node_module_version 64
+%define node_module_version 72
Summary: Asynchronous JavaScript Engine
Summary(pl.UTF-8): Asynchroniczny silnik JavaScriptu
Name: nodejs
-# 10.x LTS - https://github.com/nodejs/Release
-# Active start: 2018-10-30
-# Maintenance start: April 2020
-# Maintenance end: April 2021
-Version: 10.18.1
+# 12.x LTS - https://github.com/nodejs/Release
+# Active start: 2019-10-21
+# Maintenance start: October 2020
+# Maintenance end: April 2022
+Version: 12.14.1
Release: 1
License: BSD and MIT and Apache v2.0 and GPL v3
Group: Development/Languages
Source0: https://nodejs.org/dist/v%{version}/node-v%{version}.tar.gz
-# Source0-md5: 8efb618a632def2b24e8b3f432b6db14
-Patch1: %{name}-shared.patch
+# Source0-md5: 7f2fa2f5df2b8179b5b00ec7de361b34
+
# force node to use /usr/lib/node as the systemwide module directory
Patch2: %{name}-libpath.patch
# use /usr/lib64/node as an arch-specific module dir when appropriate
Patch3: %{name}-lib64path.patch
-Patch5: uv-fpic.patch
+Patch4: 0001-Disable-running-gyp-on-shared-deps.patch
+Patch5: 0002-Install-both-binaries-and-use-libdir.patch
URL: https://nodejs.org/
+BuildRequires: c-ares-devel >= 1.14.0
BuildRequires: gcc >= 6:4.8
+%if %{with httpparse}
BuildRequires: http-parser-devel >= 2.9.2
+BuildRequires: llhttp-devel
+%endif
+BuildRequires: libicu-devel >= 0.64
BuildRequires: libstdc++-devel >= 6:4.8
%{?with_system_uv:BuildRequires: libuv-devel >= 1.29.0}
+BuildRequires: nghttp2-devel >= 1.39.1
BuildRequires: openssl-devel >= 1.0.1
BuildRequires: pkgconfig
BuildRequires: python >= 1:2.7
@@ -81,7 +88,7 @@ Summary(pl.UTF-8): Pliki nagłówkowe nodejs
Group: Development/Libraries
Requires: %{name} = %{version}-%{release}
Requires: gcc
-Requires: http-parser-devel >= 2.9.2
+%{?with_http_parse:Requires: http-parser-devel >= 2.9.2}
Requires: libstdc++-devel
%{?with_system_uv:Requires: libuv-devel >= 1.29.0}
Requires: openssl-devel
@@ -132,19 +139,19 @@ Sondy systemtap/dtrace dla Node.js.
%prep
%setup -q -n node-v%{version}
-%{?with_shared:%patch1 -p1}
#%patch1 -p1
%if %{_lib} == "lib64"
%patch3 -p1
%else
%patch2 -p1
%endif
-#%{?with_system_uv:%patch5 -p1}
+%patch4 -p1
+%patch5 -p1
grep -r '#!.*env python' -l . | xargs %{__sed} -i -e '1 s,#!.*env python,#!%{__python},'
%{__rm} -r deps/npm
-%{__rm} -r deps/http_parser
+%{?with_httpparse:%{__rm} -r deps/http_parser}
%{__rm} -r deps/openssl
%{?with_system_uv:%{__rm} -r deps/uv}
%{__rm} -r deps/zlib
@@ -159,13 +166,17 @@ CXX="%{__cxx}" \
GYP_DEFINES="soname_version=%{sover}" \
./configure \
--openssl-use-def-ca-store \
- %{?0:--shared-cares} \
+ --shared \
+ --shared-cares \
--shared-openssl \
- --shared-http-parser \
+ %{?with_http_parse:--shared-http-parser} \
+ --shared-nghttp2 \
+ --with-intl=system-icu \
%{?with_system_uv:--shared-libuv} \
--shared-zlib \
--without-npm \
--without-dtrace \
+ --libdir=%{_lib} \
--prefix=%{_prefix}
# add LFS defines from libuv (RHBZ#892601)
@@ -181,11 +192,7 @@ rm -rf $RPM_BUILD_ROOT
%{__python} tools/install.py install "$RPM_BUILD_ROOT" "%{_prefix}"
-%if %{with shared}
-lib=$(basename $RPM_BUILD_ROOT%{_libdir}/libnode.so.*.*.*)
-ln -s $lib $RPM_BUILD_ROOT%{_libdir}/libnode.so.10
-ln -s $lib $RPM_BUILD_ROOT%{_libdir}/libnode.so
-%endif
+ln -s libnode.so.%{node_module_version} $RPM_BUILD_ROOT%{_libdir}/libnode.so
echo '.so man1/node.1' > $RPM_BUILD_ROOT%{_mandir}/man1/nodejs.1
@@ -229,20 +236,15 @@ cp -a doc/api/* $RPM_BUILD_ROOT%{_docdir}/%{name}-doc-%{version}
%clean
rm -rf $RPM_BUILD_ROOT
-%if %{with shared}
%post -p /sbin/ldconfig
%postun -p /sbin/ldconfig
-%endif
%files
%defattr(644,root,root,755)
%doc README.md AUTHORS CHANGELOG.md LICENSE
%attr(755,root,root) %{_bindir}/node
%attr(755,root,root) %{_bindir}/nodejs
-%if %{with shared}
-%attr(755,root,root) %{_libdir}/libnode.so.*.*.*
-%attr(755,root,root) %ghost %{_libdir}/libnode.so.10
-%endif
+%attr(755,root,root) %{_libdir}/libnode.so.%{node_module_version}
%if "%{_lib}" != "lib"
%dir %{_libdir}/node
%endif
@@ -253,9 +255,7 @@ rm -rf $RPM_BUILD_ROOT
%files devel
%defattr(644,root,root,755)
-%if %{with shared}
%attr(755,root,root) %{_libdir}/libnode.so
-%endif
%{_includedir}/node
%{_pkgconfigdir}/nodejs.pc
%{_usrsrc}/%{name}
diff --git a/0001-Disable-running-gyp-on-shared-deps.patch b/0001-Disable-running-gyp-on-shared-deps.patch
new file mode 100644
index 0000000..668ff55
--- /dev/null
+++ b/0001-Disable-running-gyp-on-shared-deps.patch
@@ -0,0 +1,29 @@
+From a560ff12ff44d9732ce325ca4bcde6e536fe3ed0 Mon Sep 17 00:00:00 2001
+From: Zuzana Svetlikova <zsvetlik at redhat.com>
+Date: Thu, 27 Apr 2017 14:25:42 +0200
+Subject: [PATCH 1/3] Disable running gyp on shared deps
+
+---
+ Makefile | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/Makefile b/Makefile
+index 0947300f24028d00bcfb79b38d96bded136228e3..5d4f88a705053fbdd6b56ec85e9997670c6a69c5 100644
+--- a/Makefile
++++ b/Makefile
+@@ -141,9 +141,9 @@ test-code-cache: with-code-cache
+ echo "'test-code-cache' target is a noop"
+
+ out/Makefile: config.gypi common.gypi node.gyp \
+- deps/uv/uv.gyp deps/http_parser/http_parser.gyp deps/zlib/zlib.gyp \
+- tools/v8_gypfiles/toolchain.gypi tools/v8_gypfiles/features.gypi \
+- tools/v8_gypfiles/inspector.gypi tools/v8_gypfiles/v8.gyp
++ deps/http_parser/http_parser.gyp \
++ tools/v8_gypfiles/toolchain.gypi tools/v8_gypfiles/features.gypi \
++ tools/v8_gypfiles/inspector.gypi tools/v8_gypfiles/v8.gyp
+ $(PYTHON) tools/gyp_node.py -f make
+
+ # node_version.h is listed because the N-API version is taken from there
+--
+2.23.0
+
diff --git a/0002-Install-both-binaries-and-use-libdir.patch b/0002-Install-both-binaries-and-use-libdir.patch
new file mode 100644
index 0000000..cabec6e
--- /dev/null
+++ b/0002-Install-both-binaries-and-use-libdir.patch
@@ -0,0 +1,86 @@
+From cf581096dd350cf7267e5a12ff26159120274c5c Mon Sep 17 00:00:00 2001
+From: Elliott Sales de Andrade <quantum.analyst at gmail.com>
+Date: Tue, 19 Mar 2019 23:22:40 -0400
+Subject: [PATCH 2/3] Install both binaries and use libdir.
+
+This allows us to build with a shared library for other users while
+still providing the normal executable.
+
+Signed-off-by: Elliott Sales de Andrade <quantum.analyst at gmail.com>
+---
+ configure.py | 7 +++++++
+ tools/install.py | 29 +++++++++++++----------------
+ 2 files changed, 20 insertions(+), 16 deletions(-)
+
+diff --git a/configure.py b/configure.py
+index 20cce214dbb113aeef8f1044d7af88d842a11fd7..e2d78a2a51ef81621618cb20fa76f4a1421bf9e0 100755
+--- a/configure.py
++++ b/configure.py
+@@ -559,6 +559,12 @@ parser.add_option('--shared',
+ help='compile shared library for embedding node in another project. ' +
+ '(This mode is not officially supported for regular applications)')
+
++parser.add_option('--libdir',
++ action='store',
++ dest='libdir',
++ default='lib',
++ help='a directory to install the shared library into')
++
+ parser.add_option('--without-v8-platform',
+ action='store_true',
+ dest='without_v8_platform',
+@@ -1103,6 +1109,7 @@ def configure_node(o):
+ if o['variables']['want_separate_host_toolset'] == 0:
+ o['variables']['node_code_cache'] = 'yes' # For testing
+ o['variables']['node_shared'] = b(options.shared)
++ o['variables']['libdir'] = options.libdir
+ node_module_version = getmoduleversion.get_version()
+
+ if sys.platform == 'darwin':
+diff --git a/tools/install.py b/tools/install.py
+index 655802980a6ea94d1d4ca1dc63c8c8e905fbb83a..fe4723bf15012c8aacacb0393dc8294c049b0503 100755
+--- a/tools/install.py
++++ b/tools/install.py
+@@ -121,26 +121,23 @@ def subdir_files(path, dest, action):
+
+ def files(action):
+ is_windows = sys.platform == 'win32'
+- output_file = 'node'
+ output_prefix = 'out/Release/'
++ output_libprefix = output_prefix
+
+- if 'false' == variables.get('node_shared'):
+- if is_windows:
+- output_file += '.exe'
++ if is_windows:
++ output_bin = 'node.exe'
++ output_lib = 'node.dll'
+ else:
+- if is_windows:
+- output_file += '.dll'
+- else:
+- output_file = 'lib' + output_file + '.' + variables.get('shlib_suffix')
+- # GYP will output to lib.target except on OS X, this is hardcoded
+- # in its source - see the _InstallableTargetInstallPath function.
+- if sys.platform != 'darwin':
+- output_prefix += 'lib.target/'
++ output_bin = 'node'
++ output_lib = 'libnode.' + variables.get('shlib_suffix')
++ # GYP will output to lib.target except on OS X, this is hardcoded
++ # in its source - see the _InstallableTargetInstallPath function.
++ if sys.platform != 'darwin':
++ output_libprefix += 'lib.target/'
+
+- if 'false' == variables.get('node_shared'):
+- action([output_prefix + output_file], 'bin/' + output_file)
+- else:
+- action([output_prefix + output_file], 'lib/' + output_file)
++ action([output_prefix + output_bin], 'bin/' + output_bin)
++ if 'true' == variables.get('node_shared'):
++ action([output_libprefix + output_lib], variables.get('libdir') + '/' + output_lib)
+
+ if 'true' == variables.get('node_use_dtrace'):
+ action(['out/Release/node.d'], 'lib/dtrace/node.d')
+--
+2.23.0
+
diff --git a/nodejs-lib64path.patch b/nodejs-lib64path.patch
index bb7e68d..f2dbc57 100644
--- a/nodejs-lib64path.patch
+++ b/nodejs-lib64path.patch
@@ -1,11 +1,11 @@
---- node-v10.16.0/lib/internal/modules/cjs/loader.js~ 2019-05-28 23:32:23.000000000 +0200
-+++ node-v10.16.0/lib/internal/modules/cjs/loader.js 2019-06-03 09:11:35.662170541 +0200
-@@ -861,7 +861,7 @@ Module._initPaths = function() {
- } else {
- prefixDir = path.resolve(process.execPath, '..', '..');
- }
-- var paths = [path.resolve(prefixDir, 'lib', 'node')];
-+ var paths = ["/usr/lib64/node", "/usr/lib/node", "/usr/lib/node_modules", path.resolve(prefixDir, 'lib', 'node')];
+--- node-v12.14.1/lib/internal/modules/cjs/loader.js~ 2020-01-07 13:16:01.000000000 +0100
++++ node-v12.14.1/lib/internal/modules/cjs/loader.js 2020-01-25 16:53:22.188427110 +0100
+@@ -1095,7 +1095,7 @@ Module._initPaths = function() {
+ path.resolve(process.execPath, '..') :
+ path.resolve(process.execPath, '..', '..');
+
+- let paths = [path.resolve(prefixDir, 'lib', 'node')];
++ let paths = ["/usr/lib64/node", "/usr/lib/node", "/usr/lib/node_modules", path.resolve(prefixDir, 'lib', 'node')];
if (homeDir) {
paths.unshift(path.resolve(homeDir, '.node_libraries'));
diff --git a/nodejs-shared.patch b/nodejs-shared.patch
deleted file mode 100644
index c22719e..0000000
--- a/nodejs-shared.patch
+++ /dev/null
@@ -1,112 +0,0 @@
---- node-v0.10.3/common.gypi~ 2013-04-03 20:30:57.000000000 +0300
-+++ node-v0.10.3/common.gypi 2013-04-08 15:50:00.327121152 +0300
-@@ -8,6 +8,8 @@
- 'component%': 'static_library', # NB. these names match with what V8 expects
- 'msvs_multi_core_compile': '0', # we do enable multicore compiles, but not using the V8 way
- 'gcc_version%': 'unknown',
-+ # For a shared library build, results in "libnode.so.<(soname_version)".
-+ 'soname_version%': '',
- 'clang%': 0,
- 'python%': 'python',
-
---- node-v0.10.3-o/node.gyp 2013-04-03 11:30:57.000000000 -0600
-+++ node-v0.10.3/node.gyp 2013-04-03 19:30:22.000000000 -0600
-@@ -67,17 +67,35 @@
- 'type': 'executable',
-
- 'dependencies': [
-- 'node_js2c#host',
-+ 'libnode'
- ],
-
-- 'include_dirs': [
-- 'src',
-- 'tools/msvs/genfiles',
-- 'deps/uv/src/ares',
-- '<(SHARED_INTERMEDIATE_DIR)' # for node_natives.h
-+ 'conditions': [
-+ [ 'node_shared_libuv=="false"', {
-+ 'dependencies': [ 'deps/uv/uv.gyp:libuv' ],
-+ }],
- ],
-
- 'sources': [
-+ 'src/node_main.cc',
-+ # node.gyp is added to the project by default.
-+ 'common.gypi',
-+ ],
-+
-+ 'defines': [
-+ 'NODE_WANT_INTERNALS=1',
-+ 'ARCH="<(target_arch)"',
-+ 'PLATFORM="<(OS)"',
-+ ],
-+ },
-+ {
-+ 'target_name': 'libnode',
-+ 'type': 'shared_library',
-+ 'product_extension': 'so.<(soname_version)',
-+ 'soname_version': '<(soname_version)',
-+ 'cflags': ['-fPIC'],
-+
-+ 'sources': [
- 'src/fs_event_wrap.cc',
- 'src/cares_wrap.cc',
- 'src/handle_wrap.cc',
-@@ -88,7 +106,6 @@
- 'src/node_file.cc',
- 'src/node_http_parser.cc',
- 'src/node_javascript.cc',
-- 'src/node_main.cc',
- 'src/node_os.cc',
- 'src/node_script.cc',
- 'src/node_stat_watcher.cc',
-@@ -137,6 +154,17 @@
- 'common.gypi',
- ],
-
-+ 'include_dirs': [
-+ 'src',
-+ 'tools/msvs/genfiles',
-+ 'deps/uv/src/ares',
-+ '<(SHARED_INTERMEDIATE_DIR)' # for node_natives.h
-+ ],
-+
-+ 'dependencies': [
-+ 'node_js2c#host',
-+ ],
-+
- 'defines': [
- 'NODE_WANT_INTERNALS=1',
- 'ARCH="<(target_arch)"',
---- node-v0.10.3-o/tools/install.py 2013-04-03 11:30:57.000000000 -0600
-+++ node-v0.10.3/tools/install.py 2013-04-03 19:31:32.000000000 -0600
-@@ -119,7 +119,9 @@
- assert(0) # unhandled action type
-
- def files(action):
-+ global lib_dir
- action(['out/Release/node'], 'bin/node')
-+ action(['out/Release/lib.target/libnode.so.10'], lib_dir + '/libnode.so.10.3.0')
-
- # install unconditionally, checking if the platform supports dtrace doesn't
- # work when cross-compiling and besides, there's at least one linux flavor
-@@ -134,7 +136,7 @@
- if 'true' == variables.get('node_install_npm'): npm_files(action)
-
- def run(args):
-- global dst_dir, node_prefix, target_defaults, variables
-+ global dst_dir, node_prefix, target_defaults, variables, lib_dir
-
- # chdir to the project's top-level directory
- os.chdir(abspath(os.path.dirname(__file__), '..'))
-@@ -147,6 +149,9 @@
- dst_dir = node_prefix = variables.get('node_prefix') or '/usr/local'
- if len(args) > 2: dst_dir = abspath(args[2] + '/' + dst_dir)
-
-+ lib_dir = 'lib'
-+ if len(args) > 3: lib_dir = args[3]
-+
- cmd = args[1] if len(args) > 1 else 'install'
- if cmd == 'install': return files(install)
- if cmd == 'uninstall': return files(uninstall)
diff --git a/nodejs-soname.patch b/nodejs-soname.patch
deleted file mode 100644
index 812c7de..0000000
--- a/nodejs-soname.patch
+++ /dev/null
@@ -1,10 +0,0 @@
---- node-v0.4.3-o//wscript 2011-03-18 17:27:18.000000000 -0600
-+++ node-v0.4.3/wscript 2011-03-18 22:36:52.000000000 -0600
-@@ -803,6 +803,7 @@
- node.add_objects = 'eio http_parser'
- if product_type_is_lib:
- node.install_path = '${LIBDIR}'
-+ node.vnum = "10.0.0" # Fixme, derive from version
- else:
- node.install_path = '${PREFIX}/bin'
- node.chmod = 0755
diff --git a/uv-fpic.patch b/uv-fpic.patch
deleted file mode 100644
index 6c26e78..0000000
--- a/uv-fpic.patch
+++ /dev/null
@@ -1,20 +0,0 @@
---- node-v0.6.19/deps/uv/config-unix.mk~ 2012-06-06 03:46:27.000000000 +0300
-+++ node-v0.6.19/deps/uv/config-unix.mk 2012-06-14 22:23:21.230218071 +0300
-@@ -26,6 +26,7 @@
-
- CPPFLAGS += -D_LARGEFILE_SOURCE
- CPPFLAGS += -D_FILE_OFFSET_BITS=64
-+CPPFLAGS += -fPIC
-
- OBJS += src/unix/core.o
- OBJS += src/unix/dl.o
---- node-v0.10.40/deps/uv/uv.gyp~ 2015-07-09 23:19:36.000000000 +0200
-+++ node-v0.10.40/deps/uv/uv.gyp 2016-01-01 17:30:58.139553119 +0100
-@@ -126,6 +126,7 @@
- '-Wall',
- '-Wextra',
- '-Wno-unused-parameter',
-+ '-fPIC',
- ],
- 'sources': [
- 'include/uv-private/uv-unix.h',
================================================================
---- gitweb:
http://git.pld-linux.org/gitweb.cgi/packages/nodejs.git/commitdiff/c2768f1e12a0cfce140d972e078ea5a948c2cc0d
More information about the pld-cvs-commit
mailing list