176 lines
5.1 KiB
Bash
176 lines
5.1 KiB
Bash
# Template file for 'nodejs'
|
|
pkgname=nodejs
|
|
version=20.16.0
|
|
revision=1
|
|
hostmakedepends="which pkg-config python3-setuptools"
|
|
_make_depends="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) \
|
|
$(vopt_if brotli brotli-devel)"
|
|
makedepends="${_make_depends}"
|
|
checkdepends="procps-ng iana-etc"
|
|
short_desc="Evented I/O for V8 javascript"
|
|
maintainer="Orphaned <orphan@voidlinux.org>"
|
|
license="MIT"
|
|
homepage="https://nodejs.org/"
|
|
changelog="https://raw.githubusercontent.com/nodejs/node/main/doc/changelogs/CHANGELOG_V${version%%.*}.md"
|
|
distfiles="https://nodejs.org/dist/v${version}/node-v${version}.tar.xz"
|
|
checksum=cd6c8fc3ff2606aadbc7155db6f7e77247d2d0065ac18e2f7f049095584b8b46
|
|
python_version=3
|
|
|
|
build_options="ssl libuv icu nghttp2 cares brotli"
|
|
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"
|
|
desc_option_brotli="Enable shared brotli"
|
|
build_options_default="ssl libuv icu nghttp2 cares brotli"
|
|
|
|
replaces="iojs>=0"
|
|
conflicts="nodejs-lts-10"
|
|
provides="nodejs-runtime-0_1"
|
|
|
|
if [ "$CROSS_BUILD" ]; then
|
|
# Need these for host v8 for torque, see https://github.com/nodejs/node/pull/21079
|
|
hostmakedepends+=" ${_make_depends}"
|
|
fi
|
|
|
|
# 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 18.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"
|
|
|
|
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" ;;
|
|
riscv64*) _args="--dest-cpu=riscv64" ;;
|
|
*) 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 --enable-lto \
|
|
$(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) \
|
|
$(vopt_if brotli --shared-brotli) ${_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-crypto-dh.js,\
|
|
test-child-process-uid-gid.js,\
|
|
test-cluster-primary-error.js,\
|
|
test-cluster-primary-kill.js,\
|
|
test-dns.js,\
|
|
test-http2-https-fallback.js,\
|
|
test-http2-server-unknown-protocol.js,\
|
|
test-https-client-checkServerIdentity.js,\
|
|
test-https-strict.js,\
|
|
test-process-euid-egid.js,\
|
|
test-process-initgroups.js,\
|
|
test-process-setgroups.js,\
|
|
test-process-uid-gid.js,\
|
|
test-tls-alert-handling.js,\
|
|
test-tls-alpn-server-client.js,\
|
|
test-tls-cert-regression.js,\
|
|
test-tls-client-auth.js,\
|
|
test-tls-client-getephemeralkeyinfo.js,\
|
|
test-tls-client-mindhsize.js,\
|
|
test-tls-client-renegotiation-13.js,\
|
|
test-tls-client-verify.js,\
|
|
test-tls-dhe.js,\
|
|
test-tls-empty-sni-context.js,\
|
|
test-tls-enable-trace-cli.js,\
|
|
test-tls-enable-trace.js,\
|
|
test-tls-getcipher.js,\
|
|
test-tls-junk-closes-server.js,\
|
|
test-tls-junk-server.js,\
|
|
test-tls-multi-key.js,\
|
|
test-tls-multiple-cas-as-string.js,\
|
|
test-tls-peer-certificate-encoding.js,\
|
|
test-tls-psk-circuit.js,\
|
|
test-tls-server-verify.js,\
|
|
test-tls-set-ciphers.js,\
|
|
test-tls-sni-option.js,\
|
|
test-tls-sni-server-client.js,\
|
|
"
|
|
|
|
# https://github.com/nodejs/node/issues/50741
|
|
CI_SKIP_TESTS+=",test-dns-resolveany.js,test-dns-resolveany-bad-ancount.js"
|
|
|
|
if [ "$XBPS_TARGET_MACHINE" = i686 ]; then
|
|
# https://github.com/nodejs/node/issues/45906
|
|
CI_SKIP_TESTS+=",test-fs-utimes-y2K38.js"
|
|
fi
|
|
|
|
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-10-devel"
|
|
pkg_install() {
|
|
vmove usr/include
|
|
}
|
|
}
|
|
|
|
nodejs-lts_package() {
|
|
depends="${sourcepkg}>=${version}_${revision}"
|
|
short_desc+=" LTS"
|
|
build_style=meta
|
|
}
|
|
|
|
nodejs-lts-devel_package() {
|
|
depends="${sourcepkg}-devel>=${version}_${revision}"
|
|
short_desc+=" LTS (development files)"
|
|
build_style=meta
|
|
}
|