phpv8 / v8js

V8 Javascript Engine for PHP — This PHP extension embeds the Google V8 Javascript Engine
http://pecl.php.net/package/v8js
MIT License
1.83k stars 200 forks source link

Fails to compile with v8 3.21.18.2 #45

Closed cscott closed 10 years ago

cscott commented 10 years ago

Starting at commit 619231913c1c2199be64a216e3bebc2a0936efda, I get the following errors when compiling against v8 3.21.18.2 (the latest 3.21 version of v8):

/bin/sh /home/cananian/Wikimedia/scribunto-js/v8js/libtool --mode=compile g++ -std=c++11 -I. -I/home/cananian/Wikimedia/scribunto-js/v8js -DPHP_ATOM_INC -I/home/cananian/Wikimedia/scribunto-js/v8js/include -I/home/cananian/Wikimedia/scribunto-js/v8js/main -I/home/cananian/Wikimedia/scribunto-js/v8js -I/usr/include/php5 -I/usr/include/php5/main -I/usr/include/php5/TSRM -I/usr/include/php5/Zend -I/usr/include/php5/ext -I/usr/include/php5/ext/date/lib -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/home/cananian/Wikimedia/scribunto-js/v8js/v8/include  -DHAVE_CONFIG_H  -g -O2   -c /home/cananian/Wikimedia/scribunto-js/v8js/v8js_convert.cc -o v8js_convert.lo 
libtool: compile:  g++ -std=c++11 -I. -I/home/cananian/Wikimedia/scribunto-js/v8js -DPHP_ATOM_INC -I/home/cananian/Wikimedia/scribunto-js/v8js/include -I/home/cananian/Wikimedia/scribunto-js/v8js/main -I/home/cananian/Wikimedia/scribunto-js/v8js -I/usr/include/php5 -I/usr/include/php5/main -I/usr/include/php5/TSRM -I/usr/include/php5/Zend -I/usr/include/php5/ext -I/usr/include/php5/ext/date/lib -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/home/cananian/Wikimedia/scribunto-js/v8js/v8/include -DHAVE_CONFIG_H -g -O2 -c /home/cananian/Wikimedia/scribunto-js/v8js/v8js_convert.cc  -fPIC -DPIC -o .libs/v8js_convert.o
/home/cananian/Wikimedia/scribunto-js/v8js/v8js_convert.cc:37:13: error: expected unqualified-id before 'static'
   V8_INLINE(static void Copy(const Persistent<S, M>& source,
             ^
/home/cananian/Wikimedia/scribunto-js/v8js/v8js_convert.cc:37:13: error: expected ')' before 'static'
In file included from /home/cananian/Wikimedia/scribunto-js/v8js/php_v8js_macros.h:24:0,
                 from /home/cananian/Wikimedia/scribunto-js/v8js/v8js_convert.cc:27:
/home/cananian/Wikimedia/scribunto-js/v8js/v8/include/v8.h: In instantiation of 'void v8::Persistent<T, M>::Copy(const v8::Persistent<S, M>&) [with S = v8::FunctionTemplate; M2 = v8::CopyablePersistentTraits<v8::FunctionTemplate>; T = v8::FunctionTemplate; M = v8::CopyablePersistentTraits<v8::FunctionTemplate>]':
/home/cananian/Wikimedia/scribunto-js/v8js/v8/include/v8.h:536:14:   required from 'v8::Persistent<T, M>& v8::Persistent<T, M>::operator=(const v8::Persistent<T, M>&) [with T = v8::FunctionTemplate; M = v8::CopyablePersistentTraits<v8::FunctionTemplate>]'
/home/cananian/Wikimedia/scribunto-js/v8js/v8js_convert.cc:421:44:   required from here
/home/cananian/Wikimedia/scribunto-js/v8js/v8/include/v8.h:5572:21: error: 'Copy' is not a member of 'v8::CopyablePersistentTraits<v8::FunctionTemplate>'
   M::Copy(that, this);
                     ^
make: *** [v8js_convert.lo] Error 1

We currently test against 3.21.12, so this should work...

satoshi75nakamoto commented 10 years ago

@cscott — Are you working on scribunto?

satoshi75nakamoto commented 10 years ago

@stesie — Do you have any ideas?

stesie commented 10 years ago

gah, didn't notice the 3.21.18 versions, they're missing in the v8 GitHub repository.

The problem is that they've changed the V8_INLINE declaration, which I rely on with CopyablePersistentTraits type.

In v8js_convert.cc simply convert

        V8_INLINE(static void Copy(const Persistent<S, M>& source,
                                   CopyablePersistent* dest))

to

        static V8_INLINE void Copy(const Persistent<S, M>& source,
                                   CopyablePersistent* dest)

... then it should compile fine again. Just tested with 3.21.18.2 here.

I'll have a look with which exact version they've changed the V8_INLINE signature and follow up with a pull request shortly.

satoshi75nakamoto commented 10 years ago

Okay cool I'll hold off on my change and wait for your pull request. I wasn't using 3.21.18.2 yet. I was just looking at [v8] r16641 committed - Deuglify V8_INLINE and V8_NOINLINE.... Thanks @stesie

cscott commented 10 years ago

@stesie yeah, i just pulled from the 3.21 branch; 3.21.18 is the latest version on the branch.

@preillyme yeah, i'm hooking v8js up to scribunto as a side project @ wikimedia.

satoshi75nakamoto commented 10 years ago

@cscott — I had started to do that awhile ago but got about as far as creating a branch in Gerrit. Also Tim Starling wasn't too keen on adding JS support to Scribunto last time we talked about it.