diff options
Diffstat (limited to 'www/node25')
| -rw-r--r-- | www/node25/Makefile | 113 | ||||
| -rw-r--r-- | www/node25/Makefile.version | 1 | ||||
| -rw-r--r-- | www/node25/distinfo | 3 | ||||
| -rw-r--r-- | www/node25/files/patch-armv7 | 12 | ||||
| -rw-r--r-- | www/node25/files/patch-deps-openssl-openssl-cl_no_asm.gypi | 17 | ||||
| -rw-r--r-- | www/node25/files/patch-deps-openssl-openssl_no_asm.gypi | 11 | ||||
| -rw-r--r-- | www/node25/files/patch-deps-v8-src-base-platform-platform-freebsd.cc | 13 | ||||
| -rw-r--r-- | www/node25/files/patch-deps-v8-src-codegen-arm-cpu-arm.cc | 18 | ||||
| -rw-r--r-- | www/node25/files/patch-deps-v8-src-codegen-ppc-constants-ppc.h | 20 | ||||
| -rw-r--r-- | www/node25/files/patch-deps-v8-src-libsampler-sampler.cc | 13 | ||||
| -rw-r--r-- | www/node25/files/patch-deps_v8_include_v8config.h | 11 | ||||
| -rw-r--r-- | www/node25/files/patch-deps_v8_src_base_platform_platform-posix.cc | 12 | ||||
| -rw-r--r-- | www/node25/files/patch-node.gypi | 12 | ||||
| -rw-r--r-- | www/node25/files/patch-src-cares_wrap.h | 11 | ||||
| -rw-r--r-- | www/node25/pkg-descr | 2 | ||||
| -rw-r--r-- | www/node25/pkg-message | 7 | ||||
| -rw-r--r-- | www/node25/pkg-plist | 112 | 
17 files changed, 388 insertions, 0 deletions
| diff --git a/www/node25/Makefile b/www/node25/Makefile new file mode 100644 index 000000000000..8b350a96b435 --- /dev/null +++ b/www/node25/Makefile @@ -0,0 +1,113 @@ +PORTNAME=	node +PORTVERSION=	${NODEJS_PORTVERSION} +DISTVERSIONPREFIX=	v +CATEGORIES=	www +MASTER_SITES=	https://nodejs.org/dist/v${PORTVERSION}/ +PKGNAMESUFFIX=	${PORTVERSION:R:R} + +MAINTAINER=	sunpoet@FreeBSD.org +COMMENT=	V8 JavaScript for client and server +WWW=		https://nodejs.org/ \ +		https://github.com/nodejs/node + +LICENSE=	MIT +LICENSE_FILE=	${WRKSRC}/LICENSE + +BROKEN_SSL=	libressl libressl-devel +BROKEN_SSL_REASON=	Node.js ${PORTVERSION:R:R}.x requires OpenSSL or the BUNDLED_SSL option enabled +ONLY_FOR_ARCHS=	aarch64 amd64 armv6 armv7 i386 powerpc64 powerpc64le + +BUILD_DEPENDS=	objdump:devel/binutils +LIB_DEPENDS=	libbrotlidec.so:archivers/brotli \ +		libcares.so:dns/c-ares \ +		libicui18n.so:devel/icu \ +		libllhttp.so:www/llhttp \ +		libnghttp2.so:www/libnghttp2 \ +		libnghttp3.so:www/libnghttp3 \ +		libngtcp2.so:net/libngtcp2 \ +		libsimdjson.so:devel/simdjson \ +		libuv.so:devel/libuv \ +		libzstd.so:archivers/zstd +RUN_DEPENDS=	corepack>=0:www/corepack + +USES=		compiler:c++11-lang gmake localbase pkgconfig python:build shebangfix tar:xz + +CONFIGURE_ARGS=	--prefix=${PREFIX:S|^${DESTDIR}||} \ +		--shared-brotli \ +		--shared-cares \ +		--shared-http-parser \ +		--shared-libuv \ +		--shared-nghttp2 \ +		--shared-nghttp3 \ +		--shared-ngtcp2 \ +		--shared-simdjson \ +		--shared-zlib \ +		--shared-zstd \ +		--with-intl=system-icu \ +		--without-npm +CXXFLAGS_powerpc64=	-mpower8-vector +HAS_CONFIGURE=	yes +MAKE_ENV=	CC.host="${CCACHE_BIN} ${CC}" \ +		CFLAGS.host="${CFLAGS}" \ +		CXX.host="${CCACHE_BIN} ${CXX}" \ +		CXXFLAGS.host="${CXXFLAGS}" \ +		LDFLAGS.host="${LDFLAGS}" \ +		LINK.host="${CXX}" +REINPLACE_ARGS=	-i '' + +CONFLICTS_INSTALL=	node[0-9][0-9] + +SHEBANG_FILES=	deps/v8/third_party/inspector_protocol/*.py \ +		deps/v8/tools/*.py \ +		tools/*.py \ +		tools/inspector_protocol/*.py + +OPTIONS_DEFINE=	BUNDLED_SSL DOCS JIT +OPTIONS_DEFAULT=JIT +OPTIONS_SUB=	yes +BUNDLED_SSL_DESC=	Use bundled OpenSSL implementation from node.js +JIT_DESC=		Use Just In Time compiler + +BUNDLED_SSL_CONFIGURE_OFF=	--openssl-use-def-ca-store --shared-openssl +BUNDLED_SSL_RUN_DEPENDS_OFF=	ca_root_nss>=0:security/ca_root_nss +BUNDLED_SSL_USES_OFF=	ssl +JIT_CONFIGURE_OFF=	--v8-lite-mode + +.include "Makefile.version" +.include <bsd.port.options.mk> + +.if ${PORT_OPTIONS:MBUNDLED_SSL} && ${ARCH} != amd64 +CONFIGURE_ARGS+=--openssl-no-asm +.endif + +post-patch: +	@${REINPLACE_CMD} -e 's|/usr/local|${LOCALBASE}|' ${WRKSRC}/tools/v8_gypfiles/v8.gyp +# Clean up bundled libraries +	@${RM} -r ${WRKSRC}/deps/brotli/ +	@${RM} -r ${WRKSRC}/deps/cares/ +	@${RM} -r ${WRKSRC}/deps/icu-small/ +	@${RM} -r ${WRKSRC}/deps/llhttp/ +	@${RM} -r ${WRKSRC}/deps/nghttp2/ +	@${RM} -r ${WRKSRC}/deps/ngtcp2/ +	@${RM} -r ${WRKSRC}/deps/npm/ +	@${RM} -r ${WRKSRC}/deps/simdjson/ +	@${RM} -r ${WRKSRC}/deps/uv/ +	@${RM} -r ${WRKSRC}/deps/zlib/ +	@${RM} -r ${WRKSRC}/deps/zstd/ + +post-configure: +	# Post-process Makefile and *.mk files created by node-gyp and remove +	# all occurrences of -I${LOCALBASE}/include. C*FLAGS include this +	# before all -I../deps/* for bundled code. This can cause build +	# breakages if the dependency is installed in ${LOCALBASE}. The +	# USES+=localbase # above will ensure that we pick up includes for real +	# external dependencies. +	${FIND} ${WRKSRC}/out -type f -print0 | ${XARGS} -0 ${REINPLACE_CMD} -e "s|-I${LOCALBASE}/include||g" + +post-install: +	${STRIP_CMD} ${STAGEDIR}${PREFIX}/bin/node + +post-install-BUNDLED_SSL-on: +	cd ${STAGEDIR}${PREFIX} && ${FIND} include/node/openssl/ -type f >> ${TMPPLIST} + +.include <bsd.port.mk> diff --git a/www/node25/Makefile.version b/www/node25/Makefile.version new file mode 100644 index 000000000000..4dbe8cd0770c --- /dev/null +++ b/www/node25/Makefile.version @@ -0,0 +1 @@ +NODEJS_PORTVERSION=	25.0.0 diff --git a/www/node25/distinfo b/www/node25/distinfo new file mode 100644 index 000000000000..773fbd2ba111 --- /dev/null +++ b/www/node25/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1760717241 +SHA256 (node-v25.0.0.tar.xz) = 2822cd7b510c955f8c4d448fa483f01d2839251774220a356a6b9bc2ab2039ae +SIZE (node-v25.0.0.tar.xz) = 53218272 diff --git a/www/node25/files/patch-armv7 b/www/node25/files/patch-armv7 new file mode 100644 index 000000000000..189f9b3780d8 --- /dev/null +++ b/www/node25/files/patch-armv7 @@ -0,0 +1,12 @@ +--- tools/v8_gypfiles/v8.gyp.orig	2025-07-17 21:44:08 UTC ++++ tools/v8_gypfiles/v8.gyp +@@ -1314,9 +1314,6 @@ +         # to implement atomic memory access. +         # Clang needs it for some atomic operations (https://clang.llvm.org/docs/Toolchain.html#atomics-library). +         ['(OS=="linux" and clang==1) or (v8_current_cpu in ["mips64", "mips64el", "arm", "riscv64", "loong64"])', { +-          'link_settings': { +-            'libraries': ['-latomic', ], +-          }, +         }], +       ], +     },  # v8_base_without_compiler diff --git a/www/node25/files/patch-deps-openssl-openssl-cl_no_asm.gypi b/www/node25/files/patch-deps-openssl-openssl-cl_no_asm.gypi new file mode 100644 index 000000000000..2670843ea933 --- /dev/null +++ b/www/node25/files/patch-deps-openssl-openssl-cl_no_asm.gypi @@ -0,0 +1,17 @@ +--- deps/openssl/openssl-cl_no_asm.gypi.orig	2023-10-24 10:04:40 UTC ++++ deps/openssl/openssl-cl_no_asm.gypi +@@ -1,4 +1,5 @@ + { ++  'defines': ['OPENSSL_NO_ASM'], +   'conditions': [ +     ['target_arch=="ppc64" and OS in ("aix", "os400")', { +       'includes': ['config/archs/aix64-gcc-as/no-asm/openssl-cl.gypi'], +@@ -45,7 +46,7 @@ +       'includes': ['config/archs/linux64-loongarch64/no-asm/openssl-cl.gypi'], +     }, { +       # Other architectures don't use assembly +-      'includes': ['config/archs/linux-x86_64/no-asm/openssl-cl.gypi'], ++      'includes': ['config/archs/linux-elf/no-asm/openssl-cl.gypi'], +     }], +   ], + } diff --git a/www/node25/files/patch-deps-openssl-openssl_no_asm.gypi b/www/node25/files/patch-deps-openssl-openssl_no_asm.gypi new file mode 100644 index 000000000000..a7f94c9eda31 --- /dev/null +++ b/www/node25/files/patch-deps-openssl-openssl_no_asm.gypi @@ -0,0 +1,11 @@ +--- deps/openssl/openssl_no_asm.gypi.orig	2025-05-06 12:36:29 UTC ++++ deps/openssl/openssl_no_asm.gypi +@@ -46,7 +46,7 @@ +       'includes': ['config/archs/linux64-loongarch64/no-asm/openssl.gypi'], +     }, { +       # Other architectures don't use assembly +-      'includes': ['config/archs/linux-x86_64/no-asm/openssl.gypi'], ++      'includes': ['config/archs/linux-elf/no-asm/openssl.gypi'], +     }], +   ], + } diff --git a/www/node25/files/patch-deps-v8-src-base-platform-platform-freebsd.cc b/www/node25/files/patch-deps-v8-src-base-platform-platform-freebsd.cc new file mode 100644 index 000000000000..be89ded1df8d --- /dev/null +++ b/www/node25/files/patch-deps-v8-src-base-platform-platform-freebsd.cc @@ -0,0 +1,13 @@ +--- deps/v8/src/base/platform/platform-freebsd.cc.orig	2023-05-16 06:58:20 UTC ++++ deps/v8/src/base/platform/platform-freebsd.cc +@@ -82,8 +82,8 @@ std::vector<OS::SharedLibraryAddress> OS::GetSharedLib +             lib_name = std::string(path); +           } +           result.push_back(SharedLibraryAddress( +-              lib_name, reinterpret_cast<uintptr_t>(map->kve_start), +-              reinterpret_cast<uintptr_t>(map->kve_end))); ++              lib_name, static_cast<uintptr_t>(map->kve_start), ++              static_cast<uintptr_t>(map->kve_end))); +         } +  +         start += ssize; diff --git a/www/node25/files/patch-deps-v8-src-codegen-arm-cpu-arm.cc b/www/node25/files/patch-deps-v8-src-codegen-arm-cpu-arm.cc new file mode 100644 index 000000000000..42fd70bfd7ca --- /dev/null +++ b/www/node25/files/patch-deps-v8-src-codegen-arm-cpu-arm.cc @@ -0,0 +1,18 @@ +--- deps/v8/src/codegen/arm/cpu-arm.cc.orig	2023-05-16 06:58:20 UTC ++++ deps/v8/src/codegen/arm/cpu-arm.cc +@@ -2,12 +2,15 @@ + // Use of this source code is governed by a BSD-style license that can be + // found in the LICENSE file. +  ++#include "include/v8config.h" ++ + // CPU specific code for arm independent of OS goes here. + #ifdef __arm__ + #ifdef __QNXNTO__ + #include <sys/mman.h>  // for cache flushing. + #undef MAP_TYPE + #elif V8_OS_FREEBSD ++#include <sys/cdefs.h> + #include <machine/sysarch.h>  // for cache flushing + #include <sys/types.h> + #elif V8_OS_STARBOARD diff --git a/www/node25/files/patch-deps-v8-src-codegen-ppc-constants-ppc.h b/www/node25/files/patch-deps-v8-src-codegen-ppc-constants-ppc.h new file mode 100644 index 000000000000..436f9a7c82be --- /dev/null +++ b/www/node25/files/patch-deps-v8-src-codegen-ppc-constants-ppc.h @@ -0,0 +1,20 @@ +--- deps/v8/src/codegen/ppc/constants-ppc.h.orig	2025-05-06 12:36:30 UTC ++++ deps/v8/src/codegen/ppc/constants-ppc.h +@@ -35,7 +35,7 @@ + #define ABI_PASSES_HANDLES_IN_REGS 0 + #endif +  +-#if !V8_HOST_ARCH_PPC64 || !V8_TARGET_ARCH_PPC64 || V8_TARGET_LITTLE_ENDIAN || \ ++#if !V8_HOST_ARCH_PPC64 || !V8_TARGET_ARCH_PPC64 || \ +     (defined(_CALL_ELF) && _CALL_ELF == 2) + #define ABI_RETURNS_OBJECT_PAIRS_IN_REGS 1 + #else +@@ -44,7 +44,7 @@ +  + #if !V8_HOST_ARCH_PPC64 ||   \ +     (V8_TARGET_ARCH_PPC64 && \ +-     (V8_TARGET_LITTLE_ENDIAN || (defined(_CALL_ELF) && _CALL_ELF == 2))) ++     (defined(_CALL_ELF) && _CALL_ELF == 2)) + #define ABI_CALL_VIA_IP 1 + #else + #define ABI_CALL_VIA_IP 0 diff --git a/www/node25/files/patch-deps-v8-src-libsampler-sampler.cc b/www/node25/files/patch-deps-v8-src-libsampler-sampler.cc new file mode 100644 index 000000000000..463370ea8d6a --- /dev/null +++ b/www/node25/files/patch-deps-v8-src-libsampler-sampler.cc @@ -0,0 +1,13 @@ +--- deps/v8/src/libsampler/sampler.cc.orig	2025-05-06 12:36:30 UTC ++++ deps/v8/src/libsampler/sampler.cc +@@ -520,6 +520,10 @@ void SignalHandler::FillRegisterState(void* context, R +   state->pc = reinterpret_cast<void*>(mcontext.__gregs[_REG_PC]); +   state->sp = reinterpret_cast<void*>(mcontext.__gregs[_REG_SP]); +   state->fp = reinterpret_cast<void*>(mcontext.__gregs[_REG_FP]); ++#elif V8_TARGET_ARCH_PPC64 ++  state->pc = reinterpret_cast<void*>(mcontext.mc_srr0); ++  state->sp = reinterpret_cast<void*>(mcontext.mc_frame[1]); ++  state->fp = reinterpret_cast<void*>(mcontext.mc_frame[31]); + #endif  // V8_HOST_ARCH_* + #elif V8_OS_NETBSD + #if V8_HOST_ARCH_IA32 diff --git a/www/node25/files/patch-deps_v8_include_v8config.h b/www/node25/files/patch-deps_v8_include_v8config.h new file mode 100644 index 000000000000..2fe13159fc15 --- /dev/null +++ b/www/node25/files/patch-deps_v8_include_v8config.h @@ -0,0 +1,11 @@ +--- deps/v8/include/v8config.h.orig	2025-07-15 17:11:17 UTC ++++ deps/v8/include/v8config.h +@@ -976,7 +976,7 @@ V8 shared library set USING_V8_SHARED. + #define V8_TARGET_LITTLE_ENDIAN 1 + #endif + #elif V8_TARGET_ARCH_PPC64 +-#if V8_OS_AIX ++#if defined(__BIG_ENDIAN__) || defined(V8_OS_AIX) + #define V8_TARGET_BIG_ENDIAN 1 + #else + #define V8_TARGET_LITTLE_ENDIAN 1 diff --git a/www/node25/files/patch-deps_v8_src_base_platform_platform-posix.cc b/www/node25/files/patch-deps_v8_src_base_platform_platform-posix.cc new file mode 100644 index 000000000000..3a6bc2e94249 --- /dev/null +++ b/www/node25/files/patch-deps_v8_src_base_platform_platform-posix.cc @@ -0,0 +1,12 @@ +--- deps/v8/src/base/platform/platform-posix.cc.orig	2025-07-15 17:11:17 UTC ++++ deps/v8/src/base/platform/platform-posix.cc +@@ -360,6 +360,9 @@ void* OS::GetRandomMmapAddr() { +   raw_addr &= uint64_t{0x3FFFF000}; +   // Use extra address space to isolate the mmap regions. +   raw_addr += uint64_t{0x400000000000}; ++#elif V8_TARGET_BIG_ENDIAN ++  // Big-endian Linux: 42 bits of virtual addressing. ++  raw_addr &= uint64_t{0x03FFFFFFF000}; + #else +   // Little-endian Linux: 46 bits of virtual addressing. +   raw_addr &= uint64_t{0x3FFFFFFF0000}; diff --git a/www/node25/files/patch-node.gypi b/www/node25/files/patch-node.gypi new file mode 100644 index 000000000000..bd2f3dec9ffa --- /dev/null +++ b/www/node25/files/patch-node.gypi @@ -0,0 +1,12 @@ +--- node.gypi.orig	2025-05-06 12:36:33 UTC ++++ node.gypi +@@ -376,6 +376,9 @@ +     [ 'node_use_openssl=="true"', { +       'defines': [ 'HAVE_OPENSSL=1' ], +       'conditions': [ ++        ['openssl_no_asm==1', { ++          'defines': [ 'OPENSSL_NO_ASM' ], ++        }], +         [ 'node_shared_openssl=="false"', { +           'defines': [ 'OPENSSL_API_COMPAT=0x10100000L', ], +           'dependencies': [ diff --git a/www/node25/files/patch-src-cares_wrap.h b/www/node25/files/patch-src-cares_wrap.h new file mode 100644 index 000000000000..7bac6f049408 --- /dev/null +++ b/www/node25/files/patch-src-cares_wrap.h @@ -0,0 +1,11 @@ +--- src/cares_wrap.h.orig	2023-05-16 06:58:21 UTC ++++ src/cares_wrap.h +@@ -23,7 +23,7 @@ + # include <netdb.h> + #endif  // __POSIX__ +  +-# include <ares_nameser.h> ++# include <arpa/nameser.h> +  + namespace node { + namespace cares_wrap { diff --git a/www/node25/pkg-descr b/www/node25/pkg-descr new file mode 100644 index 000000000000..aed88d828d57 --- /dev/null +++ b/www/node25/pkg-descr @@ -0,0 +1,2 @@ +Node.js is a free, open-source, cross-platform JavaScript runtime environment +that lets developers create servers, web apps, command line tools and scripts. diff --git a/www/node25/pkg-message b/www/node25/pkg-message new file mode 100644 index 000000000000..f0b7094fe257 --- /dev/null +++ b/www/node25/pkg-message @@ -0,0 +1,7 @@ +[ +{ type: install +  message: <<EOM +Note: If you need npm (Node Package Manager), please install www/npm-node25. +EOM +} +] diff --git a/www/node25/pkg-plist b/www/node25/pkg-plist new file mode 100644 index 000000000000..cbdee2119fa8 --- /dev/null +++ b/www/node25/pkg-plist @@ -0,0 +1,112 @@ +bin/node +include/node/common.gypi +include/node/config.gypi +include/node/cppgc/allocation.h +include/node/cppgc/common.h +include/node/cppgc/cross-thread-persistent.h +include/node/cppgc/custom-space.h +include/node/cppgc/default-platform.h +include/node/cppgc/explicit-management.h +include/node/cppgc/garbage-collected.h +include/node/cppgc/heap-consistency.h +include/node/cppgc/heap-handle.h +include/node/cppgc/heap-state.h +include/node/cppgc/heap-statistics.h +include/node/cppgc/heap.h +include/node/cppgc/internal/api-constants.h +include/node/cppgc/internal/atomic-entry-flag.h +include/node/cppgc/internal/base-page-handle.h +include/node/cppgc/internal/caged-heap-local-data.h +include/node/cppgc/internal/caged-heap.h +include/node/cppgc/internal/compiler-specific.h +include/node/cppgc/internal/conditional-stack-allocated.h +include/node/cppgc/internal/finalizer-trait.h +include/node/cppgc/internal/gc-info.h +include/node/cppgc/internal/logging.h +include/node/cppgc/internal/member-storage.h +include/node/cppgc/internal/name-trait.h +include/node/cppgc/internal/persistent-node.h +include/node/cppgc/internal/pointer-policies.h +include/node/cppgc/internal/write-barrier.h +include/node/cppgc/liveness-broker.h +include/node/cppgc/macros.h +include/node/cppgc/member.h +include/node/cppgc/name-provider.h +include/node/cppgc/object-size-trait.h +include/node/cppgc/persistent.h +include/node/cppgc/platform.h +include/node/cppgc/prefinalizer.h +include/node/cppgc/process-heap-statistics.h +include/node/cppgc/sentinel-pointer.h +include/node/cppgc/source-location.h +include/node/cppgc/testing.h +include/node/cppgc/trace-trait.h +include/node/cppgc/type-traits.h +include/node/cppgc/visitor.h +include/node/js_native_api.h +include/node/js_native_api_types.h +include/node/libplatform/libplatform-export.h +include/node/libplatform/libplatform.h +include/node/libplatform/v8-tracing.h +include/node/node.h +include/node/node_api.h +include/node/node_api_types.h +include/node/node_buffer.h +include/node/node_object_wrap.h +include/node/node_version.h +include/node/v8-array-buffer.h +include/node/v8-callbacks.h +include/node/v8-container.h +include/node/v8-context.h +include/node/v8-cppgc.h +include/node/v8-data.h +include/node/v8-date.h +include/node/v8-debug.h +include/node/v8-embedder-heap.h +include/node/v8-embedder-state-scope.h +include/node/v8-exception.h +include/node/v8-extension.h +include/node/v8-external.h +include/node/v8-forward.h +include/node/v8-function-callback.h +include/node/v8-function.h +include/node/v8-handle-base.h +include/node/v8-initialization.h +include/node/v8-internal.h +include/node/v8-isolate.h +include/node/v8-json.h +include/node/v8-local-handle.h +include/node/v8-locker.h +include/node/v8-maybe.h +include/node/v8-memory-span.h +include/node/v8-message.h +include/node/v8-microtask-queue.h +include/node/v8-microtask.h +include/node/v8-object.h +include/node/v8-persistent-handle.h +include/node/v8-platform.h +include/node/v8-primitive-object.h +include/node/v8-primitive.h +include/node/v8-profiler.h +include/node/v8-promise.h +include/node/v8-proxy.h +include/node/v8-regexp.h +include/node/v8-sandbox.h +include/node/v8-script.h +include/node/v8-snapshot.h +include/node/v8-source-location.h +include/node/v8-statistics.h +include/node/v8-template.h +include/node/v8-traced-handle.h +include/node/v8-typed-array.h +include/node/v8-unwinder.h +include/node/v8-value-serializer.h +include/node/v8-value.h +include/node/v8-version.h +include/node/v8-wasm.h +include/node/v8-weak-callback-info.h +include/node/v8.h +include/node/v8config.h +%%PORTDOCS%%%%DOCSDIR%%/gdbinit +%%PORTDOCS%%%%DOCSDIR%%/lldb_commands.py +@(,,444) share/man/man1/node.1.gz | 
