diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..4977f2c
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,2 @@
+SOURCES/lua-5.3.4-tests.tar.gz
+SOURCES/lua-5.3.4.tar.gz
diff --git a/.lua.metadata b/.lua.metadata
new file mode 100644
index 0000000..a6c279c
--- /dev/null
+++ b/.lua.metadata
@@ -0,0 +1,2 @@
+d0d59cfb0d2eac18a3134917c08246c854af67c5 SOURCES/lua-5.3.4-tests.tar.gz
+79790cfd40e09ba796b01a571d4d63b52b1cd950 SOURCES/lua-5.3.4.tar.gz
diff --git a/SOURCES/lua-5.2.2-configure-linux.patch b/SOURCES/lua-5.2.2-configure-linux.patch
new file mode 100644
index 0000000..735386a
--- /dev/null
+++ b/SOURCES/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/SOURCES/lua-5.3.0-autotoolize.patch b/SOURCES/lua-5.3.0-autotoolize.patch
new file mode 100644
index 0000000..3e4723a
--- /dev/null
+++ b/SOURCES/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 <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 $@
diff --git a/SOURCES/lua-5.3.0-configure-compat-module.patch b/SOURCES/lua-5.3.0-configure-compat-module.patch
new file mode 100644
index 0000000..bd5d41d
--- /dev/null
+++ b/SOURCES/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/SOURCES/lua-5.3.0-idsize.patch b/SOURCES/lua-5.3.0-idsize.patch
new file mode 100644
index 0000000..16107fe
--- /dev/null
+++ b/SOURCES/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/SOURCES/lua-5.3.4-bug1.patch b/SOURCES/lua-5.3.4-bug1.patch
new file mode 100644
index 0000000..f03aab9
--- /dev/null
+++ b/SOURCES/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/SOURCES/lua-5.3.4-bug4.patch b/SOURCES/lua-5.3.4-bug4.patch
new file mode 100644
index 0000000..d1a3951
--- /dev/null
+++ b/SOURCES/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/SOURCES/lua-5.3.4-bug5.patch b/SOURCES/lua-5.3.4-bug5.patch
new file mode 100644
index 0000000..7d757c2
--- /dev/null
+++ b/SOURCES/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/SOURCES/lua-5.3.4-bug6.patch b/SOURCES/lua-5.3.4-bug6.patch
new file mode 100644
index 0000000..ebb7c24
--- /dev/null
+++ b/SOURCES/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/SOURCES/luaconf.h b/SOURCES/luaconf.h
new file mode 100644
index 0000000..2b10184
--- /dev/null
+++ b/SOURCES/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-<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
diff --git a/SOURCES/macros.lua b/SOURCES/macros.lua
new file mode 100644
index 0000000..46656d6
--- /dev/null
+++ b/SOURCES/macros.lua
@@ -0,0 +1,13 @@
+%lua_version %{lua: print(string.sub(_VERSION, 5))}
+
+%lua_libdir %{_libdir}/lua/%{lua_version}
+%lua_pkgdir %{_datadir}/lua/%{lua_version}
+
+%lua_requires \
+%if 0%{?fedora} >= 16 || 0%{?rhel} >= 7 \
+Requires: lua(abi) = %{lua_version} \
+%else \
+Requires: lua >= %{lua_version} \
+Requires: lua < %{lua: os.setlocale('C'); print(string.sub(_VERSION, 5) + 0.1)} \
+%endif \
+%{nil}
diff --git a/SOURCES/mit.txt b/SOURCES/mit.txt
new file mode 100644
index 0000000..4e6c510
--- /dev/null
+++ b/SOURCES/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/SPECS/lua.spec b/SPECS/lua.spec
new file mode 100644
index 0000000..12d832e
--- /dev/null
+++ b/SPECS/lua.spec
@@ -0,0 +1,449 @@
+%global major_version 5.3
+# 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 0
+%global bootstrap_major_version 5.2
+%global bootstrap_version %{bootstrap_major_version}.3
+
+# Place rpm-macros into proper location.
+%global macrosdir %(d=%{_rpmconfigdir}/macros.d; [ -d $d ] || d=%{_sysconfdir}/rpm; echo $d)
+
+
+Name:           lua
+Version:        %{major_version}.4
+Release:        10%{?dist}
+Summary:        Powerful light-weight programming language
+Group:          Development/Languages
+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-%{version}-tests.tar.gz
+# multilib
+Source4:        luaconf.h
+# rpm-macro
+Source1000:     macros.lua
+Patch0:         %{name}-5.3.0-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.2.3-autotoolize.patch
+Patch6:         %{name}-5.2.2-idsize.patch
+Patch7:         %{name}-5.2.2-luac-shared-link-fix.patch
+Patch8:         %{name}-5.2.2-configure-compat-module.patch
+%endif
+# https://www.lua.org/bugs.html
+Patch9:         lua-5.3.4-bug1.patch
+Patch10:        lua-5.3.4-bug4.patch
+Patch11:        lua-5.3.4-bug5.patch
+Patch12:        lua-5.3.4-bug6.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}
+Group:          System Environment/Libraries
+Requires:       %{name}%{?_isa} = %{version}-%{release}
+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}
+Group:          System Environment/Libraries
+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
+%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
+%patch9 -p1 -b .bug1
+%patch10 -p1 -b .bug4
+%patch11 -p1 -b .bug5
+%patch12 -p1 -b .bug6
+# 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
+%patch6 -p1 -b .idsize
+%patch7 -p1 -b .luac-shared
+%patch3 -p1 -z .configure-linux
+%patch8 -p1 -z .configure-compat-all
+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-%{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
+
+# Install rpm-macro
+install -Dpm 0644 %{SOURCE1000} $RPM_BUILD_ROOT/%{macrosdir}/macros.lua
+
+%files
+%{!?_licensedir:%global license %%doc}
+%license mit.txt
+
+%doc README doc/*.html doc/*.css doc/*.gif doc/*.png
+%{_bindir}/lua
+%{_bindir}/luac
+%if 0%{?bootstrap}
+%dir %{_libdir}/lua/%{bootstrap_major_version}
+%dir %{_datadir}/lua/%{bootstrap_major_version}
+%endif
+%{_mandir}/man1/lua*.1*
+%dir %{_libdir}/lua
+%dir %{_libdir}/lua/%{major_version}
+%dir %{_datadir}/lua
+%dir %{_datadir}/lua/%{major_version}
+
+%files libs
+%{_libdir}/liblua-%{major_version}.so
+%if 0%{?bootstrap}
+%{_libdir}/liblua-%{bootstrap_major_version}.so
+%endif
+
+%files devel
+%{_includedir}/l*.h
+%{_includedir}/l*.hpp
+%{_libdir}/liblua.so
+%{_libdir}/pkgconfig/*.pc
+%{macrosdir}/macros.lua
+
+%files static
+%{_libdir}/*.a
+
+
+%changelog
+* 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.