X-Git-Url: http://git.pld-linux.org/?p=packages%2Fnodejs.git;a=blobdiff_plain;f=nodejs.spec;h=90d23b8fbff3509f9c03f97cb42376134ee4b22f;hp=3669eea259336fc17cfb989953eb7f3599157f95;hb=c3b531ba12cd0862e1a5157845fc8d9a10057e95;hpb=210abff975969e491c60ac09e4c9de6289ab6338 diff --git a/nodejs.spec b/nodejs.spec index 3669eea..90d23b8 100644 --- a/nodejs.spec +++ b/nodejs.spec @@ -1,127 +1,181 @@ - -# For the 1.2 branch, we use 0s here -# For 1.3+, we use the three digit versions -%define somajor 2 -%define sominor 1 -%define sobuild 2 -%define sover %{somajor}.%{sominor}.%{sobuild} - -%define snap 20100309svn4070 -%define rel 1 Summary: Asynchronous JavaScript Engine Name: nodejs -Version: 0.1.31 -Release: 0 +Version: 0.6.8 +Release: 1 License: BSD Group: Libraries -URL: http://nodejs.org/ -Source0: http://nodejs.org/dist/node-v%{version}.tar.gz -# Source0-md5: a9e0ba08539edbdc8e5611e7550f1c47 -Source1: http://www.crockford.com/javascript/jsmin.py.txt -# Source1-md5: 0521ddcf3e52457223c6e0d602486a89 -Patch0: %{name}-system-libs.patch -BuildRequires: gcc >= 4.0 +URL: http://www.nodejs.org/ +Source0: http://www.nodejs.org/dist/node-v%{version}.tar.gz +# Source0-md5: 9fd7baa2d27b848c3134e6ae35bb87b2 +Patch1: %{name}-soname.patch +# force node to use /usr/lib/node as the systemwide module directory +Patch2: %{name}-libpath.patch +# use /usr/lib64/node as an arch-specific module dir when appropriate +Patch3: %{name}-lib64path.patch +BuildRequires: c-ares-devel >= 1.7.4 +BuildRequires: gcc >= 5:4.0 BuildRequires: libeio-devel -BuildRequires: libev-devel >= 3.90 +BuildRequires: libev-devel >= 4.0.0 BuildRequires: libstdc++-devel -BuildRequires: python -BuildRequires: udns-devel -BuildRequires: v8-devel +BuildRequires: python >= 1:2.5.2 +BuildRequires: python-jsmin +BuildRequires: rpm >= 4.4.9-56 +BuildRequires: v8-devel >= 3.6 ExclusiveArch: %{ix86} %{x8664} arm BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n) %description -Node's goal is to provide an easy way to build scalable network -programs. In the above example, the two second delay does not prevent -the server from handling new requests. Node tells the operating system -(through epoll, kqueue, /dev/poll, or select) that it should be -notified when the 2 seconds are up or if a new connection is made -- -then it goes to sleep. If someone new connects, then it executes the -callback, if the timeout expires, it executes the inner callback. Each -connection is only a small heap allocation. - -%package libs -Summary: V8 JavaScript Engine shared library -Group: Libraries -Conflicts: v8 < 2.0.0 - -%description libs -V8 is Google's open source JavaScript engine. V8 is written in C++ and -is used in Google Chrome, the open source browser from Google. V8 -implements ECMAScript as specified in ECMA-262, 3rd edition. - -This package contains the shared library. +Node.js is a platform built on Chrome's JavaScript runtime for easily +building fast, scalable network applications. Node.js uses an +event-driven, non-blocking I/O model that makes it lightweight and +efficient, perfect for data-intensive real-time applications that run +across distributed devices. %package devel -Summary: Development headers and libraries for v8 +Summary: Development headers for nodejs Group: Development/Libraries -Requires: %{name}-libs = %{version}-%{release} +Requires: %{name} = %{version}-%{release} %description devel -Development headers and libraries for v8. +Development headers for nodejs. + +%package doc +Summary: Evented I/O for V8 JavaScript - documentation +Group: Documentation + +%description doc +Node.js is a server-side JavaScript environment that uses an +asynchronous event-driven model. Node's goal is to provide an easy way +to build scalable network programs. + +This package contains the documentation for nodejs. + +%package waf +Summary: Evented I/O for V8 JavaScript - customized WAF build system +Group: Libraries +Requires: %{name} = %{version}-%{release} + +%description waf +Node.js is a server-side JavaScript environment that uses an +asynchronous event-driven model. Node's goal is to provide an easy way +to build scalable network programs. + +This package contains the customized version of the WAF build system +used by Node.js and many of its modules. %prep %setup -q -n node-v%{version} -%patch0 -p1 -rm tools/jsmin.py -mv deps/v8/tools/jsmin.py tools/ -rm -r deps/v8 -rm -r deps/udns -rm -r deps/libev -rm -r deps/libeio +%patch1 -p1 +%if %{_lib} == "lib64" +%patch3 -p1 +%else +%patch2 -p1 +%endif %build +%undefine with_ccache # build library - -CFLAGS="%{rpmcflags}" -CXXFLAGS="%{rpmcxxflags}" +CFLAGS="%{rpmcflags} -fPIC" +CXXFLAGS="%{rpmcxxflags} -fPIC" LDFLAGS="%{rpmcflags}" %if "%{pld_release}" == "ac" -CC=%{__cc}4 -CXX=%{__cxx}4 +CC="%{__cc}4" +CXX="%{__cxx}4" %else -CC=%{__cc} -CXX=%{__cxx} +CC="%{__cc}" +CXX="%{__cxx}" %endif export CFLAGS LDFLAGS CXXFLAGS CC CXX -tools/waf-light configure \ +# NOT autoconf so dont use macro +export PYTHONPATH=tools +./configure \ + --shared-cares \ + --shared-v8 \ + --shared-zlib \ + --libdir=%{_libdir} \ --prefix=%{_prefix} -tools/waf-light build +%{__make} dynamiclib +%{__make} program + +# relink with shared lib +$CC -o out/Release/node src/node_main.cc -Isrc -Ideps/uv/include -lnode -Lout/Release %install rm -rf $RPM_BUILD_ROOT -install -d $RPM_BUILD_ROOT{%{_bindir},%{_includedir},%{_libdir}} +%{__make} install \ + DESTDIR=$RPM_BUILD_ROOT + +ln -s node $RPM_BUILD_ROOT%{_bindir}/nodejs -tools/waf-light install \ +# install shared lib +export PYTHONPATH=tools +%{__python} tools/waf-light install \ + --product-type=cshlib \ --destdir=$RPM_BUILD_ROOT +chmod a+x $RPM_BUILD_ROOT%{_libdir}/*.so* + +# create pkgconfig +install -d $RPM_BUILD_ROOT%{_pkgconfigdir} +cat <<'EOF' > $RPM_BUILD_ROOT%{_pkgconfigdir}/%{name}.pc +version=%{version} +prefix=%{_prefix} +libdir=${prefix}/%{_lib} +includedir=${prefix}/include/node + +Name: nodejs +Description: Evented I/O for V8 JavaScript. +Version: ${version} +Cflags: -I${includedir} +EOF + +# install documentation +install -d $RPM_BUILD_ROOT%{_docdir}/%{name}-doc-%{version}/html +cp -a doc/* $RPM_BUILD_ROOT%{_docdir}/%{name}-doc-%{version}/html +cd $RPM_BUILD_ROOT%{_docdir}/%{name}-doc-%{version} +install -d api +mv html/api/*.markdown api +mv html/api/api/* html/api +rm -rf html/api/api +cd - + +# remove NPM; it's buggy in 0.6.3 +# but really we package npm from separate spec +rm -rf $RPM_BUILD_ROOT%{_libdir}/node_modules +rm $RPM_BUILD_ROOT%{_bindir}/npm + %clean rm -rf $RPM_BUILD_ROOT -%post libs -p /sbin/ldconfig -%postun libs -p /sbin/ldconfig +%post -p /sbin/ldconfig +%postun -p /sbin/ldconfig %files %defattr(644,root,root,755) -%doc AUTHORS ChangeLog LICENSE +%doc README.md AUTHORS ChangeLog LICENSE %attr(755,root,root) %{_bindir}/node -%attr(755,root,root) %{_bindir}/node-repl +%attr(755,root,root) %{_bindir}/nodejs +%attr(755,root,root) %{_libdir}/libnode.so.*.*.* +%ghost %{_libdir}/libnode.so.4 %dir %{_libdir}/node -%dir %{_libdir}/node/libraries -%{_libdir}/node/libraries/*.js %{_mandir}/man1/node.1* -%files libs +%files devel %defattr(644,root,root,755) +%{_libdir}/libnode.so +%{_includedir}/node +%{_pkgconfigdir}/nodejs.pc -%files devel +%files doc +%defattr(644,root,root,755) +%doc %{_docdir}/%{name}-doc-%{version} + +%files waf %defattr(644,root,root,755) -%{_includedir}/node/config.h -%{_includedir}/node/evcom.h -%{_includedir}/node/node.h -%{_includedir}/node/node_events.h -%{_includedir}/node/node_net.h -%{_includedir}/node/node_object_wrap.h -%{_includedir}/node/node_version.h +%attr(755,root,root) %{_bindir}/node-waf +%dir %{_libdir}/node/wafadmin +%dir %{_libdir}/node/wafadmin/Tools +%{_libdir}/node/wafadmin/*.py +%{_libdir}/node/wafadmin/Tools/*.py