From: "Alexis Lothoré via buildroot" <buildroot@buildroot.org>
To: buildroot@buildroot.org
Cc: "Thomas Petazzoni" <thomas.petazzoni@bootlin.com>,
"Hervé Codina" <herve.codina@bootlin.com>,
"Nicolas Carrier" <nicolas.carrier@nav-timing.safrangroup.com>,
"Alexis Lothoré" <alexis.lothore@bootlin.com>
Subject: [Buildroot] [PATCH v2] package/php-lua: fix build with PHP8/GCC14
Date: Wed, 06 Aug 2025 22:42:16 +0200 [thread overview]
Message-ID: <20250806-php-lua-v2-1-a73faad939e9@bootlin.com> (raw)
On both Buildroot 2025.02.x and master branch, 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
The error can be reproduced with the following minimal defconfig:
BR2_arm=y
BR2_cortex_a9=y
BR2_ARM_ENABLE_NEON=y
BR2_ARM_ENABLE_VFP=y
BR2_ARM_FPU_NEON=y
BR2_TOOLCHAIN_EXTERNAL=y
BR2_TOOLCHAIN_EXTERNAL_BOOTLIN=y
BR2_PACKAGE_LUA=y
BR2_PACKAGE_PHP=y
BR2_PACKAGE_PHP_LUA=y
This build failure is the result of two events/conditions:
- the update to PHP8 has changed the prototype for
zend_object_read_property_t (see [1]). But at this time, php-lua just
generated a new warning (-Wincompatible-pointer-types)
- using bootlin bleeding-edge toolchain brings in GCC14, which now turns
this warning into a systematic error (see [2])
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.
[1] https://github.com/php/php-src/commit/91ef4124e56
[2] https://gcc.gnu.org/gcc-14/porting_to.html#incompatible-pointer-types
Signed-off-by: Alexis Lothoré <alexis.lothore@bootlin.com>
---
Changes in v2:
- update commit title
- add more details about the conditions leading to the build failure
- add minimal defconfig
- Link to v1: https://lore.kernel.org/r/20250806-php-lua-v1-1-e1f524fed0a5@bootlin.com
---
...-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
next reply other threads:[~2025-08-06 20:42 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-08-06 20:42 Alexis Lothoré via buildroot [this message]
2025-08-09 20:42 ` [Buildroot] [PATCH v2] package/php-lua: fix build with PHP8/GCC14 Romain Naour via buildroot
2025-08-11 5:24 ` Alexis Lothoré via buildroot
2025-08-13 10:43 ` Thomas Petazzoni via buildroot
2025-08-13 16:13 ` Alexis Lothoré via buildroot
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=20250806-php-lua-v2-1-a73faad939e9@bootlin.com \
--to=buildroot@buildroot.org \
--cc=alexis.lothore@bootlin.com \
--cc=herve.codina@bootlin.com \
--cc=nicolas.carrier@nav-timing.safrangroup.com \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox