| 19 |
19 |
EGIT_REPO_URI="https://github.com/nodejs/node"
|
| 20 |
20 |
SLOT="0"
|
| 21 |
21 |
else
|
| 22 |
|
SRC_URI="
|
| 23 |
|
https://nodejs.org/dist/v${PV}/node-v${PV}.tar.xz
|
| 24 |
|
https://deps.gentoo.zip/net-libs/nodejs/${P}-nghttp2-1.69.0.patch
|
| 25 |
|
"
|
|
22 |
SRC_URI="https://nodejs.org/dist/v${PV}/node-v${PV}.tar.xz"
|
| 26 |
23 |
SLOT="0/$(ver_cut 1)"
|
| 27 |
24 |
KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc64 ~riscv ~x86 ~x64-macos"
|
| 28 |
25 |
S="${WORKDIR}/node-v${PV}"
|
| 29 |
26 |
fi
|
| 30 |
27 |
|
| 31 |
|
IUSE="corepack cpu_flags_x86_sse2 debug doc +icu +inspector lto +npm pax-kernel +snapshot +ssl +system-icu +system-ssl test"
|
|
28 |
IUSE="cpu_flags_x86_sse2 debug doc +icu +inspector lto +npm pax-kernel +snapshot +ssl system-icu +system-ssl test"
|
| 32 |
29 |
REQUIRED_USE="inspector? ( icu ssl )
|
| 33 |
30 |
npm? ( ssl )
|
| 34 |
31 |
system-icu? ( icu )
|
| ... | ... | |
| 47 |
44 |
>=net-libs/nghttp2-1.69.0:=
|
| 48 |
45 |
>=net-libs/nghttp3-1.14.0:=
|
| 49 |
46 |
virtual/zlib:=
|
| 50 |
|
corepack? ( !sys-apps/yarn )
|
| 51 |
47 |
system-icu? ( >=dev-libs/icu-73:= )
|
| 52 |
48 |
system-ssl? (
|
| 53 |
|
>=net-libs/ngtcp2-1.14.0:=
|
|
49 |
>=net-libs/ngtcp2-1.22.1:=
|
| 54 |
50 |
>=dev-libs/openssl-3.5.6:0=
|
| 55 |
51 |
)
|
| 56 |
52 |
!system-ssl? ( >=net-libs/ngtcp2-1.14.0:=[-gnutls] )
|
| ... | ... | |
| 78 |
74 |
CHECKREQS_DISK_BUILD="22G"
|
| 79 |
75 |
|
| 80 |
76 |
PATCHES=(
|
| 81 |
|
"${FILESDIR}"/${PN}-24.14.0-32-bit.patch
|
| 82 |
|
"${DISTDIR}"/${P}-nghttp2-1.69.0.patch
|
|
77 |
"${FILESDIR}"/${PN}-26.3.0-gcc17.patch
|
|
78 |
"${FILESDIR}"/${PN}-26.3.0-format-cstdlib.patch
|
|
79 |
"${FILESDIR}"/${PN}-26.3.0-v8-climits.patch
|
| 83 |
80 |
)
|
| 84 |
81 |
|
| 85 |
82 |
pkg_pretend() {
|
| ... | ... | |
| 94 |
91 |
pkg_setup() {
|
| 95 |
92 |
python-any-r1_pkg_setup
|
| 96 |
93 |
linux-info_pkg_setup
|
|
94 |
# https://github.com/nodejs/node/issues/62676 - Can't build Temporal with system ICU.
|
|
95 |
if use system-icu; then
|
|
96 |
ewarn "The ES2026 'Temporal' datetime feature/object is not available when using system-icu."
|
|
97 |
ewarn "Please consider whether this is desirable for your use case."
|
|
98 |
ewarn "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Temporal"
|
|
99 |
fi
|
| 97 |
100 |
}
|
| 98 |
101 |
|
| 99 |
102 |
src_prepare() {
|
| ... | ... | |
| 103 |
106 |
|
| 104 |
107 |
# fix compilation on Darwin
|
| 105 |
108 |
# https://code.google.com/p/gyp/issues/detail?id=260
|
| 106 |
|
sed -i -e "/append('-arch/d" tools/gyp/pylib/gyp/xcode_emulation.py || die
|
|
109 |
sed -i -e '/append("-arch")/{N;d;}' tools/gyp/pylib/gyp/xcode_emulation.py || die
|
| 107 |
110 |
|
| 108 |
111 |
# proper libdir, hat tip @ryanpcmcquen https://github.com/iojs/io.js/issues/504
|
| 109 |
112 |
local LIBDIR=$(get_libdir)
|
| ... | ... | |
| 158 |
161 |
use debug && myconf+=( --debug )
|
| 159 |
162 |
use lto && myconf+=( --enable-lto )
|
| 160 |
163 |
if use system-icu; then
|
|
164 |
# No Temporal support: https://github.com/nodejs/node/issues/62676
|
| 161 |
165 |
myconf+=( --with-intl=system-icu )
|
| 162 |
166 |
elif use icu; then
|
|
167 |
# Full embedded ICU (Temporal works)
|
| 163 |
168 |
myconf+=( --with-intl=full-icu )
|
| 164 |
169 |
else
|
| 165 |
|
myconf+=( --with-intl=none )
|
|
170 |
# Default embedded subset (Temporal works, saves space over full-icu)
|
|
171 |
myconf+=( --with-intl=small-icu )
|
| 166 |
172 |
fi
|
| 167 |
|
use corepack || myconf+=( --without-corepack )
|
| 168 |
173 |
use inspector || myconf+=( --without-inspector )
|
| 169 |
174 |
use npm || myconf+=( --without-npm )
|
| 170 |
175 |
use snapshot || myconf+=( --without-node-snapshot )
|
| ... | ... | |
| 198 |
203 |
|
| 199 |
204 |
src_compile() {
|
| 200 |
205 |
eninja -C out/Release
|
|
206 |
# There's just a plain make target for the FFI tests, and it doesn't support ninja.
|
|
207 |
use test && emake build-ffi-tests
|
| 201 |
208 |
}
|
| 202 |
209 |
|
| 203 |
210 |
src_install() {
|
| ... | ... | |
| 237 |
244 |
|
| 238 |
245 |
# Remove various development and/or inappropriate files and
|
| 239 |
246 |
# useless docs of dependend packages.
|
|
247 |
# Strict match for LICENSE files to avoid purging actual logic (e.g. license.js)
|
|
248 |
# which breaks npm.
|
| 240 |
249 |
find "${LIBDIR}"/node_modules \
|
| 241 |
250 |
\( -type d -name examples \) -or \( -type f \( \
|
| 242 |
|
-iname "LICEN?E*" \
|
|
251 |
\( -iname "LICEN?E*" -not -name "*.js" -not -name "*.json" \) \
|
| 243 |
252 |
"${find_name[@]}" \
|
| 244 |
253 |
\) \) -exec rm -rf "{}" \;
|
| 245 |
254 |
fi
|
| 246 |
255 |
|
| 247 |
|
use corepack &&
|
| 248 |
|
"${D}"/usr/bin/corepack enable --install-directory "${D}"/usr/bin
|
| 249 |
|
|
| 250 |
256 |
mv "${ED}"/usr/share/doc/node "${ED}"/usr/share/doc/${PF} || die
|
| 251 |
257 |
}
|
| 252 |
258 |
|
| ... | ... | |
| 268 |
274 |
test/parallel/test-process-setgroups.js
|
| 269 |
275 |
test/parallel/test-process-uid-gid.js
|
| 270 |
276 |
test/parallel/test-release-npm.js
|
|
277 |
# Unreliable when using system libraries and ASLR.
|
|
278 |
# The variations between snapshot generation passes appear limited to memory
|
|
279 |
# allocation pointers leaking into the serialised V8 blob array; the actual
|
|
280 |
# bytecode and engine structures remain consistently... consistent.
|
|
281 |
test/parallel/test-snapshot-reproducible.js
|
| 271 |
282 |
test/parallel/test-socket-write-after-fin-error.js
|
| 272 |
283 |
test/parallel/test-strace-openat-openssl.js
|
| 273 |
284 |
test/sequential/test-tls-session-timeout.js
|
| ... | ... | |
| 293 |
304 |
ewarn "remember to run: source /etc/profile if you plan to use nodejs"
|
| 294 |
305 |
ewarn " in your current shell"
|
| 295 |
306 |
fi
|
|
307 |
|
|
308 |
if use system-icu; then
|
|
309 |
ewarn ""
|
|
310 |
ewarn "Node.js was built with USE='system-icu'."
|
|
311 |
ewarn "The JavaScript 'Temporal' API has been disabled."
|
|
312 |
ewarn "If you need full ES2026+ compliance, rebuild with USE='-system-icu'."
|
|
313 |
ewarn ""
|
|
314 |
fi
|
| 296 |
315 |
}
|