Buildroot Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox