git: 9d241a90370c - main - Mk: Add USES=luajit

From: Adam Weinberger <adamw_at_FreeBSD.org>
Date: Fri, 14 Oct 2022 17:07:44 UTC
The branch main has been updated by adamw:

URL: https://cgit.FreeBSD.org/ports/commit/?id=9d241a90370c9410d997be37db5e3a5657bdb4ca

commit 9d241a90370c9410d997be37db5e3a5657bdb4ca
Author:     Adam Weinberger <adamw@FreeBSD.org>
AuthorDate: 2022-10-14 16:50:39 +0000
Commit:     Adam Weinberger <adamw@FreeBSD.org>
CommitDate: 2022-10-14 17:07:39 +0000

    Mk: Add USES=luajit
    
    USES=luajit centralizes luajit dependencies via bsd.default-versions.mk
    (defaulting to luajit-devel).
    
    Ports currently depend on:
      lang/luajit: 42
      lang/luajit-devel: 0
      lang/luajit-openresty: 51
    
    The difficulty here is that:
      - They all conflict with each other
      - Upstream is very clear about not intending for users to use the
        version in lang/luajit at all, and wants all luajit users to use
        lang/luajit-devel
      - luajit-openresty is very aggressive about being drop-in compatible
        with luajit-devel (though not the other direction)
    
    For the vast majority of situations, USES=luajit will be sufficient.
    Ports that use openresty's API additions can specify
    USES=luajit:openresty.
    
    I'm adding this into head very early in the 2022Q4 cycle so that there's
    ample time to address the default. It's a difficult decision. osa, the
    maintainer of luajit and luajit-devel, prefers that the default be
    luajit, but I went the other direction because it's in direct conflict
    with upstream's clear stated intention. It's not a simple decision; see
    the review below for a little discussion on it.
    
    The TL;DR here is that this defaults to the one luajit version that no
    port currently depends on. However, this version is what OpenBSD,
    Homebrew, Ubuntu, Debian, Fedora, MacPorts, and Arch default to (and
    none of them even provide the stale version lang/luajit provides).
    This will bring FreeBSD in line with nearly every other OS package
    system, and with upstream's intention.
    
    See also PRs 225342, 257051.
    
    Reviewed by:    bapt, tcberner
    Approved by:    portmgr (bapt, tcberner)
    Differential Revision:  https://reviews.freebsd.org/D36947
---
 Mk/Uses/luajit.mk          | 27 +++++++++++++++++++++++++++
 Mk/bsd.default-versions.mk |  9 ++++++---
 2 files changed, 33 insertions(+), 3 deletions(-)

diff --git a/Mk/Uses/luajit.mk b/Mk/Uses/luajit.mk
new file mode 100644
index 000000000000..75e54407d484
--- /dev/null
+++ b/Mk/Uses/luajit.mk
@@ -0,0 +1,27 @@
+# Select your favorite luajit runtime
+# Feature:    luajit
+# Usage:      USES=  luajit[:version]
+# MAINTAINER: adamw@FreeBSD.org
+
+.if !defined(_INCLUDE_USES_LUAJIT_MK)
+_INCLUDE_USES_LUAJIT_MK=yes
+
+.if !empty(luajit_ARGS)
+LUAJIT_VER=	${luajit_ARGS}
+.else
+LUAJIT_VER=	${LUAJIT_DEFAULT}
+.endif
+
+# When adding a version, please keep the comment in
+# Mk/bsd.default-versions.mk in sync
+VALID_LUAJIT_VER=	luajit luajit-devel luajit-openresty
+
+.if empty(VALID_LUAJIT_VER:M${LUAJIT_DEFAULT})
+IGNORE=	Invalid luajit default version ${LUAJIT_DEFAULT}: valid versions are ${VALID_LUAJIT_VER}
+.elif empty(VALID_LUAJIT_VER:M${LUAJIT_VER})
+IGNORE=	Invalid luajit version ${LUAJIT_VER}: valid versions are ${VALID_LUAJIT_VER}
+.endif
+
+LIB_DEPENDS=	libluajit-5.1.so:lang/${LUAJIT_VER}
+
+.endif
diff --git a/Mk/bsd.default-versions.mk b/Mk/bsd.default-versions.mk
index bbf3d5880c70..5a36e0b9c4d0 100644
--- a/Mk/bsd.default-versions.mk
+++ b/Mk/bsd.default-versions.mk
@@ -17,9 +17,10 @@ _INCLUDE_BSD_DEFAULT_VERSIONS_MK=	yes
 
 LOCALBASE?=	/usr/local
 
-.  for lang in APACHE BDB COROSYNC EMACS FIREBIRD FORTRAN FPC GCC GHOSTSCRIPT GL GO \
-	IMAGEMAGICK JAVA LAZARUS LIBRSVG2 LINUX LLVM LUA MONO MYSQL NINJA NODEJS PERL5 \
-	PGSQL PHP PYTHON PYTHON2 PYTHON3 RUBY RUST SAMBA SSL TCLTK VARNISH
+.  for lang in APACHE BDB COROSYNC EMACS FIREBIRD FORTRAN FPC GCC \
+	GHOSTSCRIPT GL GO IMAGEMAGICK JAVA LAZARUS LIBRSVG2 LINUX LLVM \
+	LUA LUAJIT MONO 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"
 .    endif
@@ -86,6 +87,8 @@ LLVM_DEFAULT?=		90
 .  endif
 # Possible values: 5.1, 5.2, 5.3, 5.4
 LUA_DEFAULT?=		5.2
+# Possible values: luajit, luajit-devel, luajit-openresty
+LUAJIT_DEFAULT?=	luajit-devel
 # Possible values: 5.10, 5.20, 6.8
 MONO_DEFAULT=		5.10
 # Possible values: 5.6, 5.7, 8.0, 10.3m, 10.4m, 10.5m, 5.7p, 5.7w