From ba296ab1eaeab5ab68c596f7723932788749c9c6 Mon Sep 17 00:00:00 2001 From: Francois Perrad Date: Fri, 17 Jan 2014 18:47:35 +0100 Subject: [PATCH] lua: choice between 5.1.x & 5.2.x Signed-off-by: Francois Perrad Signed-off-by: Peter Korsgaard --- .../lua/{ => 5.1.5}/lua-01-root-path.patch | 0 .../lua-02-shared-libs-for-lua.patch | 0 .../lua/{ => 5.1.5}/lua-11-linenoise.patch | 0 package/lua/5.2.3/lua-01-root-path.patch | 17 +++++++ .../5.2.3/lua-02-shared-libs-for-lua.patch | 49 +++++++++++++++++++ package/lua/5.2.3/lua-04-lua-pc.patch | 40 +++++++++++++++ package/lua/5.2.3/lua-11-linenoise.patch | 26 ++++++++++ package/lua/Config.in | 18 +++++++ package/lua/lua.mk | 18 ++++++- package/luainterpreter/Config.in | 3 ++ package/luainterpreter/luainterpreter.mk | 2 + package/luajit/Config.in | 3 ++ 12 files changed, 175 insertions(+), 1 deletion(-) rename package/lua/{ => 5.1.5}/lua-01-root-path.patch (100%) rename package/lua/{ => 5.1.5}/lua-02-shared-libs-for-lua.patch (100%) rename package/lua/{ => 5.1.5}/lua-11-linenoise.patch (100%) create mode 100644 package/lua/5.2.3/lua-01-root-path.patch create mode 100644 package/lua/5.2.3/lua-02-shared-libs-for-lua.patch create mode 100644 package/lua/5.2.3/lua-04-lua-pc.patch create mode 100644 package/lua/5.2.3/lua-11-linenoise.patch diff --git a/package/lua/lua-01-root-path.patch b/package/lua/5.1.5/lua-01-root-path.patch similarity index 100% rename from package/lua/lua-01-root-path.patch rename to package/lua/5.1.5/lua-01-root-path.patch diff --git a/package/lua/lua-02-shared-libs-for-lua.patch b/package/lua/5.1.5/lua-02-shared-libs-for-lua.patch similarity index 100% rename from package/lua/lua-02-shared-libs-for-lua.patch rename to package/lua/5.1.5/lua-02-shared-libs-for-lua.patch diff --git a/package/lua/lua-11-linenoise.patch b/package/lua/5.1.5/lua-11-linenoise.patch similarity index 100% rename from package/lua/lua-11-linenoise.patch rename to package/lua/5.1.5/lua-11-linenoise.patch diff --git a/package/lua/5.2.3/lua-01-root-path.patch b/package/lua/5.2.3/lua-01-root-path.patch new file mode 100644 index 0000000000..c6f242c20e --- /dev/null +++ b/package/lua/5.2.3/lua-01-root-path.patch @@ -0,0 +1,17 @@ +Adjust installation location to /usr. + +Signed-off-by: Francois Perrad + +Index: b/src/luaconf.h +=================================================================== +--- a/src/luaconf.h ++++ b/src/luaconf.h +@@ -100,7 +100,7 @@ + #else /* }{ */ + + #define LUA_VDIR LUA_VERSION_MAJOR "." LUA_VERSION_MINOR "/" +-#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 + #define LUA_PATH_DEFAULT \ diff --git a/package/lua/5.2.3/lua-02-shared-libs-for-lua.patch b/package/lua/5.2.3/lua-02-shared-libs-for-lua.patch new file mode 100644 index 0000000000..4679325e79 --- /dev/null +++ b/package/lua/5.2.3/lua-02-shared-libs-for-lua.patch @@ -0,0 +1,49 @@ +Add the compilation of a shared library. +Compile the lua binary with the shared library. + +Signed-off-by: Francois Perrad + +Index: b/src/Makefile +=================================================================== +--- a/src/Makefile ++++ b/src/Makefile +@@ -29,6 +29,7 @@ + PLATS= aix ansi bsd 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,8 +44,9 @@ + 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_SO) $(LUA_T) $(LUAC_T) + ALL_A= $(LUA_A) ++ALL_SO= $(LUA_SO) + + # Targets start here. + default: $(PLAT) +@@ -55,12 +57,18 @@ + + a: $(ALL_A) + ++so: $(ALL_SO) ++ + $(LUA_A): $(BASE_O) + $(AR) $@ $(BASE_O) + $(RANLIB) $@ + +-$(LUA_T): $(LUA_O) $(LUA_A) +- $(CC) -o $@ $(LDFLAGS) $(LUA_O) $(LUA_A) $(LIBS) ++$(LUA_SO): $(CORE_O) $(LIB_O) ++ $(CC) -o $@.$(PKG_VERSION) -shared -Wl,-soname="$@.$(PKG_VERSION)" $? ++ ln -fs $@.$(PKG_VERSION) $@ ++ ++$(LUA_T): $(LUA_O) $(LUA_SO) ++ $(CC) -o $@ -L. $(LDFLAGS) $(LUA_O) -llua $(LIBS) + + $(LUAC_T): $(LUAC_O) $(LUA_A) + $(CC) -o $@ $(LDFLAGS) $(LUAC_O) $(LUA_A) $(LIBS) diff --git a/package/lua/5.2.3/lua-04-lua-pc.patch b/package/lua/5.2.3/lua-04-lua-pc.patch new file mode 100644 index 0000000000..62acb201f2 --- /dev/null +++ b/package/lua/5.2.3/lua-04-lua-pc.patch @@ -0,0 +1,40 @@ +add lua.pc + +Signed-off-by: Francois Perrad + +Index: b/etc/lua.pc +=================================================================== +--- /dev/null ++++ b/etc/lua.pc +@@ -0,0 +1,31 @@ ++# lua.pc -- pkg-config data for Lua ++ ++# vars from install Makefile ++ ++# grep '^V=' ../Makefile ++V= 5.2 ++# grep '^R=' ../Makefile ++R= 5.2.3 ++ ++# grep '^INSTALL_.*=' ../Makefile | sed 's/INSTALL_TOP/prefix/' ++prefix= /usr ++INSTALL_BIN= ${prefix}/bin ++INSTALL_INC= ${prefix}/include ++INSTALL_LIB= ${prefix}/lib ++INSTALL_MAN= ${prefix}/man/man1 ++INSTALL_LMOD= ${prefix}/share/lua/${V} ++INSTALL_CMOD= ${prefix}/lib/lua/${V} ++ ++# canonical vars ++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 ++Cflags: -I${includedir} ++ ++# (end of lua.pc) diff --git a/package/lua/5.2.3/lua-11-linenoise.patch b/package/lua/5.2.3/lua-11-linenoise.patch new file mode 100644 index 0000000000..b1f228cd49 --- /dev/null +++ b/package/lua/5.2.3/lua-11-linenoise.patch @@ -0,0 +1,26 @@ +Add support of linenoise (replace readline) + +see discussion, http://lua-users.org/lists/lua-l/2010-03/msg00879.html + +Signed-off-by: Francois Perrad + +Index: b/src/lua.c +=================================================================== +--- a/src/lua.c ++++ b/src/lua.c +@@ -72,6 +72,15 @@ + add_history(lua_tostring(L, idx)); /* add it to history */ + #define lua_freeline(L,b) ((void)L, free(b)) + ++#elif defined(LUA_USE_LINENOISE) ++ ++#include ++#define lua_readline(L,b,p) ((void)L, ((b)=linenoise(p)) != NULL) ++#define lua_saveline(L,idx) \ ++ if (lua_rawlen(L,idx) > 0) /* non-empty line? */ \ ++ linenoiseHistoryAdd(lua_tostring(L, idx)); /* add it to history */ ++#define lua_freeline(L,b) ((void)L, free(b)) ++ + #elif !defined(lua_readline) + + #define lua_readline(L,b,p) \ diff --git a/package/lua/Config.in b/package/lua/Config.in index b96ef0e92e..c4c12e9663 100644 --- a/package/lua/Config.in +++ b/package/lua/Config.in @@ -11,6 +11,24 @@ if BR2_PACKAGE_LUA config BR2_PACKAGE_PROVIDES_LUA_INTERPRETER default "lua" +choice + prompt "Lua Version" + default BR2_PACKAGE_LUA_5_1 + help + Select the version of Lua API/ABI you wish to use. + + config BR2_PACKAGE_LUA_5_1 + bool "Lua 5.1.x" + + config BR2_PACKAGE_LUA_5_2 + bool "Lua 5.2.x" + +endchoice + +config BR2_PACKAGE_LUAINTERPRETER_ABI_VERSION + default "5.1" if BR2_PACKAGE_LUA_5_1 + default "5.2" if BR2_PACKAGE_LUA_5_2 + choice prompt "Lua Interpreter command-line editing" default BR2_PACKAGE_LUA_INTERPRETER_EDITING_NONE diff --git a/package/lua/lua.mk b/package/lua/lua.mk index a88a11ec9d..2c867f6e1e 100644 --- a/package/lua/lua.mk +++ b/package/lua/lua.mk @@ -4,7 +4,11 @@ # ################################################################################ +ifeq ($(BR2_PACKAGE_LUA_5_2),y) +LUA_VERSION = 5.2.3 +else LUA_VERSION = 5.1.5 +endif LUA_SITE = http://www.lua.org/ftp LUA_INSTALL_STAGING = YES LUA_LICENSE = MIT @@ -13,6 +17,13 @@ LUA_LICENSE_FILES = COPYRIGHT LUA_CFLAGS = -Wall -fPIC LUA_MYLIBS += -ldl +ifeq ($(BR2_PACKAGE_LUA_5_2),y) +LUA_CFLAGS += -DLUA_COMPAT_ALL +ifneq ($(BR2_LARGEFILE),y) +LUA_CFLAGS += -D_FILE_OFFSET_BITS=32 +endif +endif + ifeq ($(BR2_PACKAGE_LUA_INTERPRETER_READLINE),y) LUA_DEPENDENCIES = readline ncurses LUA_MYLIBS += -lreadline -lhistory -lncurses @@ -33,6 +44,10 @@ HOST_LUA_DEPENDENCIES = HOST_LUA_CFLAGS = -Wall -fPIC -DLUA_USE_DLOPEN -DLUA_USE_POSIX HOST_LUA_MYLIBS = -ldl +ifeq ($(BR2_PACKAGE_LUA_5_2),y) +HOST_LUA_CFLAGS += -DLUA_COMPAT_ALL +endif + define LUA_BUILD_CMDS $(MAKE) \ CC="$(TARGET_CC)" RANLIB="$(TARGET_RANLIB)" \ @@ -70,7 +85,8 @@ define LUA_INSTALL_TARGET_CMDS $(INSTALL) -m 0755 -D $(@D)/src/liblua.so.$(LUA_VERSION) \ $(TARGET_DIR)/usr/lib/liblua.so.$(LUA_VERSION) ln -sf liblua.so.$(LUA_VERSION) $(TARGET_DIR)/usr/lib/liblua.so - $(INSTALL) -m 0644 -D $(@D)/src/liblua.a $(TARGET_DIR)/usr/lib/liblua.a + mkdir -p $(TARGET_DIR)/usr/lib/lua/$(LUAINTERPRETER_ABIVER) + mkdir -p $(TARGET_DIR)/usr/share/lua/$(LUAINTERPRETER_ABIVER) endef define HOST_LUA_INSTALL_CMDS diff --git a/package/luainterpreter/Config.in b/package/luainterpreter/Config.in index 15621452de..a05bde1db3 100644 --- a/package/luainterpreter/Config.in +++ b/package/luainterpreter/Config.in @@ -4,3 +4,6 @@ config BR2_PACKAGE_HAS_LUA_INTERPRETER config BR2_PACKAGE_PROVIDES_LUA_INTERPRETER string depends on BR2_PACKAGE_HAS_LUA_INTERPRETER + +config BR2_PACKAGE_LUAINTERPRETER_ABI_VERSION + string diff --git a/package/luainterpreter/luainterpreter.mk b/package/luainterpreter/luainterpreter.mk index 04d63d4712..c37d621b71 100644 --- a/package/luainterpreter/luainterpreter.mk +++ b/package/luainterpreter/luainterpreter.mk @@ -7,4 +7,6 @@ LUAINTERPRETER_SOURCE = LUAINTERPRETER_DEPENDENCIES = $(call qstrip,$(BR2_PACKAGE_PROVIDES_LUA_INTERPRETER)) +LUAINTERPRETER_ABIVER = $(call qstrip,$(BR2_PACKAGE_LUAINTERPRETER_ABI_VERSION)) + $(eval $(generic-package)) diff --git a/package/luajit/Config.in b/package/luajit/Config.in index e0bfbf5505..9c4ecc36cd 100644 --- a/package/luajit/Config.in +++ b/package/luajit/Config.in @@ -17,4 +17,7 @@ if BR2_PACKAGE_LUAJIT config BR2_PACKAGE_PROVIDES_LUA_INTERPRETER default "luajit" +config BR2_PACKAGE_LUAINTERPRETER_ABI_VERSION + default "5.1" + endif -- 2.30.2