mirror of
https://git.busybox.net/buildroot.git
synced 2024-11-27 07:23:30 +08:00
package/php-lua: new package
The php-lua package provides a PHP extension that embeds the lua interpreter and offers an OO-API to lua variables and functions. https://pecl.php.net/package/lua Based on initial work from Nicolas Carrier <nicolas.carrier@orolia.com> Two patches are present and were retrieved from the following upstream pull request in order to support PHP8: https://github.com/laruence/php-lua/pull/47 Signed-off-by: Herve Codina <herve.codina@bootlin.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
This commit is contained in:
parent
8ddeeffa18
commit
d49127dd4c
@ -1162,9 +1162,11 @@ F: package/libdbi-drivers/
|
|||||||
F: package/lua-augeas/
|
F: package/lua-augeas/
|
||||||
F: package/modsecurity2/
|
F: package/modsecurity2/
|
||||||
F: package/php-apcu/
|
F: package/php-apcu/
|
||||||
|
F: package/php-lua/
|
||||||
F: support/testing/tests/package/test_dtbocfg.py
|
F: support/testing/tests/package/test_dtbocfg.py
|
||||||
F: support/testing/tests/package/test_lua_augeas.py
|
F: support/testing/tests/package/test_lua_augeas.py
|
||||||
F: support/testing/tests/package/test_php_apcu.py
|
F: support/testing/tests/package/test_php_apcu.py
|
||||||
|
F: support/testing/tests/package/test_php_lua.py
|
||||||
|
|
||||||
N: Hervé Codina <herve.codina@bootlin.com>
|
N: Hervé Codina <herve.codina@bootlin.com>
|
||||||
F: package/php-pecl-dbus/
|
F: package/php-pecl-dbus/
|
||||||
@ -2024,6 +2026,7 @@ F: package/libdbi-drivers/
|
|||||||
F: package/lua-augeas/
|
F: package/lua-augeas/
|
||||||
F: package/modsecurity2/
|
F: package/modsecurity2/
|
||||||
F: package/php-apcu/
|
F: package/php-apcu/
|
||||||
|
F: package/php-lua/
|
||||||
F: package/php-pecl-dbus/
|
F: package/php-pecl-dbus/
|
||||||
F: package/php-xdebug/
|
F: package/php-xdebug/
|
||||||
F: package/python-augeas/
|
F: package/python-augeas/
|
||||||
@ -2039,6 +2042,7 @@ F: support/testing/tests/package/sample_python_unittest_xml_reporting.py
|
|||||||
F: support/testing/tests/package/test_bmap_tools.py
|
F: support/testing/tests/package/test_bmap_tools.py
|
||||||
F: support/testing/tests/package/test_php_apcu.py
|
F: support/testing/tests/package/test_php_apcu.py
|
||||||
F: support/testing/tests/package/test_php_pecl_dbus.py
|
F: support/testing/tests/package/test_php_pecl_dbus.py
|
||||||
|
F: support/testing/tests/package/test_php_lua.py
|
||||||
F: support/testing/tests/package/test_python_augeas.py
|
F: support/testing/tests/package/test_python_augeas.py
|
||||||
F: support/testing/tests/package/test_python_flask_expects_json.py
|
F: support/testing/tests/package/test_python_flask_expects_json.py
|
||||||
F: support/testing/tests/package/test_python_git.py
|
F: support/testing/tests/package/test_python_git.py
|
||||||
|
@ -0,0 +1,28 @@
|
|||||||
|
From fd775cedbb97b56f0d1b098a41519f4477f450c7 Mon Sep 17 00:00:00 2001
|
||||||
|
From: cdosoftei <ciprian.dosoftei@gmail.com>
|
||||||
|
Date: Mon, 10 Aug 2020 15:37:52 -0400
|
||||||
|
Subject: [PATCH] ZEND_ACC_ALLOW_STATIC -> ZEND_ACC_STATIC for static method
|
||||||
|
|
||||||
|
[Hervé: Taken from https://github.com/laruence/php-lua/pull/47 to fix
|
||||||
|
PHP8 compatibility.]
|
||||||
|
Signed-off-by: Herve Codina <herve.codina@bootlin.com>
|
||||||
|
---
|
||||||
|
lua.c | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/lua.c b/lua.c
|
||||||
|
index b05f4ef..f2648ac 100755
|
||||||
|
--- a/lua.c
|
||||||
|
+++ b/lua.c
|
||||||
|
@@ -822,7 +822,7 @@ zend_function_entry lua_class_methods[] = {
|
||||||
|
PHP_ME(lua, include, arginfo_lua_include, ZEND_ACC_PUBLIC)
|
||||||
|
PHP_ME(lua, call, arginfo_lua_call, ZEND_ACC_PUBLIC)
|
||||||
|
PHP_ME(lua, assign, arginfo_lua_assign, ZEND_ACC_PUBLIC)
|
||||||
|
- PHP_ME(lua, getVersion, NULL, ZEND_ACC_PUBLIC|ZEND_ACC_ALLOW_STATIC)
|
||||||
|
+ PHP_ME(lua, getVersion, NULL, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
|
||||||
|
PHP_ME(lua, registerCallback, arginfo_lua_register, ZEND_ACC_PUBLIC)
|
||||||
|
PHP_MALIAS(lua, __call, call, arginfo_lua_call, ZEND_ACC_PUBLIC)
|
||||||
|
PHP_FE_END
|
||||||
|
--
|
||||||
|
2.31.1
|
||||||
|
|
68
package/php-lua/0002-php8-explicitly-declare-arginfo.patch
Normal file
68
package/php-lua/0002-php8-explicitly-declare-arginfo.patch
Normal file
@ -0,0 +1,68 @@
|
|||||||
|
From 0f5132e09d970cacabcca3bab01405bc25b87d66 Mon Sep 17 00:00:00 2001
|
||||||
|
From: cdosoftei <ciprian.dosoftei@gmail.com>
|
||||||
|
Date: Tue, 11 Aug 2020 12:42:17 -0400
|
||||||
|
Subject: [PATCH] php8: explicitly declare arginfo
|
||||||
|
|
||||||
|
[Hervé: Taken from https://github.com/laruence/php-lua/pull/47 to fix
|
||||||
|
PHP8 compatibility.]
|
||||||
|
Signed-off-by: Herve Codina <herve.codina@bootlin.com>
|
||||||
|
---
|
||||||
|
lua.c | 7 +++++--
|
||||||
|
lua_closure.c | 5 ++++-
|
||||||
|
2 files changed, 9 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/lua.c b/lua.c
|
||||||
|
index f2648ac..bbbd623 100755
|
||||||
|
--- a/lua.c
|
||||||
|
+++ b/lua.c
|
||||||
|
@@ -35,6 +35,9 @@ static zend_object_handlers lua_object_handlers;
|
||||||
|
/** {{{ ARG_INFO
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
+ZEND_BEGIN_ARG_INFO_EX(arginfo_void, 0, 0, 0)
|
||||||
|
+ZEND_END_ARG_INFO()
|
||||||
|
+
|
||||||
|
ZEND_BEGIN_ARG_INFO_EX(arginfo_lua_call, 0, 0, 2)
|
||||||
|
ZEND_ARG_INFO(0, method)
|
||||||
|
ZEND_ARG_INFO(0, args)
|
||||||
|
@@ -817,12 +820,12 @@ PHP_METHOD(lua, __construct) {
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
zend_function_entry lua_class_methods[] = {
|
||||||
|
- PHP_ME(lua, __construct, NULL, ZEND_ACC_PUBLIC|ZEND_ACC_CTOR)
|
||||||
|
+ PHP_ME(lua, __construct, arginfo_void, ZEND_ACC_PUBLIC|ZEND_ACC_CTOR)
|
||||||
|
PHP_ME(lua, eval, arginfo_lua_eval, ZEND_ACC_PUBLIC)
|
||||||
|
PHP_ME(lua, include, arginfo_lua_include, ZEND_ACC_PUBLIC)
|
||||||
|
PHP_ME(lua, call, arginfo_lua_call, ZEND_ACC_PUBLIC)
|
||||||
|
PHP_ME(lua, assign, arginfo_lua_assign, ZEND_ACC_PUBLIC)
|
||||||
|
- PHP_ME(lua, getVersion, NULL, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
|
||||||
|
+ PHP_ME(lua, getVersion, arginfo_void, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
|
||||||
|
PHP_ME(lua, registerCallback, arginfo_lua_register, ZEND_ACC_PUBLIC)
|
||||||
|
PHP_MALIAS(lua, __call, call, arginfo_lua_call, ZEND_ACC_PUBLIC)
|
||||||
|
PHP_FE_END
|
||||||
|
diff --git a/lua_closure.c b/lua_closure.c
|
||||||
|
index 50ef039..b0f6780 100644
|
||||||
|
--- a/lua_closure.c
|
||||||
|
+++ b/lua_closure.c
|
||||||
|
@@ -39,6 +39,9 @@ static zend_object_handlers lua_closure_handlers;
|
||||||
|
/** {{{ ARG_INFO
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
+ZEND_BEGIN_ARG_INFO_EX(arginfo_void, 0, 0, 0)
|
||||||
|
+ZEND_END_ARG_INFO()
|
||||||
|
+
|
||||||
|
ZEND_BEGIN_ARG_INFO_EX(arginfo_lua_invoke, 0, 0, 1)
|
||||||
|
ZEND_ARG_INFO(0, arg)
|
||||||
|
ZEND_ARG_INFO(0, ...)
|
||||||
|
@@ -145,7 +148,7 @@ PHP_METHOD(lua_closure, invoke) {
|
||||||
|
/* {{{ lua_class_methods[]
|
||||||
|
*/
|
||||||
|
zend_function_entry lua_closure_methods[] = {
|
||||||
|
- PHP_ME(lua_closure, __construct, NULL, ZEND_ACC_PRIVATE|ZEND_ACC_CTOR)
|
||||||
|
+ PHP_ME(lua_closure, __construct, arginfo_void, ZEND_ACC_PRIVATE|ZEND_ACC_CTOR)
|
||||||
|
PHP_ME(lua_closure, invoke, arginfo_lua_invoke, ZEND_ACC_PUBLIC)
|
||||||
|
PHP_MALIAS(lua_closure, __invoke, invoke, arginfo_lua_invoke, ZEND_ACC_PUBLIC)
|
||||||
|
PHP_FE_END
|
||||||
|
--
|
||||||
|
2.31.1
|
||||||
|
|
8
package/php-lua/Config.in
Normal file
8
package/php-lua/Config.in
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
config BR2_PACKAGE_PHP_LUA
|
||||||
|
bool "php-lua"
|
||||||
|
depends on BR2_PACKAGE_HAS_LUAINTERPRETER
|
||||||
|
help
|
||||||
|
This extension embeds the lua interpreter and offers an
|
||||||
|
OO-API to lua variables and functions.
|
||||||
|
|
||||||
|
https://pecl.php.net/package/lua
|
2
package/php-lua/php-lua.hash
Normal file
2
package/php-lua/php-lua.hash
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
sha256 86545e1e09b79e3693dd93f2a5a8f15ea161b5a1928f315c7a27107744ee8772 lua-2.0.7.tgz
|
||||||
|
sha256 b6e00df9cb3b91977c0d64a7c4db48cb6f5041f6eeda6583c236775f70a35b78 LICENSE
|
39
package/php-lua/php-lua.mk
Normal file
39
package/php-lua/php-lua.mk
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
################################################################################
|
||||||
|
#
|
||||||
|
# php-lua
|
||||||
|
#
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
PHP_LUA_VERSION = 2.0.7
|
||||||
|
PHP_LUA_SITE = http://pecl.php.net/get
|
||||||
|
PHP_LUA_SOURCE = lua-$(PHP_LUA_VERSION).tgz
|
||||||
|
PHP_LUA_LICENSE = PHP-3.01
|
||||||
|
PHP_LUA_LICENSE_FILES = LICENSE
|
||||||
|
PHP_LUA_DEPENDENCIES = php luainterpreter host-autoconf host-pkgconf
|
||||||
|
|
||||||
|
PHP_LUA_CONF_OPTS = \
|
||||||
|
--with-php-config=$(STAGING_DIR)/usr/bin/php-config \
|
||||||
|
--with-lua=$(STAGING_DIR)/usr
|
||||||
|
|
||||||
|
# The php-lua package uses the following code to search for the lua library
|
||||||
|
# if test "$PHP_LUA_VERSION" != "yes" -a "$PHP_LUA_VERSION" != "no"; then
|
||||||
|
# LUA_LIB_SUFFIX=lua$PHP_LUA_VERSION
|
||||||
|
# else
|
||||||
|
# LUA_LIB_SUFFIX=lua
|
||||||
|
# fi
|
||||||
|
# LUA_LIB_NAME=lib$LUA_LIB_SUFFIX
|
||||||
|
# luajit library name is libluajit-x.y with x.y the api version.
|
||||||
|
# In order to use luajit, we use jit-x.y as "lua-version".
|
||||||
|
ifeq ($(BR2_PACKAGE_LUAJIT),y)
|
||||||
|
PHP_LUA_CONF_OPTS += --with-lua-version=jit-$(LUAINTERPRETER_ABIVER)
|
||||||
|
endif
|
||||||
|
|
||||||
|
define PHP_LUA_PHPIZE
|
||||||
|
(cd $(@D); \
|
||||||
|
PHP_AUTOCONF=$(HOST_DIR)/usr/bin/autoconf \
|
||||||
|
PHP_AUTOHEADER=$(HOST_DIR)/usr/bin/autoheader \
|
||||||
|
$(STAGING_DIR)/usr/bin/phpize)
|
||||||
|
endef
|
||||||
|
PHP_LUA_PRE_CONFIGURE_HOOKS += PHP_LUA_PHPIZE
|
||||||
|
|
||||||
|
$(eval $(autotools-package))
|
62
support/testing/tests/package/test_php_lua.py
Normal file
62
support/testing/tests/package/test_php_lua.py
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
import os
|
||||||
|
|
||||||
|
import infra.basetest
|
||||||
|
|
||||||
|
|
||||||
|
class TestPhpLuaLua(infra.basetest.BRTest):
|
||||||
|
config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \
|
||||||
|
"""
|
||||||
|
BR2_PACKAGE_LUA=y
|
||||||
|
BR2_PACKAGE_PHP=y
|
||||||
|
BR2_PACKAGE_PHP_SAPI_CLI=y
|
||||||
|
BR2_PACKAGE_PHP_LUA=y
|
||||||
|
BR2_TARGET_ROOTFS_CPIO=y
|
||||||
|
# BR2_TARGET_ROOTFS_TAR is not set
|
||||||
|
"""
|
||||||
|
|
||||||
|
def test_run(self):
|
||||||
|
img = os.path.join(self.builddir, "images", "rootfs.cpio")
|
||||||
|
self.emulator.boot(arch="armv5",
|
||||||
|
kernel="builtin",
|
||||||
|
options=["-initrd", img])
|
||||||
|
self.emulator.login()
|
||||||
|
|
||||||
|
self.assertRunOk("mkdir /etc/php.d")
|
||||||
|
self.assertRunOk("echo 'extension=lua.so' > /etc/php.d/lua.ini")
|
||||||
|
|
||||||
|
output, exit_code = self.emulator.run("php --ri lua | sed '/^$/d'")
|
||||||
|
self.assertEqual(exit_code, 0)
|
||||||
|
self.assertEqual(output[0], "lua")
|
||||||
|
self.assertEqual(output[1], "lua support => enabled")
|
||||||
|
# Do not check the version value in order to avoid a test failure when
|
||||||
|
# bumping package version.
|
||||||
|
self.assertEqual(output[2][0:25], "lua extension version => ")
|
||||||
|
|
||||||
|
class TestPhpLuaLuajit(infra.basetest.BRTest):
|
||||||
|
config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \
|
||||||
|
"""
|
||||||
|
BR2_PACKAGE_LUAJIT=y
|
||||||
|
BR2_PACKAGE_PHP=y
|
||||||
|
BR2_PACKAGE_PHP_SAPI_CLI=y
|
||||||
|
BR2_PACKAGE_PHP_LUA=y
|
||||||
|
BR2_TARGET_ROOTFS_CPIO=y
|
||||||
|
# BR2_TARGET_ROOTFS_TAR is not set
|
||||||
|
"""
|
||||||
|
|
||||||
|
def test_run(self):
|
||||||
|
img = os.path.join(self.builddir, "images", "rootfs.cpio")
|
||||||
|
self.emulator.boot(arch="armv5",
|
||||||
|
kernel="builtin",
|
||||||
|
options=["-initrd", img])
|
||||||
|
self.emulator.login()
|
||||||
|
|
||||||
|
self.assertRunOk("mkdir /etc/php.d")
|
||||||
|
self.assertRunOk("echo 'extension=lua.so' > /etc/php.d/lua.ini")
|
||||||
|
|
||||||
|
output, exit_code = self.emulator.run("php --ri lua | sed '/^$/d'")
|
||||||
|
self.assertEqual(exit_code, 0)
|
||||||
|
self.assertEqual(output[0], "lua")
|
||||||
|
self.assertEqual(output[1], "lua support => enabled")
|
||||||
|
# Do not check the version value in order to avoid a test failure when
|
||||||
|
# bumping package version.
|
||||||
|
self.assertEqual(output[2][0:25], "lua extension version => ")
|
Loading…
Reference in New Issue
Block a user