Re: git: 46ce086c7130 - main - Mk/Uses: default version for nodejs

From: Po-Chuan Hsieh <sunpoet_at_freebsd.org>
Date: Sun, 14 Nov 2021 17:00:46 UTC
On Fri, Nov 12, 2021 at 1:55 PM Matthias Fechner <mfechner@freebsd.org>
wrote:

> The branch main has been updated by mfechner:
>
> URL:
> https://cgit.FreeBSD.org/ports/commit/?id=46ce086c7130aedb8b349864afaf938489d070de
>
> commit 46ce086c7130aedb8b349864afaf938489d070de
> Author:     Matthias Fechner <mfechner@FreeBSD.org>
> AuthorDate: 2021-11-01 21:38:08 +0000
> Commit:     Matthias Fechner <mfechner@FreeBSD.org>
> CommitDate: 2021-11-12 05:54:51 +0000
>
>     Mk/Uses: default version for nodejs
>
>     If a port depends on node, a simple:
>     USES= nodejs
>     can be added. It is also possible to define a specific version:
>     USES= nodejs:14
>     Use as current version the latest LTS version of node.


>     PR:                     259783
>     Differential Revision:  https://reviews.freebsd.org/D32790


Please revert the nodejs change.
It is not approved.
It should be committed after being accepted by all parties.
As I mentioned in the review, I disagreed with the change of the default
from www/node to www/node16.

Please do not change the world solely to fit gitlab's needs.
Thanks!


>
> ---
>  Mk/Uses/nodejs.mk          | 60
> ++++++++++++++++++++++++++++++++++++++++++++++
>  Mk/bsd.default-versions.mk |  5 +++-
>  UPDATING                   | 19 +++++++++++++++
>  3 files changed, 83 insertions(+), 1 deletion(-)
>
> diff --git a/Mk/Uses/nodejs.mk b/Mk/Uses/nodejs.mk
> new file mode 100644
> index 000000000000..af38aba78e55
> --- /dev/null
> +++ b/Mk/Uses/nodejs.mk
> @@ -0,0 +1,60 @@
> +# Provide support for NodeJS
> +#
> +# Feature:      nodejs
> +# Usage:        USES=nodejs or USES=nodejs:args
> +# Valid ARGS:  build and/or run <version>
> +# version:      lts, current, 10, 14, 16, 17
> +# Default is:   build,run
> +# Note:                        if you define a version, you must provide
> run and/or build
> +#
> +# MAINTAINER: bhughes@FreeBSD.org
> +
> +.if !defined(_INCLUDE_USES_NODEJS_MK)
> +_INCLUDE_USES_NODEJS_MK=       yes
> +
> +_VALID_NODEJS_VERSION= 10 14 16 17 lts current
> +_NODEJS_VERSION_SUFFIX=        ${NODEJS_DEFAULT}
> +
> +.if ! ${_VALID_NODEJS_VERSION:M${_NODEJS_VERSION_SUFFIX}}
> +IGNORE=        Invalid nodejs default version ${_NODEJS_VERSION_SUFFIX};
> valid versions are ${_VALID_NODEJS_VERSION}
> +.endif
> +
> +.if empty(nodejs_ARGS)
> +nodejs_ARGS=   build,run
> +.endif
> +
> +. if ${nodejs_ARGS:M10}
> +_NODEJS_VERSION_SUFFIX=        10
> +. elif ${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:M17}
> +_NODEJS_VERSION_SUFFIX=        17
> +. elif ${nodejs_ARGS:Mcurrent}
> +_NODEJS_VERSION_SUFFIX=        current
> +. elif defined(NODEJS_DEFAULT)
> +. endif
> +
> +# The nodejs 17 version is named www/node
> +. if ${_NODEJS_VERSION_SUFFIX:Mcurrent}
> +_NODEJS_VERSION_SUFFIX=
> +. endif
> +. if ${_NODEJS_VERSION_SUFFIX:M17}
> +_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*}
> +BUILD_DEPENDS+=        node:www/node${_NODEJS_VERSION_SUFFIX}
> +. endif
> +
> +.endif
> diff --git a/Mk/bsd.default-versions.mk b/Mk/bsd.default-versions.mk
> index 1dff8bce1d94..1ee4c9715269 100644
> --- a/Mk/bsd.default-versions.mk
> +++ b/Mk/bsd.default-versions.mk
> @@ -18,7 +18,7 @@ _INCLUDE_BSD_DEFAULT_VERSIONS_MK=     yes
>  LOCALBASE?=    /usr/local
>
>  .for lang in APACHE BDB COROSYNC EMACS FIREBIRD FORTRAN FPC GCC
> GHOSTSCRIPT GL \
> -       IMAGEMAGICK JAVA LAZARUS LIBRSVG2 LINUX LLVM LUA MYSQL NINJA PERL5
> \
> +       IMAGEMAGICK JAVA LAZARUS LIBRSVG2 LINUX LLVM LUA MYSQL NINJA
> NODEJS PERL5 \
>         PGSQL PHP PYTHON PYTHON2 PYTHON3 RUBY RUST SAMBA SSL TCLTK VARNISH
>  .if defined(${lang}_DEFAULT)
>  ERROR+=        "The variable ${lang}_DEFAULT is set and it should only be
> defined through DEFAULT_VERSIONS+=${lang:tl}=${${lang}_DEFAULT} in
> /etc/make.conf"
> @@ -163,4 +163,7 @@ TCLTK_DEFAULT?=             8.6
>  # Possible values: 4, 6
>  VARNISH_DEFAULT?=      4
>
> +# Possible value: 10, 14, 16, 17, lts, current
> +NODEJS_DEFAULT?=    lts
> +
>  .endif
> diff --git a/UPDATING b/UPDATING
> index 05a642f7f68a..d61e9a51b65c 100644
> --- a/UPDATING
> +++ b/UPDATING
> @@ -5,6 +5,25 @@ they are unavoidable.
>  You should get into the habit of checking this file for changes each time
>  you update your ports collection, before attempting any port upgrades.
>
> +20211110:
> +  AFFECTS: users of www/node*, www/npm*, www/yarn*
> +  AUTHOR: mfechner@FreeBSD.org
> +
> +  The port framework was updated to use a default version for nodejs.
> +  The default version is pointing to the latest LTS version which is
> +  currently version 16.
> +  You can overwrite this by defining in /etc/make.conf, e.g. version 17:
> +  DEFAULT_VERSIONS=nodejs=17
> +
> +  Or if you would like to stick always to the current version use:
> +  DEFAULT_VERSIONS=nodejs=current
> +
> +  If you would like to use yarn or npm together with nodejs version 17,
> +  just install the package that is pulling the wanted dependency to
> nodejs:
> +
> +  # pkg install yarn-node17
> +  # pkg install npm-node17
> +
>  20211109:
>    AFFECTS: users of security/libressl
>    AUTHOR: brnrd@FreeBSD.org
>