[OpenWrt-Devel] [PATCH] lua5.3: package Lua 5.3 version

Rafał Miłecki zajec5 at gmail.com
Sat Jun 22 08:48:05 EDT 2019


From: Rafał Miłecki <rafal at milecki.pl>

This package provides an interpreter and compiler for Lua 5.3.5. It has
been decided to use separated package due to a backward incompatibility
of Lua 5.2 and 5.3.

This package/version:
1) Does not include lnum patch as its author didn't decide to port it to
   the new version.
2) Does not provide shared library as the old patch doesn't apply
   anymore. It can be added later if needed.
3) Does not come with examples package as tests were dropped by upstream
   developers.

That said there is definitely a room for improvement and any further
work is highly appreciated. It works however and can be safely pushed as
a basic/early package release.

Signed-off-by: Rafał Miłecki <rafal at milecki.pl>
---
 package/utils/lua5.3/Makefile                 | 127 ++++++++++++++++++
 .../001-include-version-number.patch          |  67 +++++++++
 .../lua5.3/patches-host/100-no_readline.patch |  54 ++++++++
 .../patches/001-include-version-number.patch  |  67 +++++++++
 .../lua5.3/patches/100-no_readline.patch      |  54 ++++++++
 5 files changed, 369 insertions(+)
 create mode 100644 package/utils/lua5.3/Makefile
 create mode 100644 package/utils/lua5.3/patches-host/001-include-version-number.patch
 create mode 100644 package/utils/lua5.3/patches-host/100-no_readline.patch
 create mode 100644 package/utils/lua5.3/patches/001-include-version-number.patch
 create mode 100644 package/utils/lua5.3/patches/100-no_readline.patch

diff --git a/package/utils/lua5.3/Makefile b/package/utils/lua5.3/Makefile
new file mode 100644
index 0000000000..f308fe6c1a
--- /dev/null
+++ b/package/utils/lua5.3/Makefile
@@ -0,0 +1,127 @@
+#
+# Copyright (C) 2006-2014 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=lua
+PKG_VERSION:=5.3.5
+PKG_RELEASE:=1
+
+PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=http://www.lua.org/ftp/ \
+	http://www.tecgraf.puc-rio.br/lua/ftp/
+PKG_HASH:=0c2eed3f960446e1a3e4b9a1ca2f3ff893b6ce41942cf54d5dd59ab4b3b058ac
+PKG_BUILD_PARALLEL:=1
+
+PKG_LICENSE:=MIT
+PKG_LICENSE_FILES:=COPYRIGHT
+
+HOST_PATCH_DIR := ./patches-host
+
+include $(INCLUDE_DIR)/package.mk
+include $(INCLUDE_DIR)/host-build.mk
+
+define Package/lua5.3/Default
+  SUBMENU:=Lua
+  SECTION:=lang
+  CATEGORY:=Languages
+  TITLE:=Lua programming language
+  URL:=http://www.lua.org/
+  MAINTAINER:=Jo-Philipp Wich <jo at mein.io>
+endef
+
+define Package/lua5.3/Default/description
+  Lua is a powerful, efficient, lightweight, embeddable scripting language. It
+  supports procedural programming, object-oriented programming, functional
+  programming, data-driven programming, and data description.
+endef
+
+define Package/lua5.3
+$(call Package/lua5.3/Default)
+  TITLE+= (interpreter)
+  PROVIDES:=lua
+endef
+
+define Package/lua5.3/description
+$(call Package/lua5.3/Default/description)
+  This package contains the Lua language interpreter.
+endef
+
+define Package/luac5.3
+$(call Package/lua5.3/Default)
+  TITLE+= (compiler)
+  PROVIDES:=luac
+endef
+
+define Package/luac5.3/description
+$(call Package/lua5.3/Default/description)
+  This package contains the Lua language compiler.
+endef
+
+TARGET_CFLAGS += -DLUA_USE_LINUX $(FPIC) -std=gnu99
+
+define Build/Compile
+	$(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR) \
+		CC="$(TARGET_CROSS)gcc" \
+		AR="$(TARGET_CROSS)ar rcu" \
+		RANLIB="$(TARGET_CROSS)ranlib" \
+		INSTALL_ROOT=/usr \
+		CFLAGS="$(TARGET_CPPFLAGS) $(TARGET_CFLAGS)" \
+		PKG_VERSION=$(PKG_VERSION) \
+		linux
+	rm -rf $(PKG_INSTALL_DIR)
+	mkdir -p $(PKG_INSTALL_DIR)
+	$(MAKE) -C $(PKG_BUILD_DIR) \
+		INSTALL_TOP="$(PKG_INSTALL_DIR)/usr" \
+		install
+endef
+
+define Host/Configure
+	$(SED) 's,"/usr/local/","$(STAGING_DIR_HOSTPKG)/",' $(HOST_BUILD_DIR)/src/luaconf.h
+endef
+
+ifeq ($(HOST_OS),Darwin)
+	LUA_OS:=macosx
+else
+	ifeq ($(HOST_OS),FreeBSD)
+		LUA_OS:=freebsd
+	else
+		LUA_OS:=linux
+	endif
+endif
+
+define Host/Compile
+	$(MAKE) -C $(HOST_BUILD_DIR) \
+		CC="$(HOSTCC) -std=gnu99" \
+		$(LUA_OS)
+endef
+
+define Host/Install
+	$(MAKE) -C $(HOST_BUILD_DIR) \
+		INSTALL_TOP="$(STAGING_DIR_HOSTPKG)" \
+		install
+endef
+
+define Build/InstallDev
+	$(INSTALL_DIR) $(1)/usr/include
+	$(CP) $(PKG_INSTALL_DIR)/usr/include/lua5.3/lua{,lib,conf}.h $(1)/usr/include/
+	$(CP) $(PKG_INSTALL_DIR)/usr/include/lua5.3/lauxlib.h $(1)/usr/include/
+endef
+
+define Package/lua5.3/install
+	$(INSTALL_DIR) $(1)/usr/bin
+	$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/lua5.3 $(1)/usr/bin/
+endef
+
+define Package/luac5.3/install
+	$(INSTALL_DIR) $(1)/usr/bin
+	$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/luac5.3 $(1)/usr/bin/
+endef
+
+$(eval $(call BuildPackage,lua5.3))
+$(eval $(call BuildPackage,luac5.3))
+$(eval $(call HostBuild))
diff --git a/package/utils/lua5.3/patches-host/001-include-version-number.patch b/package/utils/lua5.3/patches-host/001-include-version-number.patch
new file mode 100644
index 0000000000..08990f52ca
--- /dev/null
+++ b/package/utils/lua5.3/patches-host/001-include-version-number.patch
@@ -0,0 +1,67 @@
+From 96576b44a1b368bd6590eb0778ae45cc9ccede3f Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal at milecki.pl>
+Date: Fri, 21 Jun 2019 14:08:38 +0200
+Subject: [PATCH] include version number
+
+Including it allows multiple lua versions to coexist.
+
+Signed-off-by: Rafał Miłecki <rafal at milecki.pl>
+---
+
+diff --git a/Makefile b/Makefile
+--- a/Makefile
++++ b/Makefile
+@@ -12,7 +12,7 @@ PLAT= none
+ # LUA_ROOT, LUA_LDIR, and LUA_CDIR in luaconf.h.
+ INSTALL_TOP= /usr/local
+ INSTALL_BIN= $(INSTALL_TOP)/bin
+-INSTALL_INC= $(INSTALL_TOP)/include
++INSTALL_INC= $(INSTALL_TOP)/include/lua$V
+ INSTALL_LIB= $(INSTALL_TOP)/lib
+ INSTALL_MAN= $(INSTALL_TOP)/man/man1
+ INSTALL_LMOD= $(INSTALL_TOP)/share/lua/$V
+@@ -39,10 +39,10 @@ RM= rm -f
+ PLATS= aix bsd c89 freebsd generic linux macosx mingw posix solaris
+ 
+ # What to install.
+-TO_BIN= lua luac
++TO_BIN= lua$V luac$V
+ TO_INC= lua.h luaconf.h lualib.h lauxlib.h lua.hpp
+-TO_LIB= liblua.a
+-TO_MAN= lua.1 luac.1
++TO_LIB= liblua$V.a
++TO_MAN= lua$V.1 luac$V.1
+ 
+ # Lua version and release.
+ V= 5.3
+diff --git a/doc/lua.1 b/doc/lua5.3.1
+rename from doc/lua.1
+rename to doc/lua5.3.1
+diff --git a/doc/luac.1 b/doc/luac5.3.1
+rename from doc/luac.1
+rename to doc/luac5.3.1
+diff --git a/src/Makefile b/src/Makefile
+--- a/src/Makefile
++++ b/src/Makefile
+@@ -28,7 +28,7 @@ MYOBJS=
+ 
+ PLATS= aix bsd c89 freebsd generic linux macosx mingw posix solaris
+ 
+-LUA_A=	liblua.a
++LUA_A=	liblua$V.a
+ 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
+@@ -36,10 +36,10 @@ LIB_O=	lauxlib.o lbaselib.o lbitlib.o lc
+ 	lmathlib.o loslib.o lstrlib.o ltablib.o lutf8lib.o loadlib.o linit.o
+ BASE_O= $(CORE_O) $(LIB_O) $(MYOBJS)
+ 
+-LUA_T=	lua
++LUA_T=	lua$V
+ LUA_O=	lua.o
+ 
+-LUAC_T=	luac
++LUAC_T=	luac$V
+ LUAC_O=	luac.o
+ 
+ ALL_O= $(BASE_O) $(LUA_O) $(LUAC_O)
diff --git a/package/utils/lua5.3/patches-host/100-no_readline.patch b/package/utils/lua5.3/patches-host/100-no_readline.patch
new file mode 100644
index 0000000000..bb014c57ba
--- /dev/null
+++ b/package/utils/lua5.3/patches-host/100-no_readline.patch
@@ -0,0 +1,54 @@
+--- a/src/luaconf.h
++++ b/src/luaconf.h
+@@ -61,14 +61,12 @@
+ #if defined(LUA_USE_LINUX)
+ #define LUA_USE_POSIX
+ #define LUA_USE_DLOPEN		/* needs an extra library: -ldl */
+-#define LUA_USE_READLINE	/* needs some extra libraries */
+ #endif
+ 
+ 
+ #if defined(LUA_USE_MACOSX)
+ #define LUA_USE_POSIX
+ #define LUA_USE_DLOPEN		/* MacOS does not need -ldl */
+-#define LUA_USE_READLINE	/* needs an extra library: -lreadline */
+ #endif
+ 
+ 
+--- a/src/Makefile
++++ b/src/Makefile
+@@ -23,6 +23,7 @@ MYCFLAGS=
+ MYLDFLAGS=
+ MYLIBS=
+ MYOBJS=
++# USE_READLINE=1
+ 
+ # == END OF USER SETTINGS -- NO NEED TO CHANGE ANYTHING BELOW THIS LINE =======
+ 
+@@ -83,6 +84,7 @@ echo:
+ 
+ # Convenience targets for popular platforms
+ ALL= all
++RFLAG=$(if $(USE_READLINE),-DLUA_USE_READLINE)
+ 
+ none:
+ 	@echo "Please do 'make PLATFORM' where PLATFORM is one of these:"
+@@ -102,15 +104,15 @@ c89:
+ 
+ 
+ freebsd:
+-	$(MAKE) $(ALL) SYSCFLAGS="-DLUA_USE_LINUX -DLUA_USE_READLINE -I/usr/include/edit" SYSLIBS="-Wl,-E -ledit" CC="cc"
++	$(MAKE) $(ALL) SYSCFLAGS="-DLUA_USE_LINUX $(RFLAG) -I/usr/include/edit" SYSLIBS="-Wl,-E -ledit" CC="cc"
+ 
+ generic: $(ALL)
+ 
+ linux:
+-	$(MAKE) $(ALL) SYSCFLAGS="-DLUA_USE_LINUX" SYSLIBS="-Wl,-E -ldl -lreadline"
++	$(MAKE) $(ALL) SYSCFLAGS="-DLUA_USE_LINUX" $(RFLAG) SYSLIBS="-Wl,-E -ldl $(if $(USE_READLINE), -lreadline)"
+ 
+ macosx:
+-	$(MAKE) $(ALL) SYSCFLAGS="-DLUA_USE_MACOSX" SYSLIBS="-lreadline"
++	$(MAKE) $(ALL) SYSCFLAGS="-DLUA_USE_MACOSX" $(RFLAG) SYSLIBS="$(if $(USE_READLINE), -lreadline)"
+ 
+ mingw:
+ 	$(MAKE) "LUA_A=lua53.dll" "LUA_T=lua.exe" \
diff --git a/package/utils/lua5.3/patches/001-include-version-number.patch b/package/utils/lua5.3/patches/001-include-version-number.patch
new file mode 100644
index 0000000000..08990f52ca
--- /dev/null
+++ b/package/utils/lua5.3/patches/001-include-version-number.patch
@@ -0,0 +1,67 @@
+From 96576b44a1b368bd6590eb0778ae45cc9ccede3f Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal at milecki.pl>
+Date: Fri, 21 Jun 2019 14:08:38 +0200
+Subject: [PATCH] include version number
+
+Including it allows multiple lua versions to coexist.
+
+Signed-off-by: Rafał Miłecki <rafal at milecki.pl>
+---
+
+diff --git a/Makefile b/Makefile
+--- a/Makefile
++++ b/Makefile
+@@ -12,7 +12,7 @@ PLAT= none
+ # LUA_ROOT, LUA_LDIR, and LUA_CDIR in luaconf.h.
+ INSTALL_TOP= /usr/local
+ INSTALL_BIN= $(INSTALL_TOP)/bin
+-INSTALL_INC= $(INSTALL_TOP)/include
++INSTALL_INC= $(INSTALL_TOP)/include/lua$V
+ INSTALL_LIB= $(INSTALL_TOP)/lib
+ INSTALL_MAN= $(INSTALL_TOP)/man/man1
+ INSTALL_LMOD= $(INSTALL_TOP)/share/lua/$V
+@@ -39,10 +39,10 @@ RM= rm -f
+ PLATS= aix bsd c89 freebsd generic linux macosx mingw posix solaris
+ 
+ # What to install.
+-TO_BIN= lua luac
++TO_BIN= lua$V luac$V
+ TO_INC= lua.h luaconf.h lualib.h lauxlib.h lua.hpp
+-TO_LIB= liblua.a
+-TO_MAN= lua.1 luac.1
++TO_LIB= liblua$V.a
++TO_MAN= lua$V.1 luac$V.1
+ 
+ # Lua version and release.
+ V= 5.3
+diff --git a/doc/lua.1 b/doc/lua5.3.1
+rename from doc/lua.1
+rename to doc/lua5.3.1
+diff --git a/doc/luac.1 b/doc/luac5.3.1
+rename from doc/luac.1
+rename to doc/luac5.3.1
+diff --git a/src/Makefile b/src/Makefile
+--- a/src/Makefile
++++ b/src/Makefile
+@@ -28,7 +28,7 @@ MYOBJS=
+ 
+ PLATS= aix bsd c89 freebsd generic linux macosx mingw posix solaris
+ 
+-LUA_A=	liblua.a
++LUA_A=	liblua$V.a
+ 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
+@@ -36,10 +36,10 @@ LIB_O=	lauxlib.o lbaselib.o lbitlib.o lc
+ 	lmathlib.o loslib.o lstrlib.o ltablib.o lutf8lib.o loadlib.o linit.o
+ BASE_O= $(CORE_O) $(LIB_O) $(MYOBJS)
+ 
+-LUA_T=	lua
++LUA_T=	lua$V
+ LUA_O=	lua.o
+ 
+-LUAC_T=	luac
++LUAC_T=	luac$V
+ LUAC_O=	luac.o
+ 
+ ALL_O= $(BASE_O) $(LUA_O) $(LUAC_O)
diff --git a/package/utils/lua5.3/patches/100-no_readline.patch b/package/utils/lua5.3/patches/100-no_readline.patch
new file mode 100644
index 0000000000..bb014c57ba
--- /dev/null
+++ b/package/utils/lua5.3/patches/100-no_readline.patch
@@ -0,0 +1,54 @@
+--- a/src/luaconf.h
++++ b/src/luaconf.h
+@@ -61,14 +61,12 @@
+ #if defined(LUA_USE_LINUX)
+ #define LUA_USE_POSIX
+ #define LUA_USE_DLOPEN		/* needs an extra library: -ldl */
+-#define LUA_USE_READLINE	/* needs some extra libraries */
+ #endif
+ 
+ 
+ #if defined(LUA_USE_MACOSX)
+ #define LUA_USE_POSIX
+ #define LUA_USE_DLOPEN		/* MacOS does not need -ldl */
+-#define LUA_USE_READLINE	/* needs an extra library: -lreadline */
+ #endif
+ 
+ 
+--- a/src/Makefile
++++ b/src/Makefile
+@@ -23,6 +23,7 @@ MYCFLAGS=
+ MYLDFLAGS=
+ MYLIBS=
+ MYOBJS=
++# USE_READLINE=1
+ 
+ # == END OF USER SETTINGS -- NO NEED TO CHANGE ANYTHING BELOW THIS LINE =======
+ 
+@@ -83,6 +84,7 @@ echo:
+ 
+ # Convenience targets for popular platforms
+ ALL= all
++RFLAG=$(if $(USE_READLINE),-DLUA_USE_READLINE)
+ 
+ none:
+ 	@echo "Please do 'make PLATFORM' where PLATFORM is one of these:"
+@@ -102,15 +104,15 @@ c89:
+ 
+ 
+ freebsd:
+-	$(MAKE) $(ALL) SYSCFLAGS="-DLUA_USE_LINUX -DLUA_USE_READLINE -I/usr/include/edit" SYSLIBS="-Wl,-E -ledit" CC="cc"
++	$(MAKE) $(ALL) SYSCFLAGS="-DLUA_USE_LINUX $(RFLAG) -I/usr/include/edit" SYSLIBS="-Wl,-E -ledit" CC="cc"
+ 
+ generic: $(ALL)
+ 
+ linux:
+-	$(MAKE) $(ALL) SYSCFLAGS="-DLUA_USE_LINUX" SYSLIBS="-Wl,-E -ldl -lreadline"
++	$(MAKE) $(ALL) SYSCFLAGS="-DLUA_USE_LINUX" $(RFLAG) SYSLIBS="-Wl,-E -ldl $(if $(USE_READLINE), -lreadline)"
+ 
+ macosx:
+-	$(MAKE) $(ALL) SYSCFLAGS="-DLUA_USE_MACOSX" SYSLIBS="-lreadline"
++	$(MAKE) $(ALL) SYSCFLAGS="-DLUA_USE_MACOSX" $(RFLAG) SYSLIBS="$(if $(USE_READLINE), -lreadline)"
+ 
+ mingw:
+ 	$(MAKE) "LUA_A=lua53.dll" "LUA_T=lua.exe" \
-- 
2.21.0


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


More information about the openwrt-devel mailing list