Edit report at https://bugs.php.net/bug.php?id=65207&edit=1
ID: 65207
Comment by: lj2007331 at gmail dot com
Reported by:reh at hebis dot uni-frankfurt dot de
Summary:OPCache can't be compiled with SolarisStudio
Status: Open
Type: Bug
Package:Compile Failure
Operating System: Solaris / Illumos
PHP Version:5.5.0
Block user comment: N
Private report: N
New Comment:
PHP Version:5.5.0 and 5.5.1
OS:CentOS release 6.4 (Final)
Kernel: 2.6.32-358.6.2.el6.i686
Error:
checking for mmap() using shm_open() shared memory support... no
checking for mmap() using regular file shared memory support... no
checking for known struct flock definition... configure: error: Don't know how
to define struct flock on this system, set --enable-opcache=no
make: *** No targets specified and no makefile found. Stop.
make: *** No rule to make target `install'. Stop.
Previous Comments:
[2013-07-14 14:25:27] tgburrin at yahoo dot com
reh's solution seems to work for me.
After converting the \r\n's to \n and fixing the three spots (configure,
ext/opcache/ZendAccelerator.h, and ext/opcache/config.m4) where the flock test
is done, I was able to configure and build successfully. I haven't seen any
issues so far.
using Solaris Studio 12.3 on:
# cc -V
cc: Sun C 5.12 SunOS_i386 2011/11/16
# uname -a
SunOS Heimdall 5.10 Generic_147148-26 i86pc i386 i86pc
[2013-07-05 19:31:36] reh at hebis dot uni-frankfurt dot de
Last info before resigning. :-( Configure can't link to flock()
> configure:19164: checking for flock
> "conftest.c", line 161: warning: statement not reached
> Undefined symbol first referenced in file
> flockconftest.o
Maybe someone smarter than me, may use the informations on
http://www.perkin.org.uk/posts/solaris-portability-flock.html
[2013-07-05 14:41:41] reh at hebis dot uni-frankfurt dot de
FAILED TEST SUMMARY
...
Test flock() function: Basic functionality
[ext/standard/tests/file/flock_basic.phpt]
Test flock() function: Variations [ext/standard/tests/file/flock_variation.phpt]
...
[2013-07-05 14:17:13] reh at hebis dot uni-frankfurt dot de
Today I was able too complete the build.
I had to add some Lines in configure and ZendAccelerator.h. (corresponding to
)
> # elif defined(__SVR4)
> # define FLOCK_STRUCTURE(name, type, whence, start, len) \
> struct flock name = {type, whence, start, len, 0, 0, 0 }
Also it was necessary to translate some files of ext/opcache/ with dos2unix.
Maybe the problem has been long lines concatunated whith "\CRNL" instead of
"\NL"
Still it's a hack, not a tested solution. ;-)
[2013-07-05 02:07:48] reh at hebis dot uni-frankfurt dot de
Description:
Configure tries to define a macro for the os dependent structure of flock.
(lines 64988 to 65007)
Using solarisstudio 12.3 as compiler, non of the pattern matches and configure
suggests to disable OPCache
Not really knowing what I'm doing, I tried to patch the line 64991
>From "# elif defined(__svr4__)"
to "# elif defined(__svr4__) || defined(__SVR4)"
This workaround is poor I know, but it seems to work, configure generates the
Makefiles.
The same construct can be found in ext/opcache/ZendAccelerator.h and for me it
looks like that there were some other smells in the opcache package. Make still
fails.
Test script:
---
Configure itself
Actual result:
--
Configure:
checking for known struct flock definition... configure: error: Don't know how
to define struct flock on this system, set --enable-opcache=no
--
Edit this bug report at https://bugs.php.net/bug.php?id=65207&edit=1