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.
198 lines
6.4 KiB
198 lines
6.4 KiB
## |
|
## node14.spec -- OpenPKG RPM Package Specification |
|
## Copyright (c) 2000-2022 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 14.18.3 |
|
%define V_dist 14.18.3 |
|
|
|
# package information |
|
Name: node14 |
|
Summary: Node JavaScript Run-Time (V14) |
|
URL: http://nodejs.org/ |
|
Vendor: Node Foundation |
|
Packager: OpenPKG Project |
|
Distribution: OpenPKG Community |
|
Class: PLUS |
|
Group: Web |
|
License: MIT/BSD |
|
Version: %{V_opkg} |
|
Release: 20220111 |
|
|
|
# package options |
|
%option with_icu yes |
|
%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: node14.patch |
|
|
|
# build information |
|
BuildPreReq: OpenPKG, openpkg >= 20160101, make, gcc, gcc::with_cxx = yes, python, pkgconfig |
|
PreReq: OpenPKG, openpkg >= 20160101 |
|
BuildPreReq: openssl, libexecinfo, zlib, libuv, nghttp2 |
|
PreReq: openssl, libexecinfo, zlib, libuv, nghttp2 |
|
%if "%{with_icu}" == "yes" |
|
BuildPreReq: icu |
|
PreReq: icu |
|
%endif |
|
%if "%{with_node}" == "yes" |
|
Provides: node = %{version} |
|
%endif |
|
|
|
%description |
|
Node.js (V14) 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 8.4.371.23. |
|
|
|
%track |
|
prog node14 = { |
|
version = %{V_dist} |
|
url = https://nodejs.org/download/release/ |
|
regex = v(14\.\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 |
|
cflags="-I`pwd`/deps/v8" |
|
cflags="$cflags -I`pwd`/deps/uv/include" |
|
cflags="$cflags -I`pwd`/deps/v8/include" |
|
%if "%{with_icu}" != "yes" |
|
cflags="$cflags -I`pwd`/deps/icu-small/source/common" |
|
%endif |
|
cflags="$cflags -I`pwd`/deps/llhttp/include" |
|
cflags="$cflags -I`pwd`/deps/http_parser" |
|
cflags="$cflags -I`pwd`/deps/cares" |
|
cflags="$cflags -I`pwd`/deps/cares/include" |
|
cflags="$cflags -I`pwd`/deps/cares/src/lib" |
|
cflags="$cflags %{l_cppflags}" |
|
ldflags="%{l_ldflags}" |
|
mkdir tool |
|
for tool in gcc g++ c%{l_nil}c c++; do |
|
( echo "#!/bin/sh" |
|
echo "exec %{l_prefix}/bin/$tool $cflags $ldflags \${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-libuv \ |
|
--shared-libuv-includes=%{l_prefix}/include \ |
|
--shared-libuv-libpath=%{l_prefix}/lib \ |
|
--shared-libuv-libname="uv" \ |
|
--shared-nghttp2 \ |
|
--shared-nghttp2-includes=%{l_prefix}/include \ |
|
--shared-nghttp2-libpath=%{l_prefix}/lib \ |
|
--shared-nghttp2-libname="nghttp2" \ |
|
%if "%{with_icu}" == "yes" |
|
--with-intl=system-icu \ |
|
%else |
|
--with-intl=small-icu \ |
|
%endif |
|
--with-snapshot \ |
|
--without-npm \ |
|
--download=none |
|
|
|
# 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 |
|
( PATH="`pwd`/tool:$PATH" |
|
%{l_make} %{l_mflags} install DESTDIR=$RPM_BUILD_ROOT |
|
) || exit $? |
|
|
|
# install wrapper |
|
%{l_shtool} mkdir -f -p -m 755 \ |
|
$RPM_BUILD_ROOT%{l_prefix}/libexec/node14 |
|
mv $RPM_BUILD_ROOT%{l_prefix}/bin/node \ |
|
$RPM_BUILD_ROOT%{l_prefix}/libexec/node14/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/node14 |
|
mv $RPM_BUILD_ROOT%{l_prefix}/include/node \ |
|
$RPM_BUILD_ROOT%{l_prefix}/include/node14 |
|
mv $RPM_BUILD_ROOT%{l_prefix}/man/man1/node.1 \ |
|
$RPM_BUILD_ROOT%{l_prefix}/man/man1/node14.1 |
|
|
|
%if "%{with_node}" == "yes" |
|
# shim as Node |
|
ln -s node14 $RPM_BUILD_ROOT%{l_prefix}/bin/node |
|
ln -s node14 $RPM_BUILD_ROOT%{l_prefix}/include/node |
|
ln -s node14.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 |
|
|
|
|