## ## node.spec -- OpenPKG RPM Package Specification ## Copyright (c) 2000-2016 OpenPKG Foundation e.V. ## ## Permission to use, copy, modify, and distribute this software for ## any purpose with or without fee is hereby granted, provided that ## the above copyright notice and this permission notice appear in all ## copies. ## ## THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED ## WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF ## MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. ## IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR ## CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF ## USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ## ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, ## OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT ## OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF ## SUCH DAMAGE. ## # package version %define V_opkg 7.1.0 %define V_dist 7.1.0 # package information Name: node Summary: Node JavaScript Run-Time (V6) URL: http://nodejs.org/ Vendor: Node Foundation Packager: OpenPKG Foundation e.V. Distribution: OpenPKG Community Class: PLUS Group: Web License: MIT/BSD Version: %{V_opkg} Release: 20161109 # package options %option with_icu yes # list of sources Source0: https://nodejs.org/download/release/v%{V_dist}/node-v%{V_dist}.tar.xz Source1: node.c Patch0: node.patch # build information BuildPreReq: OpenPKG, openpkg >= 20160101, make, gcc >= 5.2, gcc::with_cxx = yes, python, pkgconfig PreReq: OpenPKG, openpkg >= 20160101 BuildPreReq: openssl >= 1.0.2, libexecinfo, zlib, ares, http-parser PreReq: openssl >= 1.0.2, libexecinfo, zlib, ares, http-parser %if "%{with_icu}" == "yes" BuildPreReq: icu PreReq: icu %endif %description Node.js (V7, non-LTS) provides an easy way to build scalable network servers in JavaScript. It is an event-driven I/O environment based on Google V8 JavaScript virtual machine version 5.4.500.36. %track prog node = { version = %{V_dist} url = https://nodejs.org/download/release/ regex = v(\d+\.\d+\.\d+)/ } %prep %setup -q -n node-v%{V_dist} %patch -p0 %build # provide local tool wrapper scripts as we cannot # reliably pass the includes via configure variables includes="-I`pwd`/deps/v8 -I`pwd`/deps/v8/include %{l_cppflags}" mkdir tool for tool in gcc g++ c%{l_nil}c c++; do ( echo "#!/bin/sh" echo "exec %{l_prefix}/bin/$tool $includes \${1+\"\$@\"}" ) >tool/$tool chmod a+x tool/$tool done PATH="`pwd`/tool:$PATH" # configure program libs="-lexecinfo -lz" case "%{l_platform -t} " in *-linux* ) libs="$libs -ldl" ;; esac CC="gcc" \ CXX="g++" \ CFLAGS="%{l_cflags -O}" \ CXXFLAGS="%{l_cxxflags -O} -Wno-deprecated-declarations" \ CPPFLAGS="%{l_cppflags}" \ LDFLAGS="%{l_ldflags}" \ LIBS="$libs" \ %{l_prefix}/bin/python ./configure \ --prefix=%{l_prefix} \ --shared-openssl \ --shared-openssl-includes=%{l_prefix}/include \ --shared-openssl-libpath=%{l_prefix}/lib \ --shared-openssl-libname="ssl,crypto" \ --shared-zlib \ --shared-zlib-includes=%{l_prefix}/include \ --shared-zlib-libpath=%{l_prefix}/lib \ --shared-zlib-libname="z" \ --shared-http-parser \ --shared-http-parser-includes=%{l_prefix}/include \ --shared-http-parser-libpath=%{l_prefix}/lib \ --shared-http-parser-libname="http_parser" \ --shared-cares \ --shared-cares-includes=%{l_prefix}/include \ --shared-cares-libpath=%{l_prefix}/lib \ --shared-cares-libname="ares" \ %if "%{with_icu}" == "yes" --with-intl=system-icu \ %else --with-intl=small-icu \ %endif --without-npm # build program %{l_make} %{l_mflags -O} # build wrapper %{l_cc} %{l_cflags -O} %{l_cppflags} -DPREFIX="\"%{l_prefix}\"" %{l_ldflags} \ -o node-wrapper %{SOURCE node.c} %install # install program %{l_make} %{l_mflags} install DESTDIR=$RPM_BUILD_ROOT # install wrapper %{l_shtool} mkdir -f -p -m 755 \ $RPM_BUILD_ROOT%{l_prefix}/libexec/node mv $RPM_BUILD_ROOT%{l_prefix}/bin/node \ $RPM_BUILD_ROOT%{l_prefix}/libexec/node/node %{l_shtool} install -c -s -m 755 \ node-wrapper $RPM_BUILD_ROOT%{l_prefix}/bin/node # post-installation strip-down strip $RPM_BUILD_ROOT%{l_prefix}/bin/* >/dev/null 2>&1 || true rm -rf $RPM_BUILD_ROOT%{l_prefix}/lib/dtrace rm -rf $RPM_BUILD_ROOT%{l_prefix}/share/systemtap rm -rf $RPM_BUILD_ROOT%{l_prefix}/share/doc # create NPM package installation areas %{l_shtool} mkdir -f -p -m 755 \ $RPM_BUILD_ROOT%{l_prefix}/lib/node/usr \ $RPM_BUILD_ROOT%{l_prefix}/lib/node/pkg # determine installation files %{l_rpmtool} files -v -ofiles -r$RPM_BUILD_ROOT %{l_files_std} %files -f files %clean