Added net-libs/nodejs-24.4.1
This commit is contained in:
		
							
								
								
									
										17
									
								
								metadata/md5-cache/net-libs/nodejs-24.4.1
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								metadata/md5-cache/net-libs/nodejs-24.4.1
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,17 @@
 | 
			
		||||
BDEPEND=|| ( dev-lang/python:3.13[threads(+)] dev-lang/python:3.12[threads(+)] dev-lang/python:3.11[threads(+)] ) app-alternatives/ninja sys-apps/coreutils virtual/pkgconfig test? ( net-misc/curl ) pax-kernel? ( sys-apps/elfix )
 | 
			
		||||
DEFINED_PHASES=compile configure install postinst prepare pretend setup test
 | 
			
		||||
DEPEND=>=app-arch/brotli-1.1.0:= dev-db/sqlite:3 >=dev-libs/libuv-1.51.0:= >=dev-libs/simdjson-3.10.1:= >=net-dns/c-ares-1.34.4:= >=net-libs/nghttp2-1.64.0:= >=net-libs/nghttp3-1.7.0:= sys-libs/zlib corepack? ( !sys-apps/yarn ) system-icu? ( >=dev-libs/icu-73:= ) system-ssl? ( >=net-libs/ngtcp2-1.9.1:= >=dev-libs/openssl-1.1.1:0= ) !system-ssl? ( >=net-libs/ngtcp2-1.9.1:=[-gnutls] ) || ( sys-devel/gcc:* llvm-runtimes/libatomic-stub )
 | 
			
		||||
DESCRIPTION=A JavaScript runtime built on Chrome's V8 JavaScript engine
 | 
			
		||||
EAPI=8
 | 
			
		||||
HOMEPAGE=https://nodejs.org/
 | 
			
		||||
INHERIT=bash-completion-r1 check-reqs flag-o-matic linux-info ninja-utils pax-utils python-any-r1 toolchain-funcs xdg-utils
 | 
			
		||||
IUSE=corepack cpu_flags_x86_sse2 debug doc +icu +inspector lto npm pax-kernel +snapshot +ssl +system-icu +system-ssl test
 | 
			
		||||
KEYWORDS=~amd64 ~arm ~arm64 ~loong ~ppc64 ~riscv ~x86 ~amd64-linux ~x64-macos
 | 
			
		||||
LICENSE=Apache-1.1 Apache-2.0 BSD BSD-2 MIT npm? ( Artistic-2 )
 | 
			
		||||
RDEPEND=>=app-arch/brotli-1.1.0:= dev-db/sqlite:3 >=dev-libs/libuv-1.51.0:= >=dev-libs/simdjson-3.10.1:= >=net-dns/c-ares-1.34.4:= >=net-libs/nghttp2-1.64.0:= >=net-libs/nghttp3-1.7.0:= sys-libs/zlib corepack? ( !sys-apps/yarn ) system-icu? ( >=dev-libs/icu-73:= ) system-ssl? ( >=net-libs/ngtcp2-1.9.1:= >=dev-libs/openssl-1.1.1:0= ) !system-ssl? ( >=net-libs/ngtcp2-1.9.1:=[-gnutls] ) || ( sys-devel/gcc:* llvm-runtimes/libatomic-stub )
 | 
			
		||||
REQUIRED_USE=inspector? ( icu ssl ) npm? ( ssl ) system-icu? ( icu ) system-ssl? ( ssl ) x86? ( cpu_flags_x86_sse2 )
 | 
			
		||||
RESTRICT=!test? ( test )
 | 
			
		||||
SLOT=0/24
 | 
			
		||||
SRC_URI=https://nodejs.org/dist/v24.4.1/node-v24.4.1.tar.xz
 | 
			
		||||
_eclasses_=toolchain-funcs	a0b29008c671a362b505f96fa80ce9c0	bash-completion-r1	767861f3744f589ee5291c1698b1c082	check-reqs	2a9731073c152554078a9a8df8fc0f1b	flag-o-matic	a7afe42e95fb46ce9691605acfb24672	linux-info	efd923656513c879204fec6638eadee5	multiprocessing	1e32df7deee68372153dca65f4a7c21f	ninja-utils	2df4e452cea39a9ec8fb543ce059f8d6	pax-utils	5555f2e75744739fe100ee62c22d28fe	python-utils-r1	8a006695bc0db22490452dd06914dda5	python-any-r1	891415dfe39ad9b41b461f2b86354af0	xdg-utils	42869b3c8d86a70ef3cf75165a395e09
 | 
			
		||||
_md5_=c5107e98192c12df516bed45abe52a28
 | 
			
		||||
							
								
								
									
										4
									
								
								net-libs/nodejs/Manifest
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								net-libs/nodejs/Manifest
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,4 @@
 | 
			
		||||
AUX nodejs-24.1.0-paxmarking.patch 3496 BLAKE2B 128a05fb3bc040edfd53221d5744a0626a0f64b7ba46dac94dc0df0d57631017f2da839e06ce769194a8519dcb7feebbede7cef9743323fded5044694a8eb4cc SHA512 3fae2c3bb0f90bd84e147a7fb740f12fab93843ef8f3a2ecf07359582222f86e9793b49b624894fa244f4d9159ac897e1b32d014a6fffbd0d687a1c0996e4240
 | 
			
		||||
DIST node-v24.4.1.tar.xz 50266728 BLAKE2B 79461f2ea24e919ce7b27c06ebd3978befa2e2b3ce5277655a5ce8c807e1351efd0400c21e6f993f5e65d12b6353c0bf6d97ff04ecd75248711aa2a9637924fd SHA512 d01a579f2d16b6d7a5d07d58579aa204e2602df13be80b6eb3772ac6f0e28bcbc1e6a68142c2e1c8bc75f397e7ae12ce339f03e46ba4cc6008a938c5a88dcae8
 | 
			
		||||
EBUILD nodejs-24.4.1.ebuild 8422 BLAKE2B 9f8a38f95be24ef5fb21c953f308f59a3eee0def4d120faab71d666a583eacf568db5a4b5b89e588ffd2be6f0a18de569998c1fa2f0946fb19f1783dd0a79671 SHA512 6d700bde90405850d64f7b0a53d60a62368215c20fbb490146b83fa7aa8c87857a9337705e62bed194d7ae29c3b634117dc56aa0c80052eb8ddb3be9643b304a
 | 
			
		||||
MISC metadata.xml 919 BLAKE2B fec5e1a55653b516865d2b0f7788ba520fc46029276f6584be3bfa579fb9852119b3a7fb907e1977279227627cc65c085dbffc4a06ca11cd4dd031325a423468 SHA512 658d82da53e3b701d0ed5a2ba4f515744240ebcdf8392c0a40c9b9e9808f89357ea270a2b742dd0045628ff0d87baf9c26f60ac0d046d75808cb97add192c8a3
 | 
			
		||||
							
								
								
									
										101
									
								
								net-libs/nodejs/files/nodejs-24.1.0-paxmarking.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										101
									
								
								net-libs/nodejs/files/nodejs-24.1.0-paxmarking.patch
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,101 @@
 | 
			
		||||
From d6a829fbeefdc289bcdac566dc234bf55380d4a6 Mon Sep 17 00:00:00 2001
 | 
			
		||||
From: William Hubbs <w.d.hubbs@gmail.com>
 | 
			
		||||
Date: Sat, 24 May 2025 14:21:24 -0500
 | 
			
		||||
Subject: [PATCH] pax marking
 | 
			
		||||
 | 
			
		||||
---
 | 
			
		||||
 node.gyp                 | 17 ++++++++++++++++-
 | 
			
		||||
 tools/v8_gypfiles/v8.gyp | 24 +++++++++++++++++++++++-
 | 
			
		||||
 2 files changed, 39 insertions(+), 2 deletions(-)
 | 
			
		||||
 | 
			
		||||
diff --git a/node.gyp b/node.gyp
 | 
			
		||||
index 59303d9ab7c..7db72a0ebdf 100644
 | 
			
		||||
--- a/node.gyp
 | 
			
		||||
+++ b/node.gyp
 | 
			
		||||
@@ -422,6 +422,7 @@
 | 
			
		||||
       'src/node_webstorage.h',
 | 
			
		||||
     ],
 | 
			
		||||
     'node_mksnapshot_exec': '<(PRODUCT_DIR)/<(EXECUTABLE_PREFIX)node_mksnapshot<(EXECUTABLE_SUFFIX)',
 | 
			
		||||
+    'node_mksnapshot_u_exec': '<(PRODUCT_DIR)/<(EXECUTABLE_PREFIX)node_mksnapshot_u<(EXECUTABLE_SUFFIX)',
 | 
			
		||||
     'node_js2c_exec': '<(PRODUCT_DIR)/<(EXECUTABLE_PREFIX)node_js2c<(EXECUTABLE_SUFFIX)',
 | 
			
		||||
     'conditions': [
 | 
			
		||||
       ['GENERATOR == "ninja"', {
 | 
			
		||||
@@ -688,11 +689,25 @@
 | 
			
		||||
           'conditions': [
 | 
			
		||||
             ['node_snapshot_main!=""', {
 | 
			
		||||
               'actions': [
 | 
			
		||||
+                {
 | 
			
		||||
+                  'action_name': 'run_pax_mksnapshot',
 | 
			
		||||
+                  'inputs': [
 | 
			
		||||
+                    '<(node_mksnapshot_exec)',
 | 
			
		||||
+                  ],
 | 
			
		||||
+                  'outputs': [
 | 
			
		||||
+                    '<(node_mksnapshot_u_exec)',
 | 
			
		||||
+                  ],
 | 
			
		||||
+                  'action': [
 | 
			
		||||
+                    'bash',
 | 
			
		||||
+                    '-c',
 | 
			
		||||
+                    'mv <(node_mksnapshot_exec) <(node_mksnapshot_u_exec) && paxmark.sh m <(node_mksnapshot_u_exec)',
 | 
			
		||||
+                  ],
 | 
			
		||||
+                },
 | 
			
		||||
                 {
 | 
			
		||||
                   'action_name': 'node_mksnapshot',
 | 
			
		||||
                   'process_outputs_as_sources': 1,
 | 
			
		||||
                   'inputs': [
 | 
			
		||||
-                    '<(node_mksnapshot_exec)',
 | 
			
		||||
+                    '<(node_mksnapshot_u_exec)',
 | 
			
		||||
                     '<(node_snapshot_main)',
 | 
			
		||||
                   ],
 | 
			
		||||
                   'outputs': [
 | 
			
		||||
diff --git a/tools/v8_gypfiles/v8.gyp b/tools/v8_gypfiles/v8.gyp
 | 
			
		||||
index 8e3f015dff1..575bba798ae 100644
 | 
			
		||||
--- a/tools/v8_gypfiles/v8.gyp
 | 
			
		||||
+++ b/tools/v8_gypfiles/v8.gyp
 | 
			
		||||
@@ -9,6 +9,7 @@
 | 
			
		||||
     'v8_vector_stores%': 0,
 | 
			
		||||
     'v8_embed_script%': "",
 | 
			
		||||
     'mksnapshot_exec': '<(PRODUCT_DIR)/<(EXECUTABLE_PREFIX)mksnapshot<(EXECUTABLE_SUFFIX)',
 | 
			
		||||
+    'mksnapshot_u_exec': '<(PRODUCT_DIR)/<(EXECUTABLE_PREFIX)mksnapshot_u<(EXECUTABLE_SUFFIX)',
 | 
			
		||||
     'v8_os_page_size%': 0,
 | 
			
		||||
     'generate_bytecode_output_root': '<(SHARED_INTERMEDIATE_DIR)/generate-bytecode-output-root',
 | 
			
		||||
     'generate_bytecode_builtins_list_output': '<(generate_bytecode_output_root)/builtins-generated/bytecodes-builtins-list.h',
 | 
			
		||||
@@ -1723,7 +1724,7 @@
 | 
			
		||||
       ],
 | 
			
		||||
     },  # bytecode_builtins_list_generator
 | 
			
		||||
     {
 | 
			
		||||
-      'target_name': 'mksnapshot',
 | 
			
		||||
+      'target_name': 'mksnapshot_u',
 | 
			
		||||
       'type': 'executable',
 | 
			
		||||
       'dependencies': [
 | 
			
		||||
         'v8_base_without_compiler',
 | 
			
		||||
@@ -1767,6 +1768,27 @@
 | 
			
		||||
           'ldflags': [ '-fno-lto' ],
 | 
			
		||||
         }],
 | 
			
		||||
       ],
 | 
			
		||||
+    },  # mksnapshot_u
 | 
			
		||||
+    {
 | 
			
		||||
+      'target_name': 'mksnapshot',
 | 
			
		||||
+      'type': 'none',
 | 
			
		||||
+      'dependencies': ['mksnapshot_u'],
 | 
			
		||||
+      'actions': [
 | 
			
		||||
+        {
 | 
			
		||||
+          'action_name': 'paxmark_mksnapshot',
 | 
			
		||||
+          'inputs': [
 | 
			
		||||
+            '<(mksnapshot_u_exec)',
 | 
			
		||||
+          ],
 | 
			
		||||
+          'outputs': [
 | 
			
		||||
+            '<(mksnapshot_exec)',
 | 
			
		||||
+          ],
 | 
			
		||||
+          'action': [
 | 
			
		||||
+            'bash',
 | 
			
		||||
+            '-c',
 | 
			
		||||
+            'cp <(mksnapshot_u_exec) <(mksnapshot_exec) && paxmark.sh m <(mksnapshot_exec)'
 | 
			
		||||
+          ],
 | 
			
		||||
+        },
 | 
			
		||||
+      ],
 | 
			
		||||
     },  # mksnapshot
 | 
			
		||||
     {
 | 
			
		||||
       'target_name': 'torque',
 | 
			
		||||
-- 
 | 
			
		||||
2.49.0
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										21
									
								
								net-libs/nodejs/metadata.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								net-libs/nodejs/metadata.xml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,21 @@
 | 
			
		||||
<?xml version="1.0" encoding="UTF-8"?>
 | 
			
		||||
<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
 | 
			
		||||
<pkgmetadata>
 | 
			
		||||
	<maintainer type="person">
 | 
			
		||||
		<email>williamh@gentoo.org</email>
 | 
			
		||||
		<name>William Hubbs</name>
 | 
			
		||||
	</maintainer>
 | 
			
		||||
	<use>
 | 
			
		||||
		<flag name="corepack">Enable the experimental corepack package management tool</flag>
 | 
			
		||||
		<flag name="inspector">Enable V8 inspector</flag>
 | 
			
		||||
		<flag name="npm">Enable NPM package manager</flag>
 | 
			
		||||
		<flag name="pax-kernel">Enable building under a PaX enabled kernel</flag>
 | 
			
		||||
		<flag name="snapshot">Enable snapshot creation for faster startup</flag>
 | 
			
		||||
		<flag name="system-icu">Use system <pkg>dev-libs/icu</pkg> instead of the bundled version</flag>
 | 
			
		||||
		<flag name="system-ssl">Use system OpenSSL instead of the bundled one</flag>
 | 
			
		||||
	</use>
 | 
			
		||||
	<upstream>
 | 
			
		||||
		<remote-id type="github">nodejs/node</remote-id>
 | 
			
		||||
		<remote-id type="cpe">cpe:/a:nodejs:nodejs</remote-id>
 | 
			
		||||
	</upstream>
 | 
			
		||||
</pkgmetadata>
 | 
			
		||||
							
								
								
									
										292
									
								
								net-libs/nodejs/nodejs-24.4.1.ebuild
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										292
									
								
								net-libs/nodejs/nodejs-24.4.1.ebuild
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,292 @@
 | 
			
		||||
# Copyright 1999-2025 Gentoo Authors
 | 
			
		||||
# Distributed under the terms of the GNU General Public License v2
 | 
			
		||||
 | 
			
		||||
EAPI=8
 | 
			
		||||
 | 
			
		||||
CONFIG_CHECK="~ADVISE_SYSCALLS"
 | 
			
		||||
PYTHON_COMPAT=( python3_{10..13} )
 | 
			
		||||
PYTHON_REQ_USE="threads(+)"
 | 
			
		||||
 | 
			
		||||
inherit bash-completion-r1 check-reqs flag-o-matic linux-info ninja-utils pax-utils python-any-r1 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 ~amd64-linux ~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 )"
 | 
			
		||||
 | 
			
		||||
RDEPEND=">=app-arch/brotli-1.1.0:=
 | 
			
		||||
	dev-db/sqlite:3
 | 
			
		||||
	>=dev-libs/libuv-1.51.0:=
 | 
			
		||||
	>=dev-libs/simdjson-3.10.1:=
 | 
			
		||||
	>=net-dns/c-ares-1.34.4:=
 | 
			
		||||
	>=net-libs/nghttp2-1.64.0:=
 | 
			
		||||
	>=net-libs/nghttp3-1.7.0:=
 | 
			
		||||
	sys-libs/zlib
 | 
			
		||||
	corepack? ( !sys-apps/yarn )
 | 
			
		||||
	system-icu? ( >=dev-libs/icu-73:= )
 | 
			
		||||
	system-ssl? (
 | 
			
		||||
		>=net-libs/ngtcp2-1.9.1:=
 | 
			
		||||
		>=dev-libs/openssl-1.1.1: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="${RDEPEND}"
 | 
			
		||||
 | 
			
		||||
# 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}-24.1.0-paxmarking.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() {
 | 
			
		||||
	export NINJA_ARGS=" $(get_NINJAOPTS)"
 | 
			
		||||
	emake -Onone
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
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
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user