16 |
# feature releases that are only supported for nine months, which is shorter |
# feature releases that are only supported for nine months, which is shorter |
17 |
# than a Mageia release lifecycle. |
# than a Mageia release lifecycle. |
18 |
%global nodejs_epoch 1 |
%global nodejs_epoch 1 |
19 |
%global nodejs_major 8 |
%global nodejs_major 10 |
20 |
%global nodejs_minor 11 |
%global nodejs_minor 9 |
21 |
%global nodejs_patch 4 |
%global nodejs_patch 0 |
22 |
%global nodejs_rel 1 |
%global nodejs_rel 1 |
23 |
%global nodejs_abi %{nodejs_major}.%{nodejs_minor} |
%global nodejs_abi %{nodejs_major}.%{nodejs_minor} |
24 |
%global nodejs_version %{nodejs_major}.%{nodejs_minor}.%{nodejs_patch} |
%global nodejs_version %{nodejs_major}.%{nodejs_minor}.%{nodejs_patch} |
27 |
# == Bundled Dependency Versions == |
# == Bundled Dependency Versions == |
28 |
# v8 - from deps/v8/include/v8-version.h |
# v8 - from deps/v8/include/v8-version.h |
29 |
%global v8_major 6 |
%global v8_major 6 |
30 |
%global v8_minor 2 |
%global v8_minor 8 |
31 |
%global v8_build 414 |
%global v8_build 275 |
32 |
%global v8_patch 54 |
%global v8_patch 24 |
33 |
# 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 |
34 |
%global v8_abi %{v8_major}.%{v8_minor} |
%global v8_abi %{v8_major}.%{v8_minor} |
35 |
%global v8_version %{v8_major}.%{v8_minor}.%{v8_build}.%{v8_patch} |
%global v8_version %{v8_major}.%{v8_minor}.%{v8_build}.%{v8_patch} |
37 |
# c-ares - from deps/cares/include/ares_version.h |
# c-ares - from deps/cares/include/ares_version.h |
38 |
# https://github.com/nodejs/node/pull/9332 |
# https://github.com/nodejs/node/pull/9332 |
39 |
%global c_ares_major 1 |
%global c_ares_major 1 |
40 |
%global c_ares_minor 10 |
%global c_ares_minor 14 |
41 |
%global c_ares_patch 1 |
%global c_ares_patch 0 |
42 |
%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} |
43 |
|
|
44 |
# http-parser - from deps/http_parser/http_parser.h |
# http-parser - from deps/http_parser/http_parser.h |
51 |
# Note: this was merged into the mainline since 0.6.x |
# Note: this was merged into the mainline since 0.6.x |
52 |
# Note: this will be unmerged in v7 or v8 |
# Note: this will be unmerged in v7 or v8 |
53 |
%global punycode_major 2 |
%global punycode_major 2 |
54 |
%global punycode_minor 0 |
%global punycode_minor 1 |
55 |
%global punycode_patch 0 |
%global punycode_patch 0 |
56 |
%global punycode_version %{punycode_major}.%{punycode_minor}.%{punycode_patch} |
%global punycode_version %{punycode_major}.%{punycode_minor}.%{punycode_patch} |
57 |
|
|
58 |
# npm - from deps/npm/package.json |
# npm - from deps/npm/package.json |
59 |
%global npm_epoch 1 |
%global npm_epoch 1 |
60 |
%global npm_major 5 |
%global npm_major 6 |
61 |
%global npm_minor 6 |
%global npm_minor 2 |
62 |
%global npm_patch 0 |
%global npm_patch 0 |
63 |
%global npm_version %{npm_major}.%{npm_minor}.%{npm_patch} |
%global npm_version %{npm_major}.%{npm_minor}.%{npm_patch} |
64 |
|
|
86 |
# because openssl contains prohibited code, we remove openssl completely from |
# because openssl contains prohibited code, we remove openssl completely from |
87 |
# the tarball, using the script in Source100 |
# the tarball, using the script in Source100 |
88 |
# We also remove bundled nghttp2 since node can use the system one. |
# We also remove bundled nghttp2 since node can use the system one. |
89 |
Source0: node-v%{nodejs_version}-stripped.tar.gz |
Source0: node-v%{nodejs_version}-stripped.tar.xz |
90 |
Source100: %{name}-tarball.sh |
Source100: %{name}-tarball.sh |
91 |
|
|
92 |
# 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 |
95 |
Source7: nodejs_native.attr |
Source7: nodejs_native.attr |
96 |
|
|
97 |
# Disable running gyp on bundled deps we don't use |
# Disable running gyp on bundled deps we don't use |
98 |
Patch1: 0001-Disable-running-gyp-files-for-bundled-deps.patch |
Patch1: 0001-Disable-running-gyp-on-shared-deps.patch |
99 |
|
|
100 |
|
# Suppress the message from npm to run `npm -g update npm` |
101 |
|
# This does bad things on an RPM-managed npm. |
102 |
|
Patch2: 0002-Suppress-NPM-message-to-run-global-update.patch |
103 |
|
|
104 |
BuildRequires: pkgconfig(python2) |
BuildRequires: pkgconfig(python2) |
105 |
|
BuildRequires: pkgconfig(python3) |
106 |
BuildRequires: pkgconfig(libuv) |
BuildRequires: pkgconfig(libuv) |
107 |
Requires: libuv |
Requires: libuv |
108 |
BuildRequires: pkgconfig(zlib) |
BuildRequires: pkgconfig(zlib) |
109 |
BuildRequires: gcc >= 4.8.0 |
BuildRequires: gcc >= 4.8.0 |
110 |
BuildRequires: gcc-c++ >= 4.8.0 |
BuildRequires: gcc-c++ >= 4.8.0 |
|
BuildRequires: pkgconfig(libnghttp2) |
|
111 |
|
|
112 |
%if ! 0%{?bootstrap} |
%if ! 0%{?bootstrap} |
113 |
BuildRequires: systemtap |
BuildRequires: systemtap |
114 |
BuildRequires: http-parser-devel |
BuildRequires: http-parser-devel |
115 |
|
BuildRequires: pkgconfig(libuv) |
116 |
|
BuildRequires: pkgconfig(libnghttp2) |
117 |
%else |
%else |
118 |
Provides: bundled(http-parser) = %{http_parser_version} |
Provides: bundled(http-parser) = %{http_parser_version} |
119 |
%endif |
%endif |
120 |
|
|
121 |
|
BuildRequires: libicu-devel >= 62.1 |
122 |
BuildRequires: pkgconfig(openssl) |
BuildRequires: pkgconfig(openssl) |
123 |
|
|
124 |
#we need ABI virtual provides where SONAMEs aren't enough/not present so deps |
#we need ABI virtual provides where SONAMEs aren't enough/not present so deps |
239 |
rm -rf deps/uv \ |
rm -rf deps/uv \ |
240 |
deps/zlib |
deps/zlib |
241 |
|
|
242 |
|
# Replace any instances of unversioned python' with python2 |
243 |
|
find . -type f -exec sed -i "s~/usr\/bin\/env python~/usr/bin/python2~" {} \; |
244 |
|
find . -type f -exec sed -i "s~/usr\/bin\/python\W~/usr/bin/python2~" {} \; |
245 |
|
sed -i "s~python~python2~" $(find . -type f | grep "gyp$") |
246 |
|
sed -i "s~usr\/bin\/python2~usr\/bin\/python3~" ./deps/v8/tools/gen-inlining-tests.py |
247 |
|
sed -i "s~usr\/bin\/python.*$~usr\/bin\/python2~" ./deps/v8/tools/mb/mb_unittest.py |
248 |
|
find . -type f -exec sed -i "s~python -c~python2 -c~" {} \; |
249 |
|
sed -i "s~which('python')~which('python2')~" configure |
250 |
|
|
251 |
%build |
%build |
252 |
# build with debugging symbols and add defines from libuv (#892601) |
# build with debugging symbols and add defines from libuv (#892601) |
253 |
# 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 |
274 |
--shared-zlib \ |
--shared-zlib \ |
275 |
--shared-libuv \ |
--shared-libuv \ |
276 |
--shared-http-parser \ |
--shared-http-parser \ |
277 |
|
--shared-nghttp2 \ |
278 |
--with-dtrace \ |
--with-dtrace \ |
279 |
--with-intl=small-icu \ |
--with-intl=system-icu \ |
280 |
--openssl-use-def-ca-store |
--openssl-use-def-ca-store |
281 |
%else |
%else |
282 |
./configure --prefix=%{_prefix} \ |
./configure --prefix=%{_prefix} \ |
378 |
%check |
%check |
379 |
# Fail the build if the versions don't match |
# Fail the build if the versions don't match |
380 |
%{buildroot}/%{_bindir}/node -e "require('assert').equal(process.versions.node, '%{nodejs_version}')" |
%{buildroot}/%{_bindir}/node -e "require('assert').equal(process.versions.node, '%{nodejs_version}')" |
381 |
%{buildroot}/%{_bindir}/node -e "require('assert').equal(process.versions.v8, '%{v8_version}')" |
%{buildroot}/%{_bindir}/node -e "require('assert').equal(process.versions.v8.replace(/-node\.\d+$/, ''), '%{v8_version}')" |
382 |
%{buildroot}/%{_bindir}/node -e "require('assert').equal(process.versions.ares.replace(/-DEV$/, ''), '%{c_ares_version}')" |
%{buildroot}/%{_bindir}/node -e "require('assert').equal(process.versions.ares.replace(/-DEV$/, ''), '%{c_ares_version}')" |
383 |
|
|
384 |
# Ensure we have punycode and that the version matches |
# Ensure we have punycode and that the version matches |