Page MenuHomeFreeBSD

D14709.diff
No OneTemporary

D14709.diff

Index: head/Mk/Uses/lua.mk
===================================================================
--- head/Mk/Uses/lua.mk
+++ head/Mk/Uses/lua.mk
@@ -57,7 +57,7 @@
# When adding a version, please keep the comment in
# Mk/bsd.default-versions.mk in sync.
-_LUA_VALID_VERSIONS:= 53 52 51
+_LUA_VALID_VERSIONS:= 54 53 52 51
.if defined(_LUA_EXTRA_VER)
_LUA_VALID_VERSIONS+= ${_LUA_EXTRA_VER}
.endif
Index: head/Mk/bsd.default-versions.mk
===================================================================
--- head/Mk/bsd.default-versions.mk
+++ head/Mk/bsd.default-versions.mk
@@ -67,7 +67,7 @@
# Please give notice to the Graphics Team (x11@FreeBSD.org) in advance before
# bumping the LLVM version.
LLVM_DEFAULT?= 90
-# Possible values: 5.1, 5.2, 5.3
+# Possible values: 5.1, 5.2, 5.3, 5.4
LUA_DEFAULT?= 5.2
# Possible values: 5.5, 5.6, 5.7, 8.0, 10.3m, 10.4m, 10.5m, 5.5p, 5.6p, 5.7p, 5.6w, 5.7w
MYSQL_DEFAULT?= 5.7
Index: head/lang/Makefile
===================================================================
--- head/lang/Makefile
+++ head/lang/Makefile
@@ -168,6 +168,7 @@
SUBDIR += lua51
SUBDIR += lua52
SUBDIR += lua53
+ SUBDIR += lua54
SUBDIR += luajit
SUBDIR += luajit-openresty
SUBDIR += malbolge
Index: head/lang/lua54/Makefile
===================================================================
--- head/lang/lua54/Makefile
+++ head/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>
Index: head/lang/lua54/distinfo
===================================================================
--- head/lang/lua54/distinfo
+++ head/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
Index: head/lang/lua54/files/extra-patch-libedit-dl
===================================================================
--- head/lang/lua54/files/extra-patch-libedit-dl
+++ head/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>
Index: head/lang/lua54/files/lua-5.4.pc.in
===================================================================
--- head/lang/lua54/files/lua-5.4.pc.in
+++ head/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}
Index: head/lang/lua54/files/patch-src_Makefile
===================================================================
--- head/lang/lua54/files/patch-src_Makefile
+++ head/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)
Index: head/lang/lua54/pkg-descr
===================================================================
--- head/lang/lua54/pkg-descr
+++ head/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/
Index: head/lang/lua54/pkg-plist
===================================================================
--- head/lang/lua54/pkg-plist
+++ head/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%%

File Metadata

Mime Type
text/plain
Expires
Thu, Jan 9, 3:45 AM (6 h, 46 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
15729108
Default Alt Text
D14709.diff (11 KB)

Event Timeline