improve native module handling
- add virtual ABI provides for node and v8 so binary module's deps break when binary compatibility is broken - automatically add matching Requires to nodejs binary modules - add %%nodejs_arches macro to future-proof ExcluseArch stanza in dependent packages
This commit is contained in:
parent
fa0d205a4d
commit
acc9dc4070
@ -22,3 +22,6 @@
|
|||||||
# `%%nodejs_fixdep frobber '>1.0'` requires frobber > 1.0
|
# `%%nodejs_fixdep frobber '>1.0'` requires frobber > 1.0
|
||||||
# `%%nodejs_fixdep -r frobber removes the frobber dep
|
# `%%nodejs_fixdep -r frobber removes the frobber dep
|
||||||
%nodejs_fixdep %{_rpmconfigdir}/nodejs-fixdep
|
%nodejs_fixdep %{_rpmconfigdir}/nodejs-fixdep
|
||||||
|
|
||||||
|
# ExclusiveArch listing for dependent packages
|
||||||
|
%nodejs_arches %{ix86} x86_64 %{arm}
|
||||||
|
32
nodejs.spec
32
nodejs.spec
@ -1,6 +1,6 @@
|
|||||||
Name: nodejs
|
Name: nodejs
|
||||||
Version: 0.10.0
|
Version: 0.10.0
|
||||||
Release: 2%{?dist}
|
Release: 3%{?dist}
|
||||||
Summary: JavaScript runtime
|
Summary: JavaScript runtime
|
||||||
License: MIT and ASL 2.0 and ISC and BSD
|
License: MIT and ASL 2.0 and ISC and BSD
|
||||||
Group: Development/Languages
|
Group: Development/Languages
|
||||||
@ -16,11 +16,13 @@ Source3: nodejs.prov
|
|||||||
Source4: nodejs.req
|
Source4: nodejs.req
|
||||||
Source5: nodejs-symlink-deps
|
Source5: nodejs-symlink-deps
|
||||||
Source6: nodejs-fixdep
|
Source6: nodejs-fixdep
|
||||||
|
Source7: nodejs_native.attr
|
||||||
|
|
||||||
# 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,
|
||||||
# so we need to be more explicit until spot fixes that
|
# so we need to be more explicit until spot fixes that
|
||||||
%global v8_ge 1:3.14.5.7
|
%global v8_ge 1:3.14.5.7
|
||||||
%global v8_lt 1:3.15
|
%global v8_lt 1:3.15
|
||||||
|
%global v8_abi 3.14
|
||||||
|
|
||||||
BuildRequires: v8-devel >= %{v8_ge}
|
BuildRequires: v8-devel >= %{v8_ge}
|
||||||
BuildRequires: http-parser-devel >= 2.0
|
BuildRequires: http-parser-devel >= 2.0
|
||||||
@ -33,7 +35,13 @@ BuildRequires: openssl-devel >= 1:1.0.1
|
|||||||
Requires: v8%{?isa} >= %{v8_ge}
|
Requires: v8%{?isa} >= %{v8_ge}
|
||||||
Requires: v8%{?isa} < %{v8_lt}
|
Requires: v8%{?isa} < %{v8_lt}
|
||||||
|
|
||||||
#virtual provides for automatic depedency generation
|
#we need ABI virtual provides where SONAMEs aren't enough/not present so deps
|
||||||
|
#break when binary compatibility is broken
|
||||||
|
%global nodejs_abi 0.10
|
||||||
|
Provides: nodejs(abi) = %{nodejs_abi}
|
||||||
|
Provides: nodejs(v8-abi) = %{v8_abi}
|
||||||
|
|
||||||
|
#this corresponds to the "engine" requirement in package.json
|
||||||
Provides: nodejs(engine) = %{version}
|
Provides: nodejs(engine) = %{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
|
||||||
@ -134,6 +142,17 @@ install -pm0755 %{SOURCE3} %{buildroot}%{_rpmconfigdir}/nodejs.prov
|
|||||||
install -pm0755 %{SOURCE4} %{buildroot}%{_rpmconfigdir}/nodejs.req
|
install -pm0755 %{SOURCE4} %{buildroot}%{_rpmconfigdir}/nodejs.req
|
||||||
install -pm0755 %{SOURCE5} %{buildroot}%{_rpmconfigdir}/nodejs-symlink-deps
|
install -pm0755 %{SOURCE5} %{buildroot}%{_rpmconfigdir}/nodejs-symlink-deps
|
||||||
install -pm0755 %{SOURCE6} %{buildroot}%{_rpmconfigdir}/nodejs-fixdep
|
install -pm0755 %{SOURCE6} %{buildroot}%{_rpmconfigdir}/nodejs-fixdep
|
||||||
|
install -Dpm0644 %{SOURCE7} %{buildroot}%{_rpmconfigdir}/fileattrs/nodejs_native.attr
|
||||||
|
|
||||||
|
|
||||||
|
# ensure Requires are added to every native module that match the Provides from
|
||||||
|
# the nodejs build in the buildroot
|
||||||
|
cat << EOF > %{buildroot}%{_rpmconfigdir}/nodejs_native.req
|
||||||
|
#!/bin/sh
|
||||||
|
echo 'nodejs(abi) = %nodejs_abi'
|
||||||
|
echo 'nodejs(v8-abi) = %v8_abi'
|
||||||
|
EOF
|
||||||
|
chmod 0755 %{buildroot}%{_rpmconfigdir}/nodejs_native.req
|
||||||
|
|
||||||
#install documentation
|
#install documentation
|
||||||
mkdir -p %{buildroot}%{_defaultdocdir}/%{name}-docs-%{version}/html
|
mkdir -p %{buildroot}%{_defaultdocdir}/%{name}-docs-%{version}/html
|
||||||
@ -162,13 +181,20 @@ cp -p common.gypi %{buildroot}%{_datadir}/node
|
|||||||
%{_includedir}/node
|
%{_includedir}/node
|
||||||
%{_datadir}/node
|
%{_datadir}/node
|
||||||
%{_sysconfdir}/rpm/macros.nodejs
|
%{_sysconfdir}/rpm/macros.nodejs
|
||||||
%{_rpmconfigdir}/fileattrs/nodejs.attr
|
%{_rpmconfigdir}/fileattrs/nodejs*.attr
|
||||||
%{_rpmconfigdir}/nodejs*
|
%{_rpmconfigdir}/nodejs*
|
||||||
|
|
||||||
%files docs
|
%files docs
|
||||||
%{_defaultdocdir}/%{name}-docs-%{version}
|
%{_defaultdocdir}/%{name}-docs-%{version}
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Wed Mar 13 2013 T.C. Hollingsworth <tchollingsworth@gmail.com> - 0.10.0-3
|
||||||
|
- add virtual ABI provides for node and v8 so binary module's deps break when
|
||||||
|
binary compatibility is broken
|
||||||
|
- automatically add matching Requires to nodejs binary modules
|
||||||
|
- add %%nodejs_arches macro to future-proof ExcluseArch stanza in dependent
|
||||||
|
packages
|
||||||
|
|
||||||
* Tue Mar 12 2013 Stephen Gallagher <sgallagh@redhat.com> - 0.10.0-2
|
* Tue Mar 12 2013 Stephen Gallagher <sgallagh@redhat.com> - 0.10.0-2
|
||||||
- Fix up documentation subpackage
|
- Fix up documentation subpackage
|
||||||
|
|
||||||
|
2
nodejs_native.attr
Normal file
2
nodejs_native.attr
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
%__nodejs_native_requires %{_rpmconfigdir}/nodejs_native.req
|
||||||
|
%__nodejs_native_path ^/usr/lib.*/node_modules/.*\.node$
|
Loading…
Reference in New Issue
Block a user