You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

186 lines
6.1 KiB

##
## node6.spec -- OpenPKG RPM Package Specification
## Copyright (c) 2000-2018 OpenPKG Project <http://openpkg.org/>
##
## 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 6.14.2
%define V_dist 6.14.2
# package information
Name: node6
Summary: Node JavaScript Run-Time (V6)
URL: http://nodejs.org/
Vendor: Node Foundation
Packager: OpenPKG Project
Distribution: OpenPKG Community
Class: PLUS
Group: Web
License: MIT/BSD
Version: %{V_opkg}
Release: 20180506
# package options
%option with_icu no
%option with_node no
# list of sources
Source0: https://nodejs.org/download/release/v%{V_dist}/node-v%{V_dist}.tar.xz
Source1: node.c
Patch0: node6.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, libuv
PreReq: openssl >= 1.0.2, libexecinfo, zlib, ares, http-parser, libuv
%if "%{with_icu}" == "yes"
BuildPreReq: icu
PreReq: icu
%endif
%if "%{with_node}" == "yes"
Provides: node = %{version}
%endif
%description
Node.js (V6, 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.1.281.98.
%track
prog node6 = {
version = %{V_dist}
url = https://nodejs.org/download/release/
regex = v(6\.\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" \
--shared-libuv \
--shared-libuv-includes=%{l_prefix}/include \
--shared-libuv-libpath=%{l_prefix}/lib \
--shared-libuv-libname="uv" \
%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/node6
mv $RPM_BUILD_ROOT%{l_prefix}/bin/node \
$RPM_BUILD_ROOT%{l_prefix}/libexec/node6/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
%if "%{with_node}" == "yes"
# 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
%endif
# post-adjust installation
mv $RPM_BUILD_ROOT%{l_prefix}/bin/node \
$RPM_BUILD_ROOT%{l_prefix}/bin/node6
mv $RPM_BUILD_ROOT%{l_prefix}/include/node \
$RPM_BUILD_ROOT%{l_prefix}/include/node6
mv $RPM_BUILD_ROOT%{l_prefix}/man/man1/node.1 \
$RPM_BUILD_ROOT%{l_prefix}/man/man1/node6.1
%if "%{with_node}" == "yes"
# shim as Node
ln -s node6 $RPM_BUILD_ROOT%{l_prefix}/bin/node
ln -s node6 $RPM_BUILD_ROOT%{l_prefix}/include/node
ln -s node6.1 $RPM_BUILD_ROOT%{l_prefix}/man/man1/node.1
%endif
# determine installation files
%{l_rpmtool} files -v -ofiles -r$RPM_BUILD_ROOT %{l_files_std}
%files -f files
%clean