void-packages/srcpkgs/nodejs/template
Daniel Florescu 0fa8cf3c35 nodejs: update to 16.9.1
List of changes:

- Add iana-etc to checkdepends
The nodejs tests require `/etc/services` to be present, but it is not
present without iana-etc.

- Ignore tests that timeout in template
There is a new variable with the name "COV_SKIP_TESTS", which contains
a comma seperated list of ignored tests. The current list has tests that
are by default part of ignored tests, and the two tests that timeout.
The two tests probably timeout because of the slow execution environment.

- Statically link llhttp and http_parser
Removed "shared http_parser" option, because of conflicts with nodejs-lts.
2021-09-24 11:22:52 +02:00

113 lines
3.6 KiB
Bash

# Template file for 'nodejs'
pkgname=nodejs
version=16.9.1
revision=1
wrksrc="node-v${version}"
# Need these for host v8 for torque, see https://github.com/nodejs/node/pull/21079
hostmakedepends="which pkg-config python3 libatomic-devel zlib-devel
$(vopt_if icu icu-devel) $(vopt_if ssl openssl-devel) $(vopt_if libuv libuv-devel)
$(vopt_if nghttp2 nghttp2-devel) $(vopt_if cares c-ares-devel)"
makedepends="libatomic-devel zlib-devel $(vopt_if icu icu-devel)
$(vopt_if ssl openssl-devel) $(vopt_if libuv libuv-devel)
$(vopt_if nghttp2 nghttp2-devel) $(vopt_if cares c-ares-devel)"
checkdepends="procps-ng iana-etc"
short_desc="Evented I/O for V8 javascript"
maintainer="Enno Boland <gottox@voidlinux.org>"
license="MIT"
homepage="https://nodejs.org/"
distfiles="${homepage}/dist/v${version}/node-v${version}.tar.gz"
checksum=2cfab037d84550556999af6328e9b657842d9b183e6be2a4995c87d2c49e9d03
python_version=3
build_options="ssl libuv icu nghttp2 cares"
desc_option_ssl="Enable shared openssl"
desc_option_libuv="Enable shared libuv"
desc_option_icu="Enable shared icu"
desc_option_nghttp2="Enable shared nghttp2"
desc_option_cares="Enable shared c-ares"
build_options_default="ssl libuv icu nghttp2 cares"
replaces="iojs>=0"
conflicts="nodejs-lts nodejs-lts-10"
provides="nodejs-runtime-0_1"
# https://build.voidlinux.org/builders/i686_builder/builds/27325/steps/shell_3/logs/stdio
if [ "$XBPS_WORDSIZE" = 32 ]; then
LDFLAGS="-Wl,--no-keep-memory"
fi
if [ "$XBPS_WORDSIZE" -ne "$XBPS_TARGET_WORDSIZE" ]; then
nocross="host and target must have the same pointer size"
fi
case "$XBPS_TARGET_MACHINE" in
ppc64*) ;;
ppc*) broken="Node 12.x does not support 32-bit ppc" ;;
esac
CFLAGS="-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
CXXFLAGS="-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
post_patch() {
# XXX Drop after c-ares 1.17.3 has been released.
vsed -i -e 's:<ares_nameser.h>:<arpa/nameser.h>:g' src/cares_wrap.h
}
do_configure() {
local _args
export LD="$CXX"
if [ "$CROSS_BUILD" ]; then
case "$XBPS_TARGET_MACHINE" in
arm*) _args="--dest-cpu=arm" ;;
aarch64*) _args="--dest-cpu=arm64" ;;
ppc64*) _args="--dest-cpu=ppc64" ;;
ppc*) _args="--dest-cpu=ppc" ;;
mipsel*) _args="--dest-cpu=mipsel" ;;
mips*) _args="--dest-cpu=mips" ;;
i686*) _args="--dest-cpu=x86" ;;
x86_64*) _args="--dest-cpu=x86_64" ;;
*) msg_error "$pkgver: cannot be cross compiled for ${XBPS_TARGET_MACHINE}.\n" ;;
esac
# this is necessary - for example, normally compiling from ppc64le
# to ppc64 or from glibc to musl is considered non-cross-compiling
# by the build system, because it's technically the same architecture
#
# that results in the toolset built for target only, and attempting
# to execute it within the build system fails
_args+=" --cross-compiling"
fi
./configure --prefix=/usr --shared-zlib \
$(vopt_if icu --with-intl=system-icu) \
$(vopt_if ssl --shared-openssl) \
$(vopt_if libuv --shared-libuv) \
$(vopt_if nghttp2 --shared-nghttp2) \
$(vopt_if cares --shared-cares) ${_args}
}
do_build() {
if [ "$CROSS_BUILD" ]; then
make LD="$CXX" LDFLAGS+=-ldl ${makejobs} PORTABLE=1 V=1
else
make LD="$CXX" LDFLAGS+=-ldl ${makejobs} V=1
fi
}
do_check() {
local CI_SKIP_TESTS="test-cluster-primary-error.js,test-cluster-primary-kill.js"
make CI_SKIP_TESTS="$CI_SKIP_TESTS" LD="$CXX" LDFLAGS+=-ldl ${makejobs} V=1 test-only
}
do_install() {
make LD="$CXX" LDFLAGS+=-ldl DESTDIR="$DESTDIR" install
rm $DESTDIR/usr/include/node/openssl -rf
vlicense LICENSE
}
nodejs-devel_package() {
short_desc+=" (development files)"
conflicts="nodejs-lts-devel nodejs-lts-10-devel"
pkg_install() {
vmove usr/include
}
}