v8: Refactor package and update to version 3.25.9.
This now uses fetchurl instead of fetchsvn and now invokes gyp directly instead of copying over the gyp command to the source tree. Also, we're now using stdenv.is64bit to properly determine the host architecture. Signed-off-by: aszlig <aszlig@redmoonstudios.org>
This commit is contained in:
@@ -1,65 +1,66 @@
|
|||||||
{ stdenv, fetchsvn, gyp, readline, python, which }:
|
{ stdenv, fetchurl, gyp, readline, python, which, icu }:
|
||||||
|
|
||||||
assert readline != null;
|
assert readline != null;
|
||||||
|
|
||||||
let
|
let
|
||||||
system = stdenv.system;
|
arch = if stdenv.is64bit then "x64" else "ia32";
|
||||||
arch = if system == "i686-linux" then "ia32" else if system == "x86_64-linux" || system == "x86_64-darwin" then "x64" else "";
|
|
||||||
version = "3.14.5.9";
|
|
||||||
in
|
in
|
||||||
|
|
||||||
assert arch != "";
|
stdenv.mkDerivation rec {
|
||||||
|
name = "v8-${version}";
|
||||||
|
version = "3.25.9";
|
||||||
|
|
||||||
stdenv.mkDerivation {
|
src = fetchurl {
|
||||||
name = "v8-${version}";
|
url = "https://commondatastorage.googleapis.com/chromium-browser-official/"
|
||||||
|
+ "${name}.tar.bz2";
|
||||||
|
sha256 = "0x6czv99dr701vljyb4ghyhhc5rmv7vfkpvigcnrqz2an9q1pc28";
|
||||||
|
};
|
||||||
|
|
||||||
src = fetchsvn {
|
configurePhase = ''
|
||||||
url = "http://v8.googlecode.com/svn/tags/${version}";
|
PYTHONPATH="tools/generate_shim_headers:$PYTHONPATH" \
|
||||||
sha256 = "18qp5qp5xrb6f00w01cklz358yrl54pks963f5rwvwz82d8sfyqr";
|
${gyp}/bin/gyp \
|
||||||
name = "v8-${version}-src";
|
-f make \
|
||||||
};
|
--generator-output="out" \
|
||||||
|
-Dflock_index=0 \
|
||||||
|
-Dv8_enable_i18n_support=1 \
|
||||||
|
-Duse_system_icu=1 \
|
||||||
|
-Dconsole=readline \
|
||||||
|
-Dcomponent=shared_library \
|
||||||
|
-Dv8_target_arch=${arch} \
|
||||||
|
--depth=. -Ibuild/standalone.gypi \
|
||||||
|
build/all.gyp
|
||||||
|
'';
|
||||||
|
|
||||||
patches = [ ./fix-GetLocalizedMessage-usage.patch ];
|
nativeBuildInputs = [ which ];
|
||||||
|
buildInputs = [ readline python icu ];
|
||||||
|
|
||||||
configurePhase = ''
|
buildFlags = [
|
||||||
mkdir build/gyp
|
"LINK=g++"
|
||||||
ln -sv ${gyp}/bin/gyp build/gyp/gyp
|
"-C out"
|
||||||
'';
|
"builddir=$(CURDIR)/Release"
|
||||||
|
"BUILDTYPE=Release"
|
||||||
|
];
|
||||||
|
|
||||||
nativeBuildInputs = [ which ];
|
enableParallelBuilding = true;
|
||||||
buildInputs = [ readline python ];
|
|
||||||
|
|
||||||
buildFlags = [
|
installPhase = ''
|
||||||
"library=shared"
|
install -vD out/Release/d8 "$out/bin/d8"
|
||||||
"console=readline"
|
${if stdenv.system == "x86_64-darwin" then ''
|
||||||
"${arch}.release"
|
install -vD out/Release/lib.target/libv8.dylib "$out/lib/libv8.dylib"
|
||||||
];
|
'' else ''
|
||||||
|
install -vD out/Release/lib.target/libv8.so "$out/lib/libv8.so"
|
||||||
|
''}
|
||||||
|
cp -vr include "$out/"
|
||||||
|
'';
|
||||||
|
|
||||||
# http://code.google.com/p/v8/issues/detail?id=2149
|
postFixup = if stdenv.isDarwin then ''
|
||||||
NIX_CFLAGS_COMPILE = "-Wno-unused-local-typedefs -Wno-aggressive-loop-optimizations";
|
install_name_tool -change /usr/local/lib/libv8.dylib $out/lib/libv8.dylib -change /usr/lib/libgcc_s.1.dylib ${stdenv.gcc.gcc}/lib/libgcc_s.1.dylib $out/bin/d8
|
||||||
|
install_name_tool -id $out/lib/libv8.dylib -change /usr/lib/libgcc_s.1.dylib ${stdenv.gcc.gcc}/lib/libgcc_s.1.dylib $out/lib/libv8.dylib
|
||||||
|
'' else null;
|
||||||
|
|
||||||
enableParallelBuilding = true;
|
meta = with stdenv.lib; {
|
||||||
|
description = "V8 is Google's open source JavaScript engine";
|
||||||
installPhase = ''
|
platforms = platforms.linux ++ platforms.darwin;
|
||||||
mkdir -p $out/bin
|
license = licenses.bsd3;
|
||||||
mkdir -p $out/lib
|
};
|
||||||
mv -v out/${arch}.release/d8 $out/bin
|
|
||||||
|
|
||||||
${if stdenv.system == "x86_64-darwin" then
|
|
||||||
"mv -v out/${arch}.release/libv8.dylib $out/lib"
|
|
||||||
else
|
|
||||||
"mv -v out/${arch}.release/lib.target/libv8.so $out/lib"}
|
|
||||||
mv -v include $out/
|
|
||||||
'';
|
|
||||||
|
|
||||||
postFixup = if stdenv.isDarwin then ''
|
|
||||||
install_name_tool -change /usr/local/lib/libv8.dylib $out/lib/libv8.dylib -change /usr/lib/libgcc_s.1.dylib ${stdenv.gcc.gcc}/lib/libgcc_s.1.dylib $out/bin/d8
|
|
||||||
install_name_tool -id $out/lib/libv8.dylib -change /usr/lib/libgcc_s.1.dylib ${stdenv.gcc.gcc}/lib/libgcc_s.1.dylib $out/lib/libv8.dylib
|
|
||||||
'' else null;
|
|
||||||
|
|
||||||
meta = with stdenv.lib; {
|
|
||||||
description = "V8 is Google's open source JavaScript engine";
|
|
||||||
platforms = platforms.linux ++ platforms.darwin;
|
|
||||||
license = licenses.bsd3;
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user