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

"Mike Pagano" <[email protected]>
Newsgroups gmane.linux.gentoo.cvs
Message-ID <1785955296.0b93d8075e09ed9d0bd14ba4f2d33bd9c7e621c8.mpagano@gentoo>
commit:     0b93d8075e09ed9d0bd14ba4f2d33bd9c7e621c8
Author:     Mike Pagano <mpagano <AT> gentoo <DOT> org>
AuthorDate: Wed Aug  5 18:41:36 2026 +0000
Commit:     Mike Pagano <mpagano <AT> gentoo <DOT> org>
CommitDate: Wed Aug  5 18:41:36 2026 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=0b93d807

net-libs/nodejs: add 26.7.0

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

 net-libs/nodejs/Manifest             |   1 +
 net-libs/nodejs/nodejs-26.7.0.ebuild | 315 +++++++++++++++++++++++++++++++++++
 2 files changed, 316 insertions(+)

diff --git a/net-libs/nodejs/Manifest b/net-libs/nodejs/Manifest
index c7afa04d596e..30631fc3a577 100644
--- a/net-libs/nodejs/Manifest
+++ b/net-libs/nodejs/Manifest
@@ -7,3 +7,4 @@ DIST node-v24.14.0.tar.xz 53987528 BLAKE2B 3d181bdb01c82ea10add1251b97614ea8bb2c
 DIST node-v24.19.0.tar.xz 55505276 BLAKE2B 7a7caa4fc46e598010c8a27e1463018b2cb65d430888aa7181c5e8db5e213379723b2d29f2f446d542900c0850b0dc3f4dfe98d942d2caae244f6a2a93b58c47 SHA512 82057740cace16e02fa973d5fef5fc265150e3c278cc232d32ad7d5a9163b8cbfdf437de8675b8a174c9883a94a680de2ac1c2184957767efd5add3fa8380751
 DIST node-v26.3.0.tar.xz 59811728 BLAKE2B a69f067e63883239a38397484b3f92ff4ca8a1ae651cb4f3328e6f994f16260751f3f64ff6c914aeef837d1f6deade8649979f091a044c86c8467058bb0065d2 SHA512 464a24d2536f3ead35325cfb268355fcc66a95260519174cba847efa4037ae2529c24781595b11aae45810570f41c0d2f2d7db2ed365baccda1017a7131a7efe
 DIST node-v26.6.0.tar.xz 61545700 BLAKE2B b6211e62009ed0e91ff5ac90ce031871d4e637286a590c12f28c498e2a784c88a61793e4609871bd8e13826276d5df1d14b093210703e680d14e4450a045e4a4 SHA512 e2e750f12c5c13bc0221f324bab3e5b2f5ba92490bcddb1a2162ad826a3feae18c98444d512b6fa5094b16d9e5501dd4aeb905184038c77bca95c882ae5a4f77
+DIST node-v26.7.0.tar.xz 60914892 BLAKE2B 7a93d5a1e8341944d5cb8e537265c4d792ba447e249b813d90ef1ab3ddd931eb23ca4617993e37e79cc08c55a1d7a769ddfc898dc5b7225f676dc6ead55bc461 SHA512 d7dd7bf0485369c29ad90740c404b647696efd79c6a59f6a3da0b72cdb2740a5855fd62a55985516b8649d9c3359ce4141840f6e6a93427eaa5c87a3cd93e9c9

diff --git a/net-libs/nodejs/nodejs-26.7.0.ebuild b/net-libs/nodejs/nodejs-26.7.0.ebuild
new file mode 100644
index 000000000000..7b10dd46ed3d
--- /dev/null
+++ b/net-libs/nodejs/nodejs-26.7.0.ebuild
@@ -0,0 +1,315 @@
+# 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 BlueOak-1.0.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="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-cpp/ada-3.3.0:=
+	>=dev-cpp/simdutf-7.3.4:=
+	>=dev-libs/libuv-1.52.1:=
+	>=dev-libs/simdjson-4.6.1:=
+	>=net-dns/c-ares-1.34.5:=
+	>=net-libs/nghttp2-1.69.0:=
+	>=net-libs/nghttp3-1.14.0:=
+	virtual/zlib:=
+	system-icu? ( >=dev-libs/icu-73:= )
+	system-ssl? (
+		>=net-libs/ngtcp2-1.22.1:=
+		>=dev-libs/openssl-3.5.6:0=
+	)
+	!system-ssl? ( >=net-libs/ngtcp2-1.14.0:=[-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"
+
+PATCHES=(
+	"${FILESDIR}"/${PN}-26.6.0-gcc17.patch
+	"${FILESDIR}"/${PN}-26.6.0-format-cstdlib.patch
+	"${FILESDIR}"/${PN}-26.6.0-v8-climits.patch
+)
+
+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
+	# https://github.com/nodejs/node/issues/62676 - Can't build Temporal with system ICU.
+	if use system-icu; then
+		ewarn "The ES2026 'Temporal' datetime feature/object is not available when using system-icu."
+		ewarn "Please consider whether this is desirable for your use case."
+		ewarn "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Temporal"
+	fi
+}
+
+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")/{N;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}-24.1.0-paxmarking.patch )
+
+	use ppc64 &&
+		PATCHES+=(	"${FILESDIR}/${PN}-24.11.1-restore-ppc64be.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
+		--shared-ada
+		--shared-brotli
+		--shared-cares
+		--shared-libuv
+		--shared-nghttp2
+		--shared-nghttp3
+		--shared-ngtcp2
+		--shared-simdjson
+		--shared-simdutf
+		--shared-sqlite
+		--shared-zlib
+	)
+	use debug && myconf+=( --debug )
+	use lto && myconf+=( --enable-lto )
+	if use system-icu; then
+		# No Temporal support: https://github.com/nodejs/node/issues/62676
+		myconf+=( --with-intl=system-icu )
+	elif use icu; then
+		# Full embedded ICU (Temporal works)
+		myconf+=( --with-intl=full-icu )
+	else
+		# Default embedded subset (Temporal works, saves space over full-icu)
+		myconf+=( --with-intl=small-icu )
+	fi
+	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
+	# There's just a plain make target for the FFI tests, and it doesn't support ninja.
+	use test && emake build-ffi-tests
+}
+
+src_install() {
+	local LIBDIR="${ED}/usr/$(get_libdir)"
+	default
+
+	pax-mark -m "${ED}"/usr/bin/node
+
+	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.
+		# Strict match for LICENSE files to avoid purging actual logic (e.g. license.js)
+		# which breaks npm.
+		find "${LIBDIR}"/node_modules \
+			\( -type d -name examples \) -or \( -type f \( \
+				\( -iname "LICEN?E*" -not -name "*.js" -not -name "*.json" \) \
+				"${find_name[@]}" \
+			\) \) -exec rm -rf "{}" \;
+	fi
+
+	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
+		# Unreliable when using system libraries and ASLR.
+		# The variations between snapshot generation passes appear limited to memory
+		# allocation pointers leaking into the serialised V8 blob array; the actual
+		# bytecode and engine structures remain consistently... consistent.
+		test/parallel/test-snapshot-reproducible.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
+
+	if use system-icu; then
+		ewarn ""
+		ewarn "Node.js was built with USE='system-icu'."
+		ewarn "The JavaScript 'Temporal' API has been disabled."
+		ewarn "If you need full ES2026+ compliance, rebuild with USE='-system-icu'."
+		ewarn ""
+	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.