]> git.pld-linux.org Git - packages/nodejs.git/blame - nodejs.spec
a bit doc for NODE_MODULE_VERSION
[packages/nodejs.git] / nodejs.spec
CommitLineData
cc3de6db
ER
1# TODO
2# - unpackaged files
3# /usr/share/doc/node/gdbinit
4# /usr/share/systemtap/tapset/node.stp
5
29d6d704 6# Conditional build:
4a5eff4b 7%bcond_without system_uv # system uv
3de234b3 8%bcond_with shared # build libnode.so shared library
29d6d704 9
8611106e
ER
10# NOTES:
11# - https://nodejs.org/en/download/releases/
12
e9b6043f
ER
13# NODE_MODULE_VERSION refers to the ABI (application binary interface) version
14# number of Node.js, used to determine which versions of Node.js compiled C++
15# add-on binaries can be loaded in to without needing to be re-compiled. It
16# used to be stored as hex value in earlier versions, but is now represented as
17# an integer.
c8ef6556 18%define node_module_version 46
210abff9 19Summary: Asynchronous JavaScript Engine
20Name: nodejs
318ea6db 21# 4.5.0 is LTS
22Version: 4.5.0
8a005758 23Release: 1
d5764a43 24License: BSD and MIT and Apache v2.0 and GPL v3
e85103e0 25Group: Development/Languages
8611106e 26Source0: https://nodejs.org/dist/v%{version}/node-v%{version}.tar.gz
318ea6db 27# Source0-md5: 1885586b4b8a2263f77dce27855661e9
4174c079 28Patch1: %{name}-shared.patch
a6070ceb
ER
29# force node to use /usr/lib/node as the systemwide module directory
30Patch2: %{name}-libpath.patch
31# use /usr/lib64/node as an arch-specific module dir when appropriate
32Patch3: %{name}-lib64path.patch
58e86022 33Patch4: %{name}-use-system-certs.patch
1385a038 34Patch5: uv-fpic.patch
8611106e 35URL: https://nodejs.org/
12a49d35 36BuildRequires: gcc >= 5:4.0
318ea6db 37BuildRequires: http-parser-devel >= 2.7.0
210abff9 38BuildRequires: libstdc++-devel
4a5eff4b 39%{?with_system_uv:BuildRequires: libuv-devel >= 1.6.0}
94f7bd52 40BuildRequires: openssl-devel >= 1.0.1
cd4c73aa 41BuildRequires: pkgconfig
91adacca 42BuildRequires: python >= 1:2.7
a6070ceb 43BuildRequires: python-jsmin
a582f315 44BuildRequires: python-modules
12a49d35 45BuildRequires: rpm >= 4.4.9-56
d44c8857 46BuildRequires: rpmbuild(macros) >= 1.219
536f9f5a 47BuildRequires: sed >= 4.0
cd4c73aa 48BuildRequires: zlib-devel
58e86022 49Requires: ca-certificates
8d8e2928 50Provides: nodejs(engine) = %{version}
56d9fb33 51Provides: nodejs(module-version) = %{node_module_version}
5ef76b51 52Obsoletes: nodejs-waf
210abff9 53ExclusiveArch: %{ix86} %{x8664} arm
54BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
55
dc60a63b 56%define sover %(echo %{version} | cut -d. -f2)
05e85ef1
ER
57# add macro, so adapter won't replace it back literal
58%define doc_ver %{version}
dc60a63b 59
210abff9 60%description
c3b531ba
ER
61Node.js is a platform built on Chrome's JavaScript runtime for easily
62building fast, scalable network applications. Node.js uses an
63event-driven, non-blocking I/O model that makes it lightweight and
64efficient, perfect for data-intensive real-time applications that run
65across distributed devices.
210abff9 66
210abff9 67%package devel
12a49d35 68Summary: Development headers for nodejs
210abff9 69Group: Development/Libraries
a8f57a3f 70Requires: %{name} = %{version}-%{release}
d44c8857 71Requires: gcc
94f7bd52 72Requires: http-parser-devel >= 2.5.0
d44c8857 73Requires: libstdc++-devel
94f7bd52 74%{?with_system_uv:Requires: libuv-devel >= 1.6.0}
96f19ba5 75Requires: openssl-devel
96f19ba5 76Requires: zlib-devel
210abff9 77
78%description devel
12a49d35 79Development headers for nodejs.
210abff9 80
a6070ceb
ER
81%package doc
82Summary: Evented I/O for V8 JavaScript - documentation
83Group: Documentation
05e85ef1 84URL: https://nodejs.org/dist/v%{doc_ver}/docs/api
b6b2dd9b
ER
85%if "%{_rpmversion}" >= "5"
86BuildArch: noarch
87%endif
a6070ceb
ER
88
89%description doc
90Node.js is a server-side JavaScript environment that uses an
91asynchronous event-driven model. Node's goal is to provide an easy way
92to build scalable network programs.
93
94This package contains the documentation for nodejs.
95
210abff9 96%prep
97%setup -q -n node-v%{version}
9ea1462f 98%{?with_shared:%patch1 -p1}
3de234b3 99#%patch1 -p1
a6070ceb
ER
100%if %{_lib} == "lib64"
101%patch3 -p1
102%else
103%patch2 -p1
104%endif
58e86022 105%patch4 -p1
1f0413db 106rm src/node_root_certs.h
3de234b3 107#%{?with_system_uv:%patch5 -p1}
c4aa3bb0 108
536f9f5a
ER
109grep -r '#!.*env python' -l . | xargs %{__sed} -i -e '1 s,#!.*env python,#!%{__python},'
110
29d6d704 111rm -r deps/npm
29d6d704
ER
112rm -r deps/http_parser
113rm -r deps/openssl
21f5955d 114%{?with_system_uv:rm -r deps/uv}
29d6d704 115rm -r deps/zlib
e3e8568d 116
210abff9 117%build
c8ef6556 118ver=$(awk '/#define NODE_MODULE_VERSION/{print $3}' src/node_version.h)
145d5ed0 119test "$ver" = "%{node_module_version}"
56d9fb33 120
a11025a6
ER
121# CC used only to detect if CC is clang, not used for compiling
122CC="%{__cc}" \
123CXX="%{__cxx}" \
dc60a63b 124GYP_DEFINES="soname_version=%{sover}" \
a6070ceb 125./configure \
a6070ceb 126 --shared-zlib \
be06d6d0 127 --shared-openssl \
3de234b3 128 %{?0:--shared-cares} \
21f5955d 129 %{?with_system_uv:--shared-libuv} \
e427e9b0 130 --shared-http-parser \
7223b5ac 131 --without-npm \
c1c359b8 132 --without-dtrace \
210abff9 133 --prefix=%{_prefix}
134
a11025a6
ER
135# add LFS defines from libuv (RHBZ#892601)
136# CXXFLAGS must be exported, as it is needed for make, not gyp
137CXXFLAGS="%{rpmcxxflags} -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -fPIC" \
138LDFLAGS="%{rpmldflags}" \
139%{__make} -C out V=1 BUILDTYPE=Release
210abff9 140
141%install
142rm -rf $RPM_BUILD_ROOT
9618d15b 143%{__python} tools/install.py install "$RPM_BUILD_ROOT" "%{_prefix}"
4174c079 144
9ea1462f 145%if %{with shared}
f9cee3b6 146lib=$(basename $RPM_BUILD_ROOT%{_libdir}/libnode.so.*.*.*)
4174c079
ER
147ln -s $lib $RPM_BUILD_ROOT%{_libdir}/libnode.so.10
148ln -s $lib $RPM_BUILD_ROOT%{_libdir}/libnode.so
9ea1462f 149%endif
a6070ceb 150
c7898157
ER
151echo '.so man1/node.1' > $RPM_BUILD_ROOT%{_mandir}/man1/nodejs.1
152
1ed21df5 153install -d $RPM_BUILD_ROOT%{_includedir}/node
4174c079 154cp -p src/*.h $RPM_BUILD_ROOT%{_includedir}/node
d5764a43
ER
155
156# install for node-gyp
157install -d $RPM_BUILD_ROOT%{_usrsrc}/%{name}
158cp -p common.gypi $RPM_BUILD_ROOT%{_usrsrc}/%{name}
159ln -s %{_includedir}/node $RPM_BUILD_ROOT%{_usrsrc}/%{name}/src
1ed21df5 160
e85103e0 161# for compat of fedora derivered scripts (shebangs)
c3b531ba
ER
162ln -s node $RPM_BUILD_ROOT%{_bindir}/nodejs
163
e85103e0
ER
164# globally installed node modules (noarch)
165install -d $RPM_BUILD_ROOT%{_prefix}/lib/node_modules
166
167# default searchpaths
168install -d $RPM_BUILD_ROOT{%{_libdir},%{_prefix}/lib}/node
169
a6070ceb
ER
170# create pkgconfig
171install -d $RPM_BUILD_ROOT%{_pkgconfigdir}
172cat <<'EOF' > $RPM_BUILD_ROOT%{_pkgconfigdir}/%{name}.pc
173version=%{version}
c3b531ba 174prefix=%{_prefix}
87c4fdf2 175libdir=${prefix}/%{_lib}
a6070ceb
ER
176includedir=${prefix}/include/node
177
178Name: nodejs
179Description: Evented I/O for V8 JavaScript.
180Version: ${version}
181Cflags: -I${includedir}
182EOF
a752c1c0 183
a6070ceb 184# install documentation
6f7eebb5
ER
185install -d $RPM_BUILD_ROOT%{_docdir}/%{name}-doc-%{version}
186cp -a doc/api/* $RPM_BUILD_ROOT%{_docdir}/%{name}-doc-%{version}
318ea6db 187rm $RPM_BUILD_ROOT%{_docdir}/%{name}-doc-%{version}/*.md
6f7eebb5 188rm $RPM_BUILD_ROOT%{_docdir}/%{name}-doc-%{version}/*.json
a6070ceb 189
210abff9 190%clean
191rm -rf $RPM_BUILD_ROOT
192
9ea1462f 193%if %{with shared}
4174c079 194%post -p /sbin/ldconfig
7372d27d 195%postun -p /sbin/ldconfig
9ea1462f 196%endif
7372d27d 197
210abff9 198%files
199%defattr(644,root,root,755)
9618d15b 200%doc README.md AUTHORS CHANGELOG.md ROADMAP.md LICENSE
210abff9 201%attr(755,root,root) %{_bindir}/node
c3b531ba 202%attr(755,root,root) %{_bindir}/nodejs
9ea1462f 203%if %{with shared}
a600c300 204%attr(755,root,root) %{_libdir}/libnode.so.*.*.*
2492de83 205%ghost %{_libdir}/libnode.so.10
9ea1462f 206%endif
a600c300 207%if "%{_lib}" != "lib"
8791ea86 208%dir %{_libdir}/node
a600c300
ŁC
209%endif
210%dir %{_prefix}/lib/node
e85103e0 211%dir %{_prefix}/lib/node_modules
210abff9 212%{_mandir}/man1/node.1*
c7898157 213%{_mandir}/man1/nodejs.1
210abff9 214
210abff9 215%files devel
216%defattr(644,root,root,755)
9ea1462f 217%if %{with shared}
a600c300 218%{_libdir}/libnode.so
9ea1462f 219%endif
58494f0c 220%{_includedir}/node
a6070ceb 221%{_pkgconfigdir}/nodejs.pc
d5764a43 222%{_usrsrc}/%{name}
a6070ceb
ER
223
224%files doc
225%defattr(644,root,root,755)
226%doc %{_docdir}/%{name}-doc-%{version}
This page took 0.067299 seconds and 4 git commands to generate.