-
Notifications
You must be signed in to change notification settings - Fork 2.1k
/
template
136 lines (118 loc) · 4.58 KB
/
template
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
# Template file for 'nodejs'
pkgname=nodejs
version=18.19.1
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=090f96a2ecde080b6b382c6d642bca5d0be4702a78cb555be7bf02b20bd16ded
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-child-process-uid-gid.js,test-process-euid-egid.js,test-process-uid-gid.js,test-tls-session-cache.js,test-tls-getprotocol.js,test-tls-alert.js,test-tls-cli-min-version-1.1.js,test-tls-cli-max-version-1.1.js,test-tls-cli-min-version-1.2.js,test-tls-cli-max-version-1.2.js,test-tls-cli-min-version-1.3.js,test-tls-cli-max-version-1.3.js,test-tls-min-max-version.js,test-process-versions.js,test-strace-openat-openssl.js,test-crypto-dh.js,test-dgram-send-cb-quelches-error.js,test-https-agent-session-eviction.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
}