repo/gentoo:master commit in: net-libs/nodejs/

"Mike Pagano" <[email protected]>
Newsgroups gmane.linux.gentoo.cvs
Message-ID <1786027618.ff505812f0f4390c6f05253884185d7459872e11.mpagano@gentoo>
commit:     ff505812f0f4390c6f05253884185d7459872e11
Author:     Mike Pagano <mpagano <AT> gentoo <DOT> org>
AuthorDate: Thu Aug  6 14:42:18 2026 +0000
Commit:     Mike Pagano <mpagano <AT> gentoo <DOT> org>
CommitDate: Thu Aug  6 14:46:58 2026 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=ff505812

net-libs/nodejs: add 22.23.2

Signed-off-by: Mike Pagano <mpagano <AT> gentoo.org>

 net-libs/nodejs/Manifest              |   1 +
 net-libs/nodejs/nodejs-22.23.2.ebuild | 296 ++++++++++++++++++++++++++++++++++
 2 files changed, 297 insertions(+)

diff --git a/net-libs/nodejs/Manifest b/net-libs/nodejs/Manifest
index 30631fc3a577..ecaddf93dd8d 100644
--- a/net-libs/nodejs/Manifest
+++ b/net-libs/nodejs/Manifest
@@ -3,6 +3,7 @@ DIST node-v20.19.6.tar.xz 42530628 BLAKE2B 7a0e5d469cc58cf744f2edc1421828dbcbe01
 DIST node-v20.20.2.tar.xz 42662736 BLAKE2B 3f7c6d7c0acf40f8df9c3326a54d76e70aa253159f187dff966bf3fa73341915bebbe4f78a387786489e1e8b016dd0644f8831247a681df93cb11f31fdfc8a0f SHA512 5f6977a8e678c334362535f6f6f87d397b4dcae4c3e215b77652094259bb2d83fb2c24fdc968693c89679039217b166090e560473b58321ef3325083bfb3a0ad
 DIST node-v22.13.1.tar.xz 48041964 BLAKE2B 9695cc6a9b9606a615cdcff42e9b8d5f15c2d12fd0f6c894596a7c6526b3267ab9ea4f7362f8c03039c728cb5f7a3a334cce7fda9293cba06922000542a2800c SHA512 711fbeacceec16b8808e5a41ead496347fee2304fc6ce095ad26c4413f52253c9f3a6cd78080e808c03c3dbe958d64359d2d6bb97a51e1b41e1cff903ce2aeb5
 DIST node-v22.21.1.tar.xz 50151568 BLAKE2B 5a7ab1b746c7c25887ed7e9a5728b8c01287c5ed8ecf4587ad9f115e1849039133b4af803b93414934c5baafed18434ebd2d8fda1b520ef5bdf3ed3f72e27439 SHA512 6d3b7b25fb2d8f155ae887367f3ac2467d368049f1fe07767d29e69c95cdb25f0ec0b5825179db691942a877f04fbbaf22a86990354795d89194dd2854b84397
+DIST node-v22.23.2.tar.xz 51362684 BLAKE2B ddf19407ada0f94f4cc08814f633099f38044eb9709143d06509eff76b481736a26712c55fe3abc67e2ee18cfd524841b976ba40074699fe13c05d55a265d771 SHA512 92b959098fb7fcfe80776a983d2ae52479692a63c49087c97a0ee2423147a5222b1e1994e98ff650483322cf3a1f1cca8a51f3389993c0ff5fc13b6d1f4ef4ef
 DIST node-v24.14.0.tar.xz 53987528 BLAKE2B 3d181bdb01c82ea10add1251b97614ea8bb2cc1de52044a639a1955339c4861e84600bd89c0e951f20f4dc61352838142a4d87bd07380936661d89a7f68bc0e5 SHA512 44f8a4758f34373f44daf1498ecb83261788251a43c9063bc3572ebf9bd647adafbc44474127771f5f9e36aa01feee1ad991e01ab3ec5a892607194441f76aaa
 DIST node-v24.19.0.tar.xz 55505276 BLAKE2B 7a7caa4fc46e598010c8a27e1463018b2cb65d430888aa7181c5e8db5e213379723b2d29f2f446d542900c0850b0dc3f4dfe98d942d2caae244f6a2a93b58c47 SHA512 82057740cace16e02fa973d5fef5fc265150e3c278cc232d32ad7d5a9163b8cbfdf437de8675b8a174c9883a94a680de2ac1c2184957767efd5add3fa8380751
 DIST node-v26.3.0.tar.xz 59811728 BLAKE2B a69f067e63883239a38397484b3f92ff4ca8a1ae651cb4f3328e6f994f16260751f3f64ff6c914aeef837d1f6deade8649979f091a044c86c8467058bb0065d2 SHA512 464a24d2536f3ead35325cfb268355fcc66a95260519174cba847efa4037ae2529c24781595b11aae45810570f41c0d2f2d7db2ed365baccda1017a7131a7efe

diff --git a/net-libs/nodejs/nodejs-22.23.2.ebuild b/net-libs/nodejs/nodejs-22.23.2.ebuild
new file mode 100644
index 000000000000..9c01ce57e961
--- /dev/null
+++ b/net-libs/nodejs/nodejs-22.23.2.ebuild
@@ -0,0 +1,296 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+CONFIG_CHECK="~ADVISE_SYSCALLS"
+PYTHON_COMPAT=( python3_{11..14} )
+PYTHON_REQ_USE="threads(+)"
+
+inherit check-reqs flag-o-matic linux-info ninja-utils pax-utils
+inherit python-any-r1 shell-completion toolchain-funcs xdg-utils
+
+DESCRIPTION="A JavaScript runtime built on Chrome's V8 JavaScript engine"
+HOMEPAGE="https://nodejs.org/"
+LICENSE="Apache-1.1 Apache-2.0 BSD BSD-2 MIT npm? ( Artistic-2 )"
+
+if [[ ${PV} == *9999 ]]; then
+	inherit git-r3
+	EGIT_REPO_URI="https://github.com/nodejs/node"
+	SLOT="0"
+else
+	SRC_URI="https://nodejs.org/dist/v${PV}/node-v${PV}.tar.xz"
+	SLOT="0/$(ver_cut 1)"
+	KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc64 ~riscv ~x86 ~x64-macos"
+	S="${WORKDIR}/node-v${PV}"
+fi
+
+IUSE="corepack cpu_flags_x86_sse2 debug doc +icu +inspector lto +npm pax-kernel +snapshot +ssl +system-icu +system-ssl test"
+REQUIRED_USE="inspector? ( icu ssl )
+	npm? ( ssl )
+	system-icu? ( icu )
+	system-ssl? ( ssl )
+	x86? ( cpu_flags_x86_sse2 )"
+
+RESTRICT="!test? ( test )"
+
+COMMON_DEPEND=">=app-arch/brotli-1.1.0:=
+	dev-db/sqlite:3
+	>=dev-libs/libuv-1.51.0:=
+	>=dev-libs/simdjson-3.13.0:=
+	>=net-dns/c-ares-1.34.4:=
+	>=net-libs/nghttp2-1.64.0:=
+	>=net-libs/nghttp3-1.7.0:=
+	virtual/zlib:=
+	corepack? ( !sys-apps/yarn )
+	system-icu? ( >=dev-libs/icu-73:= )
+	system-ssl? (
+		>=net-libs/ngtcp2-1.9.1:=
+		>=dev-libs/openssl-3.5.4:0=
+	)
+	!system-ssl? ( >=net-libs/ngtcp2-1.9.1:=[-gnutls] )
+	|| (
+		sys-devel/gcc:*
+		llvm-runtimes/libatomic-stub
+	)"
+BDEPEND="${PYTHON_DEPS}
+	app-alternatives/ninja
+	sys-apps/coreutils
+	virtual/pkgconfig
+	test? ( net-misc/curl )
+	pax-kernel? ( sys-apps/elfix )"
+DEPEND="${COMMON_DEPEND}"
+RDEPEND="${COMMON_DEPEND}"
+
+# These are measured on a loong machine with -ggdb on, and only checked
+# if debugging flags are present in CFLAGS.
+#
+# The final link consumed a little more than 7GiB alone, so 8GiB is the lower
+# limit for memory usage. Disk usage was 19.1GiB for the build directory and
+# 1.2GiB for the installed image, so we leave some room for architectures with
+# fatter binaries and set the disk requirement to 22GiB.
+CHECKREQS_MEMORY="8G"
+CHECKREQS_DISK_BUILD="22G"
+
+pkg_pretend() {
+	if [[ ${MERGE_TYPE} != "binary" ]]; then
+		if is-flagq "-g*" && ! is-flagq "-g*0" ; then
+			einfo "Checking for sufficient disk space and memory to build ${PN} with debugging CFLAGS"
+			check-reqs_pkg_pretend
+		fi
+	fi
+}
+
+pkg_setup() {
+	python-any-r1_pkg_setup
+	linux-info_pkg_setup
+}
+
+src_prepare() {
+	tc-export AR CC CXX PKG_CONFIG
+	export V=1
+	export BUILDTYPE=Release
+
+	# fix compilation on Darwin
+	# https://code.google.com/p/gyp/issues/detail?id=260
+	sed -i -e "/append('-arch/d" tools/gyp/pylib/gyp/xcode_emulation.py || die
+
+	# proper libdir, hat tip @ryanpcmcquen https://github.com/iojs/io.js/issues/504
+	local LIBDIR=$(get_libdir)
+	sed -i -e "s|lib/|${LIBDIR}/|g" tools/install.py || die
+	sed -i -e "s/'lib'/'${LIBDIR}'/" deps/npm/lib/npm.js || die
+
+	# Avoid writing a depfile, not useful
+	sed -i -e "/DEPFLAGS =/d" tools/gyp/pylib/gyp/generator/make.py || die
+
+	sed -i -e "/'-O3'/d" common.gypi node.gypi || die
+
+	# debug builds. change install path, remove optimisations and override buildtype
+	if use debug; then
+		sed -i -e "s|out/Release/|out/Debug/|g" tools/install.py || die
+		BUILDTYPE=Debug
+	fi
+
+	# We need to disable mprotect on two files when it builds Bug 694100.
+	use pax-kernel && PATCHES+=( "${FILESDIR}"/${PN}-22.12.0-paxmarking.patch )
+
+	# bug 931256
+	use riscv && PATCHES+=( "${FILESDIR}"/${PN}-22.2.0-riscv.patch )
+
+	default
+}
+
+src_configure() {
+	xdg_environment_reset
+
+	# LTO compiler flags are handled by configure.py itself
+	filter-lto
+	# The warnings are *so* noisy and make build.logs massive
+	append-cxxflags $(test-flags-CXX -Wno-template-id-cdtor)
+	# https://bugs.gentoo.org/931514
+	use arm64 && append-flags $(test-flags-CXX -mbranch-protection=none)
+
+	local myconf=(
+		--ninja
+		# ada is not packaged yet
+		# https://github.com/ada-url/ada
+		# --shared-ada
+		--shared-brotli
+		--shared-cares
+		--shared-libuv
+		--shared-nghttp2
+		--shared-nghttp3
+		--shared-ngtcp2
+		--shared-simdjson
+		# sindutf is not packaged yet
+		# https://github.com/simdutf/simdutf
+		# --shared-simdutf
+		--shared-sqlite
+		--shared-zlib
+	)
+	use debug && myconf+=( --debug )
+	use lto && myconf+=( --enable-lto )
+	if use system-icu; then
+		myconf+=( --with-intl=system-icu )
+	elif use icu; then
+		myconf+=( --with-intl=full-icu )
+	else
+		myconf+=( --with-intl=none )
+	fi
+	use corepack || myconf+=( --without-corepack )
+	use inspector || myconf+=( --without-inspector )
+	use npm || myconf+=( --without-npm )
+	use snapshot || myconf+=( --without-node-snapshot )
+	if use ssl; then
+		use system-ssl && myconf+=( --shared-openssl --openssl-use-def-ca-store )
+	else
+		myconf+=( --without-ssl )
+	fi
+
+	local myarch=""
+	case "${ARCH}:${ABI}" in
+		*:amd64) myarch="x64";;
+		*:arm) myarch="arm";;
+		*:arm64) myarch="arm64";;
+		loong:lp64*) myarch="loong64";;
+		riscv:lp64*) myarch="riscv64";;
+		*:ppc64) myarch="ppc64";;
+		*:x32) myarch="x32";;
+		*:x86) myarch="ia32";;
+		*) myarch="${ABI}";;
+	esac
+
+	GYP_DEFINES="linux_use_gold_flags=0
+		linux_use_bundled_binutils=0
+		linux_use_bundled_gold=0" \
+	"${EPYTHON}" configure.py \
+		--prefix="${EPREFIX}"/usr \
+		--dest-cpu=${myarch} \
+		"${myconf[@]}" || die
+}
+
+src_compile() {
+	eninja -C out/Release
+}
+
+src_install() {
+	local LIBDIR="${ED}/usr/$(get_libdir)"
+	default
+
+	pax-mark -m "${ED}"/usr/bin/node
+
+	# set up a symlink structure that node-gyp expects..
+	dodir /usr/include/node/deps/{v8,uv}
+	dosym . /usr/include/node/src
+	for var in deps/{uv,v8}/include; do
+		dosym ../.. /usr/include/node/${var}
+	done
+
+	if use doc; then
+		docinto html
+		dodoc -r "${S}"/doc/*
+	fi
+
+	if use npm; then
+		keepdir /etc/npm
+		echo "NPM_CONFIG_GLOBALCONFIG=${EPREFIX}/etc/npm/npmrc" > "${T}"/50npm
+		doenvd "${T}"/50npm
+
+		# Install bash completion for `npm`
+		local tmp_npm_completion_file="$(TMPDIR="${T}" mktemp -t npm.XXXXXXXXXX)"
+		"${ED}/usr/bin/npm" completion > "${tmp_npm_completion_file}"
+		newbashcomp "${tmp_npm_completion_file}" npm
+
+		# Move man pages
+		doman "${LIBDIR}"/node_modules/npm/man/man{1,5,7}/*
+
+		# Clean up
+		rm -f "${LIBDIR}"/node_modules/npm/{.mailmap,.npmignore,Makefile}
+
+		local find_exp="-or -name"
+		local find_name=()
+		for match in "AUTHORS*" "CHANGELOG*" "CONTRIBUT*" "README*" \
+			".travis.yml" ".eslint*" ".wercker.yml" ".npmignore" \
+			"*.bat" "*.cmd"; do
+			find_name+=( ${find_exp} "${match}" )
+		done
+
+		# Remove various development and/or inappropriate files and
+		# useless docs of dependend packages.
+		find "${LIBDIR}"/node_modules \
+			\( -type d -name examples \) -or \( -type f \( \
+				-iname "LICEN?E*" \
+				"${find_name[@]}" \
+			\) \) -exec rm -rf "{}" \;
+	fi
+
+	use corepack &&
+		"${D}"/usr/bin/corepack enable --install-directory "${D}"/usr/bin
+
+	mv "${ED}"/usr/share/doc/node "${ED}"/usr/share/doc/${PF} || die
+}
+
+src_test() {
+	local drop_tests=(
+		test/parallel/test-dns.js
+		test/parallel/test-dns-resolveany-bad-ancount.js
+		test/parallel/test-dns-setserver-when-querying.js
+		test/parallel/test-dotenv.js
+		test/parallel/test-fs-mkdir.js
+		test/parallel/test-fs-read-stream.js
+		test/parallel/test-fs-utimes-y2K38.js
+		test/parallel/test-fs-watch-recursive-add-file.js
+		test/parallel/test-http2-client-set-priority.js
+		test/parallel/test-http2-priority-event.js
+		test/parallel/test-process-euid-egid.js
+		test/parallel/test-process-get-builtin.mjs
+		test/parallel/test-process-initgroups.js
+		test/parallel/test-process-setgroups.js
+		test/parallel/test-process-uid-gid.js
+		test/parallel/test-release-npm.js
+		test/parallel/test-socket-write-after-fin-error.js
+		test/parallel/test-strace-openat-openssl.js
+		test/sequential/test-tls-session-timeout.js
+		test/sequential/test-util-debug.js
+	)
+	use inspector ||
+		drop_tests+=(
+			test/parallel/test-inspector-emit-protocol-event.js
+			test/parallel/test-inspector-network-arbitrary-data.js
+			test/parallel/test-inspector-network-domain.js
+			test/parallel/test-inspector-network-fetch.js
+			test/parallel/test-inspector-network-http.js
+			test/sequential/test-watch-mode.mjs
+		)
+	rm -f "${drop_tests[@]}" || die "disabling tests failed"
+
+	out/${BUILDTYPE}/cctest || die
+	"${EPYTHON}" tools/test.py --mode=${BUILDTYPE,,} --flaky-tests=dontcare -J message parallel sequential || die
+}
+
+pkg_postinst() {
+	if use npm; then
+		ewarn "remember to run: source /etc/profile if you plan to use nodejs"
+		ewarn " in your current shell"
+	fi
+}
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.