Skip to contentSkip to conversation

ljsyscall: new package

PATCH New Danomi Manchego 4 participants 5 messages Jan 17, 2014 – Jan 30, 2014

lore
Share & tools
lore
#0 lore raw

PATCH v4 1/1 ljsyscall: new package

An FFI implementation of the Linux and NetBSD kernel ABIs for LuaJIT.

---

Note: this package requires LuaJIT specifically, so there is a depends-on in the ljsyscall/Config.in, even though though it is included from a menu with a "if BR2_PACKAGE_LUA || BR2_PACKAGE_LUAJIT" test around it.

v3 -> v4:
- Rebase to master
- Bump version to 0.9
- Use github helper for download
- Account for shared directory

v2 -> v3:
- Config.in: add depends-on particular target architectures, like LuaJIT. Note that this is not a compile time requirement but rather based on what the package itself supports.
- Config.in: add comment stating when ljsyscall is hidden due to no LuaJIT
- ljsyscall.mk: simplify ifeq / else ifeq block
- ljsyscall.mk: use intermediate variable to simplify install lines

v1 -> v2:
- Removed unnecessary build time dependency on LuaJIT.
- Specify -m 0644 during installation, since .lua files need not be executable.

---
 package/Config.in              |    1 +
 package/ljsyscall/Config.in    |   14 ++++++++++++++
 package/ljsyscall/ljsyscall.mk |   37 +++++++++++++++++++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 package/ljsyscall/Config.in
 create mode 100644 package/ljsyscall/ljsyscall.mk
package/Config.in +1 -0
index 2f62d6c..873a54d 100644
@@ -369,6 +369,7 @@ source "package/cgilua/Config.in"
 source "package/copas/Config.in"
 source "package/coxpcall/Config.in"
 source "package/lbase64/Config.in"
+source "package/ljsyscall/Config.in"
 source "package/lua-cjson/Config.in"
 source "package/lua-ev/Config.in"
 source "package/lua-msgpack-native/Config.in"
package/ljsyscall/Config.in new file +14 -0
new file mode 100644
index 0000000..dcbd521
@@ -0,0 +1,14 @@
+config BR2_PACKAGE_LJSYSCALL
+	bool "ljsyscall"
+	# ljsyscall is specifically for LuaJIT, not Lua.
+	depends on BR2_PACKAGE_LUAJIT
+	# ljsyscall is only available for some target architectures
+	depends on BR2_i386 || BR2_x86_64 || BR2_powerpc || BR2_arm || BR2_armeb
+	help
+	  An FFI implementation of the Linux and NetBSD kernel ABIs for LuaJIT.
+
+	  http://github.com/justincormack/ljsyscall
+
+comment "ljsyscall needs LuaJIT"
+	depends on !BR2_PACKAGE_LUAJIT && (BR2_i386 || BR2_x86_64 || BR2_powerpc || BR2_arm || BR2_armeb)
+
package/ljsyscall/ljsyscall.mk new file +37 -0
new file mode 100644
index 0000000..1f36dc7
@@ -0,0 +1,37 @@
+################################################################################
+#
+# ljsyscall
+#
+################################################################################
+
+LJSYSCALL_VERSION = v0.9
+LJSYSCALL_SITE = $(call github,justincormack,ljsyscall,$(LJSYSCALL_VERSION))
+LJSYSCALL_LICENSE = MIT
+LJSYSCALL_LICENSE_FILES = COPYRIGHT
+
+ifeq ($(BR2_i386),y)
+LJSYSCALL_ARCH = x86
+else ifeq ($(BR2_x86_64),y)
+LJSYSCALL_ARCH = x64
+else ifeq ($(BR2_powerpc),y)
+LJSYSCALL_ARCH = ppc
+else ifeq ($(LJSYSCALL_ARCH),)
+LJSYSCALL_ARCH = $(BR2_ARCH)
+endif
+
+LJSYSCALL_TARGET_DIR = $(TARGET_DIR)/usr/share/luajit-$(LUAJIT_VERSION)
+
+define LJSYSCALL_INSTALL_TARGET_CMDS
+	$(INSTALL) -d $(LJSYSCALL_TARGET_DIR)/syscall
+	$(INSTALL) -m 0644 -t $(LJSYSCALL_TARGET_DIR)/ $(@D)/syscall.lua
+	$(INSTALL) -m 0644 -t $(LJSYSCALL_TARGET_DIR)/syscall $(@D)/syscall/*.lua
+
+	$(INSTALL) -d $(LJSYSCALL_TARGET_DIR)/syscall/linux/$(LJSYSCALL_ARCH)
+	$(INSTALL) -m 0644 -t $(LJSYSCALL_TARGET_DIR)/syscall/linux/ $(@D)/syscall/linux/*.lua
+	$(INSTALL) -m 0644 -t $(LJSYSCALL_TARGET_DIR)/syscall/linux/$(LJSYSCALL_ARCH) $(@D)/syscall/linux/$(LJSYSCALL_ARCH)/*.lua
+
+	$(INSTALL) -d $(LJSYSCALL_TARGET_DIR)/syscall/shared
+	$(INSTALL) -m 0644 -t $(LJSYSCALL_TARGET_DIR)/syscall/shared/ $(@D)/syscall/shared/*.lua
+endef
+
+$(eval $(generic-package))
Signature · 1 line
1.7.9.5
#1 lore raw

PATCH v4 1/1 ljsyscall: new package

Quoted 11 lines
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line

"Danomi" == Danomi Manchego <[email protected]> writes:

An FFI implementation of the Linux and NetBSD kernel ABIs for LuaJIT.

---

Note: this package requires LuaJIT specifically, so there is a depends-on in the ljsyscall/Config.in, even though though it is included from a menu with a "if BR2_PACKAGE_LUA || BR2_PACKAGE_LUAJIT" test around it.

Quoted 5 lines

v3 -> v4:
- Rebase to master
- Bump version to 0.9
- Use github helper for download
- Account for shared directory

Committed, thanks.

Signature · 1 line
Bye, Peter Korsgaard
#2 lore raw

PATCH v4 1/1 ljsyscall: new package

In reply to Danomi Manchego

2014-01-17 Danomi Manchego <[email protected]>:

Quoted 85 lines

An FFI implementation of the Linux and NetBSD kernel ABIs for LuaJIT.

---

Note: this package requires LuaJIT specifically, so there is a depends-on in the ljsyscall/Config.in, even though though it is included from a menu with a "if BR2_PACKAGE_LUA || BR2_PACKAGE_LUAJIT" test around it.

v3 -> v4:
- Rebase to master
- Bump version to 0.9
- Use github helper for download
- Account for shared directory

v2 -> v3:
- Config.in: add depends-on particular target architectures, like LuaJIT. Note that this is not a compile time requirement but rather based on what the package itself supports.
- Config.in: add comment stating when ljsyscall is hidden due to no LuaJIT
- ljsyscall.mk: simplify ifeq / else ifeq block
- ljsyscall.mk: use intermediate variable to simplify install lines

v1 -> v2:
- Removed unnecessary build time dependency on LuaJIT.
- Specify -m 0644 during installation, since .lua files need not be executable.

---
 package/Config.in              |    1 +
 package/ljsyscall/Config.in    |   14 ++++++++++++++
 package/ljsyscall/ljsyscall.mk |   37 +++++++++++++++++++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 package/ljsyscall/Config.in
 create mode 100644 package/ljsyscall/ljsyscall.mk
package/Config.in +1 -0
index 2f62d6c..873a54d 100644
@@ -369,6 +369,7 @@ source "package/cgilua/Config.in"
 source "package/copas/Config.in"
 source "package/coxpcall/Config.in"
 source "package/lbase64/Config.in"
+source "package/ljsyscall/Config.in"
 source "package/lua-cjson/Config.in"
 source "package/lua-ev/Config.in"
 source "package/lua-msgpack-native/Config.in"
package/ljsyscall/Config.in new file +14 -0
new file mode 100644
index 0000000..dcbd521
@@ -0,0 +1,14 @@
+config BR2_PACKAGE_LJSYSCALL
+       bool "ljsyscall"
+       # ljsyscall is specifically for LuaJIT, not Lua.
+       depends on BR2_PACKAGE_LUAJIT
+       # ljsyscall is only available for some target architectures
+       depends on BR2_i386 || BR2_x86_64 || BR2_powerpc || BR2_arm || BR2_armeb
+       help
+         An FFI implementation of the Linux and NetBSD kernel ABIs for LuaJIT.
+
+         http://github.com/justincormack/ljsyscall
+
+comment "ljsyscall needs LuaJIT"
+       depends on !BR2_PACKAGE_LUAJIT && (BR2_i386 || BR2_x86_64 || BR2_powerpc || BR2_arm || BR2_armeb)
+
package/ljsyscall/ljsyscall.mk new file +12 -0
new file mode 100644
index 0000000..1f36dc7
@@ -0,0 +1,37 @@
+################################################################################
+#
+# ljsyscall
+#
+################################################################################
+
+LJSYSCALL_VERSION = v0.9
+LJSYSCALL_SITE = $(call github,justincormack,ljsyscall,$(LJSYSCALL_VERSION))
+LJSYSCALL_LICENSE = MIT
+LJSYSCALL_LICENSE_FILES = COPYRIGHT
+
+ifeq ($(BR2_i386),y)

package/ljsyscall/ljsyscall.mk line 22

Quoted 10 lines
package/ljsyscall/ljsyscall.mk new file +10 -0
+LJSYSCALL_ARCH = x86
+else ifeq ($(BR2_x86_64),y)
+LJSYSCALL_ARCH = x64
+else ifeq ($(BR2_powerpc),y)
+LJSYSCALL_ARCH = ppc
+else ifeq ($(LJSYSCALL_ARCH),)
+LJSYSCALL_ARCH = $(BR2_ARCH)
+endif
+
+LJSYSCALL_TARGET_DIR = $(TARGET_DIR)/usr/share/luajit-$(LUAJIT_VERSION)

Danomi,

I think that the right destination is :

    LJSYSCALL_TARGET_DIR = $(TARGET_DIR)/usr/share/lua/$(LUAINTERPRETER_ABIVER)

1) ljsyscall is designed for LuaJIT and PUC Lua + luaffi
2) the directory usr/share/luajit-2.0.2 seems to be reserved for LuaJIT itself (see INSTALL_LMOD in luajit.pc)

Fran?ois

Quoted 22 lines
package/ljsyscall/ljsyscall.mk new file +15 -1
+
+define LJSYSCALL_INSTALL_TARGET_CMDS
+       $(INSTALL) -d $(LJSYSCALL_TARGET_DIR)/syscall
+       $(INSTALL) -m 0644 -t $(LJSYSCALL_TARGET_DIR)/ $(@D)/syscall.lua
+       $(INSTALL) -m 0644 -t $(LJSYSCALL_TARGET_DIR)/syscall $(@D)/syscall/*.lua
+
+       $(INSTALL) -d $(LJSYSCALL_TARGET_DIR)/syscall/linux/$(LJSYSCALL_ARCH)
+       $(INSTALL) -m 0644 -t $(LJSYSCALL_TARGET_DIR)/syscall/linux/ $(@D)/syscall/linux/*.lua
+       $(INSTALL) -m 0644 -t $(LJSYSCALL_TARGET_DIR)/syscall/linux/$(LJSYSCALL_ARCH) $(@D)/syscall/linux/$(LJSYSCALL_ARCH)/*.lua
+
+       $(INSTALL) -d $(LJSYSCALL_TARGET_DIR)/syscall/shared
+       $(INSTALL) -m 0644 -t $(LJSYSCALL_TARGET_DIR)/syscall/shared/ $(@D)/syscall/shared/*.lua
+endef
+
+$(eval $(generic-package))
--

1.7.9.5

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

#3 lore raw

PATCH v4 1/1 ljsyscall: new package

Fran?ois,

Quoted 8 lines · Fran?ois Perrad
Quoted 1 line

+LJSYSCALL_TARGET_DIR = $(TARGET_DIR)/usr/share/luajit-$(LUAJIT_VERSION)

Danomi,

I think that the right destination is :

    LJSYSCALL_TARGET_DIR = $(TARGET_DIR)/usr/share/lua/$(LUAINTERPRETER_ABIVER)

1) ljsyscall is designed for LuaJIT and PUC Lua + luaffi

Looking through the README.md sections that mention Lua, it seems like the ability to work with non-LuaJIT is not a priority. E.g., "It now runs again with luaffi under standard Lua 5.2 (and probably 5.1, untested)." ("Runs again" makes it sound like it worked for while, lost compatibility, and maybe works again - does not inspire confidence.) Besides, buildroot does not [currently] have luaffi. So I don't think the Lua case is currently an option for a buildroot-generated system.

but regardless ...

Quoted 2 lines

2) the directory usr/share/luajit-2.0.2 seems to be reserved for LuaJIT itself (see INSTALL_LMOD in luajit.pc)

I wasn't aware of that - but the INSTALL_LMOD value does seem to imply that. Changing the path to /usr/share/lua wouldn't hurt, as the files can go any place that luajit will search for them at run time. So, okay, I'll test locally and then submit a patch to change this.

Thanks,
Danomi -

#4 lore raw

PATCH v4 1/1 ljsyscall: new package

Quoted 15 lines · On Thu, 30 Jan 2014 08:34:05 -0500 Danomi Manchego…

Fran?ois,

Quoted 10 lines · Fran?ois Perrad
Quoted 2 lines

+LJSYSCALL_TARGET_DIR =
$(TARGET_DIR)/usr/share/luajit-$(LUAJIT_VERSION)

Danomi,

I think that the right destination is :
LJSYSCALL_TARGET_DIR =
$(TARGET_DIR)/usr/share/lua/$(LUAINTERPRETER_ABIVER)

1) ljsyscall is designed for LuaJIT and PUC Lua + luaffi

Quoted 9 lines

Looking through the README.md sections that mention Lua, it seems like the ability to work with non-LuaJIT is not a priority. E.g., "It now runs again with luaffi under standard Lua 5.2 (and probably 5.1, untested)." ("Runs again" makes it sound like it worked for while, lost compatibility, and maybe works again - does not inspire confidence.) Besides, buildroot does not [currently] have luaffi. So I don't think the Lua case is currently an option for a buildroot-generated system.

Ah, but it easily could.

I have used Lua Alien with 5.1 -
http://alien.luaforge.net/

Which requires libffi -
https://sourceware.org/libffi/

My particular use-case was to interface with binary blobs.

I have not built them with Buildroot, but outside of Buildroot. So I do not have a BR patch handy to add them.

They required a bit of tweaking library pathnames to support a multi-lib (desktop) layout but it should be possible to deal with them inside of BR.

Mike