From: Herve Codina <herve.codina@bootlin.com>
To: buildroot@buildroot.org
Cc: Bernd Kuhls <bernd.kuhls@t-online.de>,
Herve Codina <herve.codina@bootlin.com>,
Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Subject: [Buildroot] [PATCH 1/1] package/php-lua: new package
Date: Thu, 14 Oct 2021 11:39:51 +0200 [thread overview]
Message-ID: <20211014093952.1943717-1-herve.codina@bootlin.com> (raw)
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>
---
DEVELOPERS | 4 ++
package/Config.in | 1 +
...TATIC-ZEND_ACC_STATIC-for-static-met.patch | 26 ++++++++
...0002-php8-explicitly-declare-arginfo.patch | 66 +++++++++++++++++++
package/php-lua/Config.in | 8 +++
package/php-lua/php-lua.hash | 2 +
package/php-lua/php-lua.mk | 39 +++++++++++
support/testing/tests/package/test_php_lua.py | 62 +++++++++++++++++
8 files changed, 208 insertions(+)
create mode 100644 package/php-lua/0001-ZEND_ACC_ALLOW_STATIC-ZEND_ACC_STATIC-for-static-met.patch
create mode 100644 package/php-lua/0002-php8-explicitly-declare-arginfo.patch
create mode 100644 package/php-lua/Config.in
create mode 100644 package/php-lua/php-lua.hash
create mode 100644 package/php-lua/php-lua.mk
create mode 100644 support/testing/tests/package/test_php_lua.py
diff --git a/DEVELOPERS b/DEVELOPERS
index b1439391ca..74447e9ec6 100644
--- a/DEVELOPERS
+++ b/DEVELOPERS
@@ -1154,8 +1154,10 @@ F: package/dtbocfg/
F: package/libdbi/
F: package/libdbi-drivers/
F: package/lua-augeas/
+F: package/php-lua/
F: support/testing/tests/package/test_dtbocfg.py
F: support/testing/tests/package/test_lua_augeas.py
+F: support/testing/tests/package/test_php_lua.py
N: Hiroshi Kawashima <kei-k@ca2.so-net.ne.jp>
F: package/gauche/
@@ -1994,6 +1996,7 @@ F: package/bmap-tools/
F: package/libdbi/
F: package/libdbi-drivers/
F: package/lua-augeas/
+F: package/php-lua/
F: package/php-xdebug/
F: package/python-augeas/
F: package/python-flask-expects-json/
@@ -2004,6 +2007,7 @@ F: support/testing/tests/package/sample_python_augeas.py
F: support/testing/tests/package/sample_python_flask_expects_json.py
F: support/testing/tests/package/sample_python_git.py
F: support/testing/tests/package/test_bmap_tools.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_flask_expects_json.py
F: support/testing/tests/package/test_python_git.py
diff --git a/package/Config.in b/package/Config.in
index 7971726875..7965955f6e 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -867,6 +867,7 @@ menu "External php extensions"
source "package/php-geoip/Config.in"
source "package/php-gnupg/Config.in"
source "package/php-imagick/Config.in"
+ source "package/php-lua/Config.in"
source "package/php-memcached/Config.in"
source "package/php-ssh2/Config.in"
source "package/php-xdebug/Config.in"
diff --git a/package/php-lua/0001-ZEND_ACC_ALLOW_STATIC-ZEND_ACC_STATIC-for-static-met.patch b/package/php-lua/0001-ZEND_ACC_ALLOW_STATIC-ZEND_ACC_STATIC-for-static-met.patch
new file mode 100644
index 0000000000..ee1191da74
--- /dev/null
+++ b/package/php-lua/0001-ZEND_ACC_ALLOW_STATIC-ZEND_ACC_STATIC-for-static-met.patch
@@ -0,0 +1,26 @@
+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
+
+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
+
diff --git a/package/php-lua/0002-php8-explicitly-declare-arginfo.patch b/package/php-lua/0002-php8-explicitly-declare-arginfo.patch
new file mode 100644
index 0000000000..7eeb825c38
--- /dev/null
+++ b/package/php-lua/0002-php8-explicitly-declare-arginfo.patch
@@ -0,0 +1,66 @@
+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
+
+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
+
diff --git a/package/php-lua/Config.in b/package/php-lua/Config.in
new file mode 100644
index 0000000000..923de2d799
--- /dev/null
+++ b/package/php-lua/Config.in
@@ -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
diff --git a/package/php-lua/php-lua.hash b/package/php-lua/php-lua.hash
new file mode 100644
index 0000000000..841c4f7234
--- /dev/null
+++ b/package/php-lua/php-lua.hash
@@ -0,0 +1,2 @@
+sha256 86545e1e09b79e3693dd93f2a5a8f15ea161b5a1928f315c7a27107744ee8772 lua-2.0.7.tgz
+sha256 b6e00df9cb3b91977c0d64a7c4db48cb6f5041f6eeda6583c236775f70a35b78 LICENSE
diff --git a/package/php-lua/php-lua.mk b/package/php-lua/php-lua.mk
new file mode 100644
index 0000000000..529b347e42
--- /dev/null
+++ b/package/php-lua/php-lua.mk
@@ -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))
diff --git a/support/testing/tests/package/test_php_lua.py b/support/testing/tests/package/test_php_lua.py
new file mode 100644
index 0000000000..2494c2bcdf
--- /dev/null
+++ b/support/testing/tests/package/test_php_lua.py
@@ -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 => ")
--
2.31.1
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
next reply other threads:[~2021-10-14 9:40 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-10-14 9:39 Herve Codina [this message]
2021-12-17 21:49 ` [Buildroot] [PATCH 1/1] package/php-lua: new package Thomas Petazzoni
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20211014093952.1943717-1-herve.codina@bootlin.com \
--to=herve.codina@bootlin.com \
--cc=bernd.kuhls@t-online.de \
--cc=buildroot@buildroot.org \
--cc=thomas.petazzoni@bootlin.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.