Description
I'm building a static php-fpm binary using the php7 tree from git on CentOS 7. When building with only
--enable-memcached --enable-memcached-json
everything builds fine. When I enable binary protocol via
--enable-memcached --enable-memcached-protocol --enable-memcached-json
I get the build errors seen below. I'm linking to libmemcached-1.0.18
built from source w/ ./configure --enable-libmemcachedprotocol
and installed in /usr/local
full config line:
./configure --prefix=/usr --with-config-file-path=/etc --enable-mysqlnd --with-mysqli=mysqlnd --with-mcrypt --with-zlib --with-gd --enable-gd-native-ttf --with-freetype-dir=/usr --with-curl --enable-mbstring --with-libmemcached-dir=/usr/local --enable-memcached --enable-memcached-protocol --enable-memcached-json --enable-fpm --enable-opcache --with-fpm-user=admin --with-fpm-group=admin --disable-rpath
(the version which builds w/o errors is the exact same sans --enable-memcached-protocol
)
$ time make
...
/bin/sh /usr/src/php-7.0.8/libtool --silent --preserve-dup-deps --mode=compile cc -DZEND_ENABLE_STATIC_TSRMLS_CACHE=1 -Iext/phar/ -I/usr/src/php-7.0.8/ext/phar/ -DPHP_ATOM_INC -I/usr/src/php-7.0.8/include -I/usr/src/php-7.0.8/main -I/usr/src/php-7.0.8 -I/usr/src/php-7.0.8/ext/date/lib -I/usr/include/libxml2 -I/usr/include/freetype2 -I/usr/src/php-7.0.8/ext/mbstring/oniguruma -I/usr/src/php-7.0.8/ext/mbstring/libmbfl -I/usr/src/php-7.0.8/ext/mbstring/libmbfl/mbfl -I/usr/src/php-7.0.8/ext/sqlite3/libsqlite -I/usr/local/include -I/usr/src/php-7.0.8/TSRM -I/usr/src/php-7.0.8/Zend -I/usr/include -g -O2 -fvisibility=hidden -I/usr/src/php-7.0.8/ext/date/lib -I/usr/include/libxml2 -I/usr/include/freetype2 -I/usr/src/php-7.0.8/ext/mbstring/oniguruma -I/usr/src/php-7.0.8/ext/mbstring/libmbfl -I/usr/src/php-7.0.8/ext/mbstring/libmbfl/mbfl -I/usr/src/php-7.0.8/ext/sqlite3/libsqlite -I/usr/local/include -c /usr/src/php-7.0.8/ext/phar/phar_path_check.c -o ext/phar/phar_path_check.lo
/bin/sh /usr/src/php-7.0.8/libtool --silent --preserve-dup-deps --mode=compile cc -I/usr/src/php-7.0.8 -Iext/php-memcached/ -I/usr/src/php-7.0.8/ext/php-memcached/ -DPHP_ATOM_INC -I/usr/src/php-7.0.8/include -I/usr/src/php-7.0.8/main -I/usr/src/php-7.0.8 -I/usr/src/php-7.0.8/ext/date/lib -I/usr/include/libxml2 -I/usr/include/freetype2 -I/usr/src/php-7.0.8/ext/mbstring/oniguruma -I/usr/src/php-7.0.8/ext/mbstring/libmbfl -I/usr/src/php-7.0.8/ext/mbstring/libmbfl/mbfl -I/usr/src/php-7.0.8/ext/sqlite3/libsqlite -I/usr/local/include -I/usr/src/php-7.0.8/TSRM -I/usr/src/php-7.0.8/Zend -I/usr/include -g -O2 -fvisibility=hidden -I/usr/src/php-7.0.8/ext/date/lib -I/usr/include/libxml2 -I/usr/include/freetype2 -I/usr/src/php-7.0.8/ext/mbstring/oniguruma -I/usr/src/php-7.0.8/ext/mbstring/libmbfl -I/usr/src/php-7.0.8/ext/mbstring/libmbfl/mbfl -I/usr/src/php-7.0.8/ext/sqlite3/libsqlite -I/usr/local/include -c /usr/src/php-7.0.8/ext/php-memcached/php_memcached.c -o ext/php-memcached/php_memcached.lo
/usr/src/php-7.0.8/ext/php-memcached/php_memcached.c: In function ‘s_stat_execute_cb’:
/usr/src/php-7.0.8/ext/php-memcached/php_memcached.c:2651:3: warning: passing argument 4 of ‘add_assoc_stringl_ex’ discards ‘const’ qualifier from pointer target type [enabled by default]
add_assoc_stringl_ex(server_values, key, key_length, value, value_length);
^
In file included from /usr/src/php-7.0.8/main/php.h:39:0,
from /usr/src/php-7.0.8/ext/php-memcached/php_memcached.h:22,
from /usr/src/php-7.0.8/ext/php-memcached/php_memcached.c:25:
/usr/src/php-7.0.8/Zend/zend_API.h:397:14: note: expected ‘char *’ but argument is of type ‘const char *’
ZEND_API int add_assoc_stringl_ex(zval *arg, const char *key, size_t key_len, char *str, size_t length);
^
/usr/src/php-7.0.8/ext/php-memcached/php_memcached.c: At top level:
/usr/src/php-7.0.8/ext/php-memcached/php_memcached.c:3331:1: error: unknown type name ‘zend_object_value’
zend_object_value php_memc_server_new(zend_class_entry *ce)
^
/usr/src/php-7.0.8/ext/php-memcached/php_memcached.c: In function ‘php_memc_server_new’:
/usr/src/php-7.0.8/ext/php-memcached/php_memcached.c:3333:2: error: unknown type name ‘zend_object_value’
zend_object_value retval;
^
/usr/src/php-7.0.8/ext/php-memcached/php_memcached.c:3343:8: error: request for member ‘handle’ in something not a structure or union
retval.handle = zend_objects_store_put(intern, (zend_objects_store_dtor_t)zend_objects_destroy_object, (zend_objects_free_object_storage_t)php_memc_server_free_storage, NULL);
^
/usr/src/php-7.0.8/ext/php-memcached/php_memcached.c:3343:50: error: ‘zend_objects_store_dtor_t’ undeclared (first use in this function)
retval.handle = zend_objects_store_put(intern, (zend_objects_store_dtor_t)zend_objects_destroy_object, (zend_objects_free_object_storage_t)php_memc_server_free_storage, NULL);
^
/usr/src/php-7.0.8/ext/php-memcached/php_memcached.c:3343:50: note: each undeclared identifier is reported only once for each function it appears in
/usr/src/php-7.0.8/ext/php-memcached/php_memcached.c:3343:76: error: expected ‘)’ before ‘zend_objects_destroy_object’
retval.handle = zend_objects_store_put(intern, (zend_objects_store_dtor_t)zend_objects_destroy_object, (zend_objects_free_object_storage_t)php_memc_server_free_storage, NULL);
^
/usr/src/php-7.0.8/ext/php-memcached/php_memcached.c:3343:76: warning: passing argument 1 of ‘zend_objects_store_put’ from incompatible pointer type [enabled by default]
In file included from /usr/src/php-7.0.8/Zend/zend_globals.h:35:0,
from /usr/src/php-7.0.8/Zend/zend_compile.h:657,
from /usr/src/php-7.0.8/Zend/zend_modules.h:26,
from /usr/src/php-7.0.8/Zend/zend_API.h:27,
from /usr/src/php-7.0.8/main/php.h:39,
from /usr/src/php-7.0.8/ext/php-memcached/php_memcached.h:22,
from /usr/src/php-7.0.8/ext/php-memcached/php_memcached.c:25:
/usr/src/php-7.0.8/Zend/zend_objects_API.h:58:15: note: expected ‘struct zend_object *’ but argument is of type ‘struct php_memc_server_t *’
ZEND_API void zend_objects_store_put(zend_object *object);
^
/usr/src/php-7.0.8/ext/php-memcached/php_memcached.c:3343:76: error: too many arguments to function ‘zend_objects_store_put’
retval.handle = zend_objects_store_put(intern, (zend_objects_store_dtor_t)zend_objects_destroy_object, (zend_objects_free_object_storage_t)php_memc_server_free_storage, NULL);
^
In file included from /usr/src/php-7.0.8/Zend/zend_globals.h:35:0,
from /usr/src/php-7.0.8/Zend/zend_compile.h:657,
from /usr/src/php-7.0.8/Zend/zend_modules.h:26,
from /usr/src/php-7.0.8/Zend/zend_API.h:27,
from /usr/src/php-7.0.8/main/php.h:39,
from /usr/src/php-7.0.8/ext/php-memcached/php_memcached.h:22,
from /usr/src/php-7.0.8/ext/php-memcached/php_memcached.c:25:
/usr/src/php-7.0.8/Zend/zend_objects_API.h:58:15: note: declared here
ZEND_API void zend_objects_store_put(zend_object *object);
^
/usr/src/php-7.0.8/ext/php-memcached/php_memcached.c:3344:8: error: request for member ‘handlers’ in something not a structure or union
retval.handlers = &memcached_server_object_handlers;
^
/usr/src/php-7.0.8/ext/php-memcached/php_memcached.c: In function ‘s_server_cursor_list_servers_cb’:
/usr/src/php-7.0.8/ext/php-memcached/php_memcached.c:3369:2: warning: passing argument 4 of ‘add_assoc_string_ex’ discards ‘const’ qualifier from pointer target type [enabled by default]
add_assoc_string(&array, "host", memcached_server_name(instance));
^
In file included from /usr/src/php-7.0.8/main/php.h:39:0,
from /usr/src/php-7.0.8/ext/php-memcached/php_memcached.h:22,
from /usr/src/php-7.0.8/ext/php-memcached/php_memcached.c:25:
/usr/src/php-7.0.8/Zend/zend_API.h:396:14: note: expected ‘char *’ but argument is of type ‘const char *’
ZEND_API int add_assoc_string_ex(zval *arg, const char *key, size_t key_len, char *str);
^
/usr/src/php-7.0.8/ext/php-memcached/php_memcached.c:3371:2: warning: passing argument 4 of ‘add_assoc_string_ex’ discards ‘const’ qualifier from pointer target type [enabled by default]
add_assoc_string(&array, "type", memcached_server_type(instance));
^
In file included from /usr/src/php-7.0.8/main/php.h:39:0,
from /usr/src/php-7.0.8/ext/php-memcached/php_memcached.h:22,
from /usr/src/php-7.0.8/ext/php-memcached/php_memcached.c:25:
/usr/src/php-7.0.8/Zend/zend_API.h:396:14: note: expected ‘char *’ but argument is of type ‘const char *’
ZEND_API int add_assoc_string_ex(zval *arg, const char *key, size_t key_len, char *str);
^
/usr/src/php-7.0.8/ext/php-memcached/php_memcached.c: In function ‘s_destroy_cb’:
/usr/src/php-7.0.8/ext/php-memcached/php_memcached.c:3649:10: error: ‘zend_fcall_info’ has no member named ‘object_ptr’
if (fci->object_ptr != NULL) {
^
In file included from /usr/src/php-7.0.8/Zend/zend.h:39:0,
from /usr/src/php-7.0.8/main/php.h:35,
from /usr/src/php-7.0.8/ext/php-memcached/php_memcached.h:22,
from /usr/src/php-7.0.8/ext/php-memcached/php_memcached.c:25:
/usr/src/php-7.0.8/ext/php-memcached/php_memcached.c:3650:22: error: ‘zend_fcall_info’ has no member named ‘object_ptr’
zval_ptr_dtor(&fci->object_ptr);
^
/usr/src/php-7.0.8/Zend/zend_variables.h:122:49: note: in definition of macro ‘zval_ptr_dtor’
#define zval_ptr_dtor(zval_ptr) _zval_ptr_dtor((zval_ptr) ZEND_FILE_LINE_CC)
^
/usr/src/php-7.0.8/ext/php-memcached/php_memcached.c: In function ‘zim_MemcachedServer_run’:
/usr/src/php-7.0.8/ext/php-memcached/php_memcached.c:3660:2: error: unknown type name ‘zend’
zend *address;
^
/usr/src/php-7.0.8/ext/php-memcached/php_memcached.c:3663:9: warning: assignment from incompatible pointer type [enabled by default]
intern = Z_MEMC_OBJ_P(getThis());
^
/usr/src/php-7.0.8/ext/php-memcached/php_memcached.c:3669:2: warning: passing argument 2 of ‘php_memc_proto_handler_run’ from incompatible pointer type [enabled by default]
rc = php_memc_proto_handler_run (intern->handler, address);
^
In file included from /usr/src/php-7.0.8/ext/php-memcached/php_memcached.c:27:0:
/usr/src/php-7.0.8/ext/php-memcached/php_memcached_server.h:36:11: note: expected ‘struct zend_string *’ but argument is of type ‘int *’
zend_bool php_memc_proto_handler_run (php_memc_proto_handler_t *h, zend_string *address);
^
/usr/src/php-7.0.8/ext/php-memcached/php_memcached.c:58:46: error: ‘struct <anonymous>’ has no member named ‘server’
#define MEMC_G(v) (php_memcached_globals.memc.v)
^
/usr/src/php-7.0.8/ext/php-memcached/php_memcached.c:3672:18: note: in expansion of macro ‘MEMC_G’
s_destroy_cb (&MEMC_G(server.callbacks) [i].fci);
^
/usr/src/php-7.0.8/ext/php-memcached/php_memcached.c: In function ‘zim_MemcachedServer_on’:
/usr/src/php-7.0.8/ext/php-memcached/php_memcached.c:58:46: error: ‘struct <anonymous>’ has no member named ‘server’
#define MEMC_G(v) (php_memcached_globals.memc.v)
^
/usr/src/php-7.0.8/ext/php-memcached/php_memcached.c:3695:18: note: in expansion of macro ‘MEMC_G’
s_destroy_cb (&MEMC_G(server.callbacks) [event].fci);
^
/usr/src/php-7.0.8/ext/php-memcached/php_memcached.c:58:46: error: ‘struct <anonymous>’ has no member named ‘server’
#define MEMC_G(v) (php_memcached_globals.memc.v)
^
/usr/src/php-7.0.8/ext/php-memcached/php_memcached.c:3697:3: note: in expansion of macro ‘MEMC_G’
MEMC_G(server.callbacks) [event].fci = fci;
^
/usr/src/php-7.0.8/ext/php-memcached/php_memcached.c:58:46: error: ‘struct <anonymous>’ has no member named ‘server’
#define MEMC_G(v) (php_memcached_globals.memc.v)
^
/usr/src/php-7.0.8/ext/php-memcached/php_memcached.c:3698:3: note: in expansion of macro ‘MEMC_G’
MEMC_G(server.callbacks) [event].fci_cache = fci_cache;
^
/usr/src/php-7.0.8/ext/php-memcached/php_memcached.c:3700:3: error: incompatible type for argument 1 of ‘zval_addref_p’
Z_ADDREF_P (fci.function_name);
^
In file included from /usr/src/php-7.0.8/Zend/zend.h:31:0,
from /usr/src/php-7.0.8/main/php.h:35,
from /usr/src/php-7.0.8/ext/php-memcached/php_memcached.h:22,
from /usr/src/php-7.0.8/ext/php-memcached/php_memcached.c:25:
/usr/src/php-7.0.8/Zend/zend_types.h:820:36: note: expected ‘struct zval *’ but argument is of type ‘zval’
static zend_always_inline uint32_t zval_addref_p(zval* pz) {
^
/usr/src/php-7.0.8/ext/php-memcached/php_memcached.c:3701:10: error: ‘zend_fcall_info’ has no member named ‘object_ptr’
if (fci.object_ptr) {
^
In file included from /usr/src/php-7.0.8/Zend/zend.h:31:0,
from /usr/src/php-7.0.8/main/php.h:35,
from /usr/src/php-7.0.8/ext/php-memcached/php_memcached.h:22,
from /usr/src/php-7.0.8/ext/php-memcached/php_memcached.c:25:
/usr/src/php-7.0.8/ext/php-memcached/php_memcached.c:3702:19: error: ‘zend_fcall_info’ has no member named ‘object_ptr’
Z_ADDREF_P (fci.object_ptr);
^
/usr/src/php-7.0.8/Zend/zend_types.h:787:41: note: in definition of macro ‘Z_ADDREF_P’
#define Z_ADDREF_P(pz) zval_addref_p(pz)
^
/usr/src/php-7.0.8/ext/php-memcached/php_memcached.c: In function ‘zm_startup_memcached’:
/usr/src/php-7.0.8/ext/php-memcached/php_memcached.c:4436:37: warning: assignment from incompatible pointer type [enabled by default]
memcached_server_ce->create_object = php_memc_server_new;
^
make: *** [ext/php-memcached/php_memcached.lo] Error 1
real 4m4.563s
user 3m32.528s
sys 0m37.928s
Is this an indication that the binary protocol part of the code has not yet been updated to work with php 7?