From f49d3b79cab57e5d87c6e332863cb4cb872bb5ac Mon Sep 17 00:00:00 2001 From: Stefan Siegl Date: Sat, 5 Mar 2016 17:09:34 +0100 Subject: [PATCH] Update README.Linux.md for snapshot usage --- README.Linux.md | 37 +++++++++++++++++++++++++------------ 1 file changed, 25 insertions(+), 12 deletions(-) diff --git a/README.Linux.md b/README.Linux.md index e85c261..9f9afc9 100644 --- a/README.Linux.md +++ b/README.Linux.md @@ -10,7 +10,23 @@ years ago, since Node.js requires such an old version. This means that you usually need to compile v8 on your own before you can start to compile & install v8js itself. -Compile latest v8 +Snapshots +--------- + +V8 has (optional) support for so-called snapshots which speed up startup +performance drastically. Hence they are generally recommended for use. + +There are two flavours of snapshots: internal & external. + +Internal snapshots are built right into the V8 library (libv8.so file), +so there's no need to handle them specially. + +Besides there are external snapshots (which are enabled unless configured +otherwise). If V8 is compiled with these, then V8Js needs to provide two +"binary blobs" to V8, named `natives_blob.bin` and `snapshot_blob.bin`. +In that case copy those two files to `/usr/share/v8/...`. + +Compile latest V8 ----------------- ``` @@ -25,11 +41,15 @@ fetch v8 cd v8 # (optional) If you'd like to build a certain version: -git checkout 3.32.6 +git checkout 4.9.385.28 gclient sync -# Build (disable snapshots for V8 > 4.4.9.1) -make native library=shared snapshot=off -j8 +# use libicu of operating system +export GYP_DEFINES="use_system_icu=1" + +# Build (with internal snapshots) +export GYPFLAGS="-Dv8_use_external_startup_data=0" +make native library=shared snapshot=on -j8 # Install to /usr sudo mkdir -p /usr/lib /usr/include @@ -40,16 +60,9 @@ echo -e "create /usr/lib/libv8_libplatform.a\naddlib out/native/obj.target/tools Then add `extension=v8js.so` to your php.ini file. If you have a separate configuration for CLI, add it there also. -* If the V8 library is newer than 4.4.9.1 you need to pass `snapshot=off` to - `make`, otherwise the V8 library will not be usable - (see V8 [Issue 4192](https://code.google.com/p/v8/issues/detail?id=4192)) * If you don't want to overwrite the system copy of v8, replace `/usr` in the above commands with some other path like `/opt/v8` and then add `--with-v8js=/opt/v8` to the php-v8js `./configure` command below. -* If you do that with a v8 library of 4.2 branch or newer, then you need - to fix the RUNPATH header in the v8js.so library so the libicui18n.so - is found. By default it is set to `$ORIGIN/lib.target/`, however the files - lie side by side. Use `chrpath -r '$ORIGIN' libv8.so` to fix. `libv8_libplatform.a` should not be copied directly since it's a thin archive, i.e. it contains only pointers to the build objects, which @@ -62,7 +75,7 @@ Compile php-v8js itself ``` cd /tmp -git clone https://github.com/preillyme/v8js.git +git clone https://github.com/phpv8/v8js.git cd v8js phpize ./configure