RHEL 9.0.0 Alpha bootstrap

The content of this branch was automatically imported from Fedora ELN
with the following as its source:
https://src.fedoraproject.org/rpms/lua#3e03dd9b69dff7f2f87fff9e2f8cc2403fea046a
This commit is contained in:
Petr Šabata 2020-10-15 18:42:25 +02:00
parent 5236fbe258
commit ac515e8d0a
31 changed files with 1779 additions and 0 deletions

20
.gitignore vendored
View File

@ -0,0 +1,20 @@
lua-5.1.4.tar.gz
lua-5.1.4/
.build*
*.src.rpm
/x86_64/
/i386/
/lua-5.2.2.tar.gz
/lua-5.2.3.tar.gz
/lua-5.3.0.tar.gz
/lua-5.3.2-tests.tar.gz
/lua-5.3.2.tar.gz
/lua-5.3.3.tar.gz
/lua-5.3.3-tests.tar.gz
/lua-5.3.4.tar.gz
/lua-5.3.4-tests.tar.gz
/lua-5.3.5.tar.gz
/lua-5.4.0.tar.gz
/lua-5.4.0-tests.tar.gz
/lua-5.4.1-tests.tar.gz
/lua-5.4.1.tar.gz

View File

@ -0,0 +1,22 @@
--- a/src/lapi.c
+++ b/src/lapi.c
@@ -1285,14 +1285,14 @@ LUA_API void *lua_upvalueid (lua_State *
LUA_API void lua_upvaluejoin (lua_State *L, int fidx1, int n1,
int fidx2, int n2) {
- LClosure *f1;
- UpVal **up1 = getupvalref(L, fidx1, n1, &f1);
+ UpVal **up1 = getupvalref(L, fidx1, n1, NULL); /* the last parameter not needed */
UpVal **up2 = getupvalref(L, fidx2, n2, NULL);
+ if (*up1 == *up2) return; /* Already joined */
+ (*up2)->refcount++;
+ if (upisopen(*up2)) (*up2)->u.open.touched = 1;
+ luaC_upvalbarrier(L, *up2);
luaC_upvdeccount(L, *up1);
*up1 = *up2;
- (*up1)->refcount++;
- if (upisopen(*up1)) (*up1)->u.open.touched = 1;
- luaC_upvalbarrier(L, *up1);
}

View File

@ -0,0 +1,34 @@
diff -up lua-5.2.2/configure.ac.compat-module lua-5.2.2/configure.ac
--- lua-5.2.2/configure.ac.compat-module 2013-05-10 10:16:05.344137597 -0400
+++ lua-5.2.2/configure.ac 2013-05-10 10:16:05.357137596 -0400
@@ -11,6 +11,19 @@ AC_PROG_CC
AC_PROG_LIBTOOL
AC_ARG_WITH(
+ [compat-module],
+ [AC_HELP_STRING([--with-compat-module], [Enable LUA_COMPAT_MODULE functions [default=no]])],
+ [use_compat_module=$withval],
+ [use_compat_module=no]
+)
+
+COMPAT_DEFS="#undef LUA_COMPAT_ALL"
+if test "x$use_compat_module" == "xyes"; then
+ COMPAT_DEFS="#define LUA_COMPAT_ALL"
+fi
+AC_SUBST(COMPAT_DEFS)
+
+AC_ARG_WITH(
[readline],
[AC_HELP_STRING([--with-readline], [Use readline for interpreter input [default=yes]])],
[use_readline=$withval],
diff -up lua-5.2.2/src/luaconf.h.template.in.compat-module lua-5.2.2/src/luaconf.h.template.in
--- lua-5.2.2/src/luaconf.h.template.in.compat-module 2013-05-10 10:25:42.586116963 -0400
+++ lua-5.2.2/src/luaconf.h.template.in 2013-05-10 10:26:29.957115269 -0400
@@ -15,6 +15,7 @@
@LUA_DL_DEFS@
@LUA_BUILD_AS_DLL_DEFS@
@READLINE_DEFS@
+@COMPAT_DEFS@
/*

View File

@ -0,0 +1,22 @@
diff -up lua-5.2.2/configure.ac.linux lua-5.2.2/configure.ac
--- lua-5.2.2/configure.ac.linux 2013-05-10 15:42:27.269437631 -0400
+++ lua-5.2.2/configure.ac 2013-05-10 15:43:23.530435620 -0400
@@ -50,6 +50,7 @@ AC_SUBST(READLINE_LIBS)
case "$host" in
*-mingw*) use_os=win32 ;;
*-darwin*) use_os=macosx ;;
+ *-linux*) use_os=linux ;;
*) use_os=posix ;;
esac
@@ -62,6 +63,10 @@ if test "x$use_os" == "xwin32"; then
elif test "x$use_os" == "xmacosx"; then
POSIX_DEFS="#define LUA_USE_POSIX"
LUA_DL_DEFS="#define LUA_DL_DYLD"
+elif test "x$use_os" == "xlinux"; then
+ POSIX_DEFS="#define LUA_USE_LINUX"
+ LUA_DL_DEFS="#define LUA_DL_DLOPEN"
+ LUA_LIBS="$LUA_LIBS -ldl"
elif test "x$use_os" == "xposix"; then
POSIX_DEFS="#define LUA_USE_POSIX"
LUA_DL_DEFS="#define LUA_DL_DLOPEN"

13
lua-5.2.2-idsize.patch Normal file
View File

@ -0,0 +1,13 @@
diff --git a/src/luaconf.h.template.in b/src/luaconf.h.template.in
index a427c53..6f1d567 100644
--- a/src/luaconf.h.template.in
+++ b/src/luaconf.h.template.in
@@ -206,7 +206,7 @@
@* of a function in debug information.
** CHANGE it if you want a different size.
*/
-#define LUA_IDSIZE 60
+#define LUA_IDSIZE 512
/*

View File

@ -0,0 +1,54 @@
diff -up lua-5.2.2/src/lopcodes.c.luac-shared lua-5.2.2/src/lopcodes.c
--- lua-5.2.2/src/lopcodes.c.luac-shared 2012-05-14 09:34:18.000000000 -0400
+++ lua-5.2.2/src/lopcodes.c 2013-05-09 14:36:30.874581104 -0400
@@ -14,7 +14,7 @@
/* ORDER OP */
-LUAI_DDEF const char *const luaP_opnames[NUM_OPCODES+1] = {
+LUA_API const char *const luaP_opnames[NUM_OPCODES+1] = {
"MOVE",
"LOADK",
"LOADKX",
@@ -61,7 +61,7 @@ LUAI_DDEF const char *const luaP_opnames
#define opmode(t,a,b,c,m) (((t)<<7) | ((a)<<6) | ((b)<<4) | ((c)<<2) | (m))
-LUAI_DDEF const lu_byte luaP_opmodes[NUM_OPCODES] = {
+LUA_API const lu_byte luaP_opmodes[NUM_OPCODES] = {
/* T A B C mode opcode */
opmode(0, 1, OpArgR, OpArgN, iABC) /* OP_MOVE */
,opmode(0, 1, OpArgK, OpArgN, iABx) /* OP_LOADK */
diff -up lua-5.2.2/src/lopcodes.h.luac-shared lua-5.2.2/src/lopcodes.h
--- lua-5.2.2/src/lopcodes.h.luac-shared 2013-05-09 14:37:14.718581762 -0400
+++ lua-5.2.2/src/lopcodes.h 2013-05-09 14:37:40.998582156 -0400
@@ -269,7 +269,7 @@ enum OpArgMask {
OpArgK /* argument is a constant or register/constant */
};
-LUAI_DDEC const lu_byte luaP_opmodes[NUM_OPCODES];
+LUA_API const lu_byte luaP_opmodes[NUM_OPCODES];
#define getOpMode(m) (cast(enum OpMode, luaP_opmodes[m] & 3))
#define getBMode(m) (cast(enum OpArgMask, (luaP_opmodes[m] >> 4) & 3))
@@ -278,7 +278,7 @@ LUAI_DDEC const lu_byte luaP_opmodes[NUM
#define testTMode(m) (luaP_opmodes[m] & (1 << 7))
-LUAI_DDEC const char *const luaP_opnames[NUM_OPCODES+1]; /* opcode names */
+LUA_API const char *const luaP_opnames[NUM_OPCODES+1]; /* opcode names */
/* number of list items to accumulate before a SETLIST instruction */
diff -up lua-5.2.2/src/lundump.h.luac-shared lua-5.2.2/src/lundump.h
--- lua-5.2.2/src/lundump.h.luac-shared 2012-05-08 09:53:33.000000000 -0400
+++ lua-5.2.2/src/lundump.h 2013-05-09 14:36:30.874581104 -0400
@@ -17,7 +17,7 @@ LUAI_FUNC Closure* luaU_undump (lua_Stat
LUAI_FUNC void luaU_header (lu_byte* h);
/* dump one chunk; from ldump.c */
-LUAI_FUNC int luaU_dump (lua_State* L, const Proto* f, lua_Writer w, void* data, int strip);
+LUA_API int luaU_dump (lua_State* L, const Proto* f, lua_Writer w, void* data, int strip);
/* data to catch conversion errors */
#define LUAC_TAIL "\x19\x93\r\n\x1a\n"

204
lua-5.2.3-autotoolize.patch Normal file
View File

@ -0,0 +1,204 @@
diff --git a/Makefile.am b/Makefile.am
new file mode 100644
index 0000000..8d968c4
--- /dev/null
+++ b/Makefile.am
@@ -0,0 +1,3 @@
+SUBDIRS = src doc
+
+EXTRA_DIST = README
diff --git a/configure.ac b/configure.ac
new file mode 100644
index 0000000..3af6625
--- /dev/null
+++ b/configure.ac
@@ -0,0 +1,69 @@
+AC_PREREQ(2.59)
+AC_INIT([lua], [5.2.3], [https://bugzilla.redhat.com/], [lua-at], [http://www.lua.org])
+AC_SUBST([MAJOR_VERSION], [5.2])
+
+AC_CONFIG_HEADERS([config.h])
+AC_CONFIG_SRCDIR([src/lapi.c])
+
+AM_INIT_AUTOMAKE([1.9 foreign])
+
+AC_PROG_CC
+AC_PROG_LIBTOOL
+
+AC_ARG_WITH(
+ [readline],
+ [AC_HELP_STRING([--with-readline], [Use readline for interpreter input [default=yes]])],
+ [use_readline=$withval],
+ [use_readline=yes]
+)
+
+LUA_LIBS="-lm"
+
+# Check for readline
+READLINE_DEFS="#undef LUA_USE_READLINE"
+if test "x$use_readline" == "xyes"; then
+ AC_CHECK_LIB([readline], [readline], [:], [use_readline=no], [-lncurses])
+ AC_CHECK_HEADERS([readline/readline.h readline/history.h], [], [use_readline=no])
+ if test "x$use_readline" == "xno"; then
+ AC_MSG_WARN([readline headers could not be found, disabling readline support])
+ else
+ READLINE_DEFS="#define LUA_USE_READLINE"
+ READLINE_LIBS="-lreadline -lncurses"
+ fi
+fi
+AC_SUBST(READLINE_DEFS)
+AC_SUBST(READLINE_LIBS)
+
+case "$host" in
+ *-mingw*) use_os=win32 ;;
+ *-darwin*) use_os=macosx ;;
+ *) use_os=posix ;;
+esac
+
+POSIX_DEFS="#undef LUA_USE_POSIX"
+LUA_DL_DEFS="#undef LUA_USE_DLOPEN"
+LUA_BUILD_AS_DLL_DEFS="#undef LUA_BUILD_AS_DLL"
+
+if test "x$use_os" == "xwin32"; then
+ LUA_BUILD_AS_DLL_DEFS="#define LUA_BUILD_AS_DLL"
+elif test "x$use_os" == "xmacosx"; then
+ POSIX_DEFS="#define LUA_USE_POSIX"
+ LUA_DL_DEFS="#define LUA_DL_DYLD"
+elif test "x$use_os" == "xposix"; then
+ POSIX_DEFS="#define LUA_USE_POSIX"
+ LUA_DL_DEFS="#define LUA_DL_DLOPEN"
+ LUA_LIBS="$LUA_LIBS -ldl"
+fi
+AC_SUBST(POSIX_DEFS)
+AC_SUBST(LUA_DL_DEFS)
+AC_SUBST(LUA_BUILD_AS_DLL_DEFS)
+
+AC_SUBST(LUA_LIBS)
+
+AC_CONFIG_FILES([Makefile
+ src/Makefile
+ src/lua.pc
+ src/luaconf.h.template
+ doc/Makefile
+])
+AC_OUTPUT
diff --git a/doc/Makefile.am b/doc/Makefile.am
new file mode 100644
index 0000000..3705696
--- /dev/null
+++ b/doc/Makefile.am
@@ -0,0 +1,4 @@
+man1_MANS = lua.1 luac.1
+
+EXTRA_DIST = \
+ contents.html logo.gif lua.1 luac.1 lua.css manual.css manual.html osi-certified-72x60.png readme.html
diff --git a/src/.gitignore b/src/.gitignore
new file mode 100644
index 0000000..0abd9dd
--- /dev/null
+++ b/src/.gitignore
@@ -0,0 +1,5 @@
+lua
+lua.pc
+luac
+luaconf.h
+luaconf.h.template
diff --git a/src/Makefile.am b/src/Makefile.am
new file mode 100644
index 0000000..6c7c79f
--- /dev/null
+++ b/src/Makefile.am
@@ -0,0 +1,46 @@
+AM_CFLAGS = -Wall
+
+include_HEADERS = lua.h lualib.h lauxlib.h lua.hpp
+
+nodist_include_HEADERS = luaconf.h
+
+lib_LTLIBRARIES = liblua.la
+liblua_la_LDFLAGS = -release @MAJOR_VERSION@
+liblua_la_SOURCES = \
+ lapi.c lauxlib.c lbaselib.c lbitlib.c lcode.c lcorolib.c lctype.c ldblib.c \
+ ldebug.c ldo.c ldump.c lfunc.c lgc.c linit.c liolib.c llex.c lmathlib.c lmem.c \
+ loadlib.c lobject.c lopcodes.c loslib.c lparser.c lstate.c lstring.c lstrlib.c \
+ ltable.c ltablib.c ltm.c lundump.c lvm.c lzio.c \
+ lapi.h lcode.h lctype.h ldebug.h ldo.h lfunc.h lgc.h llex.h llimits.h \
+ lmem.h lobject.h lopcodes.h lparser.h lstate.h lstring.h ltable.h ltm.h \
+ lundump.h lvm.h lzio.h
+
+pkgconfigdir = $(libdir)/pkgconfig
+pkgconfig_DATA = lua.pc
+
+bin_PROGRAMS = lua luac
+
+lua_SOURCES = lua.c
+lua_LDADD = liblua.la @LUA_LIBS@ @READLINE_LIBS@
+lua_DEPENDENCIES = liblua.la
+
+luac_SOURCES = luac.c
+# Statically link liblua against luac since luac uses symbols not exported in liblua
+luac_LDADD = .libs/liblua.a @LUA_LIBS@
+luac_DEPENDENCIES = liblua.la
+
+EXTRA_DIST = luaconf.h.template
+BUILT_SOURCES = luaconf.h
+CLEANFILES = luaconf.h luaconf.h.template
+
+readline_defs = @READLINE_DEFS@
+
+edit = sed \
+ -e 's,%prefix%,$(prefix),g' \
+ -e 's,%lua_datadir%,$(datadir),g' \
+ -e 's,%lua_libdir%,$(libdir),g'
+
+luaconf.h : luaconf.h.template
+ rm -f $@ $@.tmp
+ $(edit) $< >$@.tmp
+ mv $@.tmp $@
diff --git a/src/lua.pc.in b/src/lua.pc.in
new file mode 100644
index 0000000..25faa8d
--- /dev/null
+++ b/src/lua.pc.in
@@ -0,0 +1,13 @@
+V= @MAJOR_VERSION@
+R= @VERSION@
+prefix= @prefix@
+exec_prefix=${prefix}
+libdir= @libdir@
+includedir=${prefix}/include
+
+Name: Lua
+Description: An Extensible Extension Language
+Version: ${R}
+Requires:
+Libs: -llua @LUA_LIBS@
+Cflags: -I${includedir}
diff --git a/src/luaconf.h b/src/luaconf.h.template.in
--- a/src/luaconf.h.template.in
+++ b/src/luaconf.h.template.in
@@ -11,6 +11,11 @@
#include <limits.h>
#include <stddef.h>
+@POSIX_DEFS@
+@LUA_DL_DEFS@
+@LUA_BUILD_AS_DLL_DEFS@
+@READLINE_DEFS@
+
/*
** ==================================================================
@@ -100,9 +105,9 @@
#else /* }{ */
#define LUA_VDIR LUA_VERSION_MAJOR "." LUA_VERSION_MINOR "/"
-#define LUA_ROOT "/usr/local/"
-#define LUA_LDIR LUA_ROOT "share/lua/" LUA_VDIR
-#define LUA_CDIR LUA_ROOT "lib/lua/" LUA_VDIR
+#define LUA_ROOT "@prefix@/"
+#define LUA_LDIR "@pkgdatadir@/lua/" LUA_VDIR
+#define LUA_CDIR "@libdir@/lua/" LUA_VDIR
#define LUA_PATH_DEFAULT \
LUA_LDIR"?.lua;" LUA_LDIR"?/init.lua;" \
LUA_CDIR"?.lua;" LUA_CDIR"?/init.lua;" "./?.lua"

192
lua-5.3.0-autotoolize.patch Normal file
View File

@ -0,0 +1,192 @@
diff -up lua-5.3.0/configure.ac.autoxxx lua-5.3.0/configure.ac
--- lua-5.3.0/configure.ac.autoxxx 2015-01-15 10:20:03.826889574 -0500
+++ lua-5.3.0/configure.ac 2015-01-15 10:20:03.826889574 -0500
@@ -0,0 +1,69 @@
+AC_PREREQ(2.59)
+AC_INIT([lua], [5.3.0], [https://bugzilla.redhat.com/], [lua-at], [http://www.lua.org])
+AC_SUBST([MAJOR_VERSION], [5.3])
+
+AC_CONFIG_HEADERS([config.h])
+AC_CONFIG_SRCDIR([src/lapi.c])
+
+AM_INIT_AUTOMAKE([1.9 foreign])
+
+AC_PROG_CC
+AC_PROG_LIBTOOL
+
+AC_ARG_WITH(
+ [readline],
+ [AC_HELP_STRING([--with-readline], [Use readline for interpreter input [default=yes]])],
+ [use_readline=$withval],
+ [use_readline=yes]
+)
+
+LUA_LIBS="-lm"
+
+# Check for readline
+READLINE_DEFS="#undef LUA_USE_READLINE"
+if test "x$use_readline" == "xyes"; then
+ AC_CHECK_LIB([readline], [readline], [:], [use_readline=no], [-lncurses])
+ AC_CHECK_HEADERS([readline/readline.h readline/history.h], [], [use_readline=no])
+ if test "x$use_readline" == "xno"; then
+ AC_MSG_WARN([readline headers could not be found, disabling readline support])
+ else
+ READLINE_DEFS="#define LUA_USE_READLINE"
+ READLINE_LIBS="-lreadline -lncurses"
+ fi
+fi
+AC_SUBST(READLINE_DEFS)
+AC_SUBST(READLINE_LIBS)
+
+case "$host" in
+ *-mingw*) use_os=win32 ;;
+ *-darwin*) use_os=macosx ;;
+ *) use_os=posix ;;
+esac
+
+POSIX_DEFS="#undef LUA_USE_POSIX"
+LUA_DL_DEFS="#undef LUA_USE_DLOPEN"
+LUA_BUILD_AS_DLL_DEFS="#undef LUA_BUILD_AS_DLL"
+
+if test "x$use_os" == "xwin32"; then
+ LUA_BUILD_AS_DLL_DEFS="#define LUA_BUILD_AS_DLL"
+elif test "x$use_os" == "xmacosx"; then
+ POSIX_DEFS="#define LUA_USE_POSIX"
+ LUA_DL_DEFS="#define LUA_DL_DYLD"
+elif test "x$use_os" == "xposix"; then
+ POSIX_DEFS="#define LUA_USE_POSIX"
+ LUA_DL_DEFS="#define LUA_DL_DLOPEN"
+ LUA_LIBS="$LUA_LIBS -ldl"
+fi
+AC_SUBST(POSIX_DEFS)
+AC_SUBST(LUA_DL_DEFS)
+AC_SUBST(LUA_BUILD_AS_DLL_DEFS)
+
+AC_SUBST(LUA_LIBS)
+
+AC_CONFIG_FILES([Makefile
+ src/Makefile
+ src/lua.pc
+ src/luaconf.h.template
+ doc/Makefile
+])
+AC_OUTPUT
diff -up lua-5.3.0/doc/Makefile.am.autoxxx lua-5.3.0/doc/Makefile.am
--- lua-5.3.0/doc/Makefile.am.autoxxx 2015-01-15 10:20:03.826889574 -0500
+++ lua-5.3.0/doc/Makefile.am 2015-01-15 10:20:03.826889574 -0500
@@ -0,0 +1,4 @@
+man1_MANS = lua.1 luac.1
+
+EXTRA_DIST = \
+ contents.html logo.gif lua.1 luac.1 lua.css manual.css manual.html osi-certified-72x60.png readme.html
diff -up lua-5.3.0/Makefile.am.autoxxx lua-5.3.0/Makefile.am
--- lua-5.3.0/Makefile.am.autoxxx 2015-01-15 10:20:03.826889574 -0500
+++ lua-5.3.0/Makefile.am 2015-01-15 10:20:03.826889574 -0500
@@ -0,0 +1,3 @@
+SUBDIRS = src doc
+
+EXTRA_DIST = README
diff -up lua-5.3.0/src/.gitignore.autoxxx lua-5.3.0/src/.gitignore
--- lua-5.3.0/src/.gitignore.autoxxx 2015-01-15 10:20:03.826889574 -0500
+++ lua-5.3.0/src/.gitignore 2015-01-15 10:20:03.826889574 -0500
@@ -0,0 +1,5 @@
+lua
+lua.pc
+luac
+luaconf.h
+luaconf.h.template
diff -up lua-5.3.0/src/luaconf.h.template.in.autoxxx lua-5.3.0/src/luaconf.h.template.in
--- lua-5.3.0/src/luaconf.h.template.in.autoxxx 2015-01-15 10:20:03.828889562 -0500
+++ lua-5.3.0/src/luaconf.h.template.in 2015-01-15 10:22:37.420027778 -0500
@@ -11,6 +11,11 @@
#include <limits.h>
#include <stddef.h>
+@POSIX_DEFS@
+@LUA_DL_DEFS@
+@LUA_BUILD_AS_DLL_DEFS@
+@READLINE_DEFS@
+
/*
** ===================================================================
@@ -175,9 +180,9 @@
#else /* }{ */
-#define LUA_ROOT "/usr/local/"
-#define LUA_LDIR LUA_ROOT "share/lua/" LUA_VDIR "/"
-#define LUA_CDIR LUA_ROOT "lib/lua/" LUA_VDIR "/"
+#define LUA_ROOT "@prefix@/"
+#define LUA_LDIR "@pkgdatadir@/lua/" LUA_VDIR "/"
+#define LUA_CDIR "@libdir@/lua/" LUA_VDIR "/"
#define LUA_PATH_DEFAULT \
LUA_LDIR"?.lua;" LUA_LDIR"?/init.lua;" \
LUA_CDIR"?.lua;" LUA_CDIR"?/init.lua;" \
diff -up lua-5.3.0/src/lua.pc.in.autoxxx lua-5.3.0/src/lua.pc.in
--- lua-5.3.0/src/lua.pc.in.autoxxx 2015-01-15 10:20:03.827889568 -0500
+++ lua-5.3.0/src/lua.pc.in 2015-01-15 10:20:03.827889568 -0500
@@ -0,0 +1,13 @@
+V= @MAJOR_VERSION@
+R= @VERSION@
+prefix= @prefix@
+exec_prefix=${prefix}
+libdir= @libdir@
+includedir=${prefix}/include
+
+Name: Lua
+Description: An Extensible Extension Language
+Version: ${R}
+Requires:
+Libs: -llua @LUA_LIBS@
+Cflags: -I${includedir}
diff -up lua-5.3.0/src/Makefile.am.autoxxx lua-5.3.0/src/Makefile.am
--- lua-5.3.0/src/Makefile.am.autoxxx 2015-01-15 10:20:03.826889574 -0500
+++ lua-5.3.0/src/Makefile.am 2015-01-15 10:20:03.826889574 -0500
@@ -0,0 +1,46 @@
+AM_CFLAGS = -Wall
+
+include_HEADERS = lua.h lualib.h lauxlib.h lua.hpp
+
+nodist_include_HEADERS = luaconf.h
+
+lib_LTLIBRARIES = liblua.la
+liblua_la_LDFLAGS = -release @MAJOR_VERSION@
+liblua_la_SOURCES = \
+ lapi.c lauxlib.c lbaselib.c lbitlib.c lcode.c lcorolib.c lctype.c ldblib.c \
+ ldebug.c ldo.c ldump.c lfunc.c lgc.c linit.c liolib.c llex.c lmathlib.c lmem.c \
+ loadlib.c lobject.c lopcodes.c loslib.c lparser.c lstate.c lstring.c lstrlib.c \
+ ltable.c ltablib.c ltm.c lundump.c lutf8lib.c lvm.c lzio.c \
+ lapi.h lcode.h lctype.h ldebug.h ldo.h lfunc.h lgc.h llex.h llimits.h \
+ lmem.h lobject.h lopcodes.h lparser.h lstate.h lstring.h ltable.h ltm.h \
+ lundump.h lvm.h lzio.h
+
+pkgconfigdir = $(libdir)/pkgconfig
+pkgconfig_DATA = lua.pc
+
+bin_PROGRAMS = lua luac
+
+lua_SOURCES = lua.c
+lua_LDADD = liblua.la @LUA_LIBS@ @READLINE_LIBS@
+lua_DEPENDENCIES = liblua.la
+
+luac_SOURCES = luac.c
+# Statically link liblua against luac since luac uses symbols not exported in liblua
+luac_LDADD = .libs/liblua.a @LUA_LIBS@
+luac_DEPENDENCIES = liblua.la
+
+EXTRA_DIST = luaconf.h.template
+BUILT_SOURCES = luaconf.h
+CLEANFILES = luaconf.h luaconf.h.template
+
+readline_defs = @READLINE_DEFS@
+
+edit = sed \
+ -e 's,%prefix%,$(prefix),g' \
+ -e 's,%lua_datadir%,$(datadir),g' \
+ -e 's,%lua_libdir%,$(libdir),g'
+
+luaconf.h : luaconf.h.template
+ rm -f $@ $@.tmp
+ $(edit) $< >$@.tmp
+ mv $@.tmp $@

View File

@ -0,0 +1,35 @@
diff -up lua-5.2.2/configure.ac.compat-module lua-5.2.2/configure.ac
--- lua-5.2.2/configure.ac.compat-module 2013-05-10 10:16:05.344137597 -0400
+++ lua-5.2.2/configure.ac 2013-05-10 10:16:05.357137596 -0400
@@ -11,6 +11,20 @@ AC_PROG_CC
AC_PROG_LIBTOOL
AC_ARG_WITH(
+ [compat-module],
+ [AC_HELP_STRING([--with-compat-module], [Enable LUA_COMPAT_MODULE functions [default=no]])],
+ [use_compat_module=$withval],
+ [use_compat_module=no]
+)
+
+COMPAT_DEFS="#undef LUA_COMPAT_ALL"
+if test "x$use_compat_module" == "xyes"; then
+ COMPAT_DEFS="#define LUA_COMPAT_5_1
+#define LUA_COMPAT_5_2"
+fi
+AC_SUBST(COMPAT_DEFS)
+
+AC_ARG_WITH(
[readline],
[AC_HELP_STRING([--with-readline], [Use readline for interpreter input [default=yes]])],
[use_readline=$withval],
diff -up lua-5.2.2/src/luaconf.h.template.in.compat-module lua-5.2.2/src/luaconf.h.template.in
--- lua-5.2.2/src/luaconf.h.template.in.compat-module 2013-05-10 10:25:42.586116963 -0400
+++ lua-5.2.2/src/luaconf.h.template.in 2013-05-10 10:26:29.957115269 -0400
@@ -15,6 +15,7 @@
@LUA_DL_DEFS@
@LUA_BUILD_AS_DLL_DEFS@
@READLINE_DEFS@
+@COMPAT_DEFS@
/*

12
lua-5.3.0-idsize.patch Normal file
View File

@ -0,0 +1,12 @@
diff -up lua-5.3.0/src/luaconf.h.template.in.idsize lua-5.3.0/src/luaconf.h.template.in
--- lua-5.3.0/src/luaconf.h.template.in.idsize 2015-01-15 10:23:20.515801344 -0500
+++ lua-5.3.0/src/luaconf.h.template.in 2015-01-15 10:23:48.955651916 -0500
@@ -693,7 +693,7 @@
@@ of a function in debug information.
** CHANGE it if you want a different size.
*/
-#define LUA_IDSIZE 60
+#define LUA_IDSIZE 512
/*

12
lua-5.3.4-bug1.patch Normal file
View File

@ -0,0 +1,12 @@
diff -up lua-5.3.4/src/lparser.c.bug1 lua-5.3.4/src/lparser.c
--- lua-5.3.4/src/lparser.c.bug1 2017-08-02 16:03:43.730247916 -0400
+++ lua-5.3.4/src/lparser.c 2017-08-02 16:03:56.507957260 -0400
@@ -1392,7 +1392,7 @@ static void test_then_block (LexState *l
luaK_goiffalse(ls->fs, &v); /* will jump to label if condition is true */
enterblock(fs, &bl, 0); /* must enter block before 'goto' */
gotostat(ls, v.t); /* handle goto/break */
- skipnoopstat(ls); /* skip other no-op statements */
+ while (testnext(ls, ';')) {} /* skip colons */
if (block_follow(ls, 0)) { /* 'goto' is the entire block? */
leaveblock(fs);
return; /* and that is it */

11
lua-5.3.4-bug4.patch Normal file
View File

@ -0,0 +1,11 @@
diff -up lua-5.3.4/src/ldebug.c.bug4 lua-5.3.4/src/ldebug.c
--- lua-5.3.4/src/ldebug.c.bug4 2017-08-02 16:05:36.985671687 -0400
+++ lua-5.3.4/src/ldebug.c 2017-08-02 16:05:55.257256062 -0400
@@ -653,6 +653,7 @@ l_noret luaG_runerror (lua_State *L, con
CallInfo *ci = L->ci;
const char *msg;
va_list argp;
+ luaC_checkGC(L); /* error message uses memory */
va_start(argp, fmt);
msg = luaO_pushvfstring(L, fmt, argp); /* format message */
va_end(argp);

14
lua-5.3.4-bug5.patch Normal file
View File

@ -0,0 +1,14 @@
diff -up lua-5.3.4/src/lgc.c.bug5 lua-5.3.4/src/lgc.c
--- lua-5.3.4/src/lgc.c.bug5 2017-10-29 20:30:18.824283152 -0400
+++ lua-5.3.4/src/lgc.c 2017-10-29 20:31:12.133021523 -0400
@@ -643,8 +643,9 @@ static void clearkeys (global_State *g,
for (n = gnode(h, 0); n < limit; n++) {
if (!ttisnil(gval(n)) && (iscleared(g, gkey(n)))) {
setnilvalue(gval(n)); /* remove value ... */
- removeentry(n); /* and remove entry from table */
}
+ if (ttisnil(gval(n))) /* is entry empty? */
+ removeentry(n); /* remove entry from table */
}
}
}

23
lua-5.3.4-bug6.patch Normal file
View File

@ -0,0 +1,23 @@
diff -up lua-5.3.4/src/lapi.c.bug6 lua-5.3.4/src/lapi.c
--- lua-5.3.4/src/lapi.c.bug6 2018-02-13 10:18:59.386451581 -0500
+++ lua-5.3.4/src/lapi.c 2018-02-13 10:19:42.700575448 -0500
@@ -533,6 +533,7 @@ LUA_API void lua_pushcclosure (lua_State
lua_lock(L);
if (n == 0) {
setfvalue(L->top, fn);
+ api_incr_top(L);
}
else {
CClosure *cl;
@@ -546,9 +547,9 @@ LUA_API void lua_pushcclosure (lua_State
/* does not need barrier because closure is white */
}
setclCvalue(L, L->top, cl);
+ api_incr_top(L);
+ luaC_checkGC(L);
}
- api_incr_top(L);
- luaC_checkGC(L);
lua_unlock(L);
}

View File

@ -0,0 +1,26 @@
diff -up lua-5.3.5/src/ldebug.c.CVE-2020-24370 lua-5.3.5/src/ldebug.c
--- lua-5.3.5/src/ldebug.c.CVE-2020-24370 2020-08-19 13:37:17.075859557 -0400
+++ lua-5.3.5/src/ldebug.c 2020-08-19 13:38:53.117779244 -0400
@@ -133,10 +133,11 @@ static const char *upvalname (Proto *p,
static const char *findvararg (CallInfo *ci, int n, StkId *pos) {
int nparams = clLvalue(ci->func)->p->numparams;
- if (n >= cast_int(ci->u.l.base - ci->func) - nparams)
+ int nvararg = cast_int(ci->u.l.base - ci->func) - nparams;
+ if (n <= -nvararg)
return NULL; /* no such vararg */
else {
- *pos = ci->func + nparams + n;
+ *pos = ci->func + nparams - n;
return "(*vararg)"; /* generic name for any vararg */
}
}
@@ -148,7 +149,7 @@ static const char *findlocal (lua_State
StkId base;
if (isLua(ci)) {
if (n < 0) /* access to vararg values? */
- return findvararg(ci, -n, pos);
+ return findvararg(ci, n, pos);
else {
base = ci->u.l.base;
name = luaF_getlocalname(ci_func(ci)->p, n, currentpc(ci));

View File

@ -0,0 +1,54 @@
diff -up lua-5.3.5/src/lopcodes.c.luac-shared lua-5.3.5/src/lopcodes.c
--- lua-5.3.5/src/lopcodes.c.luac-shared 2019-10-23 15:36:44.487204487 -0400
+++ lua-5.3.5/src/lopcodes.c 2019-10-23 15:37:44.029960930 -0400
@@ -17,7 +17,7 @@
/* ORDER OP */
-LUAI_DDEF const char *const luaP_opnames[NUM_OPCODES+1] = {
+LUA_API const char *const luaP_opnames[NUM_OPCODES+1] = {
"MOVE",
"LOADK",
"LOADKX",
@@ -71,7 +71,7 @@ LUAI_DDEF const char *const luaP_opnames
#define opmode(t,a,b,c,m) (((t)<<7) | ((a)<<6) | ((b)<<4) | ((c)<<2) | (m))
-LUAI_DDEF const lu_byte luaP_opmodes[NUM_OPCODES] = {
+LUA_API const lu_byte luaP_opmodes[NUM_OPCODES] = {
/* T A B C mode opcode */
opmode(0, 1, OpArgR, OpArgN, iABC) /* OP_MOVE */
,opmode(0, 1, OpArgK, OpArgN, iABx) /* OP_LOADK */
diff -up lua-5.3.5/src/lopcodes.h.luac-shared lua-5.3.5/src/lopcodes.h
--- lua-5.3.5/src/lopcodes.h.luac-shared 2019-10-23 15:37:52.982773948 -0400
+++ lua-5.3.5/src/lopcodes.h 2019-10-23 15:38:17.861254367 -0400
@@ -278,7 +278,7 @@ enum OpArgMask {
OpArgK /* argument is a constant or register/constant */
};
-LUAI_DDEC const lu_byte luaP_opmodes[NUM_OPCODES];
+LUA_API const lu_byte luaP_opmodes[NUM_OPCODES];
#define getOpMode(m) (cast(enum OpMode, luaP_opmodes[m] & 3))
#define getBMode(m) (cast(enum OpArgMask, (luaP_opmodes[m] >> 4) & 3))
@@ -287,7 +287,7 @@ LUAI_DDEC const lu_byte luaP_opmodes[NUM
#define testTMode(m) (luaP_opmodes[m] & (1 << 7))
-LUAI_DDEC const char *const luaP_opnames[NUM_OPCODES+1]; /* opcode names */
+LUA_API const char *const luaP_opnames[NUM_OPCODES+1]; /* opcode names */
/* number of list items to accumulate before a SETLIST instruction */
diff -up lua-5.3.5/src/lundump.h.luac-shared lua-5.3.5/src/lundump.h
--- lua-5.3.5/src/lundump.h.luac-shared 2019-10-23 15:38:46.707651903 -0400
+++ lua-5.3.5/src/lundump.h 2019-10-23 15:39:07.044227180 -0400
@@ -26,7 +26,7 @@
LUAI_FUNC LClosure* luaU_undump (lua_State* L, ZIO* Z, const char* name);
/* dump one chunk; from ldump.c */
-LUAI_FUNC int luaU_dump (lua_State* L, const Proto* f, lua_Writer w,
+LUA_API int luaU_dump (lua_State* L, const Proto* f, lua_Writer w,
void* data, int strip);
#endif

View File

@ -0,0 +1,192 @@
diff -up lua-5.4.0-beta/configure.ac.autoxxx lua-5.4.0-beta/configure.ac
--- lua-5.4.0-beta/configure.ac.autoxxx 2019-10-23 15:03:13.296916443 -0400
+++ lua-5.4.0-beta/configure.ac 2019-10-23 15:03:13.296916443 -0400
@@ -0,0 +1,69 @@
+AC_PREREQ(2.59)
+AC_INIT([lua], [5.4.0], [https://bugzilla.redhat.com/], [lua-at], [http://www.lua.org])
+AC_SUBST([MAJOR_VERSION], [5.4])
+
+AC_CONFIG_HEADERS([config.h])
+AC_CONFIG_SRCDIR([src/lapi.c])
+
+AM_INIT_AUTOMAKE([1.9 foreign])
+
+AC_PROG_CC
+AC_PROG_LIBTOOL
+
+AC_ARG_WITH(
+ [readline],
+ [AC_HELP_STRING([--with-readline], [Use readline for interpreter input [default=yes]])],
+ [use_readline=$withval],
+ [use_readline=yes]
+)
+
+LUA_LIBS="-lm"
+
+# Check for readline
+READLINE_DEFS="#undef LUA_USE_READLINE"
+if test "x$use_readline" == "xyes"; then
+ AC_CHECK_LIB([readline], [readline], [:], [use_readline=no], [-lncurses])
+ AC_CHECK_HEADERS([readline/readline.h readline/history.h], [], [use_readline=no])
+ if test "x$use_readline" == "xno"; then
+ AC_MSG_WARN([readline headers could not be found, disabling readline support])
+ else
+ READLINE_DEFS="#define LUA_USE_READLINE"
+ READLINE_LIBS="-lreadline -lncurses"
+ fi
+fi
+AC_SUBST(READLINE_DEFS)
+AC_SUBST(READLINE_LIBS)
+
+case "$host" in
+ *-mingw*) use_os=win32 ;;
+ *-darwin*) use_os=macosx ;;
+ *) use_os=posix ;;
+esac
+
+POSIX_DEFS="#undef LUA_USE_POSIX"
+LUA_DL_DEFS="#undef LUA_USE_DLOPEN"
+LUA_BUILD_AS_DLL_DEFS="#undef LUA_BUILD_AS_DLL"
+
+if test "x$use_os" == "xwin32"; then
+ LUA_BUILD_AS_DLL_DEFS="#define LUA_BUILD_AS_DLL"
+elif test "x$use_os" == "xmacosx"; then
+ POSIX_DEFS="#define LUA_USE_POSIX"
+ LUA_DL_DEFS="#define LUA_DL_DYLD"
+elif test "x$use_os" == "xposix"; then
+ POSIX_DEFS="#define LUA_USE_POSIX"
+ LUA_DL_DEFS="#define LUA_DL_DLOPEN"
+ LUA_LIBS="$LUA_LIBS -ldl"
+fi
+AC_SUBST(POSIX_DEFS)
+AC_SUBST(LUA_DL_DEFS)
+AC_SUBST(LUA_BUILD_AS_DLL_DEFS)
+
+AC_SUBST(LUA_LIBS)
+
+AC_CONFIG_FILES([Makefile
+ src/Makefile
+ src/lua.pc
+ src/luaconf.h.template
+ doc/Makefile
+])
+AC_OUTPUT
diff -up lua-5.4.0-beta/doc/Makefile.am.autoxxx lua-5.4.0-beta/doc/Makefile.am
--- lua-5.4.0-beta/doc/Makefile.am.autoxxx 2019-10-23 15:03:13.296916443 -0400
+++ lua-5.4.0-beta/doc/Makefile.am 2019-10-23 15:03:13.296916443 -0400
@@ -0,0 +1,4 @@
+man1_MANS = lua.1 luac.1
+
+EXTRA_DIST = \
+ contents.html logo.gif lua.1 luac.1 lua.css manual.css manual.html osi-certified-72x60.png readme.html
diff -up lua-5.4.0-beta/Makefile.am.autoxxx lua-5.4.0-beta/Makefile.am
--- lua-5.4.0-beta/Makefile.am.autoxxx 2019-10-23 15:03:13.296916443 -0400
+++ lua-5.4.0-beta/Makefile.am 2019-10-23 15:03:13.296916443 -0400
@@ -0,0 +1,3 @@
+SUBDIRS = src doc
+
+EXTRA_DIST = README
diff -up lua-5.4.0-beta/src/.gitignore.autoxxx lua-5.4.0-beta/src/.gitignore
--- lua-5.4.0-beta/src/.gitignore.autoxxx 2019-10-23 15:03:13.297916423 -0400
+++ lua-5.4.0-beta/src/.gitignore 2019-10-23 15:03:13.296916443 -0400
@@ -0,0 +1,5 @@
+lua
+lua.pc
+luac
+luaconf.h
+luaconf.h.template
diff -up lua-5.4.0-beta/src/luaconf.h.template.in.autoxxx lua-5.4.0-beta/src/luaconf.h.template.in
--- lua-5.4.0-beta/src/luaconf.h.template.in.autoxxx 2019-09-30 19:52:16.000000000 -0400
+++ lua-5.4.0-beta/src/luaconf.h.template.in 2019-10-23 15:05:45.139817627 -0400
@@ -11,6 +11,11 @@
#include <limits.h>
#include <stddef.h>
+@POSIX_DEFS@
+@LUA_DL_DEFS@
+@LUA_BUILD_AS_DLL_DEFS@
+@READLINE_DEFS@
+
/*
** ===================================================================
@@ -227,9 +232,9 @@
#else /* }{ */
-#define LUA_ROOT "/usr/local/"
-#define LUA_LDIR LUA_ROOT "share/lua/" LUA_VDIR "/"
-#define LUA_CDIR LUA_ROOT "lib/lua/" LUA_VDIR "/"
+#define LUA_ROOT "@prefix@/"
+#define LUA_LDIR "@pkgdatadir@/lua/" LUA_VDIR "/"
+#define LUA_CDIR "@libdir@/lua/" LUA_VDIR "/"
#if !defined(LUA_PATH_DEFAULT)
#define LUA_PATH_DEFAULT \
diff -up lua-5.4.0-beta/src/lua.pc.in.autoxxx lua-5.4.0-beta/src/lua.pc.in
--- lua-5.4.0-beta/src/lua.pc.in.autoxxx 2019-10-23 15:03:13.297916423 -0400
+++ lua-5.4.0-beta/src/lua.pc.in 2019-10-23 15:03:13.297916423 -0400
@@ -0,0 +1,13 @@
+V= @MAJOR_VERSION@
+R= @VERSION@
+prefix= @prefix@
+exec_prefix=${prefix}
+libdir= @libdir@
+includedir=${prefix}/include
+
+Name: Lua
+Description: An Extensible Extension Language
+Version: ${R}
+Requires:
+Libs: -llua @LUA_LIBS@
+Cflags: -I${includedir}
diff -up lua-5.4.0-beta/src/Makefile.am.autoxxx lua-5.4.0-beta/src/Makefile.am
--- lua-5.4.0-beta/src/Makefile.am.autoxxx 2019-10-23 15:03:13.297916423 -0400
+++ lua-5.4.0-beta/src/Makefile.am 2019-10-23 15:03:13.297916423 -0400
@@ -0,0 +1,46 @@
+AM_CFLAGS = -Wall
+
+include_HEADERS = lua.h lualib.h lauxlib.h lua.hpp
+
+nodist_include_HEADERS = luaconf.h
+
+lib_LTLIBRARIES = liblua.la
+liblua_la_LDFLAGS = -release @MAJOR_VERSION@
+liblua_la_SOURCES = \
+ lapi.c lauxlib.c lbaselib.c lcode.c lcorolib.c lctype.c ldblib.c \
+ ldebug.c ldo.c ldump.c lfunc.c lgc.c linit.c liolib.c llex.c lmathlib.c lmem.c \
+ loadlib.c lobject.c lopcodes.c loslib.c lparser.c lstate.c lstring.c lstrlib.c \
+ ltable.c ltablib.c ltm.c lundump.c lutf8lib.c lvm.c lzio.c \
+ lapi.h lcode.h lctype.h ldebug.h ldo.h lfunc.h lgc.h llex.h llimits.h \
+ lmem.h lobject.h lopcodes.h lparser.h lstate.h lstring.h ltable.h ltm.h \
+ lundump.h lvm.h lzio.h
+
+pkgconfigdir = $(libdir)/pkgconfig
+pkgconfig_DATA = lua.pc
+
+bin_PROGRAMS = lua luac
+
+lua_SOURCES = lua.c
+lua_LDADD = liblua.la @LUA_LIBS@ @READLINE_LIBS@
+lua_DEPENDENCIES = liblua.la
+
+luac_SOURCES = luac.c
+# Statically link liblua against luac since luac uses symbols not exported in liblua
+luac_LDADD = .libs/liblua.a @LUA_LIBS@
+luac_DEPENDENCIES = liblua.la
+
+EXTRA_DIST = luaconf.h.template
+BUILT_SOURCES = luaconf.h
+CLEANFILES = luaconf.h luaconf.h.template
+
+readline_defs = @READLINE_DEFS@
+
+edit = sed \
+ -e 's,%prefix%,$(prefix),g' \
+ -e 's,%lua_datadir%,$(datadir),g' \
+ -e 's,%lua_libdir%,$(libdir),g'
+
+luaconf.h : luaconf.h.template
+ rm -f $@ $@.tmp
+ $(edit) $< >$@.tmp
+ mv $@.tmp $@

485
lua.spec Normal file
View File

@ -0,0 +1,485 @@
%global major_version 5.4
# Normally, this is the same as version, but... not always.
%global test_version 5.4.1
# If you are incrementing major_version, enable bootstrapping and adjust accordingly.
# Version should be the latest prior build. If you don't do this, RPM will break and
# everything will grind to a halt.
%global bootstrap 1
%global bootstrap_major_version 5.3
%global bootstrap_version %{bootstrap_major_version}.5
# Place rpm-macros into proper location.
%global macrosdir %(d=%{_rpmconfigdir}/macros.d; [ -d $d ] || d=%{_sysconfdir}/rpm; echo $d)
Name: lua
Version: %{major_version}.1
Release: 1%{?dist}
Summary: Powerful light-weight programming language
License: MIT
URL: http://www.lua.org/
Source0: http://www.lua.org/ftp/lua-%{version}.tar.gz
# copied from doc/readme.html on 2014-07-18
Source1: mit.txt
%if 0%{?bootstrap}
Source2: http://www.lua.org/ftp/lua-%{bootstrap_version}.tar.gz
%endif
Source3: http://www.lua.org/tests/lua-%{test_version}-tests.tar.gz
# multilib
Source4: luaconf.h
Patch0: %{name}-5.4.0-beta-autotoolize.patch
Patch1: %{name}-5.3.0-idsize.patch
#Patch2: %%{name}-5.3.0-luac-shared-link-fix.patch
Patch3: %{name}-5.2.2-configure-linux.patch
Patch4: %{name}-5.3.0-configure-compat-module.patch
%if 0%{?bootstrap}
Patch5: %{name}-5.3.0-autotoolize.patch
Patch6: %{name}-5.3.5-luac-shared-link-fix.patch
%endif
# https://www.lua.org/bugs.html
Patch18: %{name}-5.3.5-CVE-2020-24370.patch
BuildRequires: automake autoconf libtool readline-devel ncurses-devel
Requires: lua-libs = %{version}-%{release}
%description
Lua is a powerful light-weight programming language designed for
extending applications. Lua is also frequently used as a
general-purpose, stand-alone language. Lua is free software.
Lua combines simple procedural syntax 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.
%package devel
Summary: Development files for %{name}
Requires: %{name}%{?_isa} = %{version}-%{release}
# The RPM related dependencies bring nothing to a non-RPM Lua developer
# But we want them when packages BuildRequire lua-devel
Requires: (lua-rpm-macros if rpm-build)
Requires: pkgconfig
%description devel
This package contains development files for %{name}.
%package libs
Summary: Libraries for %{name}
Provides: lua(abi) = %{major_version}
%description libs
This package contains the shared libraries for %{name}.
%package static
Summary: Static library for %{name}
Requires: %{name}%{?_isa} = %{version}-%{release}
%description static
This package contains the static version of liblua for %{name}.
%prep
%if 0%{?bootstrap}
%setup -q -a 2 -a 3 -n %{name}-%{version}
%else
%setup -q -a 3
%endif
cp %{SOURCE1} .
mv src/luaconf.h src/luaconf.h.template.in
%patch0 -p1 -E -z .autoxxx
%patch1 -p1 -z .idsize
#%% patch2 -p1 -z .luac-shared
%patch3 -p1 -z .configure-linux
%patch4 -p1 -z .configure-compat-all
# Put proper version in configure.ac, patch0 hardcodes 5.3.0
sed -i 's|5.3.0|%{version}|g' configure.ac
autoreconf -ifv
%if 0%{?bootstrap}
cd lua-%{bootstrap_version}/
mv src/luaconf.h src/luaconf.h.template.in
%patch5 -p1 -b .autoxxx
%patch1 -p1 -b .idsize
%patch3 -p1 -z .configure-linux
%patch4 -p1 -z .configure-compat-all
%patch6 -p1 -b .luac-shared-link-fix
%patch18 -p1 -b .CVE-2020-24370
autoreconf -i
cd ..
%endif
%build
%configure --with-readline --with-compat-module
sed -i 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g' libtool
sed -i 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' libtool
# Autotools give me a headache sometimes.
sed -i 's|@pkgdatadir@|%{_datadir}|g' src/luaconf.h.template
# hack so that only /usr/bin/lua gets linked with readline as it is the
# only one which needs this and otherwise we get License troubles
make %{?_smp_mflags} LIBS="-lm -ldl"
# only /usr/bin/lua links with readline now #luac_LDADD="liblua.la -lm -ldl"
%if 0%{?bootstrap}
pushd lua-%{bootstrap_version}
%configure --with-readline --with-compat-module
sed -i 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g' libtool
sed -i 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' libtool
# Autotools give me a headache sometimes.
sed -i 's|@pkgdatadir@|%{_datadir}|g' src/luaconf.h.template
# hack so that only /usr/bin/lua gets linked with readline as it is the
# only one which needs this and otherwise we get License troubles
make %{?_smp_mflags} LIBS="-lm -ldl" luac_LDADD="liblua.la -lm -ldl"
popd
%endif
%check
cd ./lua-%{test_version}-tests/
# Dont skip the fully portable or ram-hungry tests:
# sed -i.orig -e '
# /attrib.lua/d;
# /files.lua/d;
# /db.lua/d;
# /errors.lua/d;
# ' all.lua
# LD_LIBRARY_PATH=$RPM_BUILD_ROOT/%{_libdir} $RPM_BUILD_ROOT/%{_bindir}/lua all.lua
# Removing tests that fail under mock/koji
sed -i.orig -e '
/db.lua/d;
/errors.lua/d;
' all.lua
LD_LIBRARY_PATH=$RPM_BUILD_ROOT/%{_libdir} $RPM_BUILD_ROOT/%{_bindir}/lua -e"_U=true" all.lua
%install
make install DESTDIR=$RPM_BUILD_ROOT
rm $RPM_BUILD_ROOT%{_libdir}/*.la
mkdir -p $RPM_BUILD_ROOT%{_libdir}/lua/%{major_version}
mkdir -p $RPM_BUILD_ROOT%{_datadir}/lua/%{major_version}
# Rename luaconf.h to luaconf-<arch>.h to avoid file conflicts on
# multilib systems and install luaconf.h wrapper
mv %{buildroot}%{_includedir}/luaconf.h %{buildroot}%{_includedir}/luaconf-%{_arch}.h
install -p -m 644 %{SOURCE4} %{buildroot}%{_includedir}/luaconf.h
%if 0%{?bootstrap}
pushd lua-%{bootstrap_version}
mkdir $RPM_BUILD_ROOT/installdir
make install DESTDIR=$RPM_BUILD_ROOT/installdir
cp -a $RPM_BUILD_ROOT/installdir/%{_libdir}/liblua-%{bootstrap_major_version}.so $RPM_BUILD_ROOT%{_libdir}/
mkdir -p $RPM_BUILD_ROOT%{_libdir}/lua/%{bootstrap_major_version}
mkdir -p $RPM_BUILD_ROOT%{_datadir}/lua/%{bootstrap_major_version}
rm -rf $RPM_BUILD_ROOT/installdir
popd
%endif
%files
%{!?_licensedir:%global license %%doc}
%license mit.txt
%doc README doc/*.html doc/*.css doc/*.gif doc/*.png
%{_bindir}/lua
%{_bindir}/luac
%{_mandir}/man1/lua*.1*
%files libs
%dir %{_libdir}/lua
%dir %{_libdir}/lua/%{major_version}
%{_libdir}/liblua-%{major_version}.so
%dir %{_datadir}/lua
%dir %{_datadir}/lua/%{major_version}
%if 0%{?bootstrap}
%dir %{_libdir}/lua/%{bootstrap_major_version}
%{_libdir}/liblua-%{bootstrap_major_version}.so
%dir %{_datadir}/lua/%{bootstrap_major_version}
%endif
%files devel
%{_includedir}/l*.h
%{_includedir}/l*.hpp
%{_libdir}/liblua.so
%{_libdir}/pkgconfig/*.pc
%files static
%{_libdir}/*.a
%changelog
* Mon Oct 12 2020 Tom Callaway <spot@fedoraproject.org> - 5.4.1-1
- update to 5.4.1
* Wed Sep 2 2020 Tom Callaway <spot@fedoraproject.org> - 5.4.0-8
- apply upstream fix for CVE-2020-24342
* Mon Aug 31 2020 Michel Alexandre Salim <salimma@fedoraproject.org> - 5.4.0-7
- Refactor macros into lua-rpm-macros
* Wed Aug 19 2020 Tom Callaway <spot@fedoraproject.org> - 5.4.0-6
- apply upstream fix for CVE-2020-24370, CVE-2020-24371
* Wed Aug 19 2020 Tom Callaway <spot@fedoraproject.org> - 5.4.0-5
- apply upstream fix for CVE-2020-24369
* Fri Jul 31 2020 Tom Callaway <spot@fedoraproject.org> - 5.4.0-4
- apply upstream fix for CVE-2020-15889
- apply upstream fix for CVE-2020-15945
- apply upstream fixes for "known bugs"
* Tue Jul 28 2020 Fedora Release Engineering <releng@fedoraproject.org> - 5.4.0-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
* Tue Jun 30 2020 Miro Hrončok <mhroncok@redhat.com> - 5.4.0-2
- Add lua(abi) requirements generator (requires RPM 4.16+)
* Mon Jun 29 2020 Tom Callaway <spot@fedoraproject.org> - 5.4.0-1
- update to 5.4.0
* Wed Jan 29 2020 Fedora Release Engineering <releng@fedoraproject.org> - 5.3.5-7
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
* Thu Jul 25 2019 Fedora Release Engineering <releng@fedoraproject.org> - 5.3.5-6
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
* Sun Feb 17 2019 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 5.3.5-5
- Rebuild for readline 8.0
* Fri Feb 01 2019 Fedora Release Engineering <releng@fedoraproject.org> - 5.3.5-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
* Mon Jan 28 2019 Tom Callaway <spot@fedoraproject.org> - 5.3.5-3
- apply fix for CVE-2019-6706 (bz1670020)
* Fri Jul 13 2018 Fedora Release Engineering <releng@fedoraproject.org> - 5.3.5-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
* Tue Jul 10 2018 Tom Callaway <spot@fedoraproject.org> - 5.3.5-1
- update to 5.3.5
* Tue Feb 13 2018 Tom Callaway <spot@fedoraproject.org> - 5.3.4-10
- move lua(abi) provide to -libs
- add fix for bug 6
* Thu Feb 08 2018 Fedora Release Engineering <releng@fedoraproject.org> - 5.3.4-9
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
* Tue Jan 2 2018 Richard W.M. Jones <rjones@redhat.com> - 5.3.4-8
- Unnecessary change to RISC-V macros in GCC requires change in luaconf.h.
* Mon Dec 4 2017 Tom Callaway <spot@fedoraproject.org> - 5.3.4-7
- fix pkgconfig provides (bz1519921)
* Sun Oct 29 2017 Tom Callaway <spot@fedoraproject.org> - 5.3.4-6
- apply known upstream bugfixes
* Thu Aug 03 2017 Fedora Release Engineering <releng@fedoraproject.org> - 5.3.4-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild
* Wed Jul 26 2017 Fedora Release Engineering <releng@fedoraproject.org> - 5.3.4-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
* Sun May 28 2017 Björn Esser <besser82@fedoraproject.org> - 5.3.4-3
- Refactor macros to a more common syntax
- Use rpm's build-in lua for macros
* Wed May 24 2017 Björn Esser <besser82@fedoraproject.org> - 5.3.4-2
- Add rpm-macros file, providing packaging macros for lua add-ons (#1447324)
* Thu Feb 9 2017 Tom Callaway <spot@fedoraproject.org> 5.3.4-1
- update to 5.3.4
* Thu Jan 12 2017 Igor Gnatenko <ignatenko@redhat.com> - 5.3.3-4
- Rebuild for readline 7.x
* Tue Jul 26 2016 Tom Callaway <spot@fedoraproject.org> - 5.3.3-3
- create lua-libs subpackage
- disable bootstrap
* Mon Jul 25 2016 Tom Callaway <spot@fedoraproject.org> - 5.3.3-2
- apply fixes for upstream bug 1 & 2
* Tue Jun 7 2016 Tom Callaway <spot@fedoraproject.org> - 5.3.3-1
- update to 5.3.3
* Thu Feb 04 2016 Fedora Release Engineering <releng@fedoraproject.org> - 5.3.2-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild
* Fri Dec 11 2015 Tom Callaway <spot@fedoraproject.org> - 5.3.2-2
- fix multilib support (#1229992)
* Fri Dec 11 2015 "D. Johnson" <fenris02@fedoraproject.org> - 5.3.2-1
- Update to 5.3.2 (#1039249,1173984)
* Wed Jun 17 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 5.3.0-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
* Fri Mar 20 2015 Kalev Lember <kalevlember@gmail.com> - 5.3.0-3
- Define LUA_COMPAT_5_2 in addition to LUA_COMPAT_5_1 (#1204129)
* Sat Feb 21 2015 Till Maas <opensource@till.name> - 5.3.0-2
- Rebuilt for Fedora 23 Change
https://fedoraproject.org/wiki/Changes/Harden_all_packages_with_position-independent_code
* Thu Jan 15 2015 Tom Callaway <spot@fedoraproject.org> - 5.3.0-1
- update to 5.3.0
- add bootstrapping glue
* Wed Dec 10 2014 Tom Callaway <spot@fedoraproject.org> - 5.2.3-1
- update to 5.2.3
* Sun Aug 17 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 5.2.2-8
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild
* Fri Jul 18 2014 Tom Callaway <spot@fedoraproject.org> - 5.2.2-7
- fix license handling
* Sat Jun 07 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 5.2.2-6
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
* Wed Oct 23 2013 Tom Callaway <spot@fedoraproject.org> - 5.2.2-5
- readd and fix configure-compat-module.patch to use LUA_CONFIG_ALL instead
* Wed Oct 23 2013 Tom Callaway <spot@fedoraproject.org> - 5.2.2-4
- drop configure-compat-module.patch, if you really need old lua behavior, use compat-lua
* Mon Aug 05 2013 Hans de Goede <hdegoede@redhat.com> - 5.2.2-3
- Drop compat-lua-libs package, as there now is a separate compat-lua
package (including a -devel)
* Sat Aug 03 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 5.2.2-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild
* Thu Apr 11 2013 Tom Callaway <spot@fedoraproject.org> - 5.2.2-1
- update to 5.2.2
- incorporate Aaron Faanes's changes
* Thu Feb 14 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 5.1.4-12
- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild
* Thu Jul 19 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 5.1.4-11
- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
* Fri Jan 13 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 5.1.4-10
- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild
* Wed Apr 06 2011 Tim Niemueller <tim@niemueller.de> - 5.1.4-9
- Provide lua(abi) = 5.1 for better distro updates later
* Tue Feb 08 2011 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 5.1.4-8
- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild
* Fri Jan 28 2011 Tim Niemueller <tim@niemueller.de> - 5.1.4-7
- Add patch to from lua.org with smaller bugfixes
- sed -i -e 's/5\.1\.3/5.1.4/g' on autotoolize patch, bug #641144
* Fri Jan 28 2011 Tim Niemueller <tim@niemueller.de> - 5.1.4-6
- Add patch to increase IDSIZE for more useful error messages
* Sun May 09 2010 Tim Niemueller <tim@niemueller.de> - 5.1.4-5
- Add patch regarding dlopen flags to support Lunatic (Lua-Python bridge)
* Sat Jul 25 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 5.1.4-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild
* Thu Jun 11 2009 Tim Niemueller <tim@niemueller.de> - 5.1.4-2
- Link liblua.so with -lm (math lib), fixes rhbz #499238
* Wed Feb 25 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 5.1.4-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild
* Wed Sep 03 2008 Tim Niemueller <tim@niemueller.de> - 5.1.4-1
- New upstream release 5.1.4
* Mon May 12 2008 Tim Niemueller <tim@niemueller.de> - 5.1.3-6
- Add -static subpackage with static liblua, fixes rh bug #445939
* Sun Apr 13 2008 Tim Niemueller <tim@niemueller.de> - 5.1.3-5
- Provide lua = 5.1, this way add-on packages can easily depend on the Lua
base version and expect certain paths for packages
* Sat Apr 5 2008 Hans de Goede <j.w.r.degoede@hhs.nl> 5.1.3-4
- Not only own $libdir/lua/5.1 and $datadir/lua/5.1 but also $libdir/lua
and $datadir/lua for proper removal of these dirs upon lua removal
* Fri Mar 14 2008 Tim Niemueller <tim@niemueller.de> - 5.1.3-3
- own $libdir/lua/5.1 and $datadir/lua/5.1. These are the standard package
search path for Lua. Packaging them properly allows for easy creation of
Lua addon packages.
* Tue Feb 19 2008 Fedora Release Engineering <rel-eng@fedoraproject.org> - 5.1.3-2
- Autorebuild for GCC 4.3
* Sat Jan 26 2008 Hans de Goede <j.w.r.degoede@hhs.nl> 5.1.3-1
- New upstream release 5.1.3
* Mon Nov 26 2007 Hans de Goede <j.w.r.degoede@hhs.nl> 5.1.2-4
- Fix libdir in lua.pc being /usr/lib on x86_64 (bz 399101)
* Sun Oct 21 2007 Hans de Goede <j.w.r.degoede@hhs.nl> 5.1.2-3
- Also use lib64 instead of lib on ia64 and sparc64
* Sun Oct 21 2007 Hans de Goede <j.w.r.degoede@hhs.nl> 5.1.2-2
- Fix multilib condlict in luaconf.h (bz 342561)
* Mon Apr 2 2007 Hans de Goede <j.w.r.degoede@hhs.nl> 5.1.2-1
- New upstream release 5.1.2
- Fix use of rpath on x86_64
* Fri Jan 19 2007 Hans de Goede <j.w.r.degoede@hhs.nl> 5.1.1-3
- Remove "-lreadline -lncurses" from lua.pc (bz 213895)
* Sun Oct 15 2006 Hans de Goede <j.w.r.degoede@hhs.nl> 5.1.1-2
- Only link /usr/bin/lua with readline / do not link %%{_libdir}/liblua-5.1.so
with readline so that we don't cause any License troubles for packages
linking against liblua-5.1.so, otherwise lua could drag the GPL only readline
lib into the linking of non GPL apps.
* Sat Oct 14 2006 Hans de Goede <j.w.r.degoede@hhs.nl> 5.1.1-1
- New upstream release 5.1.1
- Fix detection of readline during compile (iow add readline support back)
* Sun Aug 27 2006 Michael J. Knox <michael[AT]knox.net.nz> - 5.1-7
- Rebuild for FC6
* Thu Jun 08 2006 Michael J. Knox <michael[AT]knox.net.nz> - 5.1-6
- fixed broken provides
* Tue Jun 06 2006 Michael J. Knox <michael[AT]knox.net.nz> - 5.1-5
- split out devel subpackage
* Thu Jun 01 2006 Michael J. Knox <michael[AT]knox.net.nz> - 5.1-4
- added Requires for pkgconfig BZ#193674
* Mon May 29 2006 Michael J. Knox <michael[AT]knox.net.nz> - 5.1-3
- added autotools patch from Petri Lehtinen, http://lua-users.org
* Mon May 08 2006 Michael J. Knox <michael[AT]knox.net.nz> - 5.1-2
- fixed x86_64 builds
* Mon May 08 2006 Michael J. Knox <michael[AT]knox.net.nz> - 5.1-1
- version bump
* Sun Oct 16 2005 Ville Skyttä <ville.skytta at iki.fi> - 5.0.2-5
- Fix -debuginfo (#165304).
- Cosmetic specfile improvements.
* Sun May 22 2005 Jeremy Katz <katzj@redhat.com> - 5.0.2-4
- rebuild on all arches
* Thu Apr 7 2005 Michael Schwendt <mschwendt[AT]users.sf.net> - 5.0.2-3
- rebuilt
* Sat Feb 12 2005 David Woodhouse <dwmw2@infradead.org> - 5.0.2-2
- Don't use fastround on ppc
* Tue Feb 01 2005 Panu Matilainen <pmatilai@welho.com> - 5.0.2-1
- update to 5.0.2
- remove epoch 0, drop fedora.us release tag
* Mon Nov 17 2003 Oren Tirosh <oren at hishome.net> - 0:5.0-0.fdr.2
- Enable readline support.
* Sat Jun 21 2003 Ville Skyttä <ville.skytta at iki.fi> - 0:5.0-0.fdr.1
- First build.

61
luaconf.h Normal file
View File

@ -0,0 +1,61 @@
/*
* This luaconf.h is a wrapper include file for the original luaconf.h,
* which has been renamed to luaconf-<arch>.h. There are conflicts for the
* original luaconf.h on multilib systems, which result from arch-specific
* configuration options. Please do not use the arch-specific file directly.
*
* Copyright (C) 2015 Tom Callaway <spot@fedoraproject.org>
*/
/**
* \file luaconf.h
*/
#ifdef luaconf_wrapper_h
#error "luaconf_wrapper_h should not be defined!"
#endif
#define luaconf_wrapper_h
#if defined(__i386__)
#include "luaconf-i386.h"
#elif defined(__ia64__)
#include "luaconf-ia64.h"
#elif defined(__powerpc64__)
# if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
#include "luaconf-ppc64.h"
# else
#include "luaconf-ppc64le.h"
# endif
#elif defined(__powerpc__)
#include "luaconf-ppc.h"
#elif defined(__s390x__)
#include "luaconf-s390x.h"
#elif defined(__s390__)
#include "luaconf-s390.h"
#elif defined(__x86_64__)
#include "luaconf-x86_64.h"
#elif defined(__arm__)
#include "luaconf-arm.h"
#elif defined(__alpha__)
#include "luaconf-alpha.h"
#elif defined(__sparc__) && defined (__arch64__)
#include "luaconf-sparc64.h"
#elif defined(__sparc__)
#include "luaconf-sparc.h"
#elif defined(__aarch64__)
#include "luaconf-aarch64.h"
#elif defined(__mips64) && defined(__MIPSEL__)
#include "luaconf-mips64el.h"
#elif defined(__mips64)
#include "luaconf-mips64.h"
#elif defined(__mips) && defined(__MIPSEL__)
#include "luaconf-mipsel.h"
#elif defined(__mips)
#include "luaconf-mips.h"
#elif defined(__riscv)
#include "luaconf-riscv64.h"
#else
#error "The lua-devel package is not usable with the architecture."
#endif
#undef luaconf_wrapper_h

19
mit.txt Normal file
View File

@ -0,0 +1,19 @@
Copyright (c) 1994-2013 Lua.org, PUC-Rio.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

3
sources Normal file
View File

@ -0,0 +1,3 @@
SHA512 (lua-5.3.5.tar.gz) = 4f9516acc4659dfd0a9e911bfa00c0788f0ad9348e5724fe8fb17aac59e9c0060a64378f82be86f8534e49c6c013e7488ad17321bafcc787831d3d67406bd0f4
SHA512 (lua-5.4.1-tests.tar.gz) = ac7cf113d96f8fe2af4f104297a70debd3bede5997627fc18db6b5d9c78ff49e05a165f5855894def5656c6dcc2d7d9ccce741c90da17698a5c714a33828f49a
SHA512 (lua-5.4.1.tar.gz) = 49ffbe814ec41e515fc8502b6958151c6c56aa171412f0b211ad9de934be2c958c3709d49435885ddea0fa6765ed511dafb3537558950ff3b4261338214f1571

3
tests/README.md Normal file
View File

@ -0,0 +1,3 @@
# lua
lua tests

63
tests/Smoke/Makefile Normal file
View File

@ -0,0 +1,63 @@
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# Makefile of /CoreOS/lua/Sanity/Smoke
# Description: Basic smoke for lua component
# Author: Stepan Sigut <ssigut@redhat.com>
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# Copyright (c) 2016 Red Hat, Inc.
#
# This program is free software: you can redistribute it and/or
# modify it under the terms of the GNU General Public License as
# published by the Free Software Foundation, either version 2 of
# the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be
# useful, but WITHOUT ANY WARRANTY; without even the implied
# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
# PURPOSE. See the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see http://www.gnu.org/licenses/.
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
export TEST=/CoreOS/lua/Sanity/Smoke
export TESTVERSION=1.0
BUILT_FILES=
FILES=$(METADATA) runtest.sh Makefile PURPOSE *.lua
.PHONY: all install download clean
run: $(FILES) build
./runtest.sh
build: $(BUILT_FILES)
test -x runtest.sh || chmod a+x runtest.sh
clean:
rm -f *~ $(BUILT_FILES)
include /usr/share/rhts/lib/rhts-make.include
$(METADATA): Makefile
@echo "Owner: Stepan Sigut <ssigut@redhat.com>" > $(METADATA)
@echo "Name: $(TEST)" >> $(METADATA)
@echo "TestVersion: $(TESTVERSION)" >> $(METADATA)
@echo "Path: $(TEST_DIR)" >> $(METADATA)
@echo "Description: Basic smoke for lua component" >> $(METADATA)
@echo "Type: Sanity" >> $(METADATA)
@echo "TestTime: 5m" >> $(METADATA)
@echo "RunFor: lua" >> $(METADATA)
@echo "Requires: lua" >> $(METADATA)
@echo "Priority: Normal" >> $(METADATA)
@echo "License: GPLv2+" >> $(METADATA)
@echo "Confidential: no" >> $(METADATA)
@echo "Destructive: no" >> $(METADATA)
@echo "Releases: -RHEL4 -RHELClient5 -RHELServer5" >> $(METADATA)
rhts-lint $(METADATA)

3
tests/Smoke/PURPOSE Normal file
View File

@ -0,0 +1,3 @@
PURPOSE of /CoreOS/lua/Sanity/Smoke
Description: Basic smoke for lua component
Author: Stepan Sigut <ssigut@redhat.com>

35
tests/Smoke/account.lua Normal file
View File

@ -0,0 +1,35 @@
-- account.lua
-- from PiL 1, Chapter 16
Account = {balance = 0}
function Account:new (o, name)
o = o or {name=name}
setmetatable(o, self)
self.__index = self
return o
end
function Account:deposit (v)
self.balance = self.balance + v
end
function Account:withdraw (v)
if v > self.balance then error("insufficient funds on account "..self.name) end
self.balance = self.balance - v
end
function Account:show (title)
print(title or "", self.name, self.balance)
end
a = Account:new(nil,"demo")
a:show("after creation")
a:deposit(1000.00)
a:show("after deposit")
a:withdraw(100.00)
a:show("after withdraw")
-- this would raise an error
b = Account:new(nil,"DEMO")
b:withdraw(100.00)

28
tests/Smoke/bisect.lua Normal file
View File

@ -0,0 +1,28 @@
-- bisect.lua
-- bisection method for solving non-linear equations
delta=1e-6 -- tolerance
function bisect(f,a,b,fa,fb)
local c=(a+b)/2
io.write(n," c=",c," a=",a," b=",b,"\n")
if c==a or c==b or math.abs(a-b)<delta then return c,b-a end
n=n+1
local fc=f(c)
if fa*fc<0 then return bisect(f,a,c,fa,fc) else return bisect(f,c,b,fc,fb) end
end
-- find root of f in the inverval [a,b]. needs f(a)*f(b)<0
function solve(f,a,b)
n=0
local z,e=bisect(f,a,b,f(a),f(b))
io.write(string.format("after %d steps, root is %.17g with error %.1e, f=%.1e\n",n,z,e,f(z)))
end
-- our function
function f(x)
return x*x*x-x-1
end
-- find zero in [1,2]
solve(f,1,2)

23
tests/Smoke/globals.lua Normal file
View File

@ -0,0 +1,23 @@
-- globals.lua
-- show all global variables
local seen={}
function dump(t,i)
seen[t]=true
local s={}
local n=0
for k in pairs(t) do
n=n+1 s[n]=k
end
table.sort(s)
for k,v in ipairs(s) do
print(i,v)
v=t[v]
if type(v)=="table" and not seen[v] then
dump(v,i.."\t")
end
end
end
dump(_G,"")

4
tests/Smoke/hello.lua Normal file
View File

@ -0,0 +1,4 @@
-- hello.lua
-- the first program in every language
io.write("Hello world, from ",_VERSION,"!\n")

70
tests/Smoke/runtest.sh Executable file
View File

@ -0,0 +1,70 @@
#!/bin/bash
# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# runtest.sh of /CoreOS/lua/Sanity/Smoke
# Description: Basic smoke for lua component
# Author: Stepan Sigut <ssigut@redhat.com>
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# Copyright (c) 2016 Red Hat, Inc.
#
# This program is free software: you can redistribute it and/or
# modify it under the terms of the GNU General Public License as
# published by the Free Software Foundation, either version 2 of
# the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be
# useful, but WITHOUT ANY WARRANTY; without even the implied
# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
# PURPOSE. See the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see http://www.gnu.org/licenses/.
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Include Beaker environment
. /usr/bin/rhts-environment.sh || exit 1
. /usr/share/beakerlib/beakerlib.sh || exit 1
PACKAGES=${PACKAGES:-"lua"}
LUA=${LUA:-"lua"}
rlJournalStart
rlPhaseStartSetup
rlAssertRpm --all
rlAssertBinaryOrigin $LUA
set -o pipefail
rlRun "TmpDir=\$(mktemp -d)" 0 "Creating tmp directory"
rlRun "cp *.lua $TmpDir"
rlRun "pushd $TmpDir"
rlPhaseEnd
rlPhaseStartTest
rlRun "$LUA hello.lua 2>&1 | tee dump.log" 0
rlAssertGrep "Hello world, from Lua" "dump.log"
rlPhaseEnd
rlPhaseStartTest
rlRun "$LUA bisect.lua 2>&1 | tee dump.log" 0
rlAssertGrep "after 20 steps, root is 1.3247179985046387 with error 9.5e-07, f=1.8e-07" "dump.log"
rlPhaseEnd
rlPhaseStartTest
rlRun "$LUA globals.lua &>/dev/null" 0
rlPhaseEnd
rlPhaseStartTest
rlRun "$LUA account.lua 2>&1 | tee dump.log" 1
rlAssertGrep "after creation" "dump.log"
rlAssertGrep "lua: account.lua:18: insufficient funds on account DEMO" "dump.log"
rlPhaseEnd
rlPhaseStartTest
rlRun "$LUA sieve.lua &>/dev/null" 0
rlPhaseEnd
rlPhaseStartCleanup
rlRun "popd"
rlRun "rm -r $TmpDir" 0 "Removing tmp directory"
rlPhaseEnd
rlJournalPrintText
rlJournalEnd

28
tests/Smoke/sieve.lua Normal file
View File

@ -0,0 +1,28 @@
-- sieve.lua
-- the sieve of Eratosthenes programmed with coroutines
-- typical usage: lua -e N=500 sieve.lua | column
-- generate all the numbers from 2 to n
function gen (n)
return coroutine.wrap(function ()
for i=2,n do coroutine.yield(i) end
end)
end
-- filter the numbers generated by `g', removing multiples of `p'
function filter (p, g)
return coroutine.wrap(function ()
for n in g do
if n%p ~= 0 then coroutine.yield(n) end
end
end)
end
N=N or 500 -- from command line
x = gen(N) -- generate primes up to N
while 1 do
local n = x() -- pick a number until done
if n == nil then break end
print(n) -- must be a prime number
x = filter(n, x) -- now remove its multiples
end

14
tests/tests.yml Normal file
View File

@ -0,0 +1,14 @@
---
# This first play always runs on the local staging system
- hosts: localhost
roles:
- role: standard-test-beakerlib
tags:
- classic
- container
- atomic
tests:
- Smoke
required_packages:
- lua # Required for smoke test
- which # Required for smoke test