Can't build for PHP 7

Issue #15 resolved
Former user created an issue
creating libtool
appending configuration tag "CXX" to libtool
configure: creating ./config.status
config.status: creating config.h
running: make
/bin/bash /tmp/pear/temp/pear-build-defaultuserqJyKOz/ev-0.2.15/libtool --mode=compile cc -I/tmp/pear/temp/ev/libev  -I. -I/tmp/pear/temp/ev -DPHP_ATOM_INC -I/tmp/pear/temp/pear-build-defaultuserqJyKOz/ev-0.2.15/include -I/tmp/pear/temp/pear-build-defaultuserqJyKOz/ev-0.2.15/main -I/tmp/pear/temp/ev -I/usr/local/include/php -I/usr/local/include/php/main -I/usr/local/include/php/TSRM -I/usr/local/include/php/Zend -I/usr/local/include/php/ext -I/usr/local/include/php/ext/date/lib  -DHAVE_CONFIG_H  -g -O2   -c /tmp/pear/temp/ev/libev/ev.c -o libev/ev.lo
mkdir libev/.libs
 cc -I/tmp/pear/temp/ev/libev -I. -I/tmp/pear/temp/ev -DPHP_ATOM_INC -I/tmp/pear/temp/pear-build-defaultuserqJyKOz/ev-0.2.15/include -I/tmp/pear/temp/pear-build-defaultuserqJyKOz/ev-0.2.15/main -I/tmp/pear/temp/ev -I/usr/local/include/php -I/usr/local/include/php/main -I/usr/local/include/php/TSRM -I/usr/local/include/php/Zend -I/usr/local/include/php/ext -I/usr/local/include/php/ext/date/lib -DHAVE_CONFIG_H -g -O2 -c /tmp/pear/temp/ev/libev/ev.c  -fPIC -DPIC -o libev/.libs/ev.o
/tmp/pear/temp/ev/libev/ev.c:1609:31: warning: 'ev_default_loop_ptr' initialized and declared 'extern'
   EV_API_DECL struct ev_loop *ev_default_loop_ptr = 0; /* needs to be initialised to make it a definition despite extern */
                               ^
/bin/bash /tmp/pear/temp/pear-build-defaultuserqJyKOz/ev-0.2.15/libtool --mode=compile cc -I/tmp/pear/temp/ev/libev  -I. -I/tmp/pear/temp/ev -DPHP_ATOM_INC -I/tmp/pear/temp/pear-build-defaultuserqJyKOz/ev-0.2.15/include -I/tmp/pear/temp/pear-build-defaultuserqJyKOz/ev-0.2.15/main -I/tmp/pear/temp/ev -I/usr/local/include/php -I/usr/local/include/php/main -I/usr/local/include/php/TSRM -I/usr/local/include/php/Zend -I/usr/local/include/php/ext -I/usr/local/include/php/ext/date/lib  -DHAVE_CONFIG_H  -g -O2   -c /tmp/pear/temp/ev/util.c -o util.lo
mkdir .libs
 cc -I/tmp/pear/temp/ev/libev -I. -I/tmp/pear/temp/ev -DPHP_ATOM_INC -I/tmp/pear/temp/pear-build-defaultuserqJyKOz/ev-0.2.15/include -I/tmp/pear/temp/pear-build-defaultuserqJyKOz/ev-0.2.15/main -I/tmp/pear/temp/ev -I/usr/local/include/php -I/usr/local/include/php/main -I/usr/local/include/php/TSRM -I/usr/local/include/php/Zend -I/usr/local/include/php/ext -I/usr/local/include/php/ext/date/lib -DHAVE_CONFIG_H -g -O2 -c /tmp/pear/temp/ev/util.c  -fPIC -DPIC -o .libs/util.o
/tmp/pear/temp/ev/util.c: In function 'php_ev_zval_to_fd':
/tmp/pear/temp/ev/util.c:34:45: error: expected expression before 'php_stream'
   if (ZEND_FETCH_RESOURCE_NO_RETURN(stream, php_stream *, ppfd, -1, NULL, php_file_le_stream())) {
                                             ^
In file included from /usr/local/include/php/main/php.h:394:0,
                 from /tmp/pear/temp/ev/common.h:25,
                 from /tmp/pear/temp/ev/embed.h:21,
                 from /tmp/pear/temp/ev/php_ev.h:22,
                 from /tmp/pear/temp/ev/util.c:19:
/usr/local/include/php/main/php_streams.h:271:99: warning: passing argument 1 of 'zend_fetch_resource2_ex' from incompatible pointer type
 #define php_stream_from_zval_no_verify(xstr, pzval) (xstr) = (php_stream*)zend_fetch_resource2_ex((pzval), "stream", php_file_le_stream(), php_file_le_pstream())
                                                                                                   ^
/tmp/pear/temp/ev/util.c:35:4: note: in expansion of macro 'php_stream_from_zval_no_verify'
    php_stream_from_zval_no_verify(stream, ppfd);
    ^
In file included from /usr/local/include/php/Zend/zend_API.h:28:0,
                 from /usr/local/include/php/main/php.h:39,
                 from /tmp/pear/temp/ev/common.h:25,
                 from /tmp/pear/temp/ev/embed.h:21,
                 from /tmp/pear/temp/ev/php_ev.h:22,
                 from /tmp/pear/temp/ev/util.c:19:
/usr/local/include/php/Zend/zend_list.h:66:16: note: expected 'struct zval *' but argument is of type 'struct zval **'
 ZEND_API void *zend_fetch_resource2_ex(zval *res, const char *resource_type_name, int resource_type, int resource_type2);
                ^
Makefile:195: recipe for target 'util.lo' failed
make: *** [util.lo] Error 1
ERROR: `make' failed

Comments (9)

  1. Ruslan Osmanov repo owner

    Of course you can't. PHP7 is not backwards compatible, so the code has to be re-written to match the new API.

  2. Ruslan Osmanov repo owner

    Please check out php7 branch. The tests are passing.

    I'm not merging to master because the code is different for pre-PHP7 versions. Currently, the PECL team has no idea how do we package PHP7 extensions.

  3. Ruslan Osmanov repo owner

    @aurimasniekis I'll build a universal package and upload it to PECL. Just a little busy these days.

  4. Former user Account Deleted

    @osmanov : Is this something that should be working now with the universal package? Getting an error similar to (but different than) the original poster. PECL package 1.0.0RC9 (beta) for PHP 7.0.4:

    running: make
    /bin/bash /tmp/pear/temp/pear-build-root7rLf0u/ev-0.2.15/libtool --mode=compile cc -I/tmp/pear/temp/ev/libev  -I. -I/tmp/pear/temp/ev -DPHP_ATOM_INC -I/tmp/pear/temp/pear-build-root7rLf0u/ev-0.2.15/include -I/tmp/pear/temp/pear-build-root7rLf0u/ev-0.2.15/main -I/tmp/pear/temp/ev -I/usr/include/php/20151012 -I/usr/include/php/20151012/main -I/usr/include/php/20151012/TSRM -I/usr/include/php/20151012/Zend -I/usr/include/php/20151012/ext -I/usr/include/php/20151012/ext/date/lib  -DHAVE_CONFIG_H  -g -O2   -c /tmp/pear/temp/ev/libev/ev.c -o libev/ev.lo
    libtool: compile:  cc -I/tmp/pear/temp/ev/libev -I. -I/tmp/pear/temp/ev -DPHP_ATOM_INC -I/tmp/pear/temp/pear-build-root7rLf0u/ev-0.2.15/include -I/tmp/pear/temp/pear-build-root7rLf0u/ev-0.2.15/main -I/tmp/pear/temp/ev -I/usr/include/php/20151012 -I/usr/include/php/20151012/main -I/usr/include/php/20151012/TSRM -I/usr/include/php/20151012/Zend -I/usr/include/php/20151012/ext -I/usr/include/php/20151012/ext/date/lib -DHAVE_CONFIG_H -g -O2 -c /tmp/pear/temp/ev/libev/ev.c  -fPIC -DPIC -o libev/.libs/ev.o
    /tmp/pear/temp/ev/libev/ev.c:1609:31: warning: 'ev_default_loop_ptr' initialized and declared 'extern'
       EV_API_DECL struct ev_loop *ev_default_loop_ptr = 0; /* needs to be initialised to make it a definition despite extern */
                                   ^
    /tmp/pear/temp/ev/libev/ev.c: In function 'evpipe_write':
    /tmp/pear/temp/ev/libev/ev.c:2238:11: warning: ignoring return value of 'write', declared with attribute warn_unused_result [-Wunused-result]
               write (evpipe [1], &counter, sizeof (uint64_t));
               ^
    /tmp/pear/temp/ev/libev/ev.c:2250:11: warning: ignoring return value of 'write', declared with attribute warn_unused_result [-Wunused-result]
               write (evpipe [1], &(evpipe [1]), 1);
               ^
    /tmp/pear/temp/ev/libev/ev.c: In function 'pipecb':
    /tmp/pear/temp/ev/libev/ev.c:2271:11: warning: ignoring return value of 'read', declared with attribute warn_unused_result [-Wunused-result]
               read (evpipe [1], &counter, sizeof (uint64_t));
               ^
    /tmp/pear/temp/ev/libev/ev.c:2285:11: warning: ignoring return value of 'read', declared with attribute warn_unused_result [-Wunused-result]
               read (evpipe [0], &dummy, sizeof (dummy));
               ^
    /bin/bash /tmp/pear/temp/pear-build-root7rLf0u/ev-0.2.15/libtool --mode=compile cc -I/tmp/pear/temp/ev/libev  -I. -I/tmp/pear/temp/ev -DPHP_ATOM_INC -I/tmp/pear/temp/pear-build-root7rLf0u/ev-0.2.15/include -I/tmp/pear/temp/pear-build-root7rLf0u/ev-0.2.15/main -I/tmp/pear/temp/ev -I/usr/include/php/20151012 -I/usr/include/php/20151012/main -I/usr/include/php/20151012/TSRM -I/usr/include/php/20151012/Zend -I/usr/include/php/20151012/ext -I/usr/include/php/20151012/ext/date/lib  -DHAVE_CONFIG_H  -g -O2   -c /tmp/pear/temp/ev/util.c -o util.lo
    libtool: compile:  cc -I/tmp/pear/temp/ev/libev -I. -I/tmp/pear/temp/ev -DPHP_ATOM_INC -I/tmp/pear/temp/pear-build-root7rLf0u/ev-0.2.15/include -I/tmp/pear/temp/pear-build-root7rLf0u/ev-0.2.15/main -I/tmp/pear/temp/ev -I/usr/include/php/20151012 -I/usr/include/php/20151012/main -I/usr/include/php/20151012/TSRM -I/usr/include/php/20151012/Zend -I/usr/include/php/20151012/ext -I/usr/include/php/20151012/ext/date/lib -DHAVE_CONFIG_H -g -O2 -c /tmp/pear/temp/ev/util.c  -fPIC -DPIC -o .libs/util.o
    /tmp/pear/temp/ev/util.c: In function 'php_ev_zval_to_fd':
    /tmp/pear/temp/ev/util.c:32:6: warning: implicit declaration of function 'Z_TYPE_PP' [-Wimplicit-function-declaration]
      if (Z_TYPE_PP(ppfd) == IS_RESOURCE) {
          ^
    /tmp/pear/temp/ev/util.c:34:7: warning: implicit declaration of function 'ZEND_FETCH_RESOURCE_NO_RETURN' [-Wimplicit-function-declaration]
       if (ZEND_FETCH_RESOURCE_NO_RETURN(stream, php_stream *, ppfd, -1, NULL, php_file_le_stream())) {
           ^
    /tmp/pear/temp/ev/util.c:34:45: error: expected expression before 'php_stream'
       if (ZEND_FETCH_RESOURCE_NO_RETURN(stream, php_stream *, ppfd, -1, NULL, php_file_le_stream())) {
                                                 ^
    In file included from /usr/include/php/20151012/main/php.h:389:0,
                     from /tmp/pear/temp/ev/common.h:25,
                     from /tmp/pear/temp/ev/embed.h:21,
                     from /tmp/pear/temp/ev/php_ev.h:22,
                     from /tmp/pear/temp/ev/util.c:19:
    /usr/include/php/20151012/main/php_streams.h:271:99: warning: passing argument 1 of 'zend_fetch_resource2_ex' from incompatible pointer type [-Wincompatible-pointer-types]
     #define php_stream_from_zval_no_verify(xstr, pzval) (xstr) = (php_stream*)zend_fetch_resource2_ex((pzval), "stream", php_file_le_stream(), php_file_le_pstream())
                                                                                                       ^
    /tmp/pear/temp/ev/util.c:35:4: note: in expansion of macro 'php_stream_from_zval_no_verify'
        php_stream_from_zval_no_verify(stream, ppfd);
        ^
    In file included from /usr/include/php/20151012/Zend/zend_API.h:28:0,
                     from /usr/include/php/20151012/main/php.h:40,
                     from /tmp/pear/temp/ev/common.h:25,
                     from /tmp/pear/temp/ev/embed.h:21,
                     from /tmp/pear/temp/ev/php_ev.h:22,
                     from /tmp/pear/temp/ev/util.c:19:
    /usr/include/php/20151012/Zend/zend_list.h:66:16: note: expected 'zval * {aka struct _zval_struct *}' but argument is of type 'zval ** {aka struct _zval_struct **}'
     ZEND_API void *zend_fetch_resource2_ex(zval *res, const char *resource_type_name, int resource_type, int resource_type2);
                    ^
    /tmp/pear/temp/ev/util.c:87:15: warning: implicit declaration of function 'Z_LVAL_PP' [-Wimplicit-function-declaration]
       file_desc = Z_LVAL_PP(ppfd);
                   ^
    Makefile:195: recipe for target 'util.lo' failed
    make: *** [util.lo] Error 1
    ERROR: `make' failed
    
  5. Ruslan Osmanov repo owner

    @frickenate you're trying to build version ev-0.2.15. I guess you're running sudo pecl install ev which pulls the stable version. But the latest version (1.0.0RC9) is beta. So the command should be sudo pecl install ev-beta

  6. Former user Account Deleted

    Ah thanks, that did the trick. And now I learn this is a separate implementation from the pecl package (which is not included in the pecl repo) that React supports. I see some effort has been put into trying to add support for your implementation into React ( most recently https://github.com/reactphp/event-loop/pull/25 ), though apparently without success as of yet. How unfortunate, considering the supported implementation is all but abandoned by the developer (no php 7 support anytime soon).

  7. Ruslan Osmanov repo owner

    @frickenate, I'm open to communication, anyway. There are no open issues in the tracker so far, except the one regarding Windows package.

  8. Log in to comment