Framework: Rewrite nodejs.mk and reorganize www/{node,npm,yarn}

The current USES=nodejs has the following issues:
- www/node is not the default version while www/node16 is.
- It also means inconsistent naming of node ports.
- www/npm duplicates with www/npm-node16.
- www/yarn duplicates with www/yarn-node16.

The notable changes are introduced to fix the above issues:
- Rewrite Mk/Uses/nodejs.mk.
- Add new LTS version of nodejs (www/noe18).
- Add new current version of nodejs (www/node19).
- Change default nodejs version from 16 to 18 (latest LTS).
- Use consistent naming for all supported node versions.
- Convert www/node, www/npm and www/yarn to meta ports.

After this commit:
- All supported node versions are named as node{14,16,18,19}
- www/node is a meta port which depends on the default version (e.g. www/node18)
- www/npm is a meta port which depends on the default version (e.g. www/npm-node18)
- www/yarn is a meta port which depends on the default version (e.g. www/yarn-node18)
- Bump PORTREVISION of dependent ports for dependency change (from www/node16 to www/node18)

Discussed with:	jrm, otis, pizzamig
This commit is contained in:
Po-Chuan Hsieh 2023-01-30 22:20:38 +08:00
parent a58124c5ff
commit fa93fdc383
No known key found for this signature in database
GPG Key ID: 9A4BD10F002DD04B
65 changed files with 2878 additions and 248 deletions

View File

@ -1,58 +1,60 @@
# Provide support for NodeJS # Provide support for Node.js
# #
# Feature: nodejs # Feature: nodejs
# Usage: USES=nodejs or USES=nodejs:args
# Valid ARGS: build and/or run <version>
# version: lts, current, 14, 16, 18
# Default is: build,run
# Note: if you define a version, you must provide run and/or build
# #
# MAINTAINER: ports@FreeBSD.org # Usage: USES=nodejs[:args]
# Valid args:
# - build use node as build-time dependency
# - run use node as runtime dependency
# - env set the environment (NODEJS_VERSION and NODEJS_SUFFIX)
# - version available version: lts, current, 14, 16, 18, 19
#
# Note:
# - The supported versions follow upstream release schedule
# https://github.com/nodejs/Release/blob/main/README.md#release-schedule
# - lts is 18 now
# - current is 19 now
# - USES=nodejs means USES=nodejs:build,run
# - If you define a version, you must provide run and/or build
#
# MAINTAINER: sunpoet@FreeBSD.org
.if !defined(_INCLUDE_USES_NODEJS_MK) .if !defined(_INCLUDE_USES_NODEJS_MK)
_INCLUDE_USES_NODEJS_MK= yes _INCLUDE_USES_NODEJS_MK= yes
_VALID_NODEJS_VERSION= 14 16 18 lts current _VALID_NODEJS_VERSIONS= 14 16 18 19 current lts
_NODEJS_VERSION_SUFFIX= ${NODEJS_DEFAULT}
. if ! ${_VALID_NODEJS_VERSION:M${_NODEJS_VERSION_SUFFIX}} . if ! ${_VALID_NODEJS_VERSIONS:M${NODEJS_DEFAULT}}
IGNORE= Invalid nodejs default version ${_NODEJS_VERSION_SUFFIX}; valid versions are ${_VALID_NODEJS_VERSION} IGNORE= Invalid default nodejs version ${NODEJS_DEFAULT}; valid versions are ${_VALID_NODEJS_VERSIONS}
. endif
. if !empty(${nodejs_ARGS:Nbuild:Nrun:Nlts:Ncurrent:N14:N16:N18:N19})
IGNORE= USES=nodejs has invalid arguments ${nodejs_ARGS}.
. endif . endif
. if empty(nodejs_ARGS) . if empty(nodejs_ARGS)
nodejs_ARGS= build,run nodejs_ARGS= build,run
. endif . endif
. if ${nodejs_ARGS:M14} .undef _NODEJS_VER
_NODEJS_VERSION_SUFFIX= 14 . for version in ${_VALID_NODEJS_VERSIONS}
. elif ${nodejs_ARGS:M16} . if ${nodejs_ARGS:M${version}}
_NODEJS_VERSION_SUFFIX= 16 _NODEJS_VER= ${version}
. elif ${nodejs_ARGS:Mlts} . endif
_NODEJS_VERSION_SUFFIX= lts . endfor
. elif ${nodejs_ARGS:M18}
_NODEJS_VERSION_SUFFIX= 18 . if !defined(_NODEJS_VER)
. elif ${nodejs_ARGS:Mcurrent} _NODEJS_VER= ${NODEJS_DEFAULT}
_NODEJS_VERSION_SUFFIX= current
. elif defined(NODEJS_DEFAULT)
. endif . endif
# The nodejs 18 version is named www/node NODEJS_VERSION= ${_NODEJS_VER:S|current|19|:S|lts|18|}
. if ${_NODEJS_VERSION_SUFFIX:Mcurrent} NODEJS_SUFFIX= -node${NODEJS_VERSION}
_NODEJS_VERSION_SUFFIX=
. endif
. if ${_NODEJS_VERSION_SUFFIX:M18}
_NODEJS_VERSION_SUFFIX=
. endif
# The nodejs LTS is version 16
. if ${_NODEJS_VERSION_SUFFIX:Mlts}
_NODEJS_VERSION_SUFFIX= 16
. endif
. if ${nodejs_ARGS:M*run*}
RUN_DEPENDS+= node:www/node${_NODEJS_VERSION_SUFFIX}
. endif
. if ${nodejs_ARGS:M*build*} . if ${nodejs_ARGS:M*build*}
BUILD_DEPENDS+= node:www/node${_NODEJS_VERSION_SUFFIX} BUILD_DEPENDS+= node:www/node${NODEJS_VERSION}
. endif
. if ${nodejs_ARGS:M*run*}
RUN_DEPENDS+= node:www/node${NODEJS_VERSION}
. endif . endif
.endif .endif

View File

@ -93,7 +93,7 @@ MONO_DEFAULT= 5.10
MYSQL_DEFAULT?= 5.7 MYSQL_DEFAULT?= 5.7
# Possible values: ninja, samurai # Possible values: ninja, samurai
NINJA_DEFAULT?= ninja NINJA_DEFAULT?= ninja
# Possible value: 14, 16, 18, lts, current # Possible value: 14, 16, 18, 19, current, lts (Note: current = 19 and lts = 18)
NODEJS_DEFAULT?= lts NODEJS_DEFAULT?= lts
# Possible values: 5.32, 5.34, 5.36, devel # Possible values: 5.32, 5.34, 5.36, devel
. if !exists(${LOCALBASE}/bin/perl) || (!defined(_PORTS_ENV_CHECK) && \ . if !exists(${LOCALBASE}/bin/perl) || (!defined(_PORTS_ENV_CHECK) && \

View File

@ -1,6 +1,6 @@
PORTNAME= thrift PORTNAME= thrift
PORTVERSION= ${THRIFT_PORTVERSION} PORTVERSION= ${THRIFT_PORTVERSION}
PORTREVISION= 1 PORTREVISION= 2
CATEGORIES= devel CATEGORIES= devel
MASTER_SITES= APACHE/thrift/${PORTVERSION} MASTER_SITES= APACHE/thrift/${PORTVERSION}
PKGNAMEPREFIX= node- PKGNAMEPREFIX= node-

View File

@ -1,5 +1,6 @@
PORTNAME= purescript-language-server PORTNAME= purescript-language-server
PORTVERSION= 0.17.1 PORTVERSION= 0.17.1
PORTREVISION= 1
CATEGORIES= devel textproc CATEGORIES= devel textproc
MASTER_SITES= https://github.com/nwolverson/${PORTNAME}/releases/download/v${PORTVERSION}/ MASTER_SITES= https://github.com/nwolverson/${PORTNAME}/releases/download/v${PORTVERSION}/
DISTNAME= ${PORTNAME}.js DISTNAME= ${PORTNAME}.js

View File

@ -1,6 +1,6 @@
PORTNAME= execjs PORTNAME= execjs
PORTVERSION= 2.8.1 PORTVERSION= 2.8.1
PORTREVISION= 2 PORTREVISION= 3
CATEGORIES= devel rubygems CATEGORIES= devel rubygems
MASTER_SITES= RG MASTER_SITES= RG

View File

@ -1,6 +1,6 @@
PORTNAME= sonar-scanner-cli PORTNAME= sonar-scanner-cli
DISTVERSION= 4.4.0.2170 DISTVERSION= 4.4.0.2170
PORTREVISION= 2 PORTREVISION= 3
CATEGORIES= devel security www java CATEGORIES= devel security www java
MASTER_SITES= https://binaries.sonarsource.com/Distribution/${PORTNAME}/ MASTER_SITES= https://binaries.sonarsource.com/Distribution/${PORTNAME}/

View File

@ -1,5 +1,6 @@
PORTNAME= wipeclean PORTNAME= wipeclean
PORTVERSION= 1.1.2 PORTVERSION= 1.1.2
PORTREVISION= 1
PORTEPOCH= 1 PORTEPOCH= 1
CATEGORIES= games CATEGORIES= games
MASTER_SITES= LOCAL/ehaupt MASTER_SITES= LOCAL/ehaupt

View File

@ -1,5 +1,6 @@
PORTNAME= coffeescript PORTNAME= coffeescript
DISTVERSION= 2.7.0 DISTVERSION= 2.7.0
PORTREVISION= 1
CATEGORIES= lang CATEGORIES= lang
MAINTAINER= egypcio@FreeBSD.org MAINTAINER= egypcio@FreeBSD.org

View File

@ -1,6 +1,7 @@
PORTNAME= write-good PORTNAME= write-good
DISTVERSIONPREFIX= v DISTVERSIONPREFIX= v
DISTVERSION= 1.0.8 DISTVERSION= 1.0.8
PORTREVISION= 1
CATEGORIES= textproc CATEGORIES= textproc
MASTER_SITES= LOCAL/0mp/:npm MASTER_SITES= LOCAL/0mp/:npm
DISTFILES= ${_NPM_DISTFILES} DISTFILES= ${_NPM_DISTFILES}

View File

@ -1,7 +1,7 @@
PORTNAME= csso PORTNAME= csso
PORTVERSION= 1.3.9 PORTVERSION= 1.3.9
DISTVERSIONPREFIX= v DISTVERSIONPREFIX= v
PORTREVISION= 2 PORTREVISION= 3
CATEGORIES= www CATEGORIES= www
MASTER_SITES= http://nivit.altervista.org/FreeBSD/ports/distfiles/ MASTER_SITES= http://nivit.altervista.org/FreeBSD/ports/distfiles/

View File

@ -1,100 +1,12 @@
PORTNAME= node PORTNAME= node
PORTVERSION= 18.12.1 PORTVERSION= 18.12.1
DISTVERSIONPREFIX= v
CATEGORIES= www CATEGORIES= www
MASTER_SITES= https://nodejs.org/dist/v${PORTVERSION}/
MAINTAINER= sunpoet@FreeBSD.org MAINTAINER= sunpoet@FreeBSD.org
COMMENT= V8 JavaScript for client and server COMMENT= V8 JavaScript for client and server (meta port)
WWW= https://nodejs.org/ WWW= https://nodejs.org/ \
https://github.com/nodejs/node
LICENSE= MIT USES= metaport nodejs:run
LICENSE_FILE= ${WRKSRC}/LICENSE
BROKEN_SSL= libressl libressl-devel
BROKEN_SSL_REASON= Node.js ${PORTVERSION:R:R}.x requires OpenSSL 1.1.x or the BUNDLED_SSL option enabled
ONLY_FOR_ARCHS= aarch64 amd64 armv6 armv7 i386 powerpc64 powerpc64le
BUILD_DEPENDS= brotli>=1.0.9,1:archivers/brotli \
c-ares>=1.17.2:dns/c-ares \
libnghttp2>=1.45.1:www/libnghttp2 \
libuv>=1.42.0:devel/libuv \
objdump:devel/binutils
LIB_DEPENDS= libbrotlidec.so:archivers/brotli \
libcares.so:dns/c-ares \
libnghttp2.so:www/libnghttp2 \
libuv.so:devel/libuv
USES= compiler:c++11-lib gmake localbase pkgconfig python:3.6-3.10,build shebangfix
CONFIGURE_ARGS= --prefix=${PREFIX:S|^${DESTDIR}||} \
--shared-brotli \
--shared-cares \
--shared-libuv \
--shared-nghttp2 \
--shared-zlib \
--without-npm
HAS_CONFIGURE= yes
MAKE_ENV= CC.host="${CC}" \
CFLAGS.host="${CFLAGS}" \
CXX.host="${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 DTRACE NLS
OPTIONS_DEFAULT=DTRACE
.if !exists(/usr/sbin/dtrace)
OPTIONS_EXCLUDE+= DTRACE
.endif
OPTIONS_EXCLUDE_aarch64= DTRACE
# dt_modtext:/usr/src/cddl/contrib/opensolaris/lib/libdtrace/common/dt_link.c(820): arm not implemented
OPTIONS_EXCLUDE_armv6= DTRACE
OPTIONS_EXCLUDE_armv7= DTRACE
OPTIONS_EXCLUDE_powerpc64= DTRACE
OPTIONS_EXCLUDE_powerpc64le= DTRACE
OPTIONS_SUB= yes
BUNDLED_SSL_DESC= Use bundled OpenSSL implementation from node.js
BUNDLED_SSL_CONFIGURE_OFF= --shared-openssl --openssl-use-def-ca-store
BUNDLED_SSL_RUN_DEPENDS_OFF= ca_root_nss>=0:security/ca_root_nss
BUNDLED_SSL_USES_OFF= ssl
DTRACE_CONFIGURE_ON= --with-dtrace
NLS_BUILD_DEPENDS= icu>=69.1:devel/icu
NLS_CONFIGURE_ON= --with-intl=system-icu
NLS_LIB_DEPENDS= libicui18n.so:devel/icu
.include <bsd.port.options.mk>
.if (defined(PPC_ABI) && ${PPC_ABI} == ELFv2) || ${ARCH} == powerpc64le
EXTRA_PATCHES= ${PATCHDIR}/extra-patch-common.gypi
.endif
.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
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
.include <bsd.port.mk> .include <bsd.port.mk>

View File

@ -1,4 +1,4 @@
Node.js is a JavaScript runtime built on Chrome's V8 JavaScript Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine. Node.js
engine. Node.js uses an event-driven, non-blocking I/O model that uses an event-driven, non-blocking I/O model that makes it lightweight and
makes it lightweight and efficient. Node.js' package ecosystem, efficient. Node.js' package ecosystem, npm, is the largest ecosystem of open
npm, is the largest ecosystem of open source libraries in the world. source libraries in the world.

View File

@ -49,7 +49,7 @@ MAKE_ENV+= CC.host=${CC} \
TEST_ARGS= -i TEST_ARGS= -i
TEST_TARGET= test-only TEST_TARGET= test-only
CONFLICTS_INSTALL= node node10 node16 CONFLICTS_INSTALL= node[0-9][0-9]
PREFIX_RELDEST= ${PREFIX:S,^${DESTDIR},,} PREFIX_RELDEST= ${PREFIX:S,^${DESTDIR},,}
REINPLACE_ARGS= -i '' REINPLACE_ARGS= -i ''

View File

@ -50,7 +50,7 @@ COREPACK_CONFIGURE_OFF= --without-corepack
HAS_CONFIGURE= yes HAS_CONFIGURE= yes
CONFLICTS_INSTALL= node10 node14 node CONFLICTS_INSTALL= node[0-9][0-9]
CONFIGURE_ARGS= --prefix=${PREFIX_RELDEST} \ CONFIGURE_ARGS= --prefix=${PREFIX_RELDEST} \
--without-npm \ --without-npm \

102
www/node18/Makefile Normal file
View File

@ -0,0 +1,102 @@
PORTNAME= node
PORTVERSION= 18.12.1
DISTVERSIONPREFIX= v
CATEGORIES= www
MASTER_SITES= https://nodejs.org/dist/v${PORTVERSION}/
PKGNAMESUFFIX= 18
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 1.1.x or the BUNDLED_SSL option enabled
ONLY_FOR_ARCHS= aarch64 amd64 armv6 armv7 i386 powerpc64 powerpc64le
BUILD_DEPENDS= brotli>=1.0.9,1:archivers/brotli \
c-ares>=1.17.2:dns/c-ares \
libnghttp2>=1.45.1:www/libnghttp2 \
libuv>=1.42.0:devel/libuv \
objdump:devel/binutils
LIB_DEPENDS= libbrotlidec.so:archivers/brotli \
libcares.so:dns/c-ares \
libnghttp2.so:www/libnghttp2 \
libuv.so:devel/libuv
USES= compiler:c++11-lib gmake localbase pkgconfig python:3.6-3.10,build shebangfix
CONFIGURE_ARGS= --prefix=${PREFIX:S|^${DESTDIR}||} \
--shared-brotli \
--shared-cares \
--shared-libuv \
--shared-nghttp2 \
--shared-zlib \
--without-npm
HAS_CONFIGURE= yes
MAKE_ENV= CC.host="${CC}" \
CFLAGS.host="${CFLAGS}" \
CXX.host="${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 DTRACE NLS
OPTIONS_DEFAULT=DTRACE
.if !exists(/usr/sbin/dtrace)
OPTIONS_EXCLUDE+= DTRACE
.endif
OPTIONS_EXCLUDE_aarch64= DTRACE
# dt_modtext:/usr/src/cddl/contrib/opensolaris/lib/libdtrace/common/dt_link.c(820): arm not implemented
OPTIONS_EXCLUDE_armv6= DTRACE
OPTIONS_EXCLUDE_armv7= DTRACE
OPTIONS_EXCLUDE_powerpc64= DTRACE
OPTIONS_EXCLUDE_powerpc64le= DTRACE
OPTIONS_SUB= yes
BUNDLED_SSL_DESC= Use bundled OpenSSL implementation from node.js
BUNDLED_SSL_CONFIGURE_OFF= --shared-openssl --openssl-use-def-ca-store
BUNDLED_SSL_RUN_DEPENDS_OFF= ca_root_nss>=0:security/ca_root_nss
BUNDLED_SSL_USES_OFF= ssl
DTRACE_CONFIGURE_ON= --with-dtrace
NLS_BUILD_DEPENDS= icu>=69.1:devel/icu
NLS_CONFIGURE_ON= --with-intl=system-icu
NLS_LIB_DEPENDS= libicui18n.so:devel/icu
.include <bsd.port.options.mk>
.if (defined(PPC_ABI) && ${PPC_ABI} == ELFv2) || ${ARCH} == powerpc64le
EXTRA_PATCHES= ${PATCHDIR}/extra-patch-common.gypi
.endif
.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
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
.include <bsd.port.mk>

4
www/node18/pkg-descr Normal file
View File

@ -0,0 +1,4 @@
Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine. Node.js
uses an event-driven, non-blocking I/O model that makes it lightweight and
efficient. Node.js' package ecosystem, npm, is the largest ecosystem of open
source libraries in the world.

91
www/node19/Makefile Normal file
View File

@ -0,0 +1,91 @@
PORTNAME= node
PORTVERSION= 19.2.0
DISTVERSIONPREFIX= v
CATEGORIES= www
MASTER_SITES= https://nodejs.org/dist/v${PORTVERSION}/
PKGNAMESUFFIX= 19
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 1.1.x or the BUNDLED_SSL option enabled
ONLY_FOR_ARCHS= aarch64 amd64 armv6 armv7 i386 powerpc64 powerpc64le
BUILD_DEPENDS= brotli>=1.0.9,1:archivers/brotli \
c-ares>=1.17.2:dns/c-ares \
libnghttp2>=1.45.1:www/libnghttp2 \
libuv>=1.42.0:devel/libuv \
objdump:devel/binutils
LIB_DEPENDS= libbrotlidec.so:archivers/brotli \
libcares.so:dns/c-ares \
libnghttp2.so:www/libnghttp2 \
libuv.so:devel/libuv
USES= compiler:c++11-lib gmake localbase pkgconfig python:3.6-3.10,build shebangfix
CONFIGURE_ARGS= --prefix=${PREFIX:S|^${DESTDIR}||} \
--shared-brotli \
--shared-cares \
--shared-libuv \
--shared-nghttp2 \
--shared-zlib \
--without-npm
HAS_CONFIGURE= yes
MAKE_ENV= CC.host="${CC}" \
CFLAGS.host="${CFLAGS}" \
CXX.host="${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 NLS
OPTIONS_SUB= yes
BUNDLED_SSL_DESC= Use bundled OpenSSL implementation from node.js
BUNDLED_SSL_CONFIGURE_OFF= --shared-openssl --openssl-use-def-ca-store
BUNDLED_SSL_RUN_DEPENDS_OFF= ca_root_nss>=0:security/ca_root_nss
BUNDLED_SSL_USES_OFF= ssl
NLS_BUILD_DEPENDS= icu>=69.1:devel/icu
NLS_CONFIGURE_ON= --with-intl=system-icu
NLS_LIB_DEPENDS= libicui18n.so:devel/icu
.include <bsd.port.options.mk>
.if (defined(PPC_ABI) && ${PPC_ABI} == ELFv2) || ${ARCH} == powerpc64le
EXTRA_PATCHES= ${PATCHDIR}/extra-patch-common.gypi
.endif
.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
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
.include <bsd.port.mk>

3
www/node19/distinfo Normal file
View File

@ -0,0 +1,3 @@
TIMESTAMP = 1669824538
SHA256 (node-v19.2.0.tar.gz) = aac9d1a366fb57d68f4639f9204d1de5d6387656959a97ed929a5ba9e62c033a
SIZE (node-v19.2.0.tar.gz) = 84099370

View File

@ -0,0 +1,13 @@
--- common.gypi.orig 2019-10-01 15:32:40.000000000 +0200
+++ common.gypi 2019-10-16 12:47:09.236138000 +0200
@@ -390,8 +390,8 @@
'ldflags': [ '-m32' ],
}],
[ 'target_arch=="ppc64" and OS!="aix"', {
- 'cflags': [ '-m64', '-mminimal-toc' ],
- 'ldflags': [ '-m64' ],
+ 'cflags': [ '-m64' ],
+ 'ldflags': [ '-m64' ],
}],
[ 'target_arch=="s390x"', {
'cflags': [ '-m64', '-march=z196' ],

View File

@ -0,0 +1,11 @@
--- deps/openssl/config/archs/linux-elf/no-asm/openssl-cl.gypi.orig 2021-10-19 00:48:28 UTC
+++ deps/openssl/config/archs/linux-elf/no-asm/openssl-cl.gypi
@@ -13,7 +13,7 @@
'-Wall -O3 -fomit-frame-pointer',
],
'openssl_ex_libs_linux-elf': [
- '-ldl -pthread',
+ '-pthread',
],
'openssl_cli_srcs_linux-elf': [
'openssl/apps/lib/cmp_mock_srv.c',

View File

@ -0,0 +1,11 @@
--- deps/openssl/config/archs/linux-elf/no-asm/openssl.gypi.orig 2021-10-19 00:48:28 UTC
+++ deps/openssl/config/archs/linux-elf/no-asm/openssl.gypi
@@ -980,7 +980,7 @@
'-Wall -O3 -fomit-frame-pointer',
],
'openssl_ex_libs_linux-elf': [
- '-ldl -pthread',
+ '-pthread',
],
},
'include_dirs': [

View File

@ -0,0 +1,17 @@
--- deps/openssl/openssl-cl_no_asm.gypi.orig 2022-07-26 14:30:08 UTC
+++ deps/openssl/openssl-cl_no_asm.gypi
@@ -1,4 +1,5 @@
{
+ 'defines': ['OPENSSL_NO_ASM'],
'conditions': [
['target_arch=="ppc64" and OS=="aix"', {
'includes': ['config/archs/aix64-gcc-as/no-asm/openssl-cl.gypi'],
@@ -43,7 +44,7 @@
'includes': ['config/archs/linux64-riscv64/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'],
}],
],
}

View File

@ -0,0 +1,11 @@
--- deps/openssl/openssl_no_asm.gypi.orig 2020-09-08 12:17:11 UTC
+++ deps/openssl/openssl_no_asm.gypi
@@ -48,7 +48,7 @@
'includes': ['config/archs/linux64-mips64/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'],
}],
],
}

View File

@ -0,0 +1,13 @@
--- deps/v8/src/base/platform/platform-freebsd.cc.orig 2020-06-30 17:49:16 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;

View File

@ -0,0 +1,18 @@
--- deps/v8/src/codegen/arm/cpu-arm.cc.orig 2022-04-19 16:03:40 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

View File

@ -0,0 +1,20 @@
--- deps/v8/src/codegen/ppc/constants-ppc.h.orig 2020-06-30 17:49:17 UTC
+++ deps/v8/src/codegen/ppc/constants-ppc.h
@@ -36,7 +36,7 @@
#endif
#if !(V8_HOST_ARCH_PPC || 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_RETURNS_OBJECT_PAIRS_IN_REGS 1
#else
#define ABI_RETURNS_OBJECT_PAIRS_IN_REGS 0
@@ -44,7 +44,7 @@
#if !(V8_HOST_ARCH_PPC || 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

View File

@ -0,0 +1,13 @@
--- deps/v8/src/libsampler/sampler.cc.orig 2021-10-19 00:48:30 UTC
+++ deps/v8/src/libsampler/sampler.cc
@@ -497,6 +497,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

View File

@ -0,0 +1,12 @@
--- node.gypi.orig 2021-10-19 00:48:32 UTC
+++ node.gypi
@@ -319,6 +319,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': [

View File

@ -0,0 +1,11 @@
--- src/cares_wrap.h.orig 2021-08-18 22:13:12 UTC
+++ src/cares_wrap.h
@@ -22,7 +22,7 @@
# include <netdb.h>
#endif // __POSIX__
-# include <ares_nameser.h>
+# include <arpa/nameser.h>
namespace node {
namespace cares_wrap {

View File

@ -0,0 +1,11 @@
--- tools/v8_gypfiles/v8.gyp.orig 2022-11-14 02:26:08 UTC
+++ tools/v8_gypfiles/v8.gyp
@@ -975,7 +975,7 @@
}],
# Platforms that don't have Compare-And-Swap (CAS) support need to link atomic library
# to implement atomic memory access
- ['v8_current_cpu in ["mips64", "mips64el", "ppc", "arm", "riscv64", "loong64"]', {
+ ['v8_current_cpu in ["mips64", "mips64el", "ppc", "riscv64", "loong64"]', {
'link_settings': {
'libraries': ['-latomic', ],
},

4
www/node19/pkg-descr Normal file
View File

@ -0,0 +1,4 @@
Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine. Node.js
uses an event-driven, non-blocking I/O model that makes it lightweight and
efficient. Node.js' package ecosystem, npm, is the largest ecosystem of open
source libraries in the world.

7
www/node19/pkg-message Normal file
View File

@ -0,0 +1,7 @@
[
{ type: install
message: <<EOM
Note: If you need npm (Node Package Manager), please install www/npm.
EOM
}
]

2332
www/node19/pkg-plist Normal file

File diff suppressed because it is too large Load Diff

View File

@ -1,11 +1,5 @@
PKGNAMESUFFIX= -node14
CONFLICTS_INSTALL= npm npm-node16 npm-node18
USES= nodejs:14,run USES= nodejs:14,run
MASTERDIR= ${.CURDIR}/../npm MASTERDIR= ${.CURDIR}/../npm-node18
PORTSCOUT= ignore:1
.include "${MASTERDIR}/Makefile" .include "${MASTERDIR}/Makefile"

View File

@ -1,11 +1,5 @@
PKGNAMESUFFIX= -node16
CONFLICTS_INSTALL= npm npm-node14 npm-node18
USES= nodejs:16,run USES= nodejs:16,run
MASTERDIR= ${.CURDIR}/../npm MASTERDIR= ${.CURDIR}/../npm-node18
PORTSCOUT= ignore:1
.include "${MASTERDIR}/Makefile" .include "${MASTERDIR}/Makefile"

View File

@ -1,11 +1,44 @@
PKGNAMESUFFIX= -node18 PORTNAME= npm
PORTVERSION= 9.1.2
PORTREVISION= 1
CATEGORIES= www
MASTER_SITES= LOCAL/sunpoet
PKGNAMESUFFIX= ${NODEJS_SUFFIX}
CONFLICTS_INSTALL= npm npm-node14 npm-node16 MAINTAINER= sunpoet@FreeBSD.org
COMMENT= Node package manager
WWW= https://www.npmjs.com/package/npm \
https://github.com/npm/cli
USES= nodejs:18,run LICENSE= ART20
LICENSE_FILE= ${WRKSRC}/lib/node_modules/npm/LICENSE
MASTERDIR= ${.CURDIR}/../npm RUN_DEPENDS= gmake:devel/gmake
USES?= nodejs:18,run
USES+= cpe python:3.6+ shebangfix tar:xz
NO_ARCH= yes
NO_BUILD= yes
REINPLACE_ARGS= -i ''
CONFLICTS_INSTALL= npm-node[0-9][0-9]
CPE_VENDOR= npmjs
PORTSCOUT= ignore:1 PORTSCOUT= ignore:1
.include "${MASTERDIR}/Makefile" SHEBANG_GLOB= *.py
post-patch:
@${REINPLACE_CMD} -e 's|/usr/local|${PREFIX}|' ${WRKSRC}/etc/man.d/npm.conf
@${REINPLACE_CMD} -e 's|/usr/local|${LOCALBASE}|' ${WRKSRC}/lib/node_modules/npm/node_modules/node-gyp/gyp/gyp
@${REINPLACE_CMD} -e 's|exec python |exec ${PYTHON_CMD} |' ${WRKSRC}/lib/node_modules/npm/node_modules/node-gyp/gyp/gyp
@${FIND} ${WRKSRC}/ -name '*.sh' -exec ${REINPLACE_CMD} -e '1 s|/usr/local|${LOCALBASE}|' {} +
do-install:
cd ${WRKSRC}/ && ${COPYTREE_SHARE} . ${STAGEDIR}${PREFIX}/
${ECHO_CMD} 'python=${PYTHON_CMD}' > ${STAGEDIR}${PREFIX}/etc/npmrc
${PYTHON_CMD} -O -m compileall -d ${PREFIX}/lib/node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp -f ${STAGEDIR}${PREFIX}/lib/node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp
.include <bsd.port.mk>

2
www/npm-node18/pkg-descr Normal file
View File

@ -0,0 +1,2 @@
npm is a package manager for node. You can use it to install and publish your
node programs. It manages dependencies and does other cool stuff.

5
www/npm-node19/Makefile Normal file
View File

@ -0,0 +1,5 @@
USES= nodejs:19,run
MASTERDIR= ${.CURDIR}/../npm-node18
.include "${MASTERDIR}/Makefile"

View File

@ -1,41 +1,15 @@
PORTNAME= npm PORTNAME= npm
PORTVERSION= 9.1.2 PORTVERSION= 9.1.2
PORTREVISION= 1 PORTREVISION= 2
CATEGORIES= www CATEGORIES= www
MASTER_SITES= LOCAL/sunpoet
MAINTAINER= sunpoet@FreeBSD.org MAINTAINER= sunpoet@FreeBSD.org
COMMENT= Node package manager COMMENT= Node package manager (meta port)
WWW= https://www.npmjs.com/package/npm \ WWW= https://www.npmjs.com/package/npm \
https://github.com/npm/cli https://github.com/npm/cli
LICENSE= ART20 RUN_DEPENDS= npm${NODEJS_SUFFIX}>=0:www/npm${NODEJS_SUFFIX}
LICENSE_FILE= ${WRKSRC}/lib/node_modules/npm/LICENSE
RUN_DEPENDS= gmake:devel/gmake USES= metaport nodejs:env
USES?= nodejs:run
USES+= cpe python:3.6+ shebangfix tar:xz
NO_ARCH= yes
NO_BUILD= yes
REINPLACE_ARGS= -i ''
CONFLICTS_INSTALL?= npm-node[0-9][0-9]
CPE_VENDOR= npmjs
SHEBANG_GLOB= *.py
post-patch:
@${REINPLACE_CMD} -e 's|/usr/local|${PREFIX}|' ${WRKSRC}/etc/man.d/npm.conf
@${REINPLACE_CMD} -e 's|/usr/local|${LOCALBASE}|' ${WRKSRC}/lib/node_modules/npm/node_modules/node-gyp/gyp/gyp
@${REINPLACE_CMD} -e 's|exec python |exec ${PYTHON_CMD} |' ${WRKSRC}/lib/node_modules/npm/node_modules/node-gyp/gyp/gyp
@${FIND} ${WRKSRC}/ -name '*.sh' -exec ${REINPLACE_CMD} -e '1 s|/usr/local|${LOCALBASE}|' {} +
do-install:
cd ${WRKSRC}/ && ${COPYTREE_SHARE} . ${STAGEDIR}${PREFIX}/
${ECHO_CMD} 'python=${PYTHON_CMD}' > ${STAGEDIR}${PREFIX}/etc/npmrc
${PYTHON_CMD} -O -m compileall -d ${PREFIX}/lib/node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp -f ${STAGEDIR}${PREFIX}/lib/node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp
.include <bsd.port.mk> .include <bsd.port.mk>

View File

@ -1,9 +1,5 @@
PKGNAMESUFFIX= -node14
CONFLICTS_INSTALL= yarn yarn-node16 yarn-node18
USES= nodejs:14,run USES= nodejs:14,run
MASTERDIR= ${.CURDIR}/../yarn MASTERDIR= ${.CURDIR}/../yarn-node18
.include "${MASTERDIR}/Makefile" .include "${MASTERDIR}/Makefile"

View File

@ -1,9 +1,5 @@
PKGNAMESUFFIX= -node16
CONFLICTS_INSTALL= yarn yarn-node14 yarn-node18
USES= nodejs:16,run USES= nodejs:16,run
MASTERDIR= ${.CURDIR}/../yarn MASTERDIR= ${.CURDIR}/../yarn-node18
.include "${MASTERDIR}/Makefile" .include "${MASTERDIR}/Makefile"

View File

@ -1,9 +1,51 @@
PKGNAMESUFFIX= -node18 PORTNAME= yarn
DISTVERSIONPREFIX= v
PORTVERSION= 1.22.18
CATEGORIES= www
MASTER_SITES= https://yarnpkg.com/downloads/${PORTVERSION}/
PKGNAMESUFFIX= ${NODEJS_SUFFIX}
CONFLICTS_INSTALL= yarn yarn-node14 yarn-node16 MAINTAINER= pizzamig@FreeBSD.org
COMMENT= Package manager for node, alternative to npm
WWW= https://classic.yarnpkg.com/
USES= nodejs:18,run LICENSE= BSD2CLAUSE
LICENSE_FILE= ${WRKSRC}/LICENSE
MASTERDIR= ${.CURDIR}/../yarn USES?= nodejs:18,run
USES+= cpe
CPE_VENDOR= ${PORTNAME}pkg
.include "${MASTERDIR}/Makefile" CONFLICTS_INSTALL= yarn-node[0-9][0-9]
OPTIONS_DEFINE= HADOOPCOMPAT
HADOOPCOMPAT_DESC= hadoop2 compatibility, the yarn script is excluded
OPTIONS_SUB= yes
HADOOPCOMPAT_CONFLICTS_INSTALL_OFF= hadoop2*
NO_ARCH= yes
NO_BUILD= yes
post-patch:
@${RM} ${WRKSRC}/bin/*.cmd
@${REINPLACE_CMD} -i '' \
-e 's|"installationMethod": "tar"|"installationMethod": "pkg"|g' \
${WRKSRC}/package.json
@${REINPLACE_CMD} -i '' -e 's%Linux)%Linux|FreeBSD)%g' \
${WRKSRC}/bin/yarn
do-install:
${MKDIR} ${STAGEDIR}${PREFIX}/lib/node_modules/yarn
(cd ${WRKSRC}/ && ${COPYTREE_SHARE} . ${STAGEDIR}${PREFIX}/lib/node_modules/yarn)
${RLN} ${STAGEDIR}${PREFIX}/lib/node_modules/yarn/bin/yarn.js \
${STAGEDIR}${PREFIX}/bin/yarn.js
${RLN} ${STAGEDIR}${PREFIX}/lib/node_modules/yarn/bin/yarnpkg \
${STAGEDIR}${PREFIX}/bin/yarnpkg
do-install-HADOOPCOMPAT-off:
${RLN} ${STAGEDIR}${PREFIX}/lib/node_modules/yarn/bin/yarn \
${STAGEDIR}${PREFIX}/bin/yarn
.include <bsd.port.mk>

View File

@ -0,0 +1,4 @@
Yarn is a new node package manager that replaces the existing workflow for the
npm client or other package managers while remaining compatible with the npm
registry. It has the same feature set as existing workflows while operating
faster, more securely, and more reliably.

5
www/yarn-node19/Makefile Normal file
View File

@ -0,0 +1,5 @@
USES= nodejs:19,run
MASTERDIR= ${.CURDIR}/../yarn-node18
.include "${MASTERDIR}/Makefile"

View File

@ -1,51 +1,14 @@
PORTNAME= yarn PORTNAME= yarn
DISTVERSIONPREFIX= v PORTVERSION= 1.22.18
DISTVERSION= 1.22.18 PORTREVISION= 1
PORTREVISION= 0
CATEGORIES= www CATEGORIES= www
MASTER_SITES= https://yarnpkg.com/downloads/${PORTVERSION}/
MAINTAINER= pizzamig@FreeBSD.org MAINTAINER= pizzamig@FreeBSD.org
COMMENT= Package manager for node, alternative to npm COMMENT= Package manager for node, alternative to npm (meta port)
WWW= https://yarnpkg.com/blog/ WWW= https://classic.yarnpkg.com/
LICENSE= BSD2CLAUSE RUN_DEPENDS= yarn${NODEJS_SUFFIX}>=0:www/yarn${NODEJS_SUFFIX}
LICENSE_FILE= ${WRKSRC}/LICENSE
USES?= nodejs:run USES= metaport nodejs:env
USES+= cpe
CPE_VENDOR= ${PORTNAME}pkg
CONFLICTS_INSTALL?= yarn-node18 yarn-node16 yarn-node14
OPTIONS_DEFINE= HADOOPCOMPAT
HADOOPCOMPAT_DESC= hadoop2 compatibility, the yarn script is excluded
OPTIONS_SUB= yes
HADOOPCOMPAT_CONFLICTS_INSTALL_OFF= hadoop2*
NO_ARCH= yes
NO_BUILD= yes
post-patch:
@${RM} ${WRKSRC}/bin/*.cmd
@${REINPLACE_CMD} -i '' \
-e 's|"installationMethod": "tar"|"installationMethod": "pkg"|g' \
${WRKSRC}/package.json
@${REINPLACE_CMD} -i '' -e 's%Linux)%Linux|FreeBSD)%g' \
${WRKSRC}/bin/yarn
do-install:
${MKDIR} ${STAGEDIR}${PREFIX}/lib/node_modules/yarn
(cd ${WRKSRC}/ && ${COPYTREE_SHARE} . ${STAGEDIR}${PREFIX}/lib/node_modules/yarn)
${RLN} ${STAGEDIR}${PREFIX}/lib/node_modules/yarn/bin/yarn.js \
${STAGEDIR}${PREFIX}/bin/yarn.js
${RLN} ${STAGEDIR}${PREFIX}/lib/node_modules/yarn/bin/yarnpkg \
${STAGEDIR}${PREFIX}/bin/yarnpkg
do-install-HADOOPCOMPAT-off:
${RLN} ${STAGEDIR}${PREFIX}/lib/node_modules/yarn/bin/yarn \
${STAGEDIR}${PREFIX}/bin/yarn
.include <bsd.port.mk> .include <bsd.port.mk>