All of lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] [PATCH] package/php-lua: fix build with GCC14
@ 2025-08-06  8:12 Alexis Lothoré via buildroot
  2025-08-06  8:57 ` Thomas Petazzoni via buildroot
  0 siblings, 1 reply; 4+ messages in thread
From: Alexis Lothoré via buildroot @ 2025-08-06  8:12 UTC (permalink / raw)
  To: buildroot
  Cc: Thomas Petazzoni, Hervé Codina, Nicolas Carrier,
	Alexis Lothoré

On Buildroot 2025.02.x, php-lua build fails on the following error:

lua.c:862:44: error: assignment to 'zend_object_write_property_t' {aka
'struct _zval_struct * (*)(struct _zend_object *, struct _zend_string *,
struct _zval_struct *, void **)'} from incompatible pointer type 'void
(*)(zval *, zval *, zval *, void **)' {aka 'void (*)(struct _zval_struct
*, struct _zval_struct *, struct _zval_struct *, void **)'}
[-Wincompatible-pointer-types]
  862 |         lua_object_handlers.write_property =
php_lua_write_property;
      |                                            ^
lua.c:863:44: error: assignment to 'zend_object_read_property_t' {aka
'struct _zval_struct * (*)(struct _zend_object *, struct _zend_string *,
int,  void **, struct _zval_struct *)'} from incompatible pointer type
'zval * (*)(zval *, zval *, int,  void **, zval *)' {aka 'struct
_zval_struct * (*)(struct _zval_struct *, struct _zval_struct *, int,
void **, struct _zval_struct *)'} [-Wincompatible-pointer-types]
  863 |         lua_object_handlers.read_property  =
php_lua_read_property;
      |                                            ^
make[2]: *** [Makefile:214: lua.lo] Error 1

This issue is still present on the upstream repository, but it has been
fixed on one of its forks. Bring the relevant patch from the fork to
allow building php-lua.

Signed-off-by: Alexis Lothoré <alexis.lothore@bootlin.com>
---
I've taken a look at the official upstream to make the fix integrated in
here as well, but it really looks like a dead end: there has been no
activity for 5 years, and the maintainer does not seem to answer PRs or
issues. The PR containing the two patches introduced with the BR package
has not even been merged. I have been tempted to replace the upstream
source with the fork from which I took the patch
(https://github.com/badoo/php-lua), which looks slightly less "dead"
(last activity 2 years ago, and some work done to update the module
compatibility with current PHP major version).  I eventually chose to
keep the current upstream and bring this single patch, but please let me
know if changing the upstream source would be better.
---
 ...-write-properly-read-property-was-changed.patch | 77 ++++++++++++++++++++++
 1 file changed, 77 insertions(+)

diff --git a/package/php-lua/0003-php8-Signature-of-write-properly-read-property-was-changed.patch b/package/php-lua/0003-php8-Signature-of-write-properly-read-property-was-changed.patch
new file mode 100644
index 0000000000000000000000000000000000000000..0c68a7062451d40a2d630c24244ab003bdfb9396
--- /dev/null
+++ b/package/php-lua/0003-php8-Signature-of-write-properly-read-property-was-changed.patch
@@ -0,0 +1,77 @@
+From de1068d634519abf2461dac9427b5ff24b6603af Mon Sep 17 00:00:00 2001
+From: Mikhail Galanin <mikhail.galanin@team.bumble.com>
+Date: Tue, 24 Aug 2021 08:28:47 +0100
+Subject: [PATCH] php8: Signature of write_property/read_property was changed
+ in https://github.com/php/php-src/commit/91ef4124e56
+
+Taken from https://github.com/badoo/php-lua/pull/8
+Signed-off-by: Alexis Lothoré <alexis.lothore@bootlin.com>
+---
+ lua.c | 28 ++++++++++++++--------------
+ 1 file changed, 14 insertions(+), 14 deletions(-)
+
+diff --git a/lua.c b/lua.c
+index edc2868..32c1471 100755
+--- a/lua.c
++++ b/lua.c
+@@ -229,46 +229,46 @@ zend_object *php_lua_create_object(zend_class_entry *ce)
+ 
+ /** {{{ static zval * php_lua_read_property(zval *object, zval *member, int type)
+ */
+-zval *php_lua_read_property(zval *object, zval *member, int type, void **cache_slot, zval *rv){
+-	lua_State *L = (Z_LUAVAL_P(object))->L;
+-	zend_string *str_member;
++zval *php_lua_read_property(zend_object *object, zend_string *member, int type, void **cache_slot, zval *rv){
++	lua_State *L = php_lua_obj_from_obj(object)->L;
+ 
+ 	if (type != BP_VAR_R) {
+ 		ZVAL_NULL(rv);
+ 		return rv;
+ 	}
+ 
+-	str_member = zval_get_string(member);
+ #if (LUA_VERSION_NUM < 502)
+-	lua_getfield(L, LUA_GLOBALSINDEX, ZSTR_VAL(str_member));
++	lua_getfield(L, LUA_GLOBALSINDEX, ZSTR_VAL(member));
+ #else
+-	lua_getglobal(L, ZSTR_VAL(str_member));
++	lua_getglobal(L, ZSTR_VAL(member));
+ #endif
+-	zend_string_release(str_member);
+ 
+-	php_lua_get_zval_from_lua(L, -1, object, rv);
++	zval lua_zval_object;
++	ZVAL_OBJ(&lua_zval_object, object);
++
++	php_lua_get_zval_from_lua(L, -1, &lua_zval_object, rv);
+ 	lua_pop(L, 1);
++
+ 	return rv;
+ }
+ /* }}} */
+ 
+ /** {{{ static void php_lua_write_property(zval *object, zval *member, zval *value)
+ */
+-static void php_lua_write_property(zval *object, zval *member, zval *value, void ** key) {
+-	lua_State *L = (Z_LUAVAL_P(object))->L;
+-	zend_string *str_member = zval_get_string(member);
++static zval* php_lua_write_property(zend_object *object, zend_string *member, zval *value, void ** key) {
++	lua_State *L = php_lua_obj_from_obj(object)->L;
+ 
+ #if (LUA_VERSION_NUM < 502)
+-	php_lua_send_zval_to_lua(L, member);
++	lua_pushlstring(L, ZSTR_VAL(val), ZSTR_LEN(val));
+ 	php_lua_send_zval_to_lua(L, value);
+ 
+ 	lua_settable(L, LUA_GLOBALSINDEX);
+ #else
+ 	php_lua_send_zval_to_lua(L, value);
+-	lua_setglobal(L, Z_STRVAL_P(member));
++	lua_setglobal(L, ZSTR_VAL(member));
+ #endif
+ 
+-	zend_string_release(str_member);
++	return value;
+ }
+ /* }}} */
+ 

---
base-commit: 2fd520c8d52b9e0ed5e26343813fdd8dbcadb45f
change-id: 20250806-php-lua-39895d4fe179

Best regards,
-- 
Alexis Lothoré, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com

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

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

end of thread, other threads:[~2025-08-06 10:35 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-08-06  8:12 [Buildroot] [PATCH] package/php-lua: fix build with GCC14 Alexis Lothoré via buildroot
2025-08-06  8:57 ` Thomas Petazzoni via buildroot
2025-08-06  9:57   ` Alexis Lothoré via buildroot
2025-08-06 10:35     ` Thomas Petazzoni via buildroot

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.