diff --git a/.gitignore b/.gitignore index e69de29..de56088 100644 --- a/.gitignore +++ b/.gitignore @@ -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 diff --git a/CVE-2019-6706-use-after-free-lua_upvaluejoin.patch b/CVE-2019-6706-use-after-free-lua_upvaluejoin.patch new file mode 100644 index 0000000..a7aaf9c --- /dev/null +++ b/CVE-2019-6706-use-after-free-lua_upvaluejoin.patch @@ -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); + } + + diff --git a/lua-5.2.2-configure-compat-module.patch b/lua-5.2.2-configure-compat-module.patch new file mode 100644 index 0000000..80bb047 --- /dev/null +++ b/lua-5.2.2-configure-compat-module.patch @@ -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@ + + + /* diff --git a/lua-5.2.2-configure-linux.patch b/lua-5.2.2-configure-linux.patch new file mode 100644 index 0000000..735386a --- /dev/null +++ b/lua-5.2.2-configure-linux.patch @@ -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" diff --git a/lua-5.2.2-idsize.patch b/lua-5.2.2-idsize.patch new file mode 100644 index 0000000..7388a07 --- /dev/null +++ b/lua-5.2.2-idsize.patch @@ -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 + + + /* diff --git a/lua-5.2.2-luac-shared-link-fix.patch b/lua-5.2.2-luac-shared-link-fix.patch new file mode 100644 index 0000000..6c9eb99 --- /dev/null +++ b/lua-5.2.2-luac-shared-link-fix.patch @@ -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" diff --git a/lua-5.2.3-autotoolize.patch b/lua-5.2.3-autotoolize.patch new file mode 100644 index 0000000..02a59fe --- /dev/null +++ b/lua-5.2.3-autotoolize.patch @@ -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 + #include + ++@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" diff --git a/lua-5.3.0-autotoolize.patch b/lua-5.3.0-autotoolize.patch new file mode 100644 index 0000000..3e4723a --- /dev/null +++ b/lua-5.3.0-autotoolize.patch @@ -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 + #include + ++@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 $@ diff --git a/lua-5.3.0-configure-compat-module.patch b/lua-5.3.0-configure-compat-module.patch new file mode 100644 index 0000000..bd5d41d --- /dev/null +++ b/lua-5.3.0-configure-compat-module.patch @@ -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@ + + + /* diff --git a/lua-5.3.0-idsize.patch b/lua-5.3.0-idsize.patch new file mode 100644 index 0000000..16107fe --- /dev/null +++ b/lua-5.3.0-idsize.patch @@ -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 + + + /* diff --git a/lua-5.3.4-bug1.patch b/lua-5.3.4-bug1.patch new file mode 100644 index 0000000..f03aab9 --- /dev/null +++ b/lua-5.3.4-bug1.patch @@ -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 */ diff --git a/lua-5.3.4-bug4.patch b/lua-5.3.4-bug4.patch new file mode 100644 index 0000000..d1a3951 --- /dev/null +++ b/lua-5.3.4-bug4.patch @@ -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); diff --git a/lua-5.3.4-bug5.patch b/lua-5.3.4-bug5.patch new file mode 100644 index 0000000..7d757c2 --- /dev/null +++ b/lua-5.3.4-bug5.patch @@ -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 */ + } + } + } diff --git a/lua-5.3.4-bug6.patch b/lua-5.3.4-bug6.patch new file mode 100644 index 0000000..ebb7c24 --- /dev/null +++ b/lua-5.3.4-bug6.patch @@ -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); + } + diff --git a/lua-5.3.5-CVE-2020-24370.patch b/lua-5.3.5-CVE-2020-24370.patch new file mode 100644 index 0000000..5f3668b --- /dev/null +++ b/lua-5.3.5-CVE-2020-24370.patch @@ -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)); diff --git a/lua-5.3.5-luac-shared-link-fix.patch b/lua-5.3.5-luac-shared-link-fix.patch new file mode 100644 index 0000000..d8b9ab0 --- /dev/null +++ b/lua-5.3.5-luac-shared-link-fix.patch @@ -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 diff --git a/lua-5.4.0-beta-autotoolize.patch b/lua-5.4.0-beta-autotoolize.patch new file mode 100644 index 0000000..2ff70f8 --- /dev/null +++ b/lua-5.4.0-beta-autotoolize.patch @@ -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 + #include + ++@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 $@ diff --git a/lua.spec b/lua.spec new file mode 100644 index 0000000..450587c --- /dev/null +++ b/lua.spec @@ -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-.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 - 5.4.1-1 +- update to 5.4.1 + +* Wed Sep 2 2020 Tom Callaway - 5.4.0-8 +- apply upstream fix for CVE-2020-24342 + +* Mon Aug 31 2020 Michel Alexandre Salim - 5.4.0-7 +- Refactor macros into lua-rpm-macros + +* Wed Aug 19 2020 Tom Callaway - 5.4.0-6 +- apply upstream fix for CVE-2020-24370, CVE-2020-24371 + +* Wed Aug 19 2020 Tom Callaway - 5.4.0-5 +- apply upstream fix for CVE-2020-24369 + +* Fri Jul 31 2020 Tom Callaway - 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 - 5.4.0-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Tue Jun 30 2020 Miro Hrončok - 5.4.0-2 +- Add lua(abi) requirements generator (requires RPM 4.16+) + +* Mon Jun 29 2020 Tom Callaway - 5.4.0-1 +- update to 5.4.0 + +* Wed Jan 29 2020 Fedora Release Engineering - 5.3.5-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Thu Jul 25 2019 Fedora Release Engineering - 5.3.5-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Sun Feb 17 2019 Igor Gnatenko - 5.3.5-5 +- Rebuild for readline 8.0 + +* Fri Feb 01 2019 Fedora Release Engineering - 5.3.5-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Mon Jan 28 2019 Tom Callaway - 5.3.5-3 +- apply fix for CVE-2019-6706 (bz1670020) + +* Fri Jul 13 2018 Fedora Release Engineering - 5.3.5-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + +* Tue Jul 10 2018 Tom Callaway - 5.3.5-1 +- update to 5.3.5 + +* Tue Feb 13 2018 Tom Callaway - 5.3.4-10 +- move lua(abi) provide to -libs +- add fix for bug 6 + +* Thu Feb 08 2018 Fedora Release Engineering - 5.3.4-9 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Tue Jan 2 2018 Richard W.M. Jones - 5.3.4-8 +- Unnecessary change to RISC-V macros in GCC requires change in luaconf.h. + +* Mon Dec 4 2017 Tom Callaway - 5.3.4-7 +- fix pkgconfig provides (bz1519921) + +* Sun Oct 29 2017 Tom Callaway - 5.3.4-6 +- apply known upstream bugfixes + +* Thu Aug 03 2017 Fedora Release Engineering - 5.3.4-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + +* Wed Jul 26 2017 Fedora Release Engineering - 5.3.4-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Sun May 28 2017 Björn Esser - 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 - 5.3.4-2 +- Add rpm-macros file, providing packaging macros for lua add-ons (#1447324) + +* Thu Feb 9 2017 Tom Callaway 5.3.4-1 +- update to 5.3.4 + +* Thu Jan 12 2017 Igor Gnatenko - 5.3.3-4 +- Rebuild for readline 7.x + +* Tue Jul 26 2016 Tom Callaway - 5.3.3-3 +- create lua-libs subpackage +- disable bootstrap + +* Mon Jul 25 2016 Tom Callaway - 5.3.3-2 +- apply fixes for upstream bug 1 & 2 + +* Tue Jun 7 2016 Tom Callaway - 5.3.3-1 +- update to 5.3.3 + +* Thu Feb 04 2016 Fedora Release Engineering - 5.3.2-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Fri Dec 11 2015 Tom Callaway - 5.3.2-2 +- fix multilib support (#1229992) + +* Fri Dec 11 2015 "D. Johnson" - 5.3.2-1 +- Update to 5.3.2 (#1039249,1173984) + +* Wed Jun 17 2015 Fedora Release Engineering - 5.3.0-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + +* Fri Mar 20 2015 Kalev Lember - 5.3.0-3 +- Define LUA_COMPAT_5_2 in addition to LUA_COMPAT_5_1 (#1204129) + +* Sat Feb 21 2015 Till Maas - 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 - 5.3.0-1 +- update to 5.3.0 +- add bootstrapping glue + +* Wed Dec 10 2014 Tom Callaway - 5.2.3-1 +- update to 5.2.3 + +* Sun Aug 17 2014 Fedora Release Engineering - 5.2.2-8 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild + +* Fri Jul 18 2014 Tom Callaway - 5.2.2-7 +- fix license handling + +* Sat Jun 07 2014 Fedora Release Engineering - 5.2.2-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Wed Oct 23 2013 Tom Callaway - 5.2.2-5 +- readd and fix configure-compat-module.patch to use LUA_CONFIG_ALL instead + +* Wed Oct 23 2013 Tom Callaway - 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 - 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 - 5.2.2-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild + +* Thu Apr 11 2013 Tom Callaway - 5.2.2-1 +- update to 5.2.2 +- incorporate Aaron Faanes's changes + +* Thu Feb 14 2013 Fedora Release Engineering - 5.1.4-12 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild + +* Thu Jul 19 2012 Fedora Release Engineering - 5.1.4-11 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Fri Jan 13 2012 Fedora Release Engineering - 5.1.4-10 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild + +* Wed Apr 06 2011 Tim Niemueller - 5.1.4-9 +- Provide lua(abi) = 5.1 for better distro updates later + +* Tue Feb 08 2011 Fedora Release Engineering - 5.1.4-8 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild + +* Fri Jan 28 2011 Tim Niemueller - 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 - 5.1.4-6 +- Add patch to increase IDSIZE for more useful error messages + +* Sun May 09 2010 Tim Niemueller - 5.1.4-5 +- Add patch regarding dlopen flags to support Lunatic (Lua-Python bridge) + +* Sat Jul 25 2009 Fedora Release Engineering - 5.1.4-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild + +* Thu Jun 11 2009 Tim Niemueller - 5.1.4-2 +- Link liblua.so with -lm (math lib), fixes rhbz #499238 + +* Wed Feb 25 2009 Fedora Release Engineering - 5.1.4-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild + +* Wed Sep 03 2008 Tim Niemueller - 5.1.4-1 +- New upstream release 5.1.4 + +* Mon May 12 2008 Tim Niemueller - 5.1.3-6 +- Add -static subpackage with static liblua, fixes rh bug #445939 + +* Sun Apr 13 2008 Tim Niemueller - 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 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 - 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 - 5.1.3-2 +- Autorebuild for GCC 4.3 + +* Sat Jan 26 2008 Hans de Goede 5.1.3-1 +- New upstream release 5.1.3 + +* Mon Nov 26 2007 Hans de Goede 5.1.2-4 +- Fix libdir in lua.pc being /usr/lib on x86_64 (bz 399101) + +* Sun Oct 21 2007 Hans de Goede 5.1.2-3 +- Also use lib64 instead of lib on ia64 and sparc64 + +* Sun Oct 21 2007 Hans de Goede 5.1.2-2 +- Fix multilib condlict in luaconf.h (bz 342561) + +* Mon Apr 2 2007 Hans de Goede 5.1.2-1 +- New upstream release 5.1.2 +- Fix use of rpath on x86_64 + +* Fri Jan 19 2007 Hans de Goede 5.1.1-3 +- Remove "-lreadline -lncurses" from lua.pc (bz 213895) + +* Sun Oct 15 2006 Hans de Goede 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 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 - 5.1-7 +- Rebuild for FC6 + +* Thu Jun 08 2006 Michael J. Knox - 5.1-6 +- fixed broken provides + +* Tue Jun 06 2006 Michael J. Knox - 5.1-5 +- split out devel subpackage + +* Thu Jun 01 2006 Michael J. Knox - 5.1-4 +- added Requires for pkgconfig BZ#193674 + +* Mon May 29 2006 Michael J. Knox - 5.1-3 +- added autotools patch from Petri Lehtinen, http://lua-users.org + +* Mon May 08 2006 Michael J. Knox - 5.1-2 +- fixed x86_64 builds + +* Mon May 08 2006 Michael J. Knox - 5.1-1 +- version bump + +* Sun Oct 16 2005 Ville Skyttä - 5.0.2-5 +- Fix -debuginfo (#165304). +- Cosmetic specfile improvements. + +* Sun May 22 2005 Jeremy Katz - 5.0.2-4 +- rebuild on all arches + +* Thu Apr 7 2005 Michael Schwendt - 5.0.2-3 +- rebuilt + +* Sat Feb 12 2005 David Woodhouse - 5.0.2-2 +- Don't use fastround on ppc + +* Tue Feb 01 2005 Panu Matilainen - 5.0.2-1 +- update to 5.0.2 +- remove epoch 0, drop fedora.us release tag + +* Mon Nov 17 2003 Oren Tirosh - 0:5.0-0.fdr.2 +- Enable readline support. + +* Sat Jun 21 2003 Ville Skyttä - 0:5.0-0.fdr.1 +- First build. diff --git a/luaconf.h b/luaconf.h new file mode 100644 index 0000000..2b10184 --- /dev/null +++ b/luaconf.h @@ -0,0 +1,61 @@ +/* + * This luaconf.h is a wrapper include file for the original luaconf.h, + * which has been renamed to luaconf-.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 + */ + +/** + * \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 diff --git a/mit.txt b/mit.txt new file mode 100644 index 0000000..4e6c510 --- /dev/null +++ b/mit.txt @@ -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. diff --git a/sources b/sources new file mode 100644 index 0000000..c1a7663 --- /dev/null +++ b/sources @@ -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 diff --git a/tests/README.md b/tests/README.md new file mode 100644 index 0000000..5683070 --- /dev/null +++ b/tests/README.md @@ -0,0 +1,3 @@ +# lua + +lua tests \ No newline at end of file diff --git a/tests/Smoke/Makefile b/tests/Smoke/Makefile new file mode 100644 index 0000000..cc6503b --- /dev/null +++ b/tests/Smoke/Makefile @@ -0,0 +1,63 @@ +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# Makefile of /CoreOS/lua/Sanity/Smoke +# Description: Basic smoke for lua component +# Author: Stepan Sigut +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# 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 " > $(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) diff --git a/tests/Smoke/PURPOSE b/tests/Smoke/PURPOSE new file mode 100644 index 0000000..fc1a3f3 --- /dev/null +++ b/tests/Smoke/PURPOSE @@ -0,0 +1,3 @@ +PURPOSE of /CoreOS/lua/Sanity/Smoke +Description: Basic smoke for lua component +Author: Stepan Sigut diff --git a/tests/Smoke/account.lua b/tests/Smoke/account.lua new file mode 100644 index 0000000..e783c01 --- /dev/null +++ b/tests/Smoke/account.lua @@ -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) diff --git a/tests/Smoke/bisect.lua b/tests/Smoke/bisect.lua new file mode 100644 index 0000000..77ac36c --- /dev/null +++ b/tests/Smoke/bisect.lua @@ -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) +# +# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +# +# 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 diff --git a/tests/Smoke/sieve.lua b/tests/Smoke/sieve.lua new file mode 100644 index 0000000..4ce8456 --- /dev/null +++ b/tests/Smoke/sieve.lua @@ -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 diff --git a/tests/tests.yml b/tests/tests.yml new file mode 100644 index 0000000..2613885 --- /dev/null +++ b/tests/tests.yml @@ -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