import nodejs-12.18.2-1.module+el8.3.0+7236+3b1750b8

This commit is contained in:
CentOS Sources 2020-07-28 08:34:32 -04:00 committed by Stepan Oksanichenko
parent 2e4c06508d
commit 0cc5fabe77
7 changed files with 565 additions and 106 deletions

3
.gitignore vendored
View File

@ -1 +1,2 @@
SOURCES/node-v12.13.1-stripped.tar.gz SOURCES/icu4c-67_1-src.tgz
SOURCES/node-v12.18.2-stripped.tar.gz

View File

@ -1 +1,2 @@
682aca11ed71b4dc7d78471d46f7254c64e005ad SOURCES/node-v12.13.1-stripped.tar.gz 6822a4a94324d1ba591b3e8ef084e4491af253c1 SOURCES/icu4c-67_1-src.tgz
b8955ce8e33b4c1cfdd4c5be22f70f3419ce63df SOURCES/node-v12.18.2-stripped.tar.gz

View File

@ -1,29 +1,25 @@
From 80542232e5b9c3ede63b7a70c1077497e130da81 Mon Sep 17 00:00:00 2001 From 4509b10cbe5d22216a7880cc7fb6bd5f92b18018 Mon Sep 17 00:00:00 2001
From: Zuzana Svetlikova <zsvetlik@redhat.com> From: Zuzana Svetlikova <zsvetlik@redhat.com>
Date: Thu, 27 Apr 2017 14:25:42 +0200 Date: Thu, 27 Apr 2017 14:25:42 +0200
Subject: [PATCH 1/3] Disable running gyp on shared deps Subject: [PATCH 1/5] Disable running gyp on shared deps
--- ---
Makefile | 6 +++--- Makefile | 2 +-
1 file changed, 3 insertions(+), 3 deletions(-) 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Makefile b/Makefile diff --git a/Makefile b/Makefile
index 0a5177d1c3e7d6769535d79e063f987157a30f4d..1f3dd0abe4031defb5b7cc817b12886bdea002c7 100644 index 56f5358..f289f25 100644
--- a/Makefile --- a/Makefile
+++ b/Makefile +++ b/Makefile
@@ -141,9 +141,9 @@ test-code-cache: with-code-cache @@ -141,7 +141,7 @@ test-code-cache: with-code-cache
echo "'test-code-cache' target is a noop" echo "'test-code-cache' target is a noop"
out/Makefile: config.gypi common.gypi node.gyp \ out/Makefile: config.gypi common.gypi node.gyp \
- deps/uv/uv.gyp deps/http_parser/http_parser.gyp deps/zlib/zlib.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 \ + deps/http_parser/http_parser.gyp \
+ tools/v8_gypfiles/toolchain.gypi tools/v8_gypfiles/features.gypi \ tools/v8_gypfiles/toolchain.gypi tools/v8_gypfiles/features.gypi \
+ tools/v8_gypfiles/inspector.gypi tools/v8_gypfiles/v8.gyp tools/v8_gypfiles/inspector.gypi tools/v8_gypfiles/v8.gyp
$(PYTHON) tools/gyp_node.py -f make $(PYTHON) tools/gyp_node.py -f make
# node_version.h is listed because the N-API version is taken from there
-- --
2.23.0 2.24.1

151
SOURCES/btest402.js Normal file
View File

@ -0,0 +1,151 @@
// Copyright (C) 2014 IBM Corporation and Others. All Rights Reserved.
// This file is part of the Node.JS ICU enablement work
// https://github.com/joyent/node/pull/7719
// and is under the same license.
//
// This is a very, very, very basic test of es402
//
// URL: https://github.com/srl295/btest402
// Author: Steven R. Loomis <srl@icu-project.org>
//
// for a complete test, see http://test262.ecmascript.org
//
// Usage: node btest402.js
try {
console.log("You have console.log.");
} catch(e) {
// this works on d8
console = { log: print };
console.log("Now you have console.log.");
}
function runbtest() {
var summary = {};
try {
var i = Intl;
summary.haveIntl = true;
console.log("+ Congrats, you have the Intl object.");
} catch(e) {
console.log("You don't have the Intl object: " + e);
}
if(summary.haveIntl) {
var locs = [ "en", "mt", "ja","tlh"];
var d = new Date(196400000);
for ( var n=0; n<locs.length; n++ ) {
var loc = locs[n];
var lsummary = summary[loc] = {};
console.log(loc+":");
var sl=null;
try {
sl = Intl.DateTimeFormat.supportedLocalesOf([loc]);
if( sl.length > 0 ) {
lsummary.haveSlo = true;
}
} catch (e) {
console.log("SLO err: " + e);
}
var dstr = "ERR";
try {
lsummary.dstr = d.toLocaleString(loc,{month: "long",day:"numeric",weekday:"long",year:"numeric"});
console.log(" date: (supported:"+sl+") " + lsummary.dstr);
} catch (e) {
console.log(" Date Format err: " + e);
}
try {
new Intl.v8BreakIterator();
console.log(" Intl.v8BreakIterator:" +
Intl.v8BreakIterator.supportedLocalesOf(loc) + " Supported, first()==" +
new Intl.v8BreakIterator(loc).first() );
lsummary.brkOk = true;
} catch ( e) {
console.log(" Intl.v8BreakIterator error (NOT part of EcmaScript402): " + e);
}
console.log();
}
}
// print summary
console.log();
console.log("--------- Analysis ---------");
stxt = "";
if( summary.haveIntl ) {
console.log("* You have the 'Intl' object. Congratulations! You have the possibility of being EcmaScript 402 compliant.");
stxt += "Have Intl, ";
if ( !summary.en.haveSlo ) {
stxt += "Date:no EN, ";
console.log("* English isn't a supported language by the date formatter. Perhaps the data isn't installed properly?");
}
if ( !summary.tlh.haveSlo ) {
stxt += "Date:no 'tlh', ";
console.log("* Klingon isn't a supported language by the date formatter. It is without honor!");
}
// now, what is it actually saying
if( summary.en.dstr.indexOf("1970") == -1) {
stxt += "Date:bad 'en', ";
console.log("* the English date format text looks bad to me. Doesn't even have the year.");
} else {
if( summary.en.dstr.indexOf("Jan") == -1) {
stxt += "Date:bad 'en', ";
console.log("* The English date format text looks bad to me. Doesn't have the right month.");
}
}
if( summary.mt.dstr == summary.en.dstr ) {
stxt += "Date:'mt'=='en', ";
console.log("* The English and Maltese look the same to me. Probably a 'small' build.");
} else if( summary.mt.dstr.indexOf("1970") == -1) {
stxt += "Date:bad 'mt', ";
console.log("* the Maltese date format text looks bad to me. Doesn't even have the year. (This data is missing from the Chromium ICU build)");
} else {
if( summary.mt.dstr.indexOf("Jann") == -1) {
stxt += "Date:bad 'mt', ";
console.log("* The Maltese date format text looks bad to me. Doesn't have the right month. (This data is missing from the Chromium ICU build)");
}
}
if ( !summary.ja.haveSlo ) {
stxt += "Date:no 'ja', ";
console.log("* Japanese isn't a supported language by the date formatter. Could be a 'small' build.");
} else {
if( summary.ja.dstr.indexOf("1970") == -1) {
stxt += "Date:bad 'ja', ";
console.log("* the Japanese date format text looks bad to me. Doesn't even have the year.");
} else {
if( summary.ja.dstr.indexOf("日") == -1) {
stxt += "Date:bad 'ja', ";
console.log("* The Japanese date format text looks bad to me.");
}
}
}
if ( summary.en.brkOk ) {
stxt += "FYI: v8Brk:have 'en', ";
console.log("* You have Intl.v8BreakIterator support. (Note: not part of ES402.)");
}
} else {
console.log("* You don't have the 'Intl' object. You aren't EcmaScript 402 compliant.");
stxt += " NO Intl. ";
}
// 1-liner.
console.log();
console.log("----------------");
console.log( "SUMMARY:" + stxt );
}
var dorun = true;
try {
if(btest402_noautorun) {
dorun = false;
}
} catch(e) {}
if(dorun) {
console.log("Running btest..");
runbtest();
}

View File

@ -1,10 +1,201 @@
#!/bin/sh #!/bin/sh
# Uses Argbash to generate command argument parsing. To update
# arguments, make sure to call
# `argbash nodejs-tarball.sh -o nodejs-tarball.sh`
version=$(rpm -q --specfile --qf='%{version}\n' nodejs.spec | head -n1) # ARG_POSITIONAL_SINGLE([version],[Node.js release version],[""])
rm -f node-v${version}.tar.gz # ARG_DEFAULTS_POS([])
wget http://nodejs.org/dist/v${version}/node-v${version}.tar.gz # ARG_HELP([Tool to aid in Node.js packaging of new releases])
# ARGBASH_GO()
# needed because of Argbash --> m4_ignore([
### START OF CODE GENERATED BY Argbash v2.8.1 one line above ###
# Argbash is a bash code generator used to get arguments parsing right.
# Argbash is FREE SOFTWARE, see https://argbash.io for more info
die()
{
local _ret=$2
test -n "$_ret" || _ret=1
test "$_PRINT_HELP" = yes && print_help >&2
echo "$1" >&2
exit ${_ret}
}
begins_with_short_option()
{
local first_option all_short_options='h'
first_option="${1:0:1}"
test "$all_short_options" = "${all_short_options/$first_option/}" && return 1 || return 0
}
# THE DEFAULTS INITIALIZATION - POSITIONALS
_positionals=()
_arg_version=""
# THE DEFAULTS INITIALIZATION - OPTIONALS
print_help()
{
printf '%s\n' "Tool to aid in Node.js packaging of new releases"
printf 'Usage: %s [-h|--help] [<version>]\n' "$0"
printf '\t%s\n' "<version>: Node.js release version (default: '""')"
printf '\t%s\n' "-h, --help: Prints help"
}
parse_commandline()
{
_positionals_count=0
while test $# -gt 0
do
_key="$1"
case "$_key" in
-h|--help)
print_help
exit 0
;;
-h*)
print_help
exit 0
;;
*)
_last_positional="$1"
_positionals+=("$_last_positional")
_positionals_count=$((_positionals_count + 1))
;;
esac
shift
done
}
handle_passed_args_count()
{
test "${_positionals_count}" -le 1 || _PRINT_HELP=yes die "FATAL ERROR: There were spurious positional arguments --- we expect between 0 and 1, but got ${_positionals_count} (the last one was: '${_last_positional}')." 1
}
assign_positional_args()
{
local _positional_name _shift_for=$1
_positional_names="_arg_version "
shift "$_shift_for"
for _positional_name in ${_positional_names}
do
test $# -gt 0 || break
eval "$_positional_name=\${1}" || die "Error during argument parsing, possibly an Argbash bug." 1
shift
done
}
parse_commandline "$@"
handle_passed_args_count
assign_positional_args 1 "${_positionals[@]}"
# OTHER STUFF GENERATED BY Argbash
### END OF CODE GENERATED BY Argbash (sortof) ### ])
# [ <-- needed because of Argbash
set -e
echo $_arg_version
if [ x$_arg_version != x ]; then
version=$_arg_version
else
version=$(rpm -q --specfile --qf='%{version}\n' nodejs.spec | head -n1)
fi
rm -f node-v${version}.tar.gz node-v${version}-stripped.tar.gz
wget http://nodejs.org/dist/v${version}/node-v${version}.tar.gz \
http://nodejs.org/dist/v${version}/SHASUMS256.txt
sha256sum -c SHASUMS256.txt --ignore-missing
tar -zxf node-v${version}.tar.gz tar -zxf node-v${version}.tar.gz
rm -rf node-v${version}/deps/openssl rm -rf node-v${version}/deps/openssl
tar -zcf node-v${version}-stripped.tar.gz node-v${version} tar -zcf node-v${version}-stripped.tar.gz node-v${version}
#fedpkg new-sources node-v${version}-stripped.tar.gz # Download the matching version of ICU
rm -f icu4c*-src.tgz icu.md5
ICUMD5=$(cat node-v${version}/tools/icu/current_ver.dep |jq -r '.[0].md5')
wget $(cat node-v${version}/tools/icu/current_ver.dep |jq -r '.[0].url')
ICUTARBALL=$(ls -1 icu4c*-src.tgz)
echo "$ICUMD5 $ICUTARBALL" > icu.md5
md5sum -c icu.md5
rm -f icu.md5 SHASUMS256.txt
rhpkg new-sources node-v${version}-stripped.tar.gz icu4c*-src.tgz
rm -f node-v${version}.tar.gz
set +e
# Determine the bundled versions of the various packages
echo "Bundled software versions"
echo "-------------------------"
echo
echo "libnode shared object version"
echo "========================="
grep "define NODE_MODULE_VERSION" node-v${version}/src/node_version.h
echo
echo "V8"
echo "========================="
grep "define V8_MAJOR_VERSION" node-v${version}/deps/v8/include/v8-version.h
grep "define V8_MINOR_VERSION" node-v${version}/deps/v8/include/v8-version.h
grep "define V8_BUILD_NUMBER" node-v${version}/deps/v8/include/v8-version.h
grep "define V8_PATCH_LEVEL" node-v${version}/deps/v8/include/v8-version.h
echo
echo "c-ares"
echo "========================="
grep "define ARES_VERSION_MAJOR" node-v${version}/deps/cares/include/ares_version.h
grep "define ARES_VERSION_MINOR" node-v${version}/deps/cares/include/ares_version.h
grep "define ARES_VERSION_PATCH" node-v${version}/deps/cares/include/ares_version.h
echo
echo "http-parser"
echo "========================="
grep "define HTTP_PARSER_VERSION_MAJOR" node-v${version}/deps/http_parser/http_parser.h
grep "define HTTP_PARSER_VERSION_MINOR" node-v${version}/deps/http_parser/http_parser.h
grep "define HTTP_PARSER_VERSION_PATCH" node-v${version}/deps/http_parser/http_parser.h
echo
echo "llhttp"
echo "========================="
grep "define LLHTTP_VERSION_MAJOR" node-v${version}/deps/llhttp/include/llhttp.h
grep "define LLHTTP_VERSION_MINOR" node-v${version}/deps/llhttp/include/llhttp.h
grep "define LLHTTP_VERSION_PATCH" node-v${version}/deps/llhttp/include/llhttp.h
echo
echo "libuv"
echo "========================="
grep "define UV_VERSION_MAJOR" node-v${version}/deps/uv/include/uv/version.h
grep "define UV_VERSION_MINOR" node-v${version}/deps/uv/include/uv/version.h
grep "define UV_VERSION_PATCH" node-v${version}/deps/uv/include/uv/version.h
echo
echo "nghttp2"
echo "========================="
grep "define NGHTTP2_VERSION " node-v${version}/deps/nghttp2/lib/includes/nghttp2/nghttp2ver.h
echo
echo "ICU"
echo "========================="
grep "url" node-v${version}/tools/icu/current_ver.dep
echo
echo "punycode"
echo "========================="
grep "'version'" node-v${version}/lib/punycode.js
echo
echo "uvwasi"
echo "========================="
grep "define UVWASI_VERSION_MAJOR" node-v${version}/deps/uvwasi/include/uvwasi.h
grep "define UVWASI_VERSION_MINOR" node-v${version}/deps/uvwasi/include/uvwasi.h
grep "define UVWASI_VERSION_PATCH" node-v${version}/deps/uvwasi/include/uvwasi.h
echo
echo "npm"
echo "========================="
grep "\"version\":" node-v${version}/deps/npm/package.json
echo
echo "Make sure these versions match what is in the RPM spec file"
rm -rf node-v${version}
# ] <-- needed because of Argbash

2
SOURCES/npmrc Normal file
View File

@ -0,0 +1,2 @@
prefix=/usr/local
python=/usr/bin/python3

View File

@ -8,10 +8,14 @@
%endif %endif
# bundle dependencies that are not available as Fedora modules # bundle dependencies that are not available as Fedora modules
# %%{!?_with_bootstrap: %%global bootstrap 1}
# use bcond for building modules
%bcond_with bootstrap %bcond_with bootstrap
# == Master Relase ==
# 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
%{?!_pkgdocdir:%global _pkgdocdir %{_docdir}/%{name}-%{version}} %{?!_pkgdocdir:%global _pkgdocdir %{_docdir}/%{name}-%{version}}
# == Node.js Version == # == Node.js Version ==
@ -21,24 +25,26 @@
# than a Fedora release lifecycle. # than a Fedora release lifecycle.
%global nodejs_epoch 1 %global nodejs_epoch 1
%global nodejs_major 12 %global nodejs_major 12
%global nodejs_minor 13 %global nodejs_minor 18
%global nodejs_patch 1 %global nodejs_patch 2
%global nodejs_abi %{nodejs_major}.%{nodejs_minor} %global nodejs_abi %{nodejs_major}.%{nodejs_minor}
%if %{?with_libs} == 1 %if %{?with_libs} == 1
# nodejs_soversion - from NODE_MODULE_VERSION in src/node_version.h # nodejs_soversion - from NODE_MODULE_VERSION in src/node_version.h
%global nodejs_soversion 72 %global nodejs_soversion 72
%endif %endif
%global nodejs_version %{nodejs_major}.%{nodejs_minor}.%{nodejs_patch} %global nodejs_version %{nodejs_major}.%{nodejs_minor}.%{nodejs_patch}
%global nodejs_release 1 %global nodejs_release %{baserelease}
%global nodejs_datadir %{_datarootdir}/nodejs
# == Bundled Dependency Versions == # == Bundled Dependency Versions ==
# v8 - from deps/v8/include/v8-version.h # v8 - from deps/v8/include/v8-version.h
# Epoch is set to ensure clean upgrades from the old v8 package # Epoch is set to ensure clean upgrades from the old v8 package
%global v8_epoch 1 %global v8_epoch 1
%global v8_major 7 %global v8_major 7
%global v8_minor 7 %global v8_minor 8
%global v8_build 299 %global v8_build 279
%global v8_patch 13 %global v8_patch 23
# V8 presently breaks ABI at least every x.y release while never bumping SONAME # V8 presently breaks ABI at least every x.y release while never bumping SONAME
%global v8_abi %{v8_major}.%{v8_minor} %global v8_abi %{v8_major}.%{v8_minor}
%global v8_version %{v8_major}.%{v8_minor}.%{v8_build}.%{v8_patch} %global v8_version %{v8_major}.%{v8_minor}.%{v8_build}.%{v8_patch}
@ -47,48 +53,42 @@
# c-ares - from deps/cares/include/ares_version.h # c-ares - from deps/cares/include/ares_version.h
# https://github.com/nodejs/node/pull/9332 # https://github.com/nodejs/node/pull/9332
%global c_ares_major 1 %global c_ares_major 1
%global c_ares_minor 15 %global c_ares_minor 16
%global c_ares_patch 0 %global c_ares_patch 0
%global c_ares_version %{c_ares_major}.%{c_ares_minor}.%{c_ares_patch} %global c_ares_version %{c_ares_major}.%{c_ares_minor}.%{c_ares_patch}
# http-parser - from deps/http_parser/http_parser.h # http-parser - from deps/http_parser/http_parser.h
%global http_parser_major 2 %global http_parser_major 2
%global http_parser_minor 8 %global http_parser_minor 9
%global http_parser_patch 0 %global http_parser_patch 3
%global http_parser_version %{http_parser_major}.%{http_parser_minor}.%{http_parser_patch} %global http_parser_version %{http_parser_major}.%{http_parser_minor}.%{http_parser_patch}
# llhttp - from deps/llhttp/include/llhttp.h # llhttp - from deps/llhttp/include/llhttp.h
%global llhttp_major 1 %global llhttp_major 2
%global llhttp_minor 1 %global llhttp_minor 0
%global llhttp_patch 4 %global llhttp_patch 4
%global llhttp_version %{llhttp_major}.%{llhttp_minor}.%{llhttp_patch} %global llhttp_version %{llhttp_major}.%{llhttp_minor}.%{llhttp_patch}
# libuv - from deps/uv/include/uv/version.h # libuv - from deps/uv/include/uv/version.h
%global libuv_major 1 %global libuv_major 1
%global libuv_minor 33 %global libuv_minor 38
%global libuv_patch 1 %global libuv_patch 0
%global libuv_version %{libuv_major}.%{libuv_minor}.%{libuv_patch} %global libuv_version %{libuv_major}.%{libuv_minor}.%{libuv_patch}
# nghttp2 - from deps/nghttp2/lib/includes/nghttp2/nghttp2ver.h # nghttp2 - from deps/nghttp2/lib/includes/nghttp2/nghttp2ver.h
%global nghttp2_major 1 %global nghttp2_major 1
%global nghttp2_minor 39 %global nghttp2_minor 41
%global nghttp2_patch 2 %global nghttp2_patch 0
%global nghttp2_version %{nghttp2_major}.%{nghttp2_minor}.%{nghttp2_patch} %global nghttp2_version %{nghttp2_major}.%{nghttp2_minor}.%{nghttp2_patch}
# ICU - from tools/icu/current_ver.dep # ICU - from tools/icu/current_ver.dep
%global icu_major 64 %global icu_major 67
%global icu_minor 2 %global icu_minor 1
%global icu_version %{icu_major}.%{icu_minor} %global icu_version %{icu_major}.%{icu_minor}
%global sys_icu_version %(/usr/bin/icu-config --version) %global icudatadir %{nodejs_datadir}/icudata
%{!?little_endian: %global little_endian %(%{__python3} -c "import sys;print (0 if sys.byteorder=='big' else 1)")}
%if "%{sys_icu_version}" >= "%{icu_version}" # " this line just fixes syntax highlighting for vim that is confused by the above and continues literal
%global bundled_icu 0
%global icu_flag system-icu
%else
%global bundled_icu 1
%global icu_flag full-icu
%endif
# punycode - from lib/punycode.js # punycode - from lib/punycode.js
# Note: this was merged into the mainline since 0.6.x # Note: this was merged into the mainline since 0.6.x
@ -101,10 +101,22 @@
# npm - from deps/npm/package.json # npm - from deps/npm/package.json
%global npm_epoch 1 %global npm_epoch 1
%global npm_major 6 %global npm_major 6
%global npm_minor 12 %global npm_minor 14
%global npm_patch 1 %global npm_patch 5
%global npm_version %{npm_major}.%{npm_minor}.%{npm_patch} %global npm_version %{npm_major}.%{npm_minor}.%{npm_patch}
# uvwasi - from deps/uvwasi/include/uvwasi.h
%global uvwasi_major 0
%global uvwasi_minor 0
%global uvwasi_patch 9
%global uvwasi_version %{uvwasi_major}.%{uvwasi_minor}.%{uvwasi_patch}
# histogram_c - assumed from timestamps
%global histogram_major 0
%global histogram_minor 9
%global histogram_patch 7
%global histogram_version %{histogram_major}.%{histogram_minor}.%{histogram_patch}
# In order to avoid needing to keep incrementing the release version for the # In order to avoid needing to keep incrementing the release version for the
# main package forever, we will just construct one for npm that is guaranteed # main package forever, we will just construct one for npm that is guaranteed
# to increment safely. Changing this can only be done during an update when the # to increment safely. Changing this can only be done during an update when the
@ -127,6 +139,9 @@ ExclusiveArch: %{nodejs_arches}
# because openssl contains prohibited code, we remove openssl completely from # because openssl contains prohibited code, we remove openssl completely from
# the tarball, using the script in Source100 # the tarball, using the script in Source100
Source0: node-v%{nodejs_version}-stripped.tar.gz Source0: node-v%{nodejs_version}-stripped.tar.gz
Source1: npmrc
Source2: btest402.js
Source3: https://github.com/unicode-org/icu/releases/download/release-%{icu_major}-%{icu_minor}/icu4c-%{icu_major}_%{icu_minor}-src.tgz
Source100: %{name}-tarball.sh Source100: %{name}-tarball.sh
# The native module Requires generator remains in the nodejs SRPM, so it knows # The native module Requires generator remains in the nodejs SRPM, so it knows
@ -137,20 +152,20 @@ Source7: nodejs_native.attr
# Disable running gyp on bundled deps we don't use # Disable running gyp on bundled deps we don't use
Patch1: 0001-Disable-running-gyp-on-shared-deps.patch Patch1: 0001-Disable-running-gyp-on-shared-deps.patch
# Suppress the message from npm to run `npm -g update npm`
# This does bad things on an RPM-managed npm.
# Patch2: 0002-Suppress-NPM-message-to-run-global-update.patch
%if %{?with_libs} == 1 %if %{?with_libs} == 1
# Patch to install both node and libnode.so, using the correct libdir # 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
%endif %endif
BuildRequires: python2-devel BuildRequires: python2-devel
BuildRequires: python3-devel BuildRequires: python3-devel
BuildRequires: zlib-devel BuildRequires: zlib-devel
BuildRequires: gcc >= 4.9.4 BuildRequires: brotli-devel
BuildRequires: gcc-c++ >= 4.9.4 BuildRequires: gcc >= 6.3.0
BuildRequires: gcc-c++ >= 6.3.0
# needed to generate bundled provides for npm dependencies
# https://src.fedoraproject.org/rpms/nodejs/pull-request/2
# https://pagure.io/nodejs-packaging/pull-request/10
BuildRequires: nodejs-packaging BuildRequires: nodejs-packaging
BuildRequires: chrpath BuildRequires: chrpath
BuildRequires: libatomic BuildRequires: libatomic
@ -161,8 +176,6 @@ Provides: bundled(libuv) = %{libuv_version}
Provides: bundled(nghttp2) = %{nghttp2_version} Provides: bundled(nghttp2) = %{nghttp2_version}
%else %else
BuildRequires: systemtap-sdt-devel BuildRequires: systemtap-sdt-devel
#BuildRequires: http-parser-devel >= 2.9.0
#Requires: http-parser >= 2.9.0
BuildRequires: libuv-devel >= 1:%{libuv_version} BuildRequires: libuv-devel >= 1:%{libuv_version}
Requires: libuv >= 1:%{libuv_version} Requires: libuv >= 1:%{libuv_version}
BuildRequires: libnghttp2-devel >= %{nghttp2_version} BuildRequires: libnghttp2-devel >= %{nghttp2_version}
@ -175,25 +188,26 @@ Provides: bundled(http-parser) = %{http_parser_version}
Provides: bundled(llhttp) = %{llhttp_version} Provides: bundled(llhttp) = %{llhttp_version}
%endif %endif
BuildRequires: libicu-devel
BuildRequires: openssl-devel BuildRequires: openssl-devel
# we need the system certificate store # we need the system certificate store
Requires: ca-certificates Requires: ca-certificates
%if %{?with_libs} == 1 %if %{?with_libs} == 1
Requires: nodejs-libs%{?_isa} = %{nodejs_epoch}:%{nodejs_version}-%{nodejs_release}%{?dist} Requires: nodejs-libs%{?_isa} = %{nodejs_epoch}:%{version}-%{release}
%endif %endif
#we need ABI virtual provides where SONAMEs aren't enough/not present so deps # Pull in the full-icu data by default
#break when binary compatibility is broken 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
Provides: nodejs(abi) = %{nodejs_abi} Provides: nodejs(abi) = %{nodejs_abi}
Provides: nodejs(abi%{nodejs_major}) = %{nodejs_abi} Provides: nodejs(abi%{nodejs_major}) = %{nodejs_abi}
Provides: nodejs(v8-abi) = %{v8_abi} Provides: nodejs(v8-abi) = %{v8_abi}
Provides: nodejs(v8-abi%{v8_major}) = %{v8_abi} Provides: nodejs(v8-abi%{v8_major}) = %{v8_abi}
#this corresponds to the "engine" requirement in package.json # this corresponds to the "engine" requirement in package.json
Provides: nodejs(engine) = %{nodejs_version} Provides: nodejs(engine) = %{nodejs_version}
# Node.js currently has a conflict with the 'node' package in Fedora # Node.js currently has a conflict with the 'node' package in Fedora
@ -213,7 +227,6 @@ Conflicts: node <= 0.3.2-12
Provides: nodejs-punycode = %{punycode_version} Provides: nodejs-punycode = %{punycode_version}
Provides: npm(punycode) = %{punycode_version} Provides: npm(punycode) = %{punycode_version}
# Node.js has forked c-ares from upstream in an incompatible way, so we need # Node.js has forked c-ares from upstream in an incompatible way, so we need
# to carry the bundled version internally. # to carry the bundled version internally.
# See https://github.com/nodejs/node/commit/766d063e0578c0f7758c3a965c971763f43fec85 # See https://github.com/nodejs/node/commit/766d063e0578c0f7758c3a965c971763f43fec85
@ -231,6 +244,11 @@ Provides: bundled(v8) = %{v8_version}
# an ABI-break, so we'll use the bundled copy. # an ABI-break, so we'll use the bundled copy.
Provides: bundled(icu) = %{icu_version} Provides: bundled(icu) = %{icu_version}
# Upstream added new dependencies, but so far they are not available in Fedora
# or there's no option to built it as a shared dependency, so we bundle them
Provides: bundled(uvwasi) = %{uvwasi_version}
Provides: bundled(histogram) = %{histogram_version}
# Make sure we keep NPM up to date when we update Node.js # Make sure we keep NPM up to date when we update Node.js
%if 0%{?rhel} < 8 %if 0%{?rhel} < 8
# EPEL doesn't support Recommends, so make it strict # EPEL doesn't support Recommends, so make it strict
@ -247,18 +265,19 @@ Node.js uses an event-driven, non-blocking I/O model that
makes it lightweight and efficient, perfect for data-intensive makes it lightweight and efficient, perfect for data-intensive
real-time applications that run across distributed devices. real-time applications that run across distributed devices.
%package devel %package devel
Summary: JavaScript runtime - development headers Summary: JavaScript runtime - development headers
Group: Development/Languages Group: Development/Languages
Requires: %{name}%{?_isa} = %{epoch}:%{nodejs_version}-%{nodejs_release}%{?dist} Requires: %{name}%{?_isa} = %{epoch}:%{nodejs_version}-%{nodejs_release}%{?dist}
Requires: openssl-devel%{?_isa} Requires: openssl-devel%{?_isa}
Requires: zlib-devel%{?_isa} Requires: zlib-devel%{?_isa}
Requires: brotli-devel%{?_isa}
Requires: nodejs-packaging Requires: nodejs-packaging
%if %{with bootstrap} %if %{with bootstrap}
# deps are bundled # deps are bundled
%else %else
Requires: http-parser-devel%{?_isa}
Requires: libuv-devel%{?_isa} Requires: libuv-devel%{?_isa}
%endif %endif
@ -266,6 +285,15 @@ Requires: libuv-devel%{?_isa}
Development headers for the Node.js JavaScript runtime. Development headers for the Node.js JavaScript runtime.
%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.
%if %{?with_libs} == 1 %if %{?with_libs} == 1
%package libs %package libs
Summary: Node.js and v8 libraries Summary: Node.js and v8 libraries
@ -275,7 +303,8 @@ Summary: Node.js and v8 libraries
Provides: libv8.so.%{v8_major}()(64bit) Provides: libv8.so.%{v8_major}()(64bit)
Provides: libv8_libbase.so.%{v8_major}()(64bit) Provides: libv8_libbase.so.%{v8_major}()(64bit)
Provides: libv8_libplatform.so.%{v8_major}()(64bit) Provides: libv8_libplatform.so.%{v8_major}()(64bit)
%else # 32-bits %else
# 32-bits
Provides: libv8.so.%{v8_major} Provides: libv8.so.%{v8_major}
Provides: libv8_libbase.so.%{v8_major} Provides: libv8_libbase.so.%{v8_major}
Provides: libv8_libplatform.so.%{v8_major} Provides: libv8_libplatform.so.%{v8_major}
@ -300,6 +329,7 @@ Requires: %{name}-devel%{?_isa} = %{nodejs_epoch}:%{nodejs_version}-%{nodejs_rel
Development headers for the v8 runtime. Development headers for the v8 runtime.
%endif %endif
%package -n npm %package -n npm
Summary: Node.js Package Manager Summary: Node.js Package Manager
Epoch: %{npm_epoch} Epoch: %{npm_epoch}
@ -312,9 +342,7 @@ Release: %{npm_release}%{?dist}
Obsoletes: npm < 0:3.5.4-6 Obsoletes: npm < 0:3.5.4-6
Provides: npm = %{npm_epoch}:%{npm_version} Provides: npm = %{npm_epoch}:%{npm_version}
Requires: nodejs = %{nodejs_epoch}:%{nodejs_version}-%{nodejs_release}%{?dist} Requires: nodejs = %{nodejs_epoch}:%{nodejs_version}-%{nodejs_release}%{?dist}
%if 0%{?fedora} || 0%{?rhel} >= 8
Recommends: nodejs-docs = %{nodejs_epoch}:%{nodejs_version}-%{nodejs_release}%{?dist} Recommends: nodejs-docs = %{nodejs_epoch}:%{nodejs_version}-%{nodejs_release}%{?dist}
%endif
# Do not add epoch to the virtual NPM provides or it will break # Do not add epoch to the virtual NPM provides or it will break
# the automatic dependency-generation script. # the automatic dependency-generation script.
@ -324,6 +352,7 @@ Provides: npm(npm) = %{npm_version}
npm is a package manager for node.js. You can use it to install and publish npm is a package manager for node.js. You can use it to install and publish
your node programs. It manages dependencies and does other cool stuff. your node programs. It manages dependencies and does other cool stuff.
%package docs %package docs
Summary: Node.js API documentation Summary: Node.js API documentation
Group: Documentation Group: Documentation
@ -340,17 +369,11 @@ The API documentation for the Node.js JavaScript runtime.
%prep %prep
%setup -q -n node-v%{nodejs_version} %autosetup -p1 -n node-v%{nodejs_version}
# remove bundled dependencies that we aren't building # remove bundled dependencies that we aren't building
%patch1 -p1
rm -rf deps/zlib rm -rf deps/zlib
rm -rf deps/brotli
# %%patch2 -p1
%if %{?with_libs} == 1
%patch3 -p1
%endif
# Replace any instances of unversioned python' with python2 # Replace any instances of unversioned python' with python2
pathfix.py -i %{__python2} -pn $(find -type f ! -name "*.js") pathfix.py -i %{__python2} -pn $(find -type f ! -name "*.js")
@ -371,18 +394,18 @@ export RHEL_ALLOW_PYTHON2_FOR_BUILD=1
%global optflags %(echo %{optflags} | sed 's/-g /-g1 /') %global optflags %(echo %{optflags} | sed 's/-g /-g1 /')
%endif %endif
export CC='gcc' export CC='%{__cc}'
export CXX='g++' export CXX='%{__cxx}'
# build with debugging symbols and add defines from libuv (#892601) # build with debugging symbols and add defines from libuv (#892601)
# Node's v8 breaks with GCC 6 because of incorrect usage of methods on # Node's v8 breaks with GCC 6 because of incorrect usage of methods on
# NULL objects. We need to pass -fno-delete-null-pointer-checks # NULL objects. We need to pass -fno-delete-null-pointer-checks
export CFLAGS='%{optflags} -g \ export CFLAGS='%{optflags} \
-D_LARGEFILE_SOURCE \ -D_LARGEFILE_SOURCE \
-D_FILE_OFFSET_BITS=64 \ -D_FILE_OFFSET_BITS=64 \
-DZLIB_CONST \ -DZLIB_CONST \
-fno-delete-null-pointer-checks' -fno-delete-null-pointer-checks'
export CXXFLAGS='%{optflags} -g \ export CXXFLAGS='%{optflags} \
-D_LARGEFILE_SOURCE \ -D_LARGEFILE_SOURCE \
-D_FILE_OFFSET_BITS=64 \ -D_FILE_OFFSET_BITS=64 \
-DZLIB_CONST \ -DZLIB_CONST \
@ -401,6 +424,7 @@ export LDFLAGS="%{build_ldflags}"
--libdir=%{_lib} \ --libdir=%{_lib} \
--shared-openssl \ --shared-openssl \
--shared-zlib \ --shared-zlib \
--shared-brotli \
--without-dtrace \ --without-dtrace \
--with-intl=small-icu \ --with-intl=small-icu \
--debug-nghttp2 \ --debug-nghttp2 \
@ -411,10 +435,12 @@ export LDFLAGS="%{build_ldflags}"
--libdir=%{_lib} \ --libdir=%{_lib} \
--shared-openssl \ --shared-openssl \
--shared-zlib \ --shared-zlib \
--shared-brotli \
--shared-libuv \ --shared-libuv \
--shared-nghttp2 \ --shared-nghttp2 \
--with-dtrace \ --with-dtrace \
--with-intl=%{icu_flag} \ --with-intl=%{icu_flag} \
--with-icu-default-data-dir=%{icudatadir} \
--debug-nghttp2 \ --debug-nghttp2 \
--openssl-use-def-ca-store --openssl-use-def-ca-store
%endif %endif
@ -423,6 +449,7 @@ export LDFLAGS="%{build_ldflags}"
./configure --prefix=%{_prefix} \ ./configure --prefix=%{_prefix} \
--shared-openssl \ --shared-openssl \
--shared-zlib \ --shared-zlib \
--shared-brotli \
--without-dtrace \ --without-dtrace \
--with-intl=small-icu \ --with-intl=small-icu \
--debug-nghttp2 \ --debug-nghttp2 \
@ -431,10 +458,12 @@ export LDFLAGS="%{build_ldflags}"
./configure --prefix=%{_prefix} \ ./configure --prefix=%{_prefix} \
--shared-openssl \ --shared-openssl \
--shared-zlib \ --shared-zlib \
--shared-brotli \
--shared-libuv \ --shared-libuv \
--shared-nghttp2 \ --shared-nghttp2 \
--with-dtrace \ --with-dtrace \
--with-intl=%{icu_flag} \ --with-intl=%{icu_flag} \
--with-icu-default-data-dir=%{icudatadir} \
--debug-nghttp2 \ --debug-nghttp2 \
--openssl-use-def-ca-store --openssl-use-def-ca-store
%endif %endif
@ -447,6 +476,35 @@ make BUILDTYPE=Debug %{?_smp_mflags}
make BUILDTYPE=Release %{?_smp_mflags} make BUILDTYPE=Release %{?_smp_mflags}
%endif %endif
# 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 %install
export RHEL_ALLOW_PYTHON2_FOR_BUILD=1 export RHEL_ALLOW_PYTHON2_FOR_BUILD=1
@ -466,7 +524,7 @@ install -Dpm0755 out/Debug/node %{buildroot}/%{_bindir}/node_g
%if %{?with_libs} == 1 %if %{?with_libs} == 1
# Install library symlink # 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 # Install v8 compatibility symlinks
for header in %{buildroot}%{_includedir}/node/libplatform %{buildroot}%{_includedir}/node/v8*.h; do for header in %{buildroot}%{_includedir}/node/libplatform %{buildroot}%{_includedir}/node/v8*.h; do
@ -474,8 +532,8 @@ for header in %{buildroot}%{_includedir}/node/libplatform %{buildroot}%{_include
ln -s %{_includedir}/node/${header} %{buildroot}%{_includedir}/${header} ln -s %{_includedir}/node/${header} %{buildroot}%{_includedir}/${header}
done done
for soname in libv8 libv8_libbase libv8_libplatform; do for soname in libv8 libv8_libbase libv8_libplatform; do
ln -s %{_libdir}/libnode.so.%{nodejs_soversion} %{buildroot}%{_libdir}/${soname}.so ln -s 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.%{v8_major}
done done
%endif %endif
@ -492,12 +550,12 @@ echo 'nodejs(v8-abi%{v8_major}) >= %v8_abi'
EOF EOF
chmod 0755 %{buildroot}%{_rpmconfigdir}/nodejs_native.req chmod 0755 %{buildroot}%{_rpmconfigdir}/nodejs_native.req
#install documentation # install documentation
mkdir -p %{buildroot}%{_pkgdocdir}/html mkdir -p %{buildroot}%{_pkgdocdir}/html
cp -pr doc/* %{buildroot}%{_pkgdocdir}/html cp -pr doc/* %{buildroot}%{_pkgdocdir}/html
rm -f %{buildroot}%{_pkgdocdir}/html/nodejs.1 rm -f %{buildroot}%{_pkgdocdir}/html/nodejs.1
#node-gyp needs common.gypi too # node-gyp needs common.gypi too
mkdir -p %{buildroot}%{_datadir}/node mkdir -p %{buildroot}%{_datadir}/node
cp -p common.gypi %{buildroot}%{_datadir}/node cp -p common.gypi %{buildroot}%{_datadir}/node
@ -512,14 +570,11 @@ cp -pr deps/npm/man/* %{buildroot}%{_mandir}/
rm -rf %{buildroot}%{_prefix}/lib/node_modules/npm/man rm -rf %{buildroot}%{_prefix}/lib/node_modules/npm/man
ln -sf %{_mandir} %{buildroot}%{_prefix}/lib/node_modules/npm/man ln -sf %{_mandir} %{buildroot}%{_prefix}/lib/node_modules/npm/man
# Install Markdown and HTML documentation to %{_pkgdocdir} # Install Gatsby HTML documentation to %{_pkgdocdir}
cp -pr deps/npm/html deps/npm/doc %{buildroot}%{_pkgdocdir}/npm/ cp -pr deps/npm/docs %{buildroot}%{_pkgdocdir}/npm/
rm -rf %{buildroot}%{_prefix}/lib/node_modules/npm/html \ rm -rf %{buildroot}%{_prefix}/lib/node_modules/npm/docs
%{buildroot}%{_prefix}/lib/node_modules/npm/doc
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 # Node tries to install some python files into a documentation directory
# (and not the proper one). Remove them for now until we figure out what to # (and not the proper one). Remove them for now until we figure out what to
@ -539,6 +594,18 @@ find %{buildroot}%{_prefix}/lib/node_modules/npm \
chmod 0755 %{buildroot}%{_prefix}/lib/node_modules/npm/node_modules/npm-lifecycle/node-gyp-bin/node-gyp chmod 0755 %{buildroot}%{_prefix}/lib/node_modules/npm/node_modules/npm-lifecycle/node-gyp-bin/node-gyp
chmod 0755 %{buildroot}%{_prefix}/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js chmod 0755 %{buildroot}%{_prefix}/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js
# Drop the NPM default configuration in place
mkdir -p %{buildroot}%{_sysconfdir}
cp %{SOURCE1} %{buildroot}%{_sysconfdir}/npmrc
# NPM upstream expects it to be in /usr/etc/npmrc, so we'll put a symlink here
# This is done in the interests of keeping /usr read-only.
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 %check
%if %{?with_libs} == 1 %if %{?with_libs} == 1
@ -552,7 +619,12 @@ LD_LIBRARY_PATH=%{buildroot}%{_libdir} %{buildroot}/%{_bindir}/node -e "require(
# Ensure we have npm and that the version matches # Ensure we have npm and that the version matches
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}')" 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 --icu-data-dir=%{buildroot}%{icudatadir} %{SOURCE2}
%else %else
# Fail the build if the versions don't match # Fail the build if the versions don't match
%{buildroot}/%{_bindir}/node -e "require('assert').equal(process.versions.node, '%{nodejs_version}')" %{buildroot}/%{_bindir}/node -e "require('assert').equal(process.versions.node, '%{nodejs_version}')"
%{buildroot}/%{_bindir}/node -e "require('assert').equal(process.versions.v8.replace(/-node\.\d+$/, ''), '%{v8_version}')" %{buildroot}/%{_bindir}/node -e "require('assert').equal(process.versions.v8.replace(/-node\.\d+$/, ''), '%{v8_version}')"
@ -563,6 +635,9 @@ NODE_PATH=%{buildroot}%{_prefix}/lib/node_modules:%{buildroot}%{_prefix}/lib/nod
# Ensure we have npm and that the version matches # Ensure we have npm and that the version matches
NODE_PATH=%{buildroot}%{_prefix}/lib/node_modules:%{buildroot}%{_prefix}/lib/node_modules/npm/node_modules %{buildroot}/%{_bindir}/node -e "require(\"assert\").equal(require(\"npm\").version, '%{npm_version}')" NODE_PATH=%{buildroot}%{_prefix}/lib/node_modules:%{buildroot}%{_prefix}/lib/node_modules/npm/node_modules %{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 %{buildroot}/%{_bindir}/node --icu-data-dir=%{buildroot}%{icudatadir} %{SOURCE2}
%endif %endif
@ -613,7 +688,7 @@ if st and st.type == "directory" then
end end
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 -- Drop this scriptlet when F31 is EOL
path = "%{_prefix}/lib/node_modules/npm/man" path = "%{_prefix}/lib/node_modules/npm/man"
st = posix.stat(path) st = posix.stat(path)
@ -668,7 +743,7 @@ end
%{_rpmconfigdir}/fileattrs/nodejs_native.attr %{_rpmconfigdir}/fileattrs/nodejs_native.attr
%{_rpmconfigdir}/nodejs_native.req %{_rpmconfigdir}/nodejs_native.req
%license LICENSE %license LICENSE
%doc AUTHORS CHANGELOG.md COLLABORATOR_GUIDE.md GOVERNANCE.md README.md %doc AUTHORS CHANGELOG.md onboarding.md GOVERNANCE.md README.md
%doc %{_mandir}/man1/node.1* %doc %{_mandir}/man1/node.1*
@ -684,12 +759,18 @@ end
%{_pkgdocdir}/gdbinit %{_pkgdocdir}/gdbinit
%files full-i18n
%dir %{icudatadir}
%{icudatadir}/icudt%{icu_major}*.dat
%if %{?with_libs} == 1 %if %{?with_libs} == 1
%files libs %files libs
%{_libdir}/libnode.so.%{nodejs_soversion} %{_libdir}/libnode.so.%{nodejs_soversion}
%{_libdir}/libv8.so.%{v8_major} %{_libdir}/libv8.so.%{v8_major}
%{_libdir}/libv8_libbase.so.%{v8_major} %{_libdir}/libv8_libbase.so.%{v8_major}
%{_libdir}/libv8_libplatform.so.%{v8_major} %{_libdir}/libv8_libplatform.so.%{v8_major}
%dir %{nodejs_datadir}/
%files -n v8-devel %files -n v8-devel
@ -706,23 +787,59 @@ end
%{_bindir}/npm %{_bindir}/npm
%{_bindir}/npx %{_bindir}/npx
%{_prefix}/lib/node_modules/npm %{_prefix}/lib/node_modules/npm
%ghost %{_sysconfdir}/npmrc %config(noreplace) %{_sysconfdir}/npmrc
%{_prefix}/etc/npmrc
%ghost %{_sysconfdir}/npmignore %ghost %{_sysconfdir}/npmignore
%doc %{_mandir}/man*/npm* %doc %{_mandir}/man1/npm*.1*
%doc %{_mandir}/man*/npx* %doc %{_mandir}/man1/npx.1*
%doc %{_mandir}/man5/package.json.5* %doc %{_mandir}/man5/folders.5*
%doc %{_mandir}/man5/package-lock.json.5* %doc %{_mandir}/man5/install.5*
%doc %{_mandir}/man7/removing-npm.7* %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* %doc %{_mandir}/man7/semver.7*
%files docs %files docs
%dir %{_pkgdocdir} %dir %{_pkgdocdir}
%{_pkgdocdir}/html %{_pkgdocdir}/html
%{_pkgdocdir}/npm/html %{_pkgdocdir}/npm/docs
%{_pkgdocdir}/npm/doc
%changelog %changelog
* Tue Jun 30 2020 Jan Staněk <jstanek@redhat.com> - 12.18.2-1
- Rebase to 12.18.2
* Thu Jun 18 2020 Zuzana Svetlikova <zsvetlik@redhat.com> - 1:12.18.1-1
- Rebase
- Spec clean up
- Provide i18n package, bundle icu
- Resolves: RHBZ#1845311, RHBZ#1845692
* Thu Jun 18 2020 Zuzana Svetlikova <zsvetlik@redhat.com> - 1:12.18.0-1
- Security update to 12.18.0
- Resolves: RHBZ#1845311, RHBZ#1845692
* Tue Mar 17 2020 Zuzana Svetlikova <zsvetlik@redhat.com> - 1:12.16.1-2
- Fix CVE-2020-10531
* Thu Feb 20 2020 Zuzana Svetlikova <zsvetlik@redhat.com> - 1:12.16.1-1
- Resolves: RHBZ#1800395, RHBZ#1800396, RHBZ#1800381
- Rebase to 12.16.1
* Wed Jan 15 2020 Jan Staněk <jstanek@redhat.com> - 1:12.14.1-1
- Rebase to 12.14.1
* Fri Nov 29 2019 Zuzana Svetlikova <zsvetlik@redhat.com> - 1:12.13.1-1 * Fri Nov 29 2019 Zuzana Svetlikova <zsvetlik@redhat.com> - 1:12.13.1-1
- Resolves: RHBZ# 1773503, update to 12.13.1 - Resolves: RHBZ# 1773503, update to 12.13.1
- minor clean up and sync with Fedora spec - minor clean up and sync with Fedora spec