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:
aszlig 2014-03-17 22:03:06 +01:00
parent 9f45c2cbba
commit 8ddc86d6e4
No known key found for this signature in database
GPG Key ID: D0EBD0EC8C2DC961

View File

@ -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;
};
} }