1 Summary: Asynchronous JavaScript Engine
7 URL: http://nodejs.org/
8 Source0: http://nodejs.org/dist/v%{version}/node-v%{version}.tar.gz
9 # Source0-md5: 43836ebd6e8e9059c4584e3b5ab50009
10 Patch1: %{name}-soname.patch
11 # force node to use /usr/lib/node as the systemwide module directory
12 Patch2: %{name}-libpath.patch
13 # use /usr/lib64/node as an arch-specific module dir when appropriate
14 Patch3: %{name}-lib64path.patch
15 BuildRequires: c-ares-devel >= 1.7.4
16 BuildRequires: gcc >= 5:4.0
17 BuildRequires: libeio-devel
18 BuildRequires: libev-devel >= 4.0.0
19 BuildRequires: libstdc++-devel
20 BuildRequires: python >= 1:2.5.2
21 BuildRequires: python-jsmin
22 BuildRequires: rpm >= 4.4.9-56
23 BuildRequires: v8-devel >= 3.6
24 ExclusiveArch: %{ix86} %{x8664} arm
25 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
28 Node's goal is to provide an easy way to build scalable network
29 programs. In the above example, the two second delay does not prevent
30 the server from handling new requests. Node tells the operating system
31 (through epoll, kqueue, /dev/poll, or select) that it should be
32 notified when the 2 seconds are up or if a new connection is made --
33 then it goes to sleep. If someone new connects, then it executes the
34 callback, if the timeout expires, it executes the inner callback. Each
35 connection is only a small heap allocation.
38 Summary: Development headers for nodejs
39 Group: Development/Libraries
40 Requires: %{name} = %{version}-%{release}
43 Development headers for nodejs.
46 Summary: Evented I/O for V8 JavaScript - documentation
50 Node.js is a server-side JavaScript environment that uses an
51 asynchronous event-driven model. Node's goal is to provide an easy way
52 to build scalable network programs.
54 This package contains the documentation for nodejs.
57 Summary: Evented I/O for V8 JavaScript - customized WAF build system
59 Requires: %{name} = %{version}-%{release}
62 Node.js is a server-side JavaScript environment that uses an
63 asynchronous event-driven model. Node's goal is to provide an easy way
64 to build scalable network programs.
66 This package contains the customized version of the WAF build system
67 used by Node.js and many of its modules.
70 %setup -q -n node-v%{version}
72 %if %{_lib} == "lib64"
81 CFLAGS="%{rpmcflags} -fPIC"
82 CXXFLAGS="%{rpmcxxflags} -fPIC"
83 LDFLAGS="%{rpmcflags}"
84 %if "%{pld_release}" == "ac"
91 export CFLAGS LDFLAGS CXXFLAGS CC CXX
93 # NOT autoconf so dont use macro
94 export PYTHONPATH=tools
105 # relink with shared lib
106 $CC -o out/Release/node src/node_main.cc -Isrc -Ideps/uv/include -lnode -Lout/Release
109 rm -rf $RPM_BUILD_ROOT
111 DESTDIR=$RPM_BUILD_ROOT
114 export PYTHONPATH=tools
115 %{__python} tools/waf-light install \
116 --product-type=cshlib \
117 --destdir=$RPM_BUILD_ROOT
119 chmod a+x $RPM_BUILD_ROOT%{_libdir}/*.so*
122 install -d $RPM_BUILD_ROOT%{_pkgconfigdir}
123 cat <<'EOF' > $RPM_BUILD_ROOT%{_pkgconfigdir}/%{name}.pc
126 libdir=${prefix}/%{_lib}
127 includedir=${prefix}/include/node
130 Description: Evented I/O for V8 JavaScript.
132 Cflags: -I${includedir}
135 # install documentation
136 install -d $RPM_BUILD_ROOT%{_docdir}/%{name}-doc-%{version}/html
137 cp -a doc/* $RPM_BUILD_ROOT%{_docdir}/%{name}-doc-%{version}/html
138 cd $RPM_BUILD_ROOT%{_docdir}/%{name}-doc-%{version}
140 mv html/api/*.markdown api
141 mv html/api/api/* html/api
145 # remove NPM; it's buggy in 0.6.3
146 # but really we package npm from separate spec
147 rm -rf $RPM_BUILD_ROOT%{_libdir}/node_modules
148 rm $RPM_BUILD_ROOT%{_bindir}/npm
151 rm -rf $RPM_BUILD_ROOT
153 %post -p /sbin/ldconfig
154 %postun -p /sbin/ldconfig
157 %defattr(644,root,root,755)
158 %doc README.md AUTHORS ChangeLog LICENSE
159 %attr(755,root,root) %{_bindir}/node
160 %attr(755,root,root) %{_libdir}/libnode.so.*.*.*
161 %ghost %{_libdir}/libnode.so.4
163 %{_mandir}/man1/node.1*
166 %defattr(644,root,root,755)
167 %{_libdir}/libnode.so
169 %{_pkgconfigdir}/nodejs.pc
172 %defattr(644,root,root,755)
173 %doc %{_docdir}/%{name}-doc-%{version}
176 %defattr(644,root,root,755)
177 %attr(755,root,root) %{_bindir}/node-waf
178 %dir %{_libdir}/node/wafadmin
179 %dir %{_libdir}/node/wafadmin/Tools
180 %{_libdir}/node/wafadmin/*.py
181 %{_libdir}/node/wafadmin/Tools/*.py