Skip to contentSkip to conversation

luajit: complete replacement for lua

PATCH New Francois Perrad 3 participants 3 messages Dec 6, 2012 – Dec 15, 2012 Kbuild

lore
Share & tools
lore
#0 lore raw

PATCH v2 1/1 luajit: complete replacement for lua

the mutual exclusion is done by a choice

see initial discussion, http://article.gmane.org/gmane.comp.lib.uclibc.buildroot/43499

---
 Makefile                                         |    6 ++++++
 package/Config.in                                |    1 -
 package/copas/copas.mk                           |    2 +-
 package/coxpcall/coxpcall.mk                     |    1 -
 package/lua-msgpack-native/lua-msgpack-native.mk |    2 +-
 package/lua/Config.in                            |   25 ++++++++++++++++++++++
 package/luacjson/luacjson.mk                     |    2 +-
 package/luaexpat/luaexpat.mk                     |    2 +-
 package/luafilesystem/luafilesystem.mk           |    2 +-
 package/luajit/Config.in                         |   12 -----------
 package/luajit/luajit-05-install-like-lua.patch  |   17 +++++++++++++++
 package/luasocket/luasocket.mk                   |    2 +-
 package/rings/rings.mk                           |    2 +-
 package/xavante/xavante.mk                       |    2 +-
 14 files changed, 56 insertions(+), 22 deletions(-)
 delete mode 100644 package/luajit/Config.in
 create mode 100644 package/luajit/luajit-05-install-like-lua.patch
Makefile +6 -0
index 4b09437..b5215e0 100644
@@ -282,6 +282,12 @@ HOSTCC  := $(CCACHE) $(HOSTCC)
 HOSTCXX := $(CCACHE) $(HOSTCXX)
 endif
 
+ifeq ($(BR2_PACKAGE_LUA),y)
+    LUA_INTERPRETER = lua
+else ifeq ($(BR2_PACKAGE_LUAJIT),y)
+    LUA_INTERPRETER = luajit
+endif
+
 #############################################################
 #
 # You should probably leave this stuff alone unless you know
package/Config.in +0 -1
index 74e439e..e6e294e 100644
@@ -271,7 +271,6 @@ source "package/erlang/Config.in"
 source "package/haserl/Config.in"
 source "package/jamvm/Config.in"
 source "package/lua/Config.in"
-source "package/luajit/Config.in"
 if BR2_PACKAGE_LUA || BR2_PACKAGE_LUAJIT
 menu "LUA libraries/modules"
 source "package/cgilua/Config.in"
package/copas/copas.mk +1 -1
index c84a6cc..a258927 100644
@@ -6,7 +6,7 @@
 
 COPAS_VERSION = 1.1.6
 COPAS_SITE = http://github.com/downloads/keplerproject/copas
-COPAS_DEPENDENCIES = lua coxpcall luasocket
+COPAS_DEPENDENCIES = coxpcall luasocket
 COPAS_LICENSE = MIT
 
 define COPAS_INSTALL_TARGET_CMDS
package/coxpcall/coxpcall.mk +0 -1
index e7fb76d..329d6fd 100644
@@ -6,7 +6,6 @@
 
 COXPCALL_VERSION = 1.13.0
 COXPCALL_SITE = http://luaforge.net/frs/download.php/3406
-COXPCALL_DEPENDENCIES = lua
 COXPCALL_LICENSE = MIT
 
 define COXPCALL_INSTALL_TARGET_CMDS
package/lua-msgpack-native/lua-msgpack-native.mk +1 -1
index 97ce83c..5387f53 100644
@@ -5,7 +5,7 @@
 #############################################################
 LUA_MSGPACK_NATIVE_VERSION = g41cce91
 LUA_MSGPACK_NATIVE_SITE = http://github.com/kengonakajima/lua-msgpack-native/tarball/master
-LUA_MSGPACK_NATIVE_DEPENDENCIES = lua
+LUA_MSGPACK_NATIVE_DEPENDENCIES = $(LUA_INTERPRETER)
 LUA_MSGPACK_NATIVE_LICENSE = Apache-2.0
 LUA_MSGPACK_NATIVE_LICENSE_FILES = LICENSE.txt
 
package/lua/Config.in +25 -0
index 4166730..d698a25 100644
@@ -1,3 +1,13 @@
+
+choice
+	prompt "Lua Interpreter"
+	default BR2_PACKAGE_LUA_NONE
+
+config BR2_PACKAGE_LUA_NONE
+	bool "none"
+	help
+	  None.
+
 config BR2_PACKAGE_LUA
 	bool "lua"
 	help
@@ -5,6 +15,21 @@ config BR2_PACKAGE_LUA
 
 	  http://www.lua.org/
 
+config BR2_PACKAGE_LUAJIT
+	bool "luajit"
+	# Luajit is only available for some target architectures, and
+	# has some complexity wrt 32/64. See luajit.mk for details.
+	depends on BR2_i386 || (BR2_x86_64 && BR2_HOSTARCH='x86_64') || BR2_powerpc || BR2_arm || BR2_armeb
+	help
+	  LuaJIT implements the full set of language features defined
+	  by Lua 5.1. The virtual machine (VM) is API- and
+	  ABI-compatible to the standard Lua interpreter and can be
+	  deployed as a drop-in replacement.
+
+	  http://luajit.org/
+
+endchoice
+
 if BR2_PACKAGE_LUA
 
 choice
package/luacjson/luacjson.mk +1 -1
index 1f79d5d..de79e9f 100644
@@ -6,7 +6,7 @@
 LUACJSON_VERSION       = 2.1.0
 LUACJSON_SOURCE        = lua-cjson-$(LUACJSON_VERSION).tar.gz
 LUACJSON_SITE          = http://www.kyne.com.au/~mark/software/download
-LUACJSON_DEPENDENCIES  = lua
+LUACJSON_DEPENDENCIES  = $(LUA_INTERPRETER)
 LUACJSON_LICENSE       = MIT
 LUACJSON_LICENSE_FILES = LICENSE
 
package/luaexpat/luaexpat.mk +1 -1
index 2d4c517..435eb8e 100644
@@ -6,7 +6,7 @@
 
 LUAEXPAT_VERSION      = 1.2.0
 LUAEXPAT_SITE         = http://matthewwild.co.uk/projects/luaexpat
-LUAEXPAT_DEPENDENCIES = lua expat
+LUAEXPAT_DEPENDENCIES = $(LUA_INTERPRETER) expat
 LUAEXPAT_LICENSE      = MIT
 
 
package/luafilesystem/luafilesystem.mk +1 -1
index 8553212..5e964af 100644
@@ -6,7 +6,7 @@
 
 LUAFILESYSTEM_VERSION = 1.5.0
 LUAFILESYSTEM_SITE = http://github.com/downloads/keplerproject/luafilesystem
-LUAFILESYSTEM_DEPENDENCIES = lua
+LUAFILESYSTEM_DEPENDENCIES = $(LUA_INTERPRETER)
 LUAFILESYSTEM_LICENSE = MIT
 
 ifeq ($(BR2_LARGEFILE),y)
package/luajit/Config.in deleted +0 -12
deleted file mode 100644
index 23b2650..0000000
@@ -1,12 +0,0 @@
-config BR2_PACKAGE_LUAJIT
-	bool "luajit"
-	# Luajit is only available for some target architectures, and
-	# has some complexity wrt 32/64. See luajit.mk for details.
-	depends on BR2_i386 || (BR2_x86_64 && BR2_HOSTARCH='x86_64') || BR2_powerpc || BR2_arm || BR2_armeb
-	help
-	  LuaJIT implements the full set of language features defined
-	  by Lua 5.1. The virtual machine (VM) is API- and
-	  ABI-compatible to the standard Lua interpreter and can be
-	  deployed as a drop-in replacement.
-
-	  http://luajit.org/
package/luajit/luajit-05-install-like-lua.patch new file +17 -0
new file mode 100644
index 0000000..8b91805
@@ -0,0 +1,17 @@
+Install includes in /usr/include
+
+Signed-off-by: Francois Perrad <[email protected]>
+
+Index: b/Makefile
+===================================================================
+--- a/Makefile
++++ b/Makefile
+@@ -33,7 +33,7 @@
+ INSTALL_BIN=   $(DPREFIX)/bin
+ INSTALL_LIB=   $(DPREFIX)/lib
+ INSTALL_SHARE= $(DPREFIX)/share
+-INSTALL_INC=   $(DPREFIX)/include/luajit-$(MAJVER).$(MINVER)
++INSTALL_INC=   $(DPREFIX)/include
+ 
+ INSTALL_JITLIB= $(INSTALL_SHARE)/luajit-$(VERSION)/jit
+ INSTALL_LMOD= $(INSTALL_SHARE)/lua/$(ABIVER)
package/luasocket/luasocket.mk +1 -1
index 45fb9a3..3126ea3 100644
@@ -6,7 +6,7 @@
 
 LUASOCKET_VERSION = 2.0.2
 LUASOCKET_SITE = http://luaforge.net/frs/download.php/2664
-LUASOCKET_DEPENDENCIES = lua
+LUASOCKET_DEPENDENCIES = $(LUA_INTERPRETER)
 LUASOCKET_LICENSE = MIT
 LUASOCKET_LICENSE_FILES = LICENSE
 
package/rings/rings.mk +1 -1
index e2a2bd7..791cf5e 100644
@@ -6,7 +6,7 @@
 
 RINGS_VERSION = 1.2.3
 RINGS_SITE = http://github.com/downloads/keplerproject/rings
-RINGS_DEPENDENCIES = lua
+RINGS_DEPENDENCIES = $(LUA_INTERPRETER)
 RINGS_LICENSE = MIT
 
 define RINGS_BUILD_CMDS
package/xavante/xavante.mk +1 -1
index 0c1c6f1..7f49f4d 100644
@@ -6,7 +6,7 @@
 
 XAVANTE_VERSION = 2.2.1
 XAVANTE_SITE = http://github.com/downloads/keplerproject/xavante
-XAVANTE_DEPENDENCIES = cgilua copas coxpcall lua luafilesystem luasocket wsapi
+XAVANTE_DEPENDENCIES = cgilua copas coxpcall luafilesystem luasocket wsapi
 XAVANTE_LICENSE = MIT
 
 define XAVANTE_INSTALL_TARGET_CMDS
Signature · 1 line
1.7.9.5
#1 lore raw

PATCH v2 1/1 luajit: complete replacement for lua

Hi Francois,

Quoted 30 lines · Francois Perrad

the mutual exclusion is done by a choice

see initial discussion, http://article.gmane.org/gmane.comp.lib.uclibc.buildroot/43499

---
  Makefile                                         |    6 ++++++
  package/Config.in                                |    1 -
  package/copas/copas.mk                           |    2 +-
  package/coxpcall/coxpcall.mk                     |    1 -
  package/lua-msgpack-native/lua-msgpack-native.mk |    2 +-
  package/lua/Config.in                            |   25 ++++++++++++++++++++++
  package/luacjson/luacjson.mk                     |    2 +-
  package/luaexpat/luaexpat.mk                     |    2 +-
  package/luafilesystem/luafilesystem.mk           |    2 +-
  package/luajit/Config.in                         |   12 -----------
  package/luajit/luajit-05-install-like-lua.patch  |   17 +++++++++++++++
  package/luasocket/luasocket.mk                   |    2 +-
  package/rings/rings.mk                           |    2 +-
  package/xavante/xavante.mk                       |    2 +-
  14 files changed, 56 insertions(+), 22 deletions(-)

delete mode 100644 package/luajit/Config.in
create mode 100644 package/luajit/luajit-05-install-like-lua.patch

Makefile +0 -0
index 4b09437..b5215e0 100644

Makefile HOSTCC := $(CCACHE) $(HOSTCC) · line 290

Quoted 9 lines
Makefile +6 -0
@@ -282,6 +282,12 @@ HOSTCC  := $(CCACHE) $(HOSTCC)
  HOSTCXX := $(CCACHE) $(HOSTCXX)
  endif
 
+ifeq ($(BR2_PACKAGE_LUA),y)
+    LUA_INTERPRETER = lua
+else ifeq ($(BR2_PACKAGE_LUAJIT),y)
+    LUA_INTERPRETER = luajit
+endif
+

Minor detail: I think this fits better in package/Makefile.in.

Quoted 20 lines
Makefile +0 -0
  #############################################################
  #
  # You should probably leave this stuff alone unless you know
package/Config.in +0 -1
index 74e439e..e6e294e 100644
@@ -271,7 +271,6 @@ source "package/erlang/Config.in"
  source "package/haserl/Config.in"
  source "package/jamvm/Config.in"
  source "package/lua/Config.in"
-source "package/luajit/Config.in"
  if BR2_PACKAGE_LUA || BR2_PACKAGE_LUAJIT
  menu "LUA libraries/modules"
  source "package/cgilua/Config.in"
package/copas/copas.mk +0 -0
index c84a6cc..a258927 100644

package/copas/copas.mk line 9

Quoted 5 lines
package/copas/copas.mk +1 -1
@@ -6,7 +6,7 @@
 
  COPAS_VERSION = 1.1.6
  COPAS_SITE = http://github.com/downloads/keplerproject/copas
-COPAS_DEPENDENCIES = lua coxpcall luasocket
+COPAS_DEPENDENCIES = coxpcall luasocket

I guess this is removed because it's a runtime-only dependency?
Then it's better to do this in a separate patch.

[snip]

Quoted 26 lines
package/lua/Config.in +14 -0
index 4166730..d698a25 100644
@@ -1,3 +1,13 @@
+
+choice
+	prompt "Lua Interpreter"
+	default BR2_PACKAGE_LUA_NONE
+
+config BR2_PACKAGE_LUA_NONE
+	bool "none"
+	help
+	  None.
+
  config BR2_PACKAGE_LUA
  	bool "lua"
  	help
@@ -5,6 +15,21 @@ config BR2_PACKAGE_LUA
 
  	  http://www.lua.org/
 
+config BR2_PACKAGE_LUAJIT
+	bool "luajit"
+	# Luajit is only available for some target architectures, and
+	# has some complexity wrt 32/64. See luajit.mk for details.

package/lua/Config.in config BR2_PACKAGE_LUA · line 31

Quoted 10 lines
package/lua/Config.in +10 -0
+	depends on BR2_i386 || (BR2_x86_64&&  BR2_HOSTARCH='x86_64') || BR2_powerpc || BR2_arm || BR2_armeb
+	help
+	  LuaJIT implements the full set of language features defined
+	  by Lua 5.1. The virtual machine (VM) is API- and
+	  ABI-compatible to the standard Lua interpreter and can be
+	  deployed as a drop-in replacement.
+
+	  http://luajit.org/
+
+endchoice

It's a good idea to make it a choice, but I have a few problems
with it:

- it doesn't work well with packages that select LUA (e.g. BR2_PACKAGE_LIGHTTPD_LUA);
- it's not good to split luajit's Config.in from the .mk file.

Maybe there could be a symbol BR2_USE_LUA that can be selected by
other packages? This symbol could be defined package/Config.in. The choice would default to BR2_PACKAGE_LUA if BR2_USE_LUA, and BR2_PACKAGE_LUA_NONE would depend on !BR2_USE_LUA.

Quoted 4 lines
package/lua/Config.in +1 -0
+
  if BR2_PACKAGE_LUA
 
  choice

[snip]

package/xavante/xavante.mk line 9

Quoted 10 lines
package/xavante/xavante.mk +1 -1
index 0c1c6f1..7f49f4d 100644
@@ -6,7 +6,7 @@
 
  XAVANTE_VERSION = 2.2.1
  XAVANTE_SITE = http://github.com/downloads/keplerproject/xavante
-XAVANTE_DEPENDENCIES = cgilua copas coxpcall lua luafilesystem luasocket wsapi
+XAVANTE_DEPENDENCIES = cgilua copas coxpcall luafilesystem luasocket wsapi

Here again I think it should be a separate patch.

Regards,
Arnout

Quoted 3 lines
package/xavante/xavante.mk +0 -0
  XAVANTE_LICENSE = MIT
 
  define XAVANTE_INSTALL_TARGET_CMDS
Signature · 6 lines
Arnout Vandecappelle                               arnout at mind be
Senior Embedded Software Architect                 +32-16-286540
Essensium/Mind                                     http://www.mind.be
G.Geenslaan 9, 3001 Leuven, Belgium                BE 872 984 063 RPR Leuven
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint:  7CB5 E4CC 6C2E EFD4 6E3D A754 F963 ECAB 2450 2F1F
#2 lore raw

PATCH v2 1/1 luajit: complete replacement for lua

2012/12/13 Arnout Vandecappelle <[email protected]>:

Quoted 40 lines

Hi Francois,

Quoted 36 lines · Francois Perrad

the mutual exclusion is done by a choice

see initial discussion,
http://article.gmane.org/gmane.comp.lib.uclibc.buildroot/43499

---
  Makefile                                         |    6 ++++++
  package/Config.in                                |    1 -
  package/copas/copas.mk                           |    2 +-
  package/coxpcall/coxpcall.mk                     |    1 -
  package/lua-msgpack-native/lua-msgpack-native.mk |    2 +-
  package/lua/Config.in                            |   25
++++++++++++++++++++++
  package/luacjson/luacjson.mk                     |    2 +-
  package/luaexpat/luaexpat.mk                     |    2 +-
  package/luafilesystem/luafilesystem.mk           |    2 +-
  package/luajit/Config.in                         |   12 -----------
  package/luajit/luajit-05-install-like-lua.patch  |   17 +++++++++++++++
  package/luasocket/luasocket.mk                   |    2 +-
  package/rings/rings.mk                           |    2 +-
  package/xavante/xavante.mk                       |    2 +-
  14 files changed, 56 insertions(+), 22 deletions(-)

delete mode 100644 package/luajit/Config.in
create mode 100644 package/luajit/luajit-05-install-like-lua.patch

Makefile +0 -0
index 4b09437..b5215e0 100644
@@ -282,6 +282,12 @@ HOSTCC  := $(CCACHE) $(HOSTCC)
  HOSTCXX := $(CCACHE) $(HOSTCXX)
  endif
 
Quoted 9 lines

Makefile HOSTCC := $(CCACHE) $(HOSTCC) · line 290

Quoted 6 lines
Makefile +6 -0
+ifeq ($(BR2_PACKAGE_LUA),y)
+    LUA_INTERPRETER = lua
+else ifeq ($(BR2_PACKAGE_LUAJIT),y)
+    LUA_INTERPRETER = luajit
+endif
+

Minor detail: I think this fits better in package/Makefile.in.

Ok.

Quoted 23 lines
Quoted 23 lines
Makefile +0 -0
  #############################################################
  #
  # You should probably leave this stuff alone unless you know
package/Config.in +0 -1
index 74e439e..e6e294e 100644
@@ -271,7 +271,6 @@ source "package/erlang/Config.in"
  source "package/haserl/Config.in"
  source "package/jamvm/Config.in"
  source "package/lua/Config.in"
-source "package/luajit/Config.in"
  if BR2_PACKAGE_LUA || BR2_PACKAGE_LUAJIT
  menu "LUA libraries/modules"
  source "package/cgilua/Config.in"
package/copas/copas.mk +0 -0
index c84a6cc..a258927 100644
@@ -6,7 +6,7 @@
 
Quoted 8 lines

package/copas/copas.mk line 9

Quoted 4 lines
package/copas/copas.mk +1 -1
  COPAS_VERSION = 1.1.6
  COPAS_SITE = http://github.com/downloads/keplerproject/copas
-COPAS_DEPENDENCIES = lua coxpcall luasocket
+COPAS_DEPENDENCIES = coxpcall luasocket

I guess this is removed because it's a runtime-only dependency?
Then it's better to do this in a separate patch.

Ok.

Quoted 46 lines

[snip]

Quoted 30 lines
package/lua/Config.in +15 -0
index 4166730..d698a25 100644
@@ -1,3 +1,13 @@
+
+choice
+       prompt "Lua Interpreter"
+       default BR2_PACKAGE_LUA_NONE
+
+config BR2_PACKAGE_LUA_NONE
+       bool "none"
+       help
+         None.
+
  config BR2_PACKAGE_LUA
        bool "lua"
        help
@@ -5,6 +15,21 @@ config BR2_PACKAGE_LUA
 
          http://www.lua.org/
 
+config BR2_PACKAGE_LUAJIT
+       bool "luajit"
+       # Luajit is only available for some target architectures, and
+       # has some complexity wrt 32/64. See luajit.mk for details.
+       depends on BR2_i386 || (BR2_x86_64&&  BR2_HOSTARCH='x86_64') ||

BR2_powerpc || BR2_arm || BR2_armeb

package/lua/Config.in config BR2_PACKAGE_LUA · line 31

Quoted 9 lines
package/lua/Config.in +9 -0
+       help
+         LuaJIT implements the full set of language features defined
+         by Lua 5.1. The virtual machine (VM) is API- and
+         ABI-compatible to the standard Lua interpreter and can be
+         deployed as a drop-in replacement.
+
+         http://luajit.org/
+
+endchoice

It's a good idea to make it a choice, but I have a few problems
with it:

Quoted 9 lines

- it doesn't work well with packages that select LUA (e.g. BR2_PACKAGE_LIGHTTPD_LUA);
- it's not good to split luajit's Config.in from the .mk file.

Maybe there could be a symbol BR2_USE_LUA that can be selected by
other packages? This symbol could be defined package/Config.in. The choice would default to BR2_PACKAGE_LUA if BR2_USE_LUA, and BR2_PACKAGE_LUA_NONE would depend on !BR2_USE_LUA.

You are right, the choice lua/luajit works well for Lua extensions, but not when Lua is embedded (dnsmask, libedje, haserl, lighttpd). So, I'll remove it.

Fran?ois

Quoted 44 lines
Quoted 4 lines

+
if BR2_PACKAGE_LUA

choice

[snip]

Quoted 9 lines
package/xavante/xavante.mk +0 -1
index 0c1c6f1..7f49f4d 100644
@@ -6,7 +6,7 @@
 
  XAVANTE_VERSION = 2.2.1
  XAVANTE_SITE = http://github.com/downloads/keplerproject/xavante
-XAVANTE_DEPENDENCIES = cgilua copas coxpcall lua luafilesystem luasocket
Quoted 3 lines

wsapi
+XAVANTE_DEPENDENCIES = cgilua copas coxpcall luafilesystem luasocket wsapi

Here again I think it should be a separate patch.

Regards,
Arnout

Quoted 3 lines

XAVANTE_LICENSE = MIT

define XAVANTE_INSTALL_TARGET_CMDS

--

Arnout Vandecappelle                               arnout at mind be
Senior Embedded Software Architect                 +32-16-286540
Essensium/Mind                                     http://www.mind.be
G.Geenslaan 9, 3001 Leuven, Belgium                BE 872 984 063 RPR Leuven
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint:  7CB5 E4CC 6C2E EFD4 6E3D A754 F963 ECAB 2450 2F1F

_______________________________________________
buildroot mailing list
buildroot at busybox.net
http://lists.busybox.net/mailman/listinfo/buildroot