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
# 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
# Feature: nodejs
#
# 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)
_INCLUDE_USES_NODEJS_MK= yes
_VALID_NODEJS_VERSION= 14 16 18 lts current
_NODEJS_VERSION_SUFFIX= ${NODEJS_DEFAULT}
_VALID_NODEJS_VERSIONS= 14 16 18 19 current lts
. if ! ${_VALID_NODEJS_VERSION:M${_NODEJS_VERSION_SUFFIX}}
IGNORE= Invalid nodejs default version ${_NODEJS_VERSION_SUFFIX}; valid versions are ${_VALID_NODEJS_VERSION}
. if ! ${_VALID_NODEJS_VERSIONS:M${NODEJS_DEFAULT}}
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
. if empty(nodejs_ARGS)
nodejs_ARGS= build,run
. endif
. if ${nodejs_ARGS:M14}
_NODEJS_VERSION_SUFFIX= 14
. elif ${nodejs_ARGS:M16}
_NODEJS_VERSION_SUFFIX= 16
. elif ${nodejs_ARGS:Mlts}
_NODEJS_VERSION_SUFFIX= lts
. elif ${nodejs_ARGS:M18}
_NODEJS_VERSION_SUFFIX= 18
. elif ${nodejs_ARGS:Mcurrent}
_NODEJS_VERSION_SUFFIX= current
. elif defined(NODEJS_DEFAULT)
.undef _NODEJS_VER
. for version in ${_VALID_NODEJS_VERSIONS}
. if ${nodejs_ARGS:M${version}}
_NODEJS_VER= ${version}
. endif
. endfor
. if !defined(_NODEJS_VER)
_NODEJS_VER= ${NODEJS_DEFAULT}
. endif
# The nodejs 18 version is named www/node
. if ${_NODEJS_VERSION_SUFFIX:Mcurrent}
_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
NODEJS_VERSION= ${_NODEJS_VER:S|current|19|:S|lts|18|}
NODEJS_SUFFIX= -node${NODEJS_VERSION}
. if ${nodejs_ARGS:M*run*}
RUN_DEPENDS+= node:www/node${_NODEJS_VERSION_SUFFIX}
. endif
. 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

View File

@ -93,7 +93,7 @@ MONO_DEFAULT= 5.10
MYSQL_DEFAULT?= 5.7
# Possible values: ninja, samurai
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
# Possible values: 5.32, 5.34, 5.36, devel
. if !exists(${LOCALBASE}/bin/perl) || (!defined(_PORTS_ENV_CHECK) && \

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,100 +1,12 @@
PORTNAME= node
PORTVERSION= 18.12.1
DISTVERSIONPREFIX= v
CATEGORIES= www
MASTER_SITES= https://nodejs.org/dist/v${PORTVERSION}/
MAINTAINER= sunpoet@FreeBSD.org
COMMENT= V8 JavaScript for client and server
WWW= https://nodejs.org/
COMMENT= V8 JavaScript for client and server (meta port)
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
USES= metaport nodejs:run
.include <bsd.port.mk>

View File

@ -1,4 +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.
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.

View File

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

View File

@ -50,7 +50,7 @@ COREPACK_CONFIGURE_OFF= --without-corepack
HAS_CONFIGURE= yes
CONFLICTS_INSTALL= node10 node14 node
CONFLICTS_INSTALL= node[0-9][0-9]
CONFIGURE_ARGS= --prefix=${PREFIX_RELDEST} \
--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
MASTERDIR= ${.CURDIR}/../npm
PORTSCOUT= ignore:1
MASTERDIR= ${.CURDIR}/../npm-node18
.include "${MASTERDIR}/Makefile"

View File

@ -1,11 +1,5 @@
PKGNAMESUFFIX= -node16
CONFLICTS_INSTALL= npm npm-node14 npm-node18
USES= nodejs:16,run
MASTERDIR= ${.CURDIR}/../npm
PORTSCOUT= ignore:1
MASTERDIR= ${.CURDIR}/../npm-node18
.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
.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
PORTVERSION= 9.1.2
PORTREVISION= 1
PORTREVISION= 2
CATEGORIES= www
MASTER_SITES= LOCAL/sunpoet
MAINTAINER= sunpoet@FreeBSD.org
COMMENT= Node package manager
COMMENT= Node package manager (meta port)
WWW= https://www.npmjs.com/package/npm \
https://github.com/npm/cli
LICENSE= ART20
LICENSE_FILE= ${WRKSRC}/lib/node_modules/npm/LICENSE
RUN_DEPENDS= npm${NODEJS_SUFFIX}>=0:www/npm${NODEJS_SUFFIX}
RUN_DEPENDS= gmake:devel/gmake
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
USES= metaport nodejs:env
.include <bsd.port.mk>

View File

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

View File

@ -1,9 +1,5 @@
PKGNAMESUFFIX= -node16
CONFLICTS_INSTALL= yarn yarn-node14 yarn-node18
USES= nodejs:16,run
MASTERDIR= ${.CURDIR}/../yarn
MASTERDIR= ${.CURDIR}/../yarn-node18
.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
DISTVERSIONPREFIX= v
DISTVERSION= 1.22.18
PORTREVISION= 0
PORTVERSION= 1.22.18
PORTREVISION= 1
CATEGORIES= www
MASTER_SITES= https://yarnpkg.com/downloads/${PORTVERSION}/
MAINTAINER= pizzamig@FreeBSD.org
COMMENT= Package manager for node, alternative to npm
WWW= https://yarnpkg.com/blog/
COMMENT= Package manager for node, alternative to npm (meta port)
WWW= https://classic.yarnpkg.com/
LICENSE= BSD2CLAUSE
LICENSE_FILE= ${WRKSRC}/LICENSE
RUN_DEPENDS= yarn${NODEJS_SUFFIX}>=0:www/yarn${NODEJS_SUFFIX}
USES?= nodejs:run
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
USES= metaport nodejs:env
.include <bsd.port.mk>