aboutsummaryrefslogtreecommitdiffstats
path: root/lang
diff options
context:
space:
mode:
authorKyle Evans <kevans@FreeBSD.org>2020-10-16 01:55:20 +0800
committerKyle Evans <kevans@FreeBSD.org>2020-10-16 01:55:20 +0800
commit3f8f20827c59dc79bc4045a7eaaadbbbcf84870d (patch)
treee520125c13203c6c466048c11f96ad856a671e20 /lang
parent16f98f936159f408752482fcb793056c9208621a (diff)
downloadfreebsd-ports-gnome-3f8f20827c59dc79bc4045a7eaaadbbbcf84870d.tar.gz
freebsd-ports-gnome-3f8f20827c59dc79bc4045a7eaaadbbbcf84870d.tar.zst
freebsd-ports-gnome-3f8f20827c59dc79bc4045a7eaaadbbbcf84870d.zip
[NEW PORT] lang/lua54 - Lua 5.4.1
Highlights for this version: - new generational mode for garbage collection - to-be-closed variables - const variables - complete list: https://www.lua.org/manual/5.4/readme.html#changes The Lua Manual can be found here: https://www.lua.org/manual/5.4/ Incompatibilities from the previous version are specifically documented here: https://www.lua.org/manual/5.4/manual.html#8 Submitted by: Russ Haley <russ haley gmail com> Co-submitted by: Andrew Gierth <andrew_tao173 riddles org uk> Differential Revision: https://reviews.freebsd.org/D14709
Diffstat (limited to 'lang')
-rw-r--r--lang/Makefile1
-rw-r--r--lang/lua54/Makefile151
-rw-r--r--lang/lua54/distinfo3
-rw-r--r--lang/lua54/files/extra-patch-libedit-dl58
-rw-r--r--lang/lua54/files/lua-5.4.pc.in10
-rw-r--r--lang/lua54/files/patch-src_Makefile45
-rw-r--r--lang/lua54/pkg-descr21
-rw-r--r--lang/lua54/pkg-plist14
8 files changed, 303 insertions, 0 deletions
diff --git a/lang/Makefile b/lang/Makefile
index 0ed7d3f4f0a8..a28d3c6f1018 100644
--- a/lang/Makefile
+++ b/lang/Makefile
@@ -168,6 +168,7 @@
SUBDIR += lua51
SUBDIR += lua52
SUBDIR += lua53
+ SUBDIR += lua54
SUBDIR += luajit
SUBDIR += luajit-openresty
SUBDIR += malbolge
diff --git a/lang/lua54/Makefile b/lang/lua54/Makefile
new file mode 100644
index 000000000000..4e8769fa54cb
--- /dev/null
+++ b/lang/lua54/Makefile
@@ -0,0 +1,151 @@
+# $FreeBSD$
+
+PORTNAME= lua
+DISTVERSION= 5.4.1
+CATEGORIES= lang
+MASTER_SITES= https://www.lua.org/ftp/
+PKGNAMESUFFIX= ${LUA_VER_STR}
+
+MAINTAINER= russ.haley@gmail.com
+COMMENT= Powerful, efficient, lightweight, embeddable scripting language
+
+LICENSE= MIT
+
+USES= lua:core,54
+USE_LDCONFIG= yes
+
+# Overriding __MAKE_CONF makes sure that we don't re-parse
+# /etc/make.conf during do-build, which would jeopardize the build
+# if, for instance, the user set CFLAGS=mumble
+# NOTE: /etc/make.conf is read BEFORE Makefile, so we already
+# have its settings when we get here.
+# See http://wiki.freebsd.org/MatthiasAndree/LuaLessonsLearnt
+MAKE_ARGS= __MAKE_CONF=${NONEXISTENT}
+
+# 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
+
+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}/man/man1/lua.1 \
+ ${STAGEDIR}${PREFIX}/man/man1/${LUA_CMD}.1
+ ${MV} ${STAGEDIR}${PREFIX}/man/man1/luac.1 \
+ ${STAGEDIR}${PREFIX}/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/lua54/distinfo b/lang/lua54/distinfo
new file mode 100644
index 000000000000..e3763662d46a
--- /dev/null
+++ b/lang/lua54/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1602265420
+SHA256 (lua-5.4.1.tar.gz) = 4ba786c3705eb9db6567af29c91a01b81f1c0ac3124fdbf6cd94bdd9e53cca7d
+SIZE (lua-5.4.1.tar.gz) = 353965
diff --git a/lang/lua54/files/extra-patch-libedit-dl b/lang/lua54/files/extra-patch-libedit-dl
new file mode 100644
index 000000000000..ef0fe4390c9d
--- /dev/null
+++ b/lang/lua54/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/lua54/files/lua-5.4.pc.in b/lang/lua54/files/lua-5.4.pc.in
new file mode 100644
index 000000000000..1305f1734a93
--- /dev/null
+++ b/lang/lua54/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/lua54/files/patch-src_Makefile b/lang/lua54/files/patch-src_Makefile
new file mode 100644
index 000000000000..1d52c4a01aa7
--- /dev/null
+++ b/lang/lua54/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/lua54/pkg-descr b/lang/lua54/pkg-descr
new file mode 100644
index 000000000000..42b360dcc397
--- /dev/null
+++ b/lang/lua54/pkg-descr
@@ -0,0 +1,21 @@
+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.
+
+WWW: https://www.lua.org/
diff --git a/lang/lua54/pkg-plist b/lang/lua54/pkg-plist
new file mode 100644
index 000000000000..ca2ffefcdc92
--- /dev/null
+++ b/lang/lua54/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
+%%LUA_LIBDIR%%/liblua-%%LUA_VER%%.a
+%%LUA_LIBDIR%%/liblua-%%LUA_VER%%.so
+libdata/pkgconfig/lua-%%LUA_VER%%.pc
+man/man1/lua%%LUA_VER_STR%%.1.gz
+man/man1/luac%%LUA_VER_STR%%.1.gz
+@dir %%LUA_MODLIBDIR%%
+@dir %%LUA_MODSHAREDIR%%