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

From: Adam Weinberger <adamw_at_freebsd.org>
Date: Fri, 14 Oct 2022 19:38:44 UTC
On Fri, Oct 14, 2022 at 1:34 PM Piotr Kubaj <pkubaj@anongoth.pl> wrote:

> On 22-10-14 13:01:25, Adam Weinberger wrote:
> >On Fri, Oct 14, 2022 at 12:58 PM Piotr Kubaj <pkubaj@anongoth.pl> wrote:
> >
> >> On 22-10-14 17:07:44, Adam Weinberger wrote:
> >> >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
> >>
> >> Could you make USES=luajit default to openresty on powerpc64 and
> >> powerpc64le? lang/luajit and lang/luajit-devel don't support those, but
> >> openresty fork does.
> >>
> >> I believe aarch64 is in similar situation, except that it's also
> >> supported by luajit-devel.
> >>
> >
> >Are you positive on that? luajit-devel just has IGNORE_riscv64 (which no
> >luajit works on), and includes a block specifically for powerpc*.
> It was originally added in
>
> https://cgit.freebsd.org/ports/commit/lang/luajit/Makefile?id=d2ac3fee9c894bb6f10ab489a4b165f974fc1b03
> .
> The review (at https://reviews.freebsd.org/D13804) says:
> Successfully built on powerpc. Does not build for powerpc64, though.
> Later, that was copied to luajit-devel.
> Here's the most recent build on powerpc64le:
>
> https://talos.anongoth.pl/data/latest-per-pkg/luajit-devel/2.1.0.20220815/powerpc64le-default.log
> So that:
> .if ${ARCH:Mpowerpc*} || ${ARCH:Mmips*} || ${ARCH:Msparc*}
> can be replaced by just:
> .if ${ARCH} == powerpc || ${ARCH} == powerpcspe
>
> If you wish, the mips* and sparc64 parts can be added too, but I don't
> think there are any users left.
>

Thank you!!

I'll put a test for ${ARCH:Mpowerpc64*} in bsd.default-versions.mk.

# Adam



>
> >
> ># Adam
> >
> >
> >--
> >Adam Weinberger
> >adamw@adamw.org // adamw@FreeBSD.org
> >https://www.adamw.org
>


-- 
Adam Weinberger
adamw@adamw.org // adamw@FreeBSD.org
https://www.adamw.org