Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 31 May 2026 02:36:04 +0000
From:      Hiroki Tagato <tagattie@FreeBSD.org>
To:        ports-committers@FreeBSD.org, dev-commits-ports-all@FreeBSD.org, dev-commits-ports-main@FreeBSD.org
Subject:   git: 0200852294e9 - main - lang/lua55: Repocopy from lang/lua54
Message-ID:  <6a1b9e94.30ebb.62c018d9@gitrepo.freebsd.org>

index | next in thread | raw e-mail

The branch main has been updated by tagattie:

URL: https://cgit.FreeBSD.org/ports/commit/?id=0200852294e939fc163e78cb5c02df0a7204ae51

commit 0200852294e939fc163e78cb5c02df0a7204ae51
Author:     Hiroki Tagato <tagattie@FreeBSD.org>
AuthorDate: 2026-05-31 02:29:28 +0000
Commit:     Hiroki Tagato <tagattie@FreeBSD.org>
CommitDate: 2026-05-31 02:35:53 +0000

    lang/lua55: Repocopy from lang/lua54
    
    PR:             295279
    Reviewed by:    vvd
---
 lang/lua55/Makefile                     | 144 ++++++++++++++++++++++++++++++++
 lang/lua55/distinfo                     |   3 +
 lang/lua55/files/extra-patch-libedit-dl |  58 +++++++++++++
 lang/lua55/files/lua-5.4.pc.in          |  10 +++
 lang/lua55/files/patch-src_Makefile     |  45 ++++++++++
 lang/lua55/pkg-descr                    |  19 +++++
 lang/lua55/pkg-plist                    |  14 ++++
 7 files changed, 293 insertions(+)

diff --git a/lang/lua55/Makefile b/lang/lua55/Makefile
new file mode 100644
index 000000000000..80142d88b858
--- /dev/null
+++ b/lang/lua55/Makefile
@@ -0,0 +1,144 @@
+PORTNAME=	lua
+DISTVERSION=	5.4.8
+CATEGORIES=	lang
+MASTER_SITES=	https://www.lua.org/ftp/
+PKGNAMESUFFIX=	${LUA_VER_STR}
+
+MAINTAINER=	andrew@tao11.riddles.org.uk
+COMMENT=	Powerful, efficient, lightweight, embeddable scripting language
+WWW=		https://www.lua.org/
+
+LICENSE=	MIT
+
+USES=		cpe lua:core,54
+USE_LDCONFIG=	yes
+
+# using the "bsd" target rather than "freebsd" saves patching out the
+# assumption of using base libedit in order to make it configurable. "bsd"
+# is "generic" plus the POSIX and DLOPEN options, plus -Wl,-E at link time;
+# it doesn't set CC either, which makes it easier for us to control that too.
+ALL_TARGET=bsd
+
+LUA_LIB_STATIC=	liblua-${LUA_VER}.a
+LUA_LIB_SHARED=	liblua-${LUA_VER}.so
+LUA_PC_FILE=	lua-${LUA_VER}.pc
+
+CFLAGS+=	-fPIC
+# 2019-01-25: -pthread in LIBS is a work around for the following bug:
+# https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=235211
+LIBS+=		-pthread
+
+WITHOUT_NO_STRICT_ALIASING=yes
+
+MAKE_ARGS+=	CC="${CC}" \
+		CMCFLAGS="" \
+		MYCFLAGS="${CPPFLAGS} ${CFLAGS}" \
+		MYLDFLAGS="${LDFLAGS}" \
+		MYLIBS="${LIBS}" \
+		LUA_T=${LUA_CMD} \
+		LUAC_T=${LUAC_CMD} \
+		LUA_A=${LUA_LIB_STATIC} \
+		LUA_SO=${LUA_LIB_SHARED} \
+		LUA_SONAME=${LUA_LIB_SHARED} \
+		TO_BIN="${LUA_CMD} ${LUAC_CMD}" \
+		TO_LIB="${LUA_LIB_SHARED} ${LUA_LIB_STATIC}" \
+		INSTALL_TOP=${STAGEDIR}${PREFIX} \
+		INSTALL_INC=${STAGEDIR}${LUA_INCDIR} \
+		INSTALL_EXEC="${INSTALL_PROGRAM}"
+
+# Source, destination, and filenames to copy for the DOCS option
+# (automatically added to pkg-plist if DOCS is set)
+# We override DOCSDIR to get a per-version subdir.
+# We put the docs for Lua proper in a lua/ subdir of the version subdir
+# so that ports for Lua modules can use the version subdir too without
+# making a mess.
+DOCSDIR=	${LUA_DOCSDIR}
+BUILD_WRKDOC=	${WRKSRC}/doc
+
+SUB_FILES=	${LUA_PC_FILE}
+SUB_LIST=	version=${PORTVERSION} \
+		includedir=${LUA_INCDIR} \
+		libdir=${LUA_LIBDIR} \
+		soname=lua-${LUA_VER}
+
+BUILD_WRKSRC=	${WRKSRC}/src
+
+PORTDOCS=	*
+
+# Options
+
+OPTIONS_DEFAULT=	LIBEDIT_DL
+
+OPTIONS_GROUP=		DOCSGRP DEBUGGRP
+OPTIONS_GROUP_DEBUGGRP=	ASSERT APICHECK
+OPTIONS_GROUP_DOCSGRP=	DOCS
+
+OPTIONS_SINGLE=		EDITGRP
+OPTIONS_SINGLE_EDITGRP=	EDITNONE LIBEDIT_DL LIBEDIT READLINE
+
+# Option descriptions
+
+APICHECK_DESC=	Enable API checks
+ASSERT_DESC=	Enable interpreter assertions
+DEBUGGRP_DESC=	Debugging options
+
+DOCSGRP_DESC=	Documentation options
+DOCS_DESC=	Install language and API reference (HTML, ~400kB)
+
+EDITGRP_DESC=	Interactive command-line editing
+EDITNONE_DESC=	No command-line editing
+LIBEDIT_DESC=	Use libedit (breaks lcurses)
+LIBEDIT_DL_DESC=Use dynamically loaded libedit (recommended)
+READLINE_DESC=	Use GNU Readline (breaks lcurses)
+
+# Option implementations
+
+APICHECK_CPPFLAGS=	-DLUA_USE_APICHECK
+ASSERT_CPPFLAGS=	-DLUAI_ASSERT
+
+# EDITNONE currently requires no settings
+
+LIBEDIT_USES=		libedit
+LIBEDIT_CPPFLAGS=	-DLUA_USE_READLINE
+LIBEDIT_LIBS=		-ledit
+
+LIBEDIT_DL_USES=	libedit
+LIBEDIT_DL_CPPFLAGS=	-DLUA_USE_READLINE_DL
+LIBEDIT_DL_EXTRA_PATCHES=${PATCHDIR}/extra-patch-libedit-dl
+
+READLINE_USES=		readline
+READLINE_CPPFLAGS=	-DLUA_USE_READLINE
+READLINE_LIBS=		-lreadline
+
+# end of option vars
+
+post-patch:
+	@${REINPLACE_CMD} -e "/LUA_ROOT/s,/usr/local,${LUA_PREFIX}," \
+		${WRKSRC}/src/luaconf.h
+	@${REINPLACE_CMD} -e "s|man/man|share/man/man|g" \
+		${WRKSRC}/Makefile
+
+post-patch-LIBEDIT-on:
+	@${REINPLACE_CMD} -e "s,readline/,editline/,g ; \
+		/history\.h/d" ${WRKSRC}/src/lua.c
+
+post-patch-LIBEDIT_DL-on:
+	@${REINPLACE_CMD} \
+		-e "/^#def.*LUA_READLINE_LIBPATH/s,/usr/local,${LOCALBASE}," \
+		${WRKSRC}/src/lua.c
+
+post-install:
+	${STRIP_CMD} ${STAGEDIR}${PREFIX}/lib/${LUA_LIB_SHARED}
+	${MV} ${STAGEDIR}${PREFIX}/share/man/man1/lua.1 \
+		${STAGEDIR}${PREFIX}/share/man/man1/${LUA_CMD}.1
+	${MV} ${STAGEDIR}${PREFIX}/share/man/man1/luac.1 \
+		${STAGEDIR}${PREFIX}/share/man/man1/${LUAC_CMD}.1
+	${INSTALL_DATA} ${WRKDIR}/${LUA_PC_FILE} \
+		${STAGEDIR}${PREFIX}/libdata/pkgconfig
+
+post-install-DOCS-on:
+	${MKDIR} ${STAGEDIR}${DOCSDIR}
+	(cd ${BUILD_WRKDOC} && \
+		${COPYTREE_SHARE} . ${STAGEDIR}${DOCSDIR} '-not -name *\.1')
+
+.include <bsd.port.mk>
diff --git a/lang/lua55/distinfo b/lang/lua55/distinfo
new file mode 100644
index 000000000000..21fa1f581472
--- /dev/null
+++ b/lang/lua55/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1751702639
+SHA256 (lua-5.4.8.tar.gz) = 4f18ddae154e793e46eeab727c59ef1c0c0c2b744e7b94219710d76f530629ae
+SIZE (lua-5.4.8.tar.gz) = 374332
diff --git a/lang/lua55/files/extra-patch-libedit-dl b/lang/lua55/files/extra-patch-libedit-dl
new file mode 100644
index 000000000000..ef0fe4390c9d
--- /dev/null
+++ b/lang/lua55/files/extra-patch-libedit-dl
@@ -0,0 +1,58 @@
+--- src/lua.c.orig	2018-03-16 14:23:08 UTC
++++ src/lua.c
+@@ -379,7 +379,54 @@ static int handle_luainit (lua_State *L)
+ */
+ #if !defined(lua_readline)	/* { */
+ 
+-#if defined(LUA_USE_READLINE)	/* { */
++#if defined(LUA_USE_READLINE_DL)/* { */
++
++#include <dlfcn.h>
++
++#ifndef LUA_READLINE_LIBPATH
++#define LUA_READLINE_LIBPATH "/usr/local/lib/libedit.so"
++#endif
++
++typedef char *readline_functype(const char *);
++typedef int add_history_functype(const char *);
++
++static readline_functype *lua_readline_p = NULL;
++static add_history_functype *lua_saveline_p = NULL;
++
++static void lua_initreadline(lua_State *L)
++{
++  void *editlib = NULL;
++  union dl_func_hack {
++    void *ptr;
++    readline_functype *rlfunc;
++    add_history_functype *ahfunc;
++    char **rlnamevar;
++    int *icompvar;
++  } u;
++  (void) L;
++  if ((editlib = dlopen(LUA_READLINE_LIBPATH, RTLD_LAZY | RTLD_LOCAL))) {
++    u.ptr = dlsym(editlib, "readline");
++    lua_readline_p = u.rlfunc;
++    u.ptr = dlsym(editlib, "add_history");
++    lua_saveline_p = u.ahfunc;
++    if ((u.ptr = dlsym(editlib, "rl_readline_name")))
++      *u.rlnamevar = "lua";
++    if ((u.ptr = dlsym(editlib, "rl_inhibit_completion")))
++      *u.icompvar = 1;
++  }
++}
++
++#define lua_readline(L,b,p) \
++  ((void)L,							\
++   (lua_readline_p)						\
++   ? (((b)=lua_readline_p(p)) != NULL)				\
++   : (fputs(p, stdout), fflush(stdout), fgets(b, LUA_MAXINPUT, stdin) != NULL))
++#define lua_saveline(L,line) \
++  do { (void)L; if (lua_saveline_p) lua_saveline_p(line); } while(0)
++#define lua_freeline(L,b) \
++  do { (void)L; if (lua_readline_p) free(b); } while(0)
++
++#elif defined(LUA_USE_READLINE)	/* { */
+ 
+ #include <readline/readline.h>
+ #include <readline/history.h>
diff --git a/lang/lua55/files/lua-5.4.pc.in b/lang/lua55/files/lua-5.4.pc.in
new file mode 100644
index 000000000000..1305f1734a93
--- /dev/null
+++ b/lang/lua55/files/lua-5.4.pc.in
@@ -0,0 +1,10 @@
+version=%%version%%
+libdir=%%libdir%%
+includedir=%%includedir%%
+soname=%%soname%%
+
+Name: Lua
+Description: Powerful, efficient, lightweight, embeddable scripting language.
+Version: ${version}
+Libs: -L${libdir} -l${soname} -lm
+Cflags: -I${includedir}
diff --git a/lang/lua55/files/patch-src_Makefile b/lang/lua55/files/patch-src_Makefile
new file mode 100644
index 000000000000..1d52c4a01aa7
--- /dev/null
+++ b/lang/lua55/files/patch-src_Makefile
@@ -0,0 +1,45 @@
+--- src/Makefile.orig	2020-04-15 13:00:29 UTC
++++ src/Makefile
+@@ -7,11 +7,12 @@
+ PLAT= guess
+ 
+ CC= gcc -std=gnu99
+-CFLAGS= -O2 -Wall -Wextra -DLUA_COMPAT_5_3 $(SYSCFLAGS) $(MYCFLAGS)
++CFLAGS= -Wall -Wextra -DLUA_COMPAT_5_3 $(SYSCFLAGS) $(MYCFLAGS)
+ LDFLAGS= $(SYSLDFLAGS) $(MYLDFLAGS)
+ LIBS= -lm $(SYSLIBS) $(MYLIBS)
++SOLIBS= -lm
+ 
+-AR= ar rcu
++AR= ar
+ RANLIB= ranlib
+ RM= rm -f
+ UNAME= uname
+@@ -39,12 +40,13 @@ BASE_O= $(CORE_O) $(LIB_O) $(MYOBJS)
+ 
+ LUA_T=	lua
+ LUA_O=	lua.o
++LUA_SO=	liblua.so
+ 
+ LUAC_T=	luac
+ LUAC_O=	luac.o
+ 
+ ALL_O= $(BASE_O) $(LUA_O) $(LUAC_O)
+-ALL_T= $(LUA_A) $(LUA_T) $(LUAC_T)
++ALL_T= $(LUA_A) $(LUA_T) $(LUAC_T) $(LUA_SO)
+ ALL_A= $(LUA_A)
+ 
+ # Targets start here.
+@@ -56,8 +58,11 @@ o:	$(ALL_O)
+ 
+ a:	$(ALL_A)
+ 
++$(LUA_SO):	$(CORE_O) $(LIB_O)
++	$(CC) -o $@ $(CFLAGS) $(LDFLAGS) $(MYLDFLAGS) -shared -Wl,-soname=$(LUA_SONAME) $? $(SOLIBS)
++
+ $(LUA_A): $(BASE_O)
+-	$(AR) $@ $(BASE_O)
++	$(AR) $(ARFLAGS) $@ $(BASE_O)
+ 	$(RANLIB) $@
+ 
+ $(LUA_T): $(LUA_O) $(LUA_A)
diff --git a/lang/lua55/pkg-descr b/lang/lua55/pkg-descr
new file mode 100644
index 000000000000..10934ced98ce
--- /dev/null
+++ b/lang/lua55/pkg-descr
@@ -0,0 +1,19 @@
+Lua is a programming language originally designed for extending applications,
+but also frequently used as a general-purpose, stand-alone language. Lua
+combines simple procedural syntax (similar to Pascal) with powerful data
+description constructs based on associative arrays and extensible semantics.
+Lua is dynamically typed, interpreted from bytecodes, and has automatic memory
+management with garbage collection, making it ideal for configuration,
+scripting, and rapid prototyping.
+
+A fundamental concept in the design of Lua is to provide meta-mechanisms for
+implementing features, instead of providing a host of features directly in
+the language. For example, although Lua is not a pure object-oriented
+language, it does provide meta-mechanisms for implementing classes and
+inheritance. Lua's meta-mechanisms bring an economy of concepts and keep the
+language small, while allowing the semantics to be extended in unconventional
+ways. Extensible semantics is a distinguishing feature of Lua.
+
+Lua is implemented as a small library of C functions, written in ANSI C, and
+compiles unmodified in all known platforms. The implementation goals are
+simplicity, efficiency, portability, and low embedding cost.
diff --git a/lang/lua55/pkg-plist b/lang/lua55/pkg-plist
new file mode 100644
index 000000000000..8c560b09a74f
--- /dev/null
+++ b/lang/lua55/pkg-plist
@@ -0,0 +1,14 @@
+bin/lua%%LUA_VER_STR%%
+bin/luac%%LUA_VER_STR%%
+%%LUA_INCDIR%%/lauxlib.h
+%%LUA_INCDIR%%/lua.h
+%%LUA_INCDIR%%/lua.hpp
+%%LUA_INCDIR%%/luaconf.h
+%%LUA_INCDIR%%/lualib.h
+lib/liblua-%%LUA_VER%%.a
+lib/liblua-%%LUA_VER%%.so
+libdata/pkgconfig/lua-%%LUA_VER%%.pc
+share/man/man1/lua%%LUA_VER_STR%%.1.gz
+share/man/man1/luac%%LUA_VER_STR%%.1.gz
+@dir %%LUA_MODLIBDIR%%
+@dir %%LUA_MODSHAREDIR%%


home | help

Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?6a1b9e94.30ebb.62c018d9>