All of lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] [git commit] package/php-lua: new package
@ 2021-12-17 21:46 Thomas Petazzoni
  0 siblings, 0 replies; only message in thread
From: Thomas Petazzoni @ 2021-12-17 21:46 UTC (permalink / raw)
  To: buildroot

[-- Attachment #1: Type: text/plain, Size: 11551 bytes --]

commit: https://git.buildroot.net/buildroot/commit/?id=d49127dd4c377221c18310775e1121594cb2ed21
branch: https://git.buildroot.net/buildroot/commit/?id=refs/heads/master

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>
---
 DEVELOPERS                                         |  4 ++
 ...LOW_STATIC-ZEND_ACC_STATIC-for-static-met.patch | 28 +++++++++
 .../0002-php8-explicitly-declare-arginfo.patch     | 68 ++++++++++++++++++++++
 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 ++++++++++++++++++++
 7 files changed, 211 insertions(+)

diff --git a/DEVELOPERS b/DEVELOPERS
index 0a64cb22ae..ea4fc89ebf 100644
--- a/DEVELOPERS
+++ b/DEVELOPERS
@@ -1162,9 +1162,11 @@ F:	package/libdbi-drivers/
 F:	package/lua-augeas/
 F:	package/modsecurity2/
 F:	package/php-apcu/
+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_apcu.py
+F:	support/testing/tests/package/test_php_lua.py
 
 N:	Hervé Codina <herve.codina@bootlin.com>
 F:	package/php-pecl-dbus/
@@ -2024,6 +2026,7 @@ F:	package/libdbi-drivers/
 F:	package/lua-augeas/
 F:	package/modsecurity2/
 F:	package/php-apcu/
+F:	package/php-lua/
 F:	package/php-pecl-dbus/
 F:	package/php-xdebug/
 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_php_apcu.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_flask_expects_json.py
 F:	support/testing/tests/package/test_python_git.py
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..118c0d0763
--- /dev/null
+++ b/package/php-lua/0001-ZEND_ACC_ALLOW_STATIC-ZEND_ACC_STATIC-for-static-met.patch
@@ -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
+
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..5e9c44009f
--- /dev/null
+++ b/package/php-lua/0002-php8-explicitly-declare-arginfo.patch
@@ -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
+
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 => ")

[-- Attachment #2: Type: text/plain, Size: 150 bytes --]

_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2021-12-17 21:48 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-12-17 21:46 [Buildroot] [git commit] package/php-lua: new package 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.