* [Buildroot] [PATCH v2] package/php-lua: fix build with PHP8/GCC14
@ 2025-08-06 20:42 Alexis Lothoré via buildroot
2025-08-09 20:42 ` Romain Naour via buildroot
0 siblings, 1 reply; 5+ messages in thread
From: Alexis Lothoré via buildroot @ 2025-08-06 20:42 UTC (permalink / raw)
To: buildroot
Cc: Thomas Petazzoni, Hervé Codina, Nicolas Carrier,
Alexis Lothoré
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
^ permalink raw reply related [flat|nested] 5+ messages in thread* Re: [Buildroot] [PATCH v2] package/php-lua: fix build with PHP8/GCC14
2025-08-06 20:42 [Buildroot] [PATCH v2] package/php-lua: fix build with PHP8/GCC14 Alexis Lothoré via buildroot
@ 2025-08-09 20:42 ` Romain Naour via buildroot
2025-08-11 5:24 ` Alexis Lothoré via buildroot
0 siblings, 1 reply; 5+ messages in thread
From: Romain Naour via buildroot @ 2025-08-09 20:42 UTC (permalink / raw)
To: Alexis Lothoré, buildroot
Cc: Thomas Petazzoni, Hervé Codina, Nicolas Carrier
Hello Alexis, All,
Le 06/08/2025 à 22:42, Alexis Lothoré via buildroot a écrit :
> 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
Check-package warn about missing "Upstream:" link.
Since the patch come from a fork, using "Upstream" looks wrong here.
Maybe Upstream: n/a ?
Best regards,
Romain
> +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,
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply [flat|nested] 5+ messages in thread* Re: [Buildroot] [PATCH v2] package/php-lua: fix build with PHP8/GCC14
2025-08-09 20:42 ` Romain Naour via buildroot
@ 2025-08-11 5:24 ` Alexis Lothoré via buildroot
2025-08-13 10:43 ` Thomas Petazzoni via buildroot
0 siblings, 1 reply; 5+ messages in thread
From: Alexis Lothoré via buildroot @ 2025-08-11 5:24 UTC (permalink / raw)
To: Romain Naour, buildroot
Cc: Thomas Petazzoni, Hervé Codina, Nicolas Carrier
Hi Romain,
On Sat Aug 9, 2025 at 10:42 PM CEST, Romain Naour via buildroot wrote:
> Hello Alexis, All,
>
> Le 06/08/2025 à 22:42, Alexis Lothoré via buildroot a écrit :
[...]
>> 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
>
> Check-package warn about missing "Upstream:" link.
>
> Since the patch come from a fork, using "Upstream" looks wrong here.
> Maybe Upstream: n/a ?
Sure, I can add this empty Upstream in the next revision.
Alexis
>
> Best regards,
> Romain
>
--
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 [flat|nested] 5+ messages in thread
* Re: [Buildroot] [PATCH v2] package/php-lua: fix build with PHP8/GCC14
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
0 siblings, 1 reply; 5+ messages in thread
From: Thomas Petazzoni via buildroot @ 2025-08-13 10:43 UTC (permalink / raw)
To: Alexis Lothoré
Cc: Romain Naour, buildroot, Hervé Codina, Nicolas Carrier
On Mon, 11 Aug 2025 07:24:07 +0200
Alexis Lothoré <alexis.lothore@bootlin.com> wrote:
> > Check-package warn about missing "Upstream:" link.
> >
> > Since the patch come from a fork, using "Upstream" looks wrong here.
> > Maybe Upstream: n/a ?
>
> Sure, I can add this empty Upstream in the next revision.
I don't think "Upstream: n/a" is very useful.
In fact, something like:
Upstream: upstream dead, taken from fork at https://github.com/badoo/php-lua/pull/8
is IMO a lot more useful.
Thomas
--
Thomas Petazzoni, co-owner and CEO, Bootlin
Embedded Linux and Kernel engineering and training
https://bootlin.com
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [Buildroot] [PATCH v2] package/php-lua: fix build with PHP8/GCC14
2025-08-13 10:43 ` Thomas Petazzoni via buildroot
@ 2025-08-13 16:13 ` Alexis Lothoré via buildroot
0 siblings, 0 replies; 5+ messages in thread
From: Alexis Lothoré via buildroot @ 2025-08-13 16:13 UTC (permalink / raw)
To: Thomas Petazzoni
Cc: Romain Naour, buildroot, Hervé Codina, Nicolas Carrier
Hi,
On Wed Aug 13, 2025 at 12:43 PM CEST, Thomas Petazzoni via buildroot wrote:
> On Mon, 11 Aug 2025 07:24:07 +0200
> Alexis Lothoré <alexis.lothore@bootlin.com> wrote:
>
>> > Check-package warn about missing "Upstream:" link.
>> >
>> > Since the patch come from a fork, using "Upstream" looks wrong here.
>> > Maybe Upstream: n/a ?
>>
>> Sure, I can add this empty Upstream in the next revision.
>
> I don't think "Upstream: n/a" is very useful.
>
> In fact, something like:
>
> Upstream: upstream dead, taken from fork at https://github.com/badoo/php-lua/pull/8
>
> is IMO a lot more useful.
Sure, I can update set something like this. But just to re-clarify, the
fork isn't really alive neither. It has just been dead for... less longer.
I'll wait a bit before re-spinning in case anyone else comes with another
opinion.
>
> Thomas
--
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 [flat|nested] 5+ messages in thread
end of thread, other threads:[~2025-08-13 16:33 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-08-06 20:42 [Buildroot] [PATCH v2] package/php-lua: fix build with PHP8/GCC14 Alexis Lothoré via buildroot
2025-08-09 20:42 ` 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
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.