Skip to content

ext-phalcon fails to compile on Heroku-26 due to incompatible-pointer-types errors with GCC 15 #927

@edmorley

Description

@edmorley

As part of preparing for adding Heroku-26 support to this buildpack, I've been performing dry-run builds of all the extensions.

All succeeded apart from ext-phalcon, which fails with errors like:

In file included from /app/.heroku/php/include/php/Zend/zend_types.h:25,
                 from /app/.heroku/php/include/php/Zend/zend.h:27,
                 from /app/.heroku/php/include/php/main/php.h:31,
                 from /tmp/bob-mj5_v3kq/phalcon-5.11.1/phalcon.zep.c:46:
/tmp/bob-mj5_v3kq/phalcon-5.11.1/phalcon.zep.c: In function ‘zim_Phalcon_Tag_getEscaper’:
/app/.heroku/php/include/php/Zend/zend_API.h:1673:60: error: passing argument 2 of ‘zend_parse_arg_array’ from incompatible pointer type [-Wincompatible-pointer-types]
 1673 |                 if (UNEXPECTED(!zend_parse_arg_array(_arg, &dest, check_null, 0))) { \
/app/.heroku/php/include/php/Zend/zend_portability.h:387:52: note: in definition of macro ‘UNEXPECTED’
  387 | # define UNEXPECTED(condition) __builtin_expect(!!(condition), 0)
      |                                                    ^~~~~~~~~
/app/.heroku/php/include/php/Zend/zend_API.h:1680:9: note: in expansion of macro ‘Z_PARAM_ARRAY_EX2’
 1680 |         Z_PARAM_ARRAY_EX2(dest, check_null, separate, separate)
      |         ^~~~~~~~~~~~~~~~~
/app/.heroku/php/include/php/Zend/zend_API.h:1683:9: note: in expansion of macro ‘Z_PARAM_ARRAY_EX’
 1683 |         Z_PARAM_ARRAY_EX(dest, 0, 0)
      |         ^~~~~~~~~~~~~~~~
/tmp/bob-mj5_v3kq/phalcon-5.11.1/phalcon.zep.c:2210:60: note: in expansion of macro ‘Z_PARAM_ARRAY’
 2210 | # define ZEPHIR_Z_PARAM_ARRAY(dest, dest_ptr)              Z_PARAM_ARRAY(dest)
      |                                                            ^~~~~~~~~~~~~
/tmp/bob-mj5_v3kq/phalcon-5.11.1/phalcon.zep.c:14268:17: note: in expansion of macro ‘ZEPHIR_Z_PARAM_ARRAY’
14268 |                 ZEPHIR_Z_PARAM_ARRAY(params, params_param)
      |                 ^~~~~~~~~~~~~~~~~~~~
In file included from /app/.heroku/php/include/php/main/php.h:35:
/app/.heroku/php/include/php/Zend/zend_API.h:2363:71: note: expected ‘zval **’ {aka ‘struct _zval_struct **’} but argument is of type ‘zval *’ {aka ‘struct _zval_struct *’}
 2363 | static zend_always_inline bool zend_parse_arg_array(zval *arg, zval **dest, bool check_null, bool or_object)
      |                                                                ~~~~~~~^~~~

eg:
https://github.com/heroku/heroku-buildpack-php/actions/runs/24478604131/job/71537306982#step:5:139

This appears to be due to phalcon not being compatible with GCC 14 and newer, and Ubuntu 26.04 shipping with GCC 15 - and is a long time known upstream issue that still hasn't been resolved:

While those issues do contain some workarounds like patching the Makefile, I tend to think that we should perhaps just skip building this package on Heroku-26 for now if it's not compatible with newer GCC. I also see that we already don't build ext-phalcon for PHP 8.5 either (presumably due to phalcon/cphalcon#16808).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions