diff --git a/config/lua/lua.pc b/config/lua/lua.pc
new file mode 100644
index 000000000..f6d25ec33
--- /dev/null
+++ b/config/lua/lua.pc
@@ -0,0 +1,20 @@
+V=5.4
+R=5.4.3
+
+prefix=/usr
+INSTALL_BIN=${prefix}/bin
+INSTALL_INC=${prefix}/include
+INSTALL_LIB=${prefix}/lib
+INSTALL_MAN=${prefix}/share/man/man1
+INSTALL_LMOD=${prefix}/share/lua/${V}
+INSTALL_CMOD=${prefix}/lib/lua/${V}
+exec_prefix=${prefix}
+libdir=${exec_prefix}/lib
+includedir=${prefix}/include
+
+Name: Lua
+Description: An Extensible Extension Language
+Version: ${R}
+Requires:
+Libs: -L${libdir} -llua -lm -ldl
+Cflags: -I${includedir}
diff --git a/config/rootfiles/common/lua b/config/rootfiles/common/lua
index 15d5995b3..44e3aa47e 100644
--- a/config/rootfiles/common/lua
+++ b/config/rootfiles/common/lua
@@ -5,10 +5,13 @@ usr/bin/luac
 #usr/include/lua.hpp
 #usr/include/luaconf.h
 #usr/include/lualib.h
-usr/lib/liblua-5.3.so
-#usr/lib/liblua.a
-#usr/lib/liblua.la
 usr/lib/liblua.so
-#usr/lib/pkgconfig/lua.pc
+#usr/lib/liblua.so.5.4
+#usr/lib/liblua.so.5.4.3
+#usr/lib/lua
+#usr/lib/lua/5.4
+usr/lib/pkgconfig/lua.pc
+#usr/share/lua
+#usr/share/lua/5.4
 #usr/share/man/man1/lua.1
 #usr/share/man/man1/luac.1
diff --git a/lfs/lua b/lfs/lua
index e70b9cd00..3692c1d3e 100644
--- a/lfs/lua
+++ b/lfs/lua
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 5.3.5
+VER        = 5.4.3
 
 THISAPP    = lua-$(VER)
 DL_FILE    = $(THISAPP).tar.gz
@@ -40,7 +40,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_MD5 = 4f4b4f323fd3514a68e0ab3da8ce3455
+$(DL_FILE)_MD5 = ef63ed2ecfb713646a7fcc583cf5f352
 
 install : $(TARGET)
 
@@ -70,14 +70,15 @@ $(subst %,%_MD5,$(objects)) :
 $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
 	@$(PREBUILD)
 	@rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE)
-	cd $(DIR_APP) && cp -v src/luaconf.h src/luaconf.h.template.in
-
-	cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/lua/lua-5.3.5-autotoolize.patch
-	cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/lua/lua-5.3.5-shared_library-1.patch
-
-	cd $(DIR_APP) && autoreconf -vfi
-	cd $(DIR_APP) && ./configure --prefix=/usr
-	cd $(DIR_APP) && make $(MAKETUNING)
-	cd $(DIR_APP) && make install
+	cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/lua-5.4.3-shared_library-1.patch
+	# install lua pkgconfig file
+	install -v -m 644 ${DIR_SRC}/config/lua/lua.pc \
+			/usr/lib/pkgconfig/lua.pc
+	cd $(DIR_APP) && make linux $(MAKETUNING)
+	cd $(DIR_APP) && make INSTALL_TOP=/usr                			\
+			      INSTALL_DATA="cp -d"            			\
+			      INSTALL_MAN=/usr/share/man/man1 			\
+			      TO_LIB="liblua.so liblua.so.5.4 liblua.so.5.4.3"  \
+			 install
 	@rm -rf $(DIR_APP)
 	@$(POSTBUILD)
diff --git a/src/patches/lua-5.4.3-shared_library-1.patch b/src/patches/lua-5.4.3-shared_library-1.patch
new file mode 100644
index 000000000..f1dfad9ca
--- /dev/null
+++ b/src/patches/lua-5.4.3-shared_library-1.patch
@@ -0,0 +1,78 @@
+Submitted By:            Douglas R. Reno <renodr at linuxfromscratch dot org>
+Date:                    2020-06-30
+Initial Package Version: 5.4.0
+Upstream Status:         Rejected
+Origin:                  Arch Linux, with some modifications
+Description:             Creates a shared liblua library, as well as
+                         removes optimization since it causes SIGBUS errors,
+                         and sets the search path to /usr from /usr/local.
+                         The initial version of this patch was created by
+                         Igor Zivkovic, before being rediffed for 5.4.0 by
+                         myself with some modifications made.
+
+diff -Naurp lua-5.4.0.orig/Makefile lua-5.4.0/Makefile
+--- lua-5.4.0.orig/Makefile	2020-04-15 07:55:07.000000000 -0500
++++ lua-5.4.0/Makefile	2020-06-30 13:22:00.997938585 -0500
+@@ -52,7 +52,7 @@ R= $V.0
+ all:	$(PLAT)
+ 
+ $(PLATS) help test clean:
+-	@cd src && $(MAKE) $@
++	@cd src && $(MAKE) $@ V=$(V) R=$(R)
+ 
+ install: dummy
+ 	cd src && $(MKDIR) $(INSTALL_BIN) $(INSTALL_INC) $(INSTALL_LIB) $(INSTALL_MAN) $(INSTALL_LMOD) $(INSTALL_CMOD)
+diff -Naurp lua-5.4.0.orig/src/luaconf.h lua-5.4.0/src/luaconf.h
+--- lua-5.4.0.orig/src/luaconf.h	2020-06-18 09:25:54.000000000 -0500
++++ lua-5.4.0/src/luaconf.h	2020-06-30 13:24:59.294932289 -0500
+@@ -227,7 +227,7 @@
+ 
+ #else			/* }{ */
+ 
+-#define LUA_ROOT	"/usr/local/"
++#define LUA_ROOT	"/usr/"
+ #define LUA_LDIR	LUA_ROOT "share/lua/" LUA_VDIR "/"
+ #define LUA_CDIR	LUA_ROOT "lib/lua/" LUA_VDIR "/"
+ 
+diff -Naurp lua-5.4.0.orig/src/Makefile lua-5.4.0/src/Makefile
+--- lua-5.4.0.orig/src/Makefile	2020-04-15 08:00:29.000000000 -0500
++++ lua-5.4.0/src/Makefile	2020-06-30 13:24:15.746933827 -0500
+@@ -7,7 +7,7 @@
+ PLAT= guess
+ 
+ CC= gcc -std=gnu99
+-CFLAGS= -O2 -Wall -Wextra -DLUA_COMPAT_5_3 $(SYSCFLAGS) $(MYCFLAGS)
++CFLAGS= -fPIC -O0 -Wall -Wextra -DLUA_COMPAT_5_3 -DLUA_COMPAT_5_2 -DLUA_COMPAT_5_1 $(SYSCFLAGS) $(MYCFLAGS)
+ LDFLAGS= $(SYSLDFLAGS) $(MYLDFLAGS)
+ LIBS= -lm $(SYSLIBS) $(MYLIBS)
+ 
+@@ -33,6 +33,7 @@ CMCFLAGS= -Os
+ PLATS= guess aix bsd c89 freebsd generic linux linux-readline macosx mingw posix solaris
+ 
+ LUA_A=	liblua.a
++LUA_SO=  liblua.so
+ CORE_O=	lapi.o lcode.o lctype.o ldebug.o ldo.o ldump.o lfunc.o lgc.o llex.o lmem.o lobject.o lopcodes.o lparser.o lstate.o lstring.o ltable.o ltm.o lundump.o lvm.o lzio.o
+ LIB_O=	lauxlib.o lbaselib.o lcorolib.o ldblib.o liolib.o lmathlib.o loadlib.o loslib.o lstrlib.o ltablib.o lutf8lib.o linit.o
+ BASE_O= $(CORE_O) $(LIB_O) $(MYOBJS)
+@@ -44,7 +45,7 @@ LUAC_T=	luac
+ LUAC_O=	luac.o
+ 
+ ALL_O= $(BASE_O) $(LUA_O) $(LUAC_O)
+-ALL_T= $(LUA_A) $(LUA_T) $(LUAC_T)
++ALL_T= $(LUA_A) $(LUA_T) $(LUAC_T) $(LUA_SO)
+ ALL_A= $(LUA_A)
+ 
+ # Targets start here.
+@@ -60,6 +61,12 @@ $(LUA_A): $(BASE_O)
+ 	$(AR) $@ $(BASE_O)
+ 	$(RANLIB) $@
+ 
++$(LUA_SO): $(CORE_O) $(LIB_O)
++	$(CC) -shared -ldl -Wl,--soname,$(LUA_SO).$(V) -o $@.$(R) $? -lm
++	$(MYLDFLAGS)
++	ln -sf $(LUA_SO).$(R) $(LUA_SO).$(V)
++	ln -sf $(LUA_SO).$(R) $(LUA_SO)
++
+ $(LUA_T): $(LUA_O) $(LUA_A)
+ 	$(CC) -o $@ $(LDFLAGS) $(LUA_O) $(LUA_A) $(LIBS)
+ 
diff --git a/src/patches/lua/lua-5.3.5-autotoolize.patch b/src/patches/lua/lua-5.3.5-autotoolize.patch
deleted file mode 100644
index 76747923a..000000000
--- a/src/patches/lua/lua-5.3.5-autotoolize.patch
+++ /dev/null
@@ -1,192 +0,0 @@
-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@
-+
- 
- /*
- ** ===================================================================
-@@ -200,9 +205,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/src/patches/lua/lua-5.3.5-shared_library-1.patch b/src/patches/lua/lua-5.3.5-shared_library-1.patch
deleted file mode 100644
index 857fddc6c..000000000
--- a/src/patches/lua/lua-5.3.5-shared_library-1.patch
+++ /dev/null
@@ -1,61 +0,0 @@
-Submitted By:            Igor Živković <contact@igor-zivkovic.from.hr>
-Date:                    2013-06-19
-Initial Package Version: 5.2.2
-Upstream Status:         Rejected
-Origin:                  Arch Linux packages repository
-Description:             Adds the compilation of a shared library.
-
-diff -Naur lua-5.3.0.orig/Makefile lua-5.3.0/Makefile
---- lua-5.3.0.orig/Makefile	2014-10-30 00:14:41.000000000 +0100
-+++ lua-5.3.0/Makefile	2015-01-19 22:14:09.822290828 +0100
-@@ -52,7 +52,7 @@
- all:	$(PLAT)
- 
- $(PLATS) clean:
--	cd src && $(MAKE) $@
-+	cd src && $(MAKE) $@ V=$(V) R=$(R)
- 
- test:	dummy
- 	src/lua -v
-diff -Naur lua-5.3.0.orig/src/Makefile lua-5.3.0/src/Makefile
---- lua-5.3.0.orig/src/Makefile	2015-01-05 17:04:52.000000000 +0100
-+++ lua-5.3.0/src/Makefile	2015-01-19 22:14:52.559378543 +0100
-@@ -7,7 +7,7 @@
- PLAT= none
- 
- CC= gcc -std=gnu99
--CFLAGS= -O2 -Wall -Wextra -DLUA_COMPAT_5_2 $(SYSCFLAGS) $(MYCFLAGS)
-+CFLAGS= -fPIC -O2 -Wall -Wextra -DLUA_COMPAT_5_2 $(SYSCFLAGS) $(MYCFLAGS)
- LDFLAGS= $(SYSLDFLAGS) $(MYLDFLAGS)
- LIBS= -lm $(SYSLIBS) $(MYLIBS)
- 
-@@ -29,6 +29,7 @@
- PLATS= aix bsd c89 freebsd generic linux macosx mingw posix solaris
- 
- LUA_A=	liblua.a
-+LUA_SO= liblua.so
- CORE_O=	lapi.o lcode.o lctype.o ldebug.o ldo.o ldump.o lfunc.o lgc.o llex.o \
- 	lmem.o lobject.o lopcodes.o lparser.o lstate.o lstring.o ltable.o \
- 	ltm.o lundump.o lvm.o lzio.o
-@@ -43,7 +44,7 @@
- LUAC_O=	luac.o
- 
- ALL_O= $(BASE_O) $(LUA_O) $(LUAC_O)
--ALL_T= $(LUA_A) $(LUA_T) $(LUAC_T)
-+ALL_T= $(LUA_A) $(LUA_T) $(LUAC_T) $(LUA_SO)
- ALL_A= $(LUA_A)
- 
- # Targets start here.
-@@ -59,6 +60,12 @@
- 	$(AR) $@ $(BASE_O)
- 	$(RANLIB) $@
- 
-+$(LUA_SO): $(CORE_O) $(LIB_O)
-+	$(CC) -shared -ldl -Wl,-soname,$(LUA_SO).$(V) -o $@.$(R) $? -lm $(MYLDFLAGS)
-+	ln -sf $(LUA_SO).$(R) $(LUA_SO).$(V)
-+	ln -sf $(LUA_SO).$(R) $(LUA_SO)
-+
-+
- $(LUA_T): $(LUA_O) $(LUA_A)
- 	$(CC) -o $@ $(LDFLAGS) $(LUA_O) $(LUA_A) $(LIBS)
- 
