Bug #70991 [Csd]: zend_file_cache.c:710: error: array type has incomplete element type
| From: | swa at section66 dot com | Date: | Thu, 03 Dec 2015 23:36:19 +0000 |
| Subject: | Bug #70991 [Csd]: zend_file_cache.c:710: error: array type has incomplete element type | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-197577@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=70991&edit=1
ID: 70991
User updated by: swa at section66 dot com
Reported by: swa at section66 dot com
Summary: zend_file_cache.c:710: error: array type has
incomplete element type
Status: Closed
Type: Bug
Package: Compile Failure
Operating System: OpenBSD
PHP Version: 7.0.0
Assigned To: laruence
Block user comment: N
Private report: N
New Comment:
Tried dropping an autoconf package on a test system (not part of my regular builds).
Not very successful as far as I can tell, the ./buildconf --force eventually regenerates a
main/php_config.h.in but it differs greatly from the original and after that all compilation fails
form the very first file it compiles.
The autoconf probably just is not working properly (or my lack of experience with it is showing).
Previous Comments:
------------------------------------------------------------------------
[2015-12-03 22:54:56] swa at section66 dot com
PHP 7.0.0 still has the same identical problem.
Testing the proposed fix to config.m4 fails so far on not having autoconf installed (and being
aboard).
------------------------------------------------------------------------
[2015-12-01 02:35:59] laruence@php.net
Automatic comment on behalf of laruence@gmail.com
Revision: http://git.php.net/?p=php-src.git;a=commit;h=ed4b887cf6e59c12428ebece5492201c63bfbb4f
Log: Fixed bug #70991 (zend_file_cache.c:710: error: array type has incomplete element type)
------------------------------------------------------------------------
[2015-11-29 03:22:10] laruence@php.net
I don't have openBSD box, so I can not verify it, and please make sure the HAVE_SYS_UIO_H is
defined in main/php_config.h
1. ./buildconf --force .
2. ./configure
3. make
------------------------------------------------------------------------
[2015-11-29 03:16:23] laruence@php.net
can you verify this fix?
diff --git a/ext/opcache/config.m4 b/ext/opcache/config.m4
index fbe18f8..497aa4c 100644
--- a/ext/opcache/config.m4
+++ b/ext/opcache/config.m4
@@ -26,6 +26,8 @@ if test "$PHP_OPCACHE" != "no"; then
AC_DEFINE(HAVE_MPROTECT, 1, [Define if you have mprotect() function])
])
+ AC_CHECK_HEADERS([unistd.h sys/uio.h])
+
AC_MSG_CHECKING(for sysvipc shared memory support)
AC_TRY_RUN([
#include <sys/types.h>
diff --git a/ext/opcache/zend_file_cache.c b/ext/opcache/zend_file_cache.c
index 7c615e9..993358b 100644
--- a/ext/opcache/zend_file_cache.c
+++ b/ext/opcache/zend_file_cache.c
@@ -706,7 +706,7 @@ int zend_file_cache_script_store(zend_persistent_script *script, int in_shm)
int fd;
char *filename;
zend_file_cache_metainfo info;
-#ifndef ZEND_WIN32
+#ifdef HAVE_SYS_UIO_H
struct iovec vec[3];
#endif
void *mem, *buf;
@@ -761,7 +761,7 @@ int zend_file_cache_script_store(zend_persistent_script *script, int in_shm)
info.checksum = zend_adler32(ADLER32_INIT, buf, script->size);
info.checksum = zend_adler32(info.checksum, (signed char*)ZSTR_VAL((zend_string*)ZCG(mem)),
info.str_size);
-#ifndef ZEND_WIN32
+#ifdef HAVE_SYS_UIO_H
vec[0].iov_base = &info;
vec[0].iov_len = sizeof(info);
vec[1].iov_base = buf;
note before you make, you should do ./buildconf --force to regenerate ./configure
------------------------------------------------------------------------
[2015-11-28 21:25:02] swa at section66 dot com
Description:
------------
CFLAGS='-O2' './configure' '--prefix=/<PATH>/php-7.0.0RC8'
'--with-apxs2=<PATH>/bin/apxs' '--with-zlib' '--with-gd'
'--enable-exif' '--with-jpeg-dir=/usr/local/lib'
'--enable-gd-native-ttf' '--with-zlib-dir=/usr/lib/'
'--with-png-dir=/usr/local/' '--enable-ftp' '--with-mysql=mysqlnd'
'--with-mysqli=mysqlnd' '--with-config-file-path=/etc/php.ini'
'--enable-mbstring'
(or even a plain ./configure without ANY options)
After a while (depending on what options were selected):
/<PATH>/php-7.0.0RC8/ext/opcache/zend_file_cache.c:710: error: array type has incomplete
element type
*** Error code 1
Line 710:
#ifndef ZEND_WIN32
struct iovec vec[3];
#endif
iovec on OpenBSD is defined in sys/uio.h, I guess the ./configure missed that.
[Not familiar with it enough myself to propose a fix, sorry]
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=70991&edit=1