All of lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] [PATCH v5] luvi: new package
@ 2015-10-29  7:45 Jörg Krause
  2015-12-20 22:28 ` Thomas Petazzoni
  0 siblings, 1 reply; 4+ messages in thread
From: Jörg Krause @ 2015-10-29  7:45 UTC (permalink / raw)
  To: buildroot

Add package luvi version v2.3.5.

luvi extends LuaJIT with asynchronous I/O and several optional modules to run
Lua applications and build self-contained binaries.

Signed-off-by: J?rg Krause <joerg.krause@embedded.rocks>
---
Changes v3 -> v5: (v4 is same as v3, forgot commit --amend)
 - bump to v2.3.5
 - remove patch from upstream

Changes v2 -> v3:
 - Adapt version string to v2.3.4 (Jerzy Grzegorek)
 - Add else clauses to explicitly disable PCRE, OpenSSL and zlib support
   (Thomas Petazzoni)

Changes v1 -> v2:
 - replace too generic TARGET_ARCH variable by LUVI_TARGET_ARCH (Baruch Siach)
---
 package/Config.in      |  1 +
 package/luvi/Config.in | 30 +++++++++++++++++++++++++
 package/luvi/luvi.hash |  2 ++
 package/luvi/luvi.mk   | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++
 4 files changed, 93 insertions(+)
 create mode 100644 package/luvi/Config.in
 create mode 100644 package/luvi/luvi.hash
 create mode 100644 package/luvi/luvi.mk

diff --git a/package/Config.in b/package/Config.in
index 10ff94e..bc19405 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -505,6 +505,7 @@ menu "Lua libraries/modules"
 	source "package/luasql-sqlite3/Config.in"
 	source "package/lunit/Config.in"
 	source "package/luv/Config.in"
+	source "package/luvi/Config.in"
 	source "package/lzlib/Config.in"
 	source "package/orbit/Config.in"
 	source "package/rings/Config.in"
diff --git a/package/luvi/Config.in b/package/luvi/Config.in
new file mode 100644
index 0000000..2f01f5c
--- /dev/null
+++ b/package/luvi/Config.in
@@ -0,0 +1,30 @@
+config BR2_PACKAGE_LUVI
+	bool "luvi"
+	depends on BR2_TOOLCHAIN_HAS_THREADS # libuv
+	depends on BR2_USE_MMU # libuv
+	depends on !BR2_STATIC_LIBS # libuv
+	depends on BR2_PACKAGE_LUAJIT
+	select BR2_PACKAGE_LIBUV
+	select BR2_PACKAGE_LUV
+	help
+	  A project in-between luv and luvit. The goal of this is to make
+	  building luvit and derivatives much easier.
+
+	  luvi extends LuaJIT with asynchronous I/O and several optional
+	  modules to run Lua applications and build self-contained binaries
+	  on systems that don't have a compiler.
+
+	  The luvi core can be extended with several Lua modules by adding its
+	  bundled Lua binding libraries. To get the Lua module...
+	    * 'rex' select PCRE (BR2_PACKAGE_PCRE)
+	    * 'ssl' select OpenSSL (BR2_PACKAGE_OPENSSL)
+	    * 'zlib' select zlib (BR2_PACKAGE_ZLIB)
+
+	  https://github.com/luvit/luvi
+
+comment "luvi needs a toolchain w/ threads, dynamic library"
+	depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS
+	depends on BR2_USE_MMU
+
+comment "luvi needs LuaJIT"
+	depends on !BR2_PACKAGE_LUAJIT
diff --git a/package/luvi/luvi.hash b/package/luvi/luvi.hash
new file mode 100644
index 0000000..c967558
--- /dev/null
+++ b/package/luvi/luvi.hash
@@ -0,0 +1,2 @@
+# Locally calculated
+sha256  9d13baba7870160bd0f9be9d52f8ef1dafe282490d5f83a8e14765aa43387765  luvi-src-v2.3.5.tar.gz
diff --git a/package/luvi/luvi.mk b/package/luvi/luvi.mk
new file mode 100644
index 0000000..7611c11
--- /dev/null
+++ b/package/luvi/luvi.mk
@@ -0,0 +1,60 @@
+################################################################################
+#
+# luvi
+#
+################################################################################
+
+LUVI_VERSION = v2.3.5
+LUVI_SOURCE = luvi-src-$(LUVI_VERSION).tar.gz
+LUVI_SITE = https://github.com/luvit/luvi/releases/download/$(LUVI_VERSION)
+LUVI_LICENSE = Apache-2.0
+LUVI_LICENSE_FILES = LICENSE.txt
+LUVI_DEPENDENCIES = libuv luajit luv host-luajit
+
+# Dispatch all architectures of LuaJIT
+ifeq ($(BR2_i386),y)
+LUVI_TARGET_ARCH = x86
+else ifeq ($(BR2_x86_64),y)
+LUVI_TARGET_ARCH = x64
+else ifeq ($(BR2_powerpc),y)
+LUVI_TARGET_ARCH = ppc
+else ifeq ($(BR2_arm)$(BR2_armeb),y)
+LUVI_TARGET_ARCH = arm
+else ifeq ($(BR2_mips)$(BR2_mipsel),y)
+LUVI_TARGET_ARCH = mips
+else
+LUVI_TARGET_ARCH = $(BR2_ARCH)
+endif
+
+# Bundled lua bindings have to be linked statically into the luvi executable
+LUVI_CONF_OPTS = \
+	-DBUILD_SHARED_LIBS=OFF \
+	-DWithSharedLibluv=ON \
+	-DTARGET_ARCH=$(LUVI_TARGET_ARCH) \
+	-DLUA_PATH=$(HOST_DIR)/usr/share/luajit-2.0.4/?.lua
+
+# Add "rex" module (PCRE via bundled lrexlib)
+ifeq ($(BR2_PACKAGE_PCRE),y)
+LUVI_DEPENDENCIES += pcre
+LUVI_CONF_OPTS += -DWithPCRE=ON -DWithSharedPCRE=ON
+else
+LUVI_CONF_OPTS += -DWithPCRE=OFF -DWithSharedPCRE=OFF
+endif
+
+# Add "ssl" module (via bundled lua-openssl)
+ifeq ($(BR2_PACKAGE_OPENSSL),y)
+LUVI_DEPENDENCIES += openssl
+LUVI_CONF_OPTS += -DWithOpenSSL=ON -DWithOpenSSLASM=ON -DWithSharedOpenSSL=ON
+else
+LUVI_CONF_OPTS += -DWithOpenSSL=OFF -DWithOpenSSLASM=OFF -DWithSharedOpenSSL=OFF
+endif
+
+# Add "zlib" module (via bundled lua-zlib)
+ifeq ($(BR2_PACKAGE_ZLIB),y)
+LUVI_DEPENDENCIES += zlib
+LUVI_CONF_OPTS += -DWithZLIB=ON -DWithSharedZLIB=ON
+else
+LUVI_CONF_OPTS += -DWithZLIB=OFF -DWithSharedZLIB=OFF
+endif
+
+$(eval $(cmake-package))
-- 
2.6.2

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [Buildroot] [PATCH v5] luvi: new package
  2015-10-29  7:45 [Buildroot] [PATCH v5] luvi: new package Jörg Krause
@ 2015-12-20 22:28 ` Thomas Petazzoni
  2015-12-25 21:51   ` Jörg Krause
  0 siblings, 1 reply; 4+ messages in thread
From: Thomas Petazzoni @ 2015-12-20 22:28 UTC (permalink / raw)
  To: buildroot

Dear J?rg Krause,

On Thu, 29 Oct 2015 08:45:03 +0100, J?rg Krause wrote:
> Add package luvi version v2.3.5.
> 
> luvi extends LuaJIT with asynchronous I/O and several optional modules to run
> Lua applications and build self-contained binaries.
> 
> Signed-off-by: J?rg Krause <joerg.krause@embedded.rocks>
> ---
> Changes v3 -> v5: (v4 is same as v3, forgot commit --amend)
>  - bump to v2.3.5
>  - remove patch from upstream

Thanks, patch applied. I must say I don't really understand what this
luvi thing is doing, but it built fine here, and the packaging seems
reasonable.

I was somewhat surprised by:

	-DLUA_PATH=$(HOST_DIR)/usr/share/luajit-2.0.4/?.lua

as this ?.lua doesn't really look like a path, but since it builds
fine, maybe I'm missing something.

I'm CC'ing Fran?ois, in case he has something to say about this new
package.

Thanks,

Thomas
-- 
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [Buildroot] [PATCH v5] luvi: new package
  2015-12-20 22:28 ` Thomas Petazzoni
@ 2015-12-25 21:51   ` Jörg Krause
  2015-12-26  9:52     ` Thomas Petazzoni
  0 siblings, 1 reply; 4+ messages in thread
From: Jörg Krause @ 2015-12-25 21:51 UTC (permalink / raw)
  To: buildroot

Dear Thomas Petazzoni,

On So, 2015-12-20 at 23:28 +0100, Thomas Petazzoni wrote:
> Dear J?rg Krause,
> 
> On Thu, 29 Oct 2015 08:45:03 +0100, J?rg Krause wrote:
> > Add package luvi version v2.3.5.
> > 
> > luvi extends LuaJIT with asynchronous I/O and several optional
> > modules to run
> > Lua applications and build self-contained binaries.
> > 
> > Signed-off-by: J?rg Krause <joerg.krause@embedded.rocks>
> > ---
> > Changes v3 -> v5: (v4 is same as v3, forgot commit --amend)
> > ?- bump to v2.3.5
> > ?- remove patch from upstream
> 
> Thanks, patch applied. I must say I don't really understand what this
> luvi thing is doing, but it built fine here, and the packaging seems
> reasonable.

luvi is a LuaJIT runtime with additional bindings, e.g. libuv. You can
compare it with the V8 engine (the JavaScript engine used by Node.js),
the main difference is, that luvi already contains the libuv bindings,
whereas Node.js adds the libuv bindings to V8.

All together, it is a Node.js like system for Lua.

I want to integrate some luvi applications like lit and luvit into
Buildroot. lit is similar to npm and luvit adds a Node.js like API to
luvi.

This will be done in follow-up patches...

> I was somewhat surprised by:
> 
> 	-DLUA_PATH=$(HOST_DIR)/usr/share/luajit-2.0.4/?.lua
> 
> as this ?.lua doesn't really look like a path, but since it builds
> fine, maybe I'm missing something.

Lua(JIT) uses this string as a path to search for files. In this case
we have to tell LuaJIT where to search for its bundled modules.

Best regards
J?rg

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [Buildroot] [PATCH v5] luvi: new package
  2015-12-25 21:51   ` Jörg Krause
@ 2015-12-26  9:52     ` Thomas Petazzoni
  0 siblings, 0 replies; 4+ messages in thread
From: Thomas Petazzoni @ 2015-12-26  9:52 UTC (permalink / raw)
  To: buildroot

J?rg,

On Fri, 25 Dec 2015 22:51:08 +0100, J?rg Krause wrote:

> > Thanks, patch applied. I must say I don't really understand what this
> > luvi thing is doing, but it built fine here, and the packaging seems
> > reasonable.
> 
> luvi is a LuaJIT runtime with additional bindings, e.g. libuv. You can
> compare it with the V8 engine (the JavaScript engine used by Node.js),
> the main difference is, that luvi already contains the libuv bindings,
> whereas Node.js adds the libuv bindings to V8.
> 
> All together, it is a Node.js like system for Lua.

Thanks a lot for the explanation, makes sense!

> I want to integrate some luvi applications like lit and luvit into
> Buildroot. lit is similar to npm and luvit adds a Node.js like API to
> luvi.
> 
> This will be done in follow-up patches...

Cool!

> > as this ?.lua doesn't really look like a path, but since it builds
> > fine, maybe I'm missing something.
> 
> Lua(JIT) uses this string as a path to search for files. In this case
> we have to tell LuaJIT where to search for its bundled modules.

Ok. So this "?" is interpreted by LuaJIT in a "special" way.

Thanks,

Thomas
-- 
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2015-12-26  9:52 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-10-29  7:45 [Buildroot] [PATCH v5] luvi: new package Jörg Krause
2015-12-20 22:28 ` Thomas Petazzoni
2015-12-25 21:51   ` Jörg Krause
2015-12-26  9:52     ` Thomas Petazzoni

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.