diff --git a/0001-Disable-running-gyp-on-shared-deps.patch b/0001-Disable-running-gyp-on-shared-deps.patch index c81b123..668ff55 100644 --- a/0001-Disable-running-gyp-on-shared-deps.patch +++ b/0001-Disable-running-gyp-on-shared-deps.patch @@ -1,4 +1,4 @@ -From 80542232e5b9c3ede63b7a70c1077497e130da81 Mon Sep 17 00:00:00 2001 +From a560ff12ff44d9732ce325ca4bcde6e536fe3ed0 Mon Sep 17 00:00:00 2001 From: Zuzana Svetlikova Date: Thu, 27 Apr 2017 14:25:42 +0200 Subject: [PATCH 1/3] Disable running gyp on shared deps @@ -8,7 +8,7 @@ Subject: [PATCH 1/3] Disable running gyp on shared deps 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile -index 0a5177d1c3e7d6769535d79e063f987157a30f4d..1f3dd0abe4031defb5b7cc817b12886bdea002c7 100644 +index 0947300f24028d00bcfb79b38d96bded136228e3..5d4f88a705053fbdd6b56ec85e9997670c6a69c5 100644 --- a/Makefile +++ b/Makefile @@ -141,9 +141,9 @@ test-code-cache: with-code-cache 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 +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 +--- + 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/0003-Install-both-binaries-and-use-libdir.patch b/0003-Install-both-binaries-and-use-libdir.patch deleted file mode 100644 index ea3d4b9..0000000 --- a/0003-Install-both-binaries-and-use-libdir.patch +++ /dev/null @@ -1,86 +0,0 @@ -From 5bfeffdf4b5de1c60a2ff0d1ddf65db2bb9a1533 Mon Sep 17 00:00:00 2001 -From: Elliott Sales de Andrade -Date: Tue, 19 Mar 2019 23:22:40 -0400 -Subject: [PATCH 3/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 ---- - configure.py | 7 +++++++ - tools/install.py | 29 +++++++++++++---------------- - 2 files changed, 20 insertions(+), 16 deletions(-) - -diff --git a/configure.py b/configure.py -index 473bbfeb294b34e0cb4ead9db607adfc3781be29..a1f98be9a68c360f3bd17c8f5e0a1478adce9a55 100755 ---- a/configure.py -+++ b/configure.py -@@ -556,6 +556,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', -@@ -1098,6 +1104,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/0003-build-auto-load-ICU-data-from-with-icu-default-data-.patch b/0003-build-auto-load-ICU-data-from-with-icu-default-data-.patch new file mode 100644 index 0000000..ad955e3 --- /dev/null +++ b/0003-build-auto-load-ICU-data-from-with-icu-default-data-.patch @@ -0,0 +1,128 @@ +From 30e8730b88afc2c3ac46503a8cc668b367c70e3e Mon Sep 17 00:00:00 2001 +From: Stephen Gallagher +Date: Fri, 6 Dec 2019 16:40:25 -0500 +Subject: [PATCH 3/3] build: auto-load ICU data from + --with-icu-default-data-dir + +When compiled with `--with-intl=small` and +`--with-icu-default-data-dir=PATH`, Node.js will use PATH as a +fallback location for the ICU data. + +We will first perform an access check using fopen(PATH, 'r') to +ensure that the file is readable. If it is, we'll set the +icu_data_directory and proceed. There's a slight overhead for the +fopen() check, but it should be barely measurable. + +This will be useful for Linux distribution packagers who want to +be able to ship a minimal node binary in a container image but +also be able to add on the full i18n support where needed. With +this patch, it becomes possible to ship the interpreter as +/usr/bin/node in one package for the distribution and to ship the +data files in another package (without a strict dependency +between the two). This means that users of the distribution will +not need to explicitly direct Node.js to locate the ICU data. It +also means that in environments where full internationalization is +not required, they do not need to carry the extra content (with +the associated storage costs). + +Refs: https://github.com/nodejs/node/issues/3460 + +Signed-off-by: Stephen Gallagher + +PR-URL: https://github.com/nodejs/node/pull/30825 +Reviewed-By: Steven R Loomis +Reviewed-By: Ben Noordhuis +Reviewed-By: Richard Lau +Reviewed-By: Rich Trott +--- + configure.py | 9 +++++++++ + node.gypi | 7 +++++++ + src/node.cc | 20 ++++++++++++++++++++ + 3 files changed, 36 insertions(+) + +diff --git a/configure.py b/configure.py +index e2d78a2a51ef81621618cb20fa76f4a1421bf9e0..cbf0d3ad567ea7beea86f56844d950e50c98c35c 100755 +--- a/configure.py ++++ b/configure.py +@@ -444,6 +444,14 @@ intl_optgroup.add_option('--with-icu-source', + 'the icu4c source archive. ' + 'v%d.x or later recommended.' % icu_versions['minimum_icu']) + ++intl_optgroup.add_option('--with-icu-default-data-dir', ++ action='store', ++ dest='with_icu_default_data_dir', ++ help='Path to the icuXXdt{lb}.dat file. If unspecified, ICU data will ' ++ 'only be read if the NODE_ICU_DATA environment variable or the ' ++ '--icu-data-dir runtime argument is used. This option has effect ' ++ 'only when Node.js is built with --with-intl=small-icu.') ++ + parser.add_option('--with-ltcg', + action='store_true', + dest='with_ltcg', +@@ -1380,6 +1388,7 @@ def configure_intl(o): + locs.add('root') # must have root + o['variables']['icu_locales'] = ','.join(str(loc) for loc in locs) + # We will check a bit later if we can use the canned deps/icu-small ++ o['variables']['icu_default_data'] = options.with_icu_default_data_dir or '' + elif with_intl == 'full-icu': + # full ICU + o['variables']['v8_enable_i18n_support'] = 1 +diff --git a/node.gypi b/node.gypi +index 05d80e846cffd31a0a61943e5ab391ad79cddab0..144544214316a3a5ce256e8772d57d14817c5185 100644 +--- a/node.gypi ++++ b/node.gypi +@@ -103,6 +103,13 @@ + 'conditions': [ + [ 'icu_small=="true"', { + 'defines': [ 'NODE_HAVE_SMALL_ICU=1' ], ++ 'conditions': [ ++ [ 'icu_default_data!=""', { ++ 'defines': [ ++ 'NODE_ICU_DEFAULT_DATA_DIR="<(icu_default_data)"', ++ ], ++ }], ++ ], + }]], + }], + [ 'node_no_browser_globals=="true"', { +diff --git a/src/node.cc b/src/node.cc +index ae53d0c31c3568d04387da89ab6e9d049e41c919..cbd1c632008f89f2c4aedccb00db19f686693c75 100644 +--- a/src/node.cc ++++ b/src/node.cc +@@ -79,6 +79,7 @@ + + #if defined(NODE_HAVE_I18N_SUPPORT) + #include ++#include + #endif + + +@@ -848,6 +849,25 @@ int InitializeNodeWithArgs(std::vector* argv, + if (per_process::cli_options->icu_data_dir.empty()) + credentials::SafeGetenv("NODE_ICU_DATA", + &per_process::cli_options->icu_data_dir); ++ ++#ifdef NODE_ICU_DEFAULT_DATA_DIR ++ // If neither the CLI option nor the environment variable was specified, ++ // fall back to the configured default ++ if (per_process::cli_options->icu_data_dir.empty()) { ++ // Check whether the NODE_ICU_DEFAULT_DATA_DIR contains the right data ++ // file and can be read. ++ static const char full_path[] = ++ NODE_ICU_DEFAULT_DATA_DIR "/" U_ICUDATA_NAME ".dat"; ++ ++ FILE* f = fopen(full_path, "rb"); ++ ++ if (f != nullptr) { ++ fclose(f); ++ per_process::cli_options->icu_data_dir = NODE_ICU_DEFAULT_DATA_DIR; ++ } ++ } ++#endif // NODE_ICU_DEFAULT_DATA_DIR ++ + // Initialize ICU. + // If icu_data_dir is empty here, it will load the 'minimal' data. + if (!i18n::InitializeICUDirectory(per_process::cli_options->icu_data_dir)) { +-- +2.23.0 + diff --git a/nodejs.spec b/nodejs.spec index 50c9f72..2357dbd 100644 --- a/nodejs.spec +++ b/nodejs.spec @@ -8,7 +8,7 @@ # This is used by both the nodejs package and the npm subpackage thar # has a separate version - the name is special so that rpmdev-bumpspec # will bump this rather than adding .1 to the end. -%global baserelease 1 +%global baserelease 2 %{?!_pkgdocdir:%global _pkgdocdir %{_docdir}/%{name}-%{version}} @@ -19,14 +19,16 @@ # than a Fedora release lifecycle. %global nodejs_epoch 1 %global nodejs_major 12 -%global nodejs_minor 13 -%global nodejs_patch 1 +%global nodejs_minor 14 +%global nodejs_patch 0 %global nodejs_abi %{nodejs_major}.%{nodejs_minor} # nodejs_soversion - from NODE_MODULE_VERSION in src/node_version.h %global nodejs_soversion 72 %global nodejs_version %{nodejs_major}.%{nodejs_minor}.%{nodejs_patch} %global nodejs_release %{baserelease} +%global nodejs_datadir %{_datarootdir}/nodejs + # == Bundled Dependency Versions == # v8 - from deps/v8/include/v8-version.h # Epoch is set to ensure clean upgrades from the old v8 package @@ -76,15 +78,9 @@ %global icu_minor 2 %global icu_version %{icu_major}.%{icu_minor} -%global sys_icu_version %(/usr/bin/icu-config --version) - -%if "%{sys_icu_version}" >= "%{icu_version}" -%global bundled_icu 0 -%global icu_flag system-icu -%else -%global bundled_icu 1 -%global icu_flag full-icu -%endif +%global icudatadir %{nodejs_datadir}/icudata +%{!?little_endian: %global little_endian %(%{__python3} -c "import sys;print (0 if sys.byteorder=='big' else 1)")} +# " this line just fixes syntax highlighting for vim that is confused by the above and continues literal # OpenSSL minimum version @@ -101,8 +97,8 @@ # npm - from deps/npm/package.json %global npm_epoch 1 %global npm_major 6 -%global npm_minor 12 -%global npm_patch 1 +%global npm_minor 13 +%global npm_patch 4 %global npm_version %{npm_major}.%{npm_minor}.%{npm_patch} # In order to avoid needing to keep incrementing the release version for the @@ -141,7 +137,11 @@ Source7: nodejs_native.attr Patch1: 0001-Disable-running-gyp-on-shared-deps.patch # Patch to install both node and libnode.so, using the correct libdir -Patch3: 0003-Install-both-binaries-and-use-libdir.patch +Patch2: 0002-Install-both-binaries-and-use-libdir.patch + +# Upstream patch to enable auto-detection of full ICU data +# https://github.com/nodejs/node/pull/30825 +Patch3: 0003-build-auto-load-ICU-data-from-with-icu-default-data-.patch BuildRequires: python2-devel BuildRequires: python3-devel @@ -173,8 +173,6 @@ Provides: bundled(llhttp) = %{llhttp_version} %endif -BuildRequires: libicu-devel - BuildRequires: openssl-devel >= %{openssl_minimum} Requires: openssl >= %{openssl_minimum} @@ -183,6 +181,8 @@ Requires: ca-certificates Requires: nodejs-libs%{?_isa} = %{nodejs_epoch}:%{version}-%{release} +# Pull in the full-icu data by default +Recommends: nodejs-full-i18n%{?_isa} = %{nodejs_epoch}:%{version}-%{release} #we need ABI virtual provides where SONAMEs aren't enough/not present so deps #break when binary compatibility is broken @@ -285,6 +285,17 @@ Obsoletes: v8 < 1:6.7.17-10 %description libs Libraries to support Node.js and provide stable v8 interfaces. + +%package full-i18n +Summary: Non-English locale data for Node.js +Requires: %{name}%{?_isa} = %{nodejs_epoch}:%{nodejs_version}-%{nodejs_release}%{?dist} + + +%description full-i18n +Optional data files to provide full-icu support for Node.js. Remove this +package to save space if non-English locales are not needed. + + %package -n v8-devel Summary: v8 - development headers Epoch: %{v8_epoch} @@ -340,12 +351,6 @@ The API documentation for the Node.js JavaScript runtime. # remove bundled dependencies that we aren't building rm -rf deps/zlib -%if bundled_icu -pushd deps/ -rm -rf icu-small -tar xfz %SOURCE3 -popd -%endif # Replace any instances of unversioned python' with python2 pathfix.py -i %{__python2} -pn $(find -type f ! -name "*.js") @@ -407,7 +412,8 @@ export LDFLAGS="%{build_ldflags}" --shared-libuv \ --shared-nghttp2 \ --with-dtrace \ - --with-intl=%{icu_flag} \ + --with-intl=small-icu \ + --with-icu-default-data-dir=%{icudatadir} \ --debug-nghttp2 \ --openssl-use-def-ca-store %endif @@ -415,6 +421,36 @@ export LDFLAGS="%{build_ldflags}" make BUILDTYPE=Release %{?_smp_mflags} +# Extract the ICU data and convert it to the appropriate endianness +pushd deps/ +tar xfz %SOURCE3 + +pushd icu/source + +mkdir -p converted +%if 0%{?little_endian} +# The little endian data file is included in the ICU sources +install -Dpm0644 data/in/icudt%{icu_major}l.dat converted/ + +%else +# For the time being, we need to build ICU and use the included `icupkg` tool +# to convert the little endian data file into a big-endian one. +# At some point in the future, ICU releases will start including both data +# files and we should switch to those. +mkdir -p data/out/tmp + +%configure +%make_build + +icu_root=$(pwd) +LD_LIBRARY_PATH=./lib ./bin/icupkg -tb data/in/icudt%{icu_major}l.dat \ + converted/icudt%{icu_major}b.dat +%endif + +popd # icu/source +popd # deps + + %install rm -rf %{buildroot} @@ -425,16 +461,16 @@ chmod 0755 %{buildroot}/%{_bindir}/node chrpath --delete %{buildroot}%{_bindir}/node # Install library symlink -ln -s %{_libdir}/libnode.so.%{nodejs_soversion} %{buildroot}%{_libdir}/libnode.so +ln -s libnode.so.%{nodejs_soversion} %{buildroot}%{_libdir}/libnode.so # Install v8 compatibility symlinks for header in %{buildroot}%{_includedir}/node/libplatform %{buildroot}%{_includedir}/node/v8*.h; do header=$(basename ${header}) - ln -s %{_includedir}/node/${header} %{buildroot}%{_includedir}/${header} + ln -s ${header} %{buildroot}%{_includedir}/${header} done for soname in libv8 libv8_libbase libv8_libplatform; do - ln -s %{_libdir}/libnode.so.%{nodejs_soversion} %{buildroot}%{_libdir}/${soname}.so - ln -s %{_libdir}/libnode.so.%{nodejs_soversion} %{buildroot}%{_libdir}/${soname}.so.%{v8_major} + ln -s libnode.so.%{nodejs_soversion} %{buildroot}%{_libdir}/${soname}.so + ln -s libnode.so.%{nodejs_soversion} %{buildroot}%{_libdir}/${soname}.so.%{v8_major} done # own the sitelib directory @@ -470,13 +506,11 @@ cp -pr deps/npm/man/* %{buildroot}%{_mandir}/ rm -rf %{buildroot}%{_prefix}/lib/node_modules/npm/man ln -sf %{_mandir} %{buildroot}%{_prefix}/lib/node_modules/npm/man -# Install Markdown and HTML documentation to %{_pkgdocdir} -cp -pr deps/npm/html deps/npm/doc %{buildroot}%{_pkgdocdir}/npm/ -rm -rf %{buildroot}%{_prefix}/lib/node_modules/npm/html \ - %{buildroot}%{_prefix}/lib/node_modules/npm/doc +# Install Gatsby HTML documentation to %{_pkgdocdir} +cp -pr deps/npm/docs %{buildroot}%{_pkgdocdir}/npm/ +rm -rf %{buildroot}%{_prefix}/lib/node_modules/npm/docs -ln -sf %{_pkgdocdir} %{buildroot}%{_prefix}/lib/node_modules/npm/html -ln -sf %{_pkgdocdir}/npm/html %{buildroot}%{_prefix}/lib/node_modules/npm/doc +ln -sf %{_pkgdocdir}/npm %{buildroot}%{_prefix}/lib/node_modules/npm/docs # Node tries to install some python files into a documentation directory @@ -507,6 +541,9 @@ cp %{SOURCE1} %{buildroot}%{_sysconfdir}/npmrc mkdir -p %{buildroot}%{_prefix}/etc ln -s %{_sysconfdir}/npmrc %{buildroot}%{_prefix}/etc/npmrc +# Install the full-icu data files +install -Dpm0644 -t %{buildroot}%{icudatadir} deps/icu/source/converted/* + %check # Fail the build if the versions don't match LD_LIBRARY_PATH=%{buildroot}%{_libdir} %{buildroot}/%{_bindir}/node -e "require('assert').equal(process.versions.node, '%{nodejs_version}')" @@ -520,43 +557,11 @@ LD_LIBRARY_PATH=%{buildroot}%{_libdir} %{buildroot}/%{_bindir}/node -e "require( NODE_PATH=%{buildroot}%{_prefix}/lib/node_modules:%{buildroot}%{_prefix}/lib/node_modules/npm/node_modules LD_LIBRARY_PATH=%{buildroot}%{_libdir} %{buildroot}/%{_bindir}/node -e "require(\"assert\").equal(require(\"npm\").version, '%{npm_version}')" # Make sure i18n support is working -NODE_PATH=%{buildroot}%{_prefix}/lib/node_modules:%{buildroot}%{_prefix}/lib/node_modules/npm/node_modules LD_LIBRARY_PATH=%{buildroot}%{_libdir} %{buildroot}/%{_bindir}/node %{SOURCE2} +NODE_PATH=%{buildroot}%{_prefix}/lib/node_modules:%{buildroot}%{_prefix}/lib/node_modules/npm/node_modules LD_LIBRARY_PATH=%{buildroot}%{_libdir} %{buildroot}/%{_bindir}/node --icu-data-dir=%{buildroot}%{icudatadir} %{SOURCE2} %pretrans -n npm -p --- Replace the npm docs directory with a symlink --- Drop this scriptlet when F31 is EOL -path = "%{_prefix}/lib/node_modules/npm/doc" -st = posix.stat(path) -if st and st.type == "directory" then - status = os.rename(path, path .. ".rpmmoved") - if not status then - suffix = 0 - while not status do - suffix = suffix + 1 - status = os.rename(path .. ".rpmmoved", path .. ".rpmmoved." .. suffix) - end - os.rename(path, path .. ".rpmmoved") - end -end - --- Replace the npm HTML docs directory with a symlink --- Drop this scriptlet when F31 is EOL -path = "%{_prefix}/lib/node_modules/npm/html" -st = posix.stat(path) -if st and st.type == "directory" then - status = os.rename(path, path .. ".rpmmoved") - if not status then - suffix = 0 - while not status do - suffix = suffix + 1 - status = os.rename(path .. ".rpmmoved", path .. ".rpmmoved." .. suffix) - end - os.rename(path, path .. ".rpmmoved") - end -end - --- Replace the npm HTML man directory with a symlink +-- Replace the npm man directory with a symlink -- Drop this scriptlet when F31 is EOL path = "%{_prefix}/lib/node_modules/npm/man" st = posix.stat(path) @@ -590,6 +595,7 @@ if st and st.type == "directory" then end end + %files %{_bindir}/node %dir %{_prefix}/lib/node_modules @@ -607,7 +613,6 @@ end %{_rpmconfigdir}/fileattrs/nodejs_native.attr %{_rpmconfigdir}/nodejs_native.req -%license LICENSE %doc AUTHORS CHANGELOG.md COLLABORATOR_GUIDE.md GOVERNANCE.md README.md %doc %{_mandir}/man1/node.1* @@ -619,11 +624,17 @@ end %{_pkgdocdir}/gdbinit +%files full-i18n +%dir %{icudatadir} +%{icudatadir}/icudt%{icu_major}*.dat + %files libs +%license LICENSE %{_libdir}/libnode.so.%{nodejs_soversion} %{_libdir}/libv8.so.%{v8_major} %{_libdir}/libv8_libbase.so.%{v8_major} %{_libdir}/libv8_libplatform.so.%{v8_major} +%dir %{nodejs_datadir}/ %files -n v8-devel @@ -642,21 +653,39 @@ end %config(noreplace) %{_sysconfdir}/npmrc %{_prefix}/etc/npmrc %ghost %{_sysconfdir}/npmignore -%doc %{_mandir}/man*/npm* -%doc %{_mandir}/man*/npx* -%doc %{_mandir}/man5/package.json.5* -%doc %{_mandir}/man5/package-lock.json.5* -%doc %{_mandir}/man7/removing-npm.7* +%doc %{_mandir}/man1/npm*.1* +%doc %{_mandir}/man1/npx.1* +%doc %{_mandir}/man5/folders.5* +%doc %{_mandir}/man5/install.5* +%doc %{_mandir}/man5/npmrc.5* +%doc %{_mandir}/man5/package-json.5* +%doc %{_mandir}/man5/package-lock-json.5* +%doc %{_mandir}/man5/package-locks.5* +%doc %{_mandir}/man5/shrinkwrap-json.5* +%doc %{_mandir}/man7/config.7* +%doc %{_mandir}/man7/developers.7* +%doc %{_mandir}/man7/disputes.7* +%doc %{_mandir}/man7/orgs.7* +%doc %{_mandir}/man7/registry.7* +%doc %{_mandir}/man7/removal.7* +%doc %{_mandir}/man7/scope.7* +%doc %{_mandir}/man7/scripts.7* %doc %{_mandir}/man7/semver.7* %files docs %dir %{_pkgdocdir} %{_pkgdocdir}/html -%{_pkgdocdir}/npm/html -%{_pkgdocdir}/npm/doc +%{_pkgdocdir}/npm/docs %changelog +* Mon Jan 06 2020 Stephen Gallagher - 1:12.14.0-2 +- Update to 12.14.0 +- https://github.com/nodejs/node/blob/v12.14.0/doc/changelogs/CHANGELOG_V12.md +- Add new subpackage nodejs-full-i18n to enable optional non-English locale + support +- Update documentation packaging for NPM + * Mon Dec 02 2019 Stephen Gallagher - 1:12.13.1-1 - Update to 12.13.1 - https://github.com/nodejs/node/blob/v12.13.1/doc/changelogs/CHANGELOG_V12.md diff --git a/sources b/sources index 08c40fb..d5e5b8f 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (node-v12.13.1-stripped.tar.gz) = 882c5eea44dc72d8c56be3bdde39f312d9df050b7bf1f8dc5d60127b95404dd6131eae936ef5c7b1cc41b6de184afabf946272a0ac8fee03578098a40600deb6 +SHA512 (node-v12.14.0-stripped.tar.gz) = 8d5d7a96a466cdf86cebc4ca7608067e16804f32235bf862247073d543613393483fcd85d04c5511fd26958d21834372d031aab0570d9d72581fb0c36f17f849 SHA512 (icu4c-64_2-src.tgz) = 5ecb4c230ba45918747a1cf9aef86f555aa07d5b29b1d07ab674e8013f46dfb907a0e9d6945db41155f9dc3012fd94e1152ffc19f61a68b6dfcbabdcb8ae9d78