diff options
Diffstat (limited to 'nixpkgs/pkgs/development/libraries/v8')
-rw-r--r-- | nixpkgs/pkgs/development/libraries/v8/3.14.nix | 86 | ||||
-rw-r--r-- | nixpkgs/pkgs/development/libraries/v8/5_x.nix | 199 | ||||
-rw-r--r-- | nixpkgs/pkgs/development/libraries/v8/darwin.patch | 22 | ||||
-rw-r--r-- | nixpkgs/pkgs/development/libraries/v8/default.nix | 135 | ||||
-rw-r--r-- | nixpkgs/pkgs/development/libraries/v8/libv8-5.4.232.patch | 97 | ||||
-rw-r--r-- | nixpkgs/pkgs/development/libraries/v8/plv8_6_x.nix | 189 | ||||
-rwxr-xr-x | nixpkgs/pkgs/development/libraries/v8/update.sh | 47 |
7 files changed, 775 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/libraries/v8/3.14.nix b/nixpkgs/pkgs/development/libraries/v8/3.14.nix new file mode 100644 index 000000000000..febadc2d6ac8 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/v8/3.14.nix @@ -0,0 +1,86 @@ +# This old version of V8 is still needed for the R V8 module +{ stdenv, fetchFromGitHub, gyp, readline, python, which, icu, ... }: + +assert readline != null; + +with stdenv.lib; +let + version = "3.14.5.10"; + sha256 = "08vhl84166x13b3cbx8y0g99yqx772zd33gawsa1nxqkyrykql6k"; + + arch = if stdenv.is64bit then "x64" else "ia32"; + +in +stdenv.mkDerivation { + pname = "v8"; + inherit version; + + src = fetchFromGitHub { + owner = "v8"; + repo = "v8"; + rev = version; + inherit sha256; + }; + patchPhase = '' + sed -i 's,#!/usr/bin/env python,#!${python}/bin/python,' build/gyp_v8 + sed -i 's,#!/usr/bin/python,#!${python}/bin/python,' build/gyp_v8 + ''; + + configurePhase = '' + PYTHONPATH="tools/generate_shim_headers:$PYTHONPATH" \ + PYTHONPATH="$(toPythonPath ${gyp}):$PYTHONPATH" \ + build/gyp_v8 \ + -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} + ''; + + nativeBuildInputs = [ which ]; + buildInputs = [ readline python icu ]; + + # http://code.google.com/p/v8/issues/detail?id=2149 + NIX_CFLAGS_COMPILE = concatStringsSep " " [ + "-Wno-error=strict-overflow" + "-Wno-unused-local-typedefs" + "-Wno-aggressive-loop-optimizations" + ]; + + buildFlags = [ + "LINK=g++" + "-C out" + "builddir=$(CURDIR)/Release" + "BUILDTYPE=Release" + ]; + + postPatch = stdenv.lib.optionalString (!stdenv.cc.isClang) '' + sed -i build/standalone.gyp -e 's,-Wno-format-pedantic,,g' + ''; + + enableParallelBuilding = true; + + installPhase = '' + install -vD out/Release/d8 "$out/bin/d8" + ${if stdenv.hostPlatform.system == "x86_64-darwin" then '' + 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/" + ''; + + 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.cc.cc.lib}/lib/libgcc_s.1.dylib $out/bin/d8 + install_name_tool -id $out/lib/libv8.dylib -change /usr/lib/libgcc_s.1.dylib ${stdenv.cc.cc.lib}/lib/libgcc_s.1.dylib $out/lib/libv8.dylib + '' else null; + + meta = with stdenv.lib; { + description = "Google's open source JavaScript engine"; + platforms = [ "x86_64-linux" "i686-linux" ]; + license = licenses.bsd3; + }; +} diff --git a/nixpkgs/pkgs/development/libraries/v8/5_x.nix b/nixpkgs/pkgs/development/libraries/v8/5_x.nix new file mode 100644 index 000000000000..050abe9e81bf --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/v8/5_x.nix @@ -0,0 +1,199 @@ +{ stdenv, lib, fetchgit, fetchFromGitHub, gyp, readline, python, which, icu +, patchelf, coreutils, xcbuild +, doCheck ? false +, static ? false +}: + +assert readline != null; + +let + arch = if stdenv.isx86_64 then "x64" + else if stdenv.isi686 then "ia32" + else if stdenv.isAarch64 then "arm64" + else if stdenv.isAarch32 then "arm" + else throw "Unknown architecture for v8"; + git_url = "https://chromium.googlesource.com"; + clangFlag = if stdenv.isDarwin then "1" else "0"; + sharedFlag = if static then "static_library" else "shared_library"; + + deps = { + build = fetchgit { + url = "${git_url}/chromium/src/build.git"; + rev = "2c67d4d74b6b3673228fab191918500a582ef3b0"; + sha256 = "0jc7hci5yh792pw0ahjfxrk5xzllnlrv9llmwlgcgn2x8x6bn34q"; + }; + "tools/gyp" = fetchgit { + url = "${git_url}/external/gyp.git"; + rev = "e7079f0e0e14108ab0dba58728ff219637458563"; + sha256 = "0yd1ds13z0r9d2sb67f9i1gjn1zgzwyfv96qqqp6pn5pcfbialg6"; + }; + "third_party/icu" = fetchgit { + url = "${git_url}/chromium/deps/icu.git"; + rev = "b5ecbb29a26532f72ef482569b223d5a51fd50bf"; + sha256 = "0ld47wdnk8grcba221z67l3pnphv9zwifk4y44f5b946w3iwmpns"; + }; + buildtools = fetchgit { + url = "${git_url}/chromium/buildtools.git"; + rev = "60f7f9a8b421ebf9a46041dfa2ff11c0fe59c582"; + sha256 = "0i10bw7yhslklqwcx5krs3k05sicb73cpwd0mkaz96yxsvmkvjq0"; + }; + "base/trace_event/common" = fetchgit { + url = "${git_url}/chromium/src/base/trace_event/common.git"; + rev = "315bf1e2d45be7d53346c31cfcc37424a32c30c8"; + sha256 = "1pp2ygvp20j6g4868hrmiw0j704kdvsi9d9wx2gbk7w79rc36695"; + }; + "platform/inspector_protocol" = fetchgit { + url = "${git_url}/chromium/src/third_party/WebKit/Source/platform/inspector_protocol.git"; + rev = "f49542089820a34a9a6e33264e09b73779407512"; + sha256 = "1lwpass3p4rpp2kjmxxxpkqyv4lznxhf4i0yy7mmrd7jkpc7kn8k"; + }; + "tools/mb" = fetchgit { + url = "${git_url}/chromium/src/tools/mb.git"; + rev = "0c4dc43c454f26936ddf3074ab8e9a41e3dc03a3"; + sha256 = "0f96qphbmwn1pprv0a6xf68p01s1jzx2sz6pmadqbrs1dgh1xwnk"; + }; + "tools/swarming_client" = fetchgit { + url = "${git_url}/external/swarming.client.git"; + rev = "7f63a272f7d9785ce41b6d10bb3106c49a968e57"; + sha256 = "1pmb8bq4qifjf2dzz8c4jdwhlvwgrl9ycjaalcyh1sbh4lx3yvv2"; + }; + "testing/gtest" = fetchgit { + url = "${git_url}/external/github.com/google/googletest.git"; + rev = "6f8a66431cb592dad629028a50b3dd418a408c87"; + sha256 = "0bdba2lr6pg15bla9600zg0r0vm4lnrx0wqz84p376wfdxra24vw"; + }; + "testing/gmock" = fetchgit { + url = "${git_url}/external/googlemock.git"; + rev = "0421b6f358139f02e102c9c332ce19a33faf75be"; + sha256 = "1xiky4v98maxs8fg1avcd56y0alv3hw8qyrlpd899zgzbq2k10pp"; + }; + "test/benchmarks/data" = fetchgit { + url = "${git_url}/v8/deps/third_party/benchmarks.git"; + rev = "05d7188267b4560491ff9155c5ee13e207ecd65f"; + sha256 = "0ad2ay14bn67d61ks4dmzadfnhkj9bw28r4yjdjjyzck7qbnzchl"; + }; + "test/mozilla/data" = fetchgit { + url = "${git_url}/v8/deps/third_party/mozilla-tests.git"; + rev = "f6c578a10ea707b1a8ab0b88943fe5115ce2b9be"; + sha256 = "0rfdan76yfawqxbwwb35aa57b723j3z9fx5a2w16nls02yk2kqyn"; + }; + "test/simdjs/data" = fetchgit { + url = "${git_url}/external/github.com/tc39/ecmascript_simd.git"; + rev = "baf493985cb9ea7cdbd0d68704860a8156de9556"; + sha256 = "178r0k40a58c1187gfzqz2i6as34l8cliy1g1x870wyy0qcvlq2q"; + }; + "test/test262/data" = fetchgit { + url = "${git_url}/external/github.com/tc39/test262.git"; + rev = "88bc7fe7586f161201c5f14f55c9c489f82b1b67"; + sha256 = "0gc7fmaqrgwb6rl02jnrm3synpwzzg0dfqy3zm386r1qcisl93xs"; + }; + "test/test262/harness" = fetchgit { + url = "${git_url}/external/github.com/test262-utils/test262-harness-py.git"; + rev = "cbd968f54f7a95c6556d53ba852292a4c49d11d8"; + sha256 = "094c3600a4wh1m3fvvlivn290kik1pzzvwabq77lk8bh4jkkv7ki"; + }; + "tools/clang" = fetchgit { + url = "${git_url}/chromium/src/tools/clang.git"; + rev = "496622ab4aaa5be7e5a9b80617013cb02f45dc87"; + sha256 = "1gkhk2bzpxwzkirzcqfixxpprbr8mn6rk00krm25daarm3smydmf"; + }; + }; + +in + +stdenv.mkDerivation rec { + pname = "v8"; + version = "5.4.232"; + + inherit doCheck; + + src = fetchFromGitHub { + owner = "v8"; + repo = "v8"; + rev = version; + sha256 = "1nqxbkz75m8xrjih0sj3f3iqvif4192vxdaxzy8r787rihjwg9nx"; + }; + + postUnpack = '' + ${lib.concatStringsSep "\n" ( + lib.mapAttrsToList (n: v: '' + mkdir -p $sourceRoot/${n} + cp -r ${v}/* $sourceRoot/${n} + '') deps)} + ''; + + # Patch based off of: + # https://github.com/cowboyd/libv8/tree/v5.1.281.67.0/patches + patches = lib.optional (!doCheck) ./libv8-5.4.232.patch; + + postPatch = '' + sed -i 's,#!/usr/bin/env python,#!${python}/bin/python,' gypfiles/gyp_v8 + sed -i 's,/bin/echo,${coreutils}/bin/echo,' gypfiles/standalone.gypi + sed -i '/CR_CLANG_REVISION/ d' gypfiles/standalone.gypi + sed -i 's/-Wno-format-pedantic//g' gypfiles/standalone.gypi + ''; + + configurePhase = '' + PYTHONPATH="tools/generate_shim_headers:$PYTHONPATH" \ + PYTHONPATH="$(toPythonPath ${gyp}):$PYTHONPATH" \ + gypfiles/gyp_v8 \ + -f make \ + --generator-output="out" \ + -Dflock_index=0 \ + -Dclang=${clangFlag} \ + -Dv8_enable_i18n_support=1 \ + -Duse_system_icu=1 \ + -Dcomponent=${sharedFlag} \ + -Dconsole=readline \ + -Dv8_target_arch=${arch} \ + -Dv8_use_external_startup_data=0 + ''; + + nativeBuildInputs = [ which ]; + buildInputs = [ readline python icu ] + ++ stdenv.lib.optional stdenv.isDarwin xcbuild + ++ stdenv.lib.optional stdenv.isLinux patchelf; + + NIX_CFLAGS_COMPILE = "-Wno-error=strict-overflow -Wno-error=unused-function -Wno-error=attributes" + + stdenv.lib.optionalString stdenv.cc.isClang " -Wno-error=unused-lambda-capture"; + + buildFlags = [ + "LINK=c++" + "-C out" + "builddir=$(CURDIR)/Release" + "BUILDTYPE=Release" + ]; + + enableParallelBuilding = true; + + dontUpdateAutotoolsGnuConfigScripts = if stdenv.isAarch64 then true else null; + + # the `libv8_libplatform` target is _only_ built as a static library, + # and is expected to be statically linked in when needed. + # see the following link for further commentary: + # https://github.com/cowboyd/therubyracer/issues/391 + installPhase = '' + install -vD out/Release/d8 "$out/bin/d8" + install -vD out/Release/mksnapshot "$out/bin/mksnapshot" + ${if static then "" + else if stdenv.isDarwin then '' + install -vD out/Release/libv8.dylib "$out/lib/libv8.dylib" + install_name_tool -change /usr/local/lib/libv8.dylib $out/lib/libv8.dylib -change /usr/lib/libgcc_s.1.dylib ${stdenv.cc.cc.lib}/lib/libgcc_s.1.dylib $out/bin/d8 + install_name_tool -id $out/lib/libv8.dylib -change /usr/lib/libgcc_s.1.dylib ${stdenv.cc.cc.lib}/lib/libgcc_s.1.dylib $out/lib/libv8.dylib + '' else '' + install -vD out/Release/lib.target/libv8.so "$out/lib/libv8.so" + ''} + mkdir -p "$out/include" + cp -vr include/*.h "$out/include" + cp -vr include/libplatform "$out/include" + mkdir -p "$out/lib" + cp -v out/Release/*.a "$out/lib" + ''; + + meta = with lib; { + description = "Google's open source JavaScript engine"; + maintainers = with maintainers; [ cstrahan proglodyte ]; + platforms = platforms.linux ++ platforms.darwin; + license = licenses.bsd3; + }; +} diff --git a/nixpkgs/pkgs/development/libraries/v8/darwin.patch b/nixpkgs/pkgs/development/libraries/v8/darwin.patch new file mode 100644 index 000000000000..629d5e4dc392 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/v8/darwin.patch @@ -0,0 +1,22 @@ +diff --git a/toolchain/gcc_toolchain.gni b/toolchain/gcc_toolchain.gni +index 80e2a362a..df138c87b 100644 +--- a/build/toolchain/gcc_toolchain.gni ++++ b/build/toolchain/gcc_toolchain.gni +@@ -355,6 +355,8 @@ template("gcc_toolchain") { + # AIX does not support either -D (deterministic output) or response + # files. + command = "$ar -X64 {{arflags}} -r -c -s {{output}} {{inputs}}" ++ } else if (current_os == "mac") { ++ command = "$ar {{arflags}} -r -c -s {{output}} {{inputs}}" + } else { + rspfile = "{{output}}.rsp" + rspfile_content = "{{inputs}}" +@@ -546,7 +548,7 @@ template("gcc_toolchain") { + + start_group_flag = "" + end_group_flag = "" +- if (current_os != "aix") { ++ if (current_os != "aix" && current_os != "mac") { + # the "--start-group .. --end-group" feature isn't available on the aix ld. + start_group_flag = "-Wl,--start-group" + end_group_flag = "-Wl,--end-group " diff --git a/nixpkgs/pkgs/development/libraries/v8/default.nix b/nixpkgs/pkgs/development/libraries/v8/default.nix new file mode 100644 index 000000000000..a02e540173d8 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/v8/default.nix @@ -0,0 +1,135 @@ +{ stdenv, lib, fetchgit, fetchFromGitHub +, gn, ninja, python, glib, pkgconfig, icu +, xcbuild, darwin +, fetchpatch +}: + +let + git_url = "https://chromium.googlesource.com"; + + # This data is from the DEPS file in the root of a V8 checkout + deps = { + "base/trace_event/common" = fetchgit { + url = "${git_url}/chromium/src/base/trace_event/common.git"; + rev = "936ba8a963284a6b3737cf2f0474a7131073abee"; + sha256 = "14nr22fqdpxma1kzjflj6a865vr3hfnnm2gs4vcixyq4kmfzfcy2"; + }; + build = fetchgit { + url = "${git_url}/chromium/src/build.git"; + rev = "325e95d6dae64f35b160b3dc7d73218cee5ec079"; + sha256 = "0dddyxa76p2xpjhmxif05v63i5ar6h5v684fdl667sg84f5bhhxf"; + }; + "third_party/googletest/src" = fetchgit { + url = "${git_url}/external/github.com/google/googletest.git"; + rev = "5ec7f0c4a113e2f18ac2c6cc7df51ad6afc24081"; + sha256 = "0gmr10042c0xybxnn6g7ndj1na1mmd3l9w7449qlcv4s8gmfs7k6"; + }; + "third_party/icu" = fetchgit { + url = "${git_url}/chromium/deps/icu.git"; + rev = "960f195aa87acaec46e6104ec93a596da7ae0843"; + sha256 = "073kh6gpcairgjxf3hlhpqljc13gwl2aj8fz91fv220xibwqs834"; + }; + "third_party/jinja2" = fetchgit { + url = "${git_url}/chromium/src/third_party/jinja2.git"; + rev = "b41863e42637544c2941b574c7877d3e1f663e25"; + sha256 = "1qgilclkav67m6cl2xq2kmzkswrkrb2axc2z8mw58fnch4j1jf1r"; + }; + "third_party/markupsafe" = fetchgit { + url = "${git_url}/chromium/src/third_party/markupsafe.git"; + rev = "8f45f5cfa0009d2a70589bcda0349b8cb2b72783"; + sha256 = "168ppjmicfdh4i1l0l25s86mdbrz9fgxmiq1rx33x79mph41scfz"; + }; + }; + +in + +stdenv.mkDerivation rec { + pname = "v8"; + version = "7.4.255"; + + doCheck = true; + + patches = [ + (fetchpatch { + url = "https://raw.githubusercontent.com/RPi-Distro/chromium-browser/master/debian/patches/revert-Xclang-instcombine-lower-dbg-declare.patch"; + sha256 = "02hczcg43m36q8j1kv5j3hq9czj9niiil9w13w22vzv2f3c67dvn"; + }) + ./darwin.patch + ]; + + src = fetchFromGitHub { + owner = "v8"; + repo = "v8"; + rev = version; + sha256 = "14i0c71hmffzqnq9n73dh9dnabdxhbjhzkhqpk5yv9y90bwrzi2n"; + }; + + postUnpack = '' + ${lib.concatStringsSep "\n" ( + lib.mapAttrsToList (n: v: '' + mkdir -p $sourceRoot/${n} + cp -r ${v}/* $sourceRoot/${n} + '') deps)} + chmod u+w -R . + ''; + + postPatch = stdenv.lib.optionalString stdenv.isAarch64 '' + substituteInPlace build/toolchain/linux/BUILD.gn \ + --replace 'toolprefix = "aarch64-linux-gnu-"' 'toolprefix = ""' + ''; + + gnFlags = [ + "use_custom_libcxx=false" + "is_clang=${if stdenv.cc.isClang then "true" else "false"}" + "use_sysroot=false" + # "use_system_icu=true" + "is_component_build=false" + "v8_use_external_startup_data=false" + "v8_monolithic=true" + "is_debug=true" + "is_official_build=false" + "treat_warnings_as_errors=false" + "v8_enable_i18n_support=true" + "use_gold=false" + "use_system_xcode=true" + # ''custom_toolchain="//build/toolchain/linux/unbundle:default"'' + ''host_toolchain="//build/toolchain/linux/unbundle:default"'' + ''v8_snapshot_toolchain="//build/toolchain/linux/unbundle:default"'' + ] ++ stdenv.lib.optional stdenv.cc.isClang ''clang_base_path="${stdenv.cc}"''; + + # with gcc8, -Wclass-memaccess became part of -Wall and causes logging limit + # to be exceeded + NIX_CFLAGS_COMPILE = stdenv.lib.optionalString stdenv.cc.isGNU "-Wno-class-memaccess"; + + nativeBuildInputs = [ gn ninja pkgconfig python ] + ++ stdenv.lib.optionals stdenv.isDarwin [ xcbuild darwin.DarwinTools ]; + buildInputs = [ glib icu ]; + + ninjaFlags = [ ":d8" "v8_monolith" ]; + + enableParallelBuilding = true; + + installPhase = '' + install -D d8 $out/bin/d8 + install -D obj/libv8_monolith.a $out/lib/libv8.a + cp -r ../../include $out + + mkdir -p $out/lib/pkgconfig + cat > $out/lib/pkgconfig/v8.pc << EOF + Name: v8 + Description: V8 JavaScript Engine + Version: ${version} + Libs: -L$out/lib -lv8 -pthread + Cflags: -I$out/include + Libs: -L$out/lib -lpulse + Cflags: -I$out/include + EOF + ''; + + meta = with lib; { + description = "Google's open source JavaScript engine"; + maintainers = with maintainers; [ cstrahan proglodyte matthewbauer ]; + platforms = platforms.unix; + license = licenses.bsd3; + }; +} diff --git a/nixpkgs/pkgs/development/libraries/v8/libv8-5.4.232.patch b/nixpkgs/pkgs/development/libraries/v8/libv8-5.4.232.patch new file mode 100644 index 000000000000..16c227cfe38d --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/v8/libv8-5.4.232.patch @@ -0,0 +1,97 @@ +From c9f42d1314c6026efcfcc01824f4e2fdfd05ebcf Mon Sep 17 00:00:00 2001 +From: Ben Sklaroff <bsklaroff@gmail.com> +Date: Sat, 23 Jul 2016 18:16:55 -0400 +Subject: [PATCH] libv8-5.4.232 + +--- + Makefile | 5 +---- + gypfiles/all.gyp | 32 -------------------------------- + gypfiles/standalone.gypi | 5 ++++- + 3 files changed, 5 insertions(+), 37 deletions(-) + +diff --git a/Makefile b/Makefile +index 5ea5c58..d1b2d73 100644 +--- a/Makefile ++++ b/Makefile +@@ -261,11 +261,8 @@ GYPFILES = third_party/icu/icu.gypi third_party/icu/icu.gyp \ + gypfiles/shim_headers.gypi gypfiles/features.gypi \ + gypfiles/standalone.gypi \ + gypfiles/toolchain.gypi gypfiles/all.gyp gypfiles/mac/asan.gyp \ +- test/cctest/cctest.gyp test/fuzzer/fuzzer.gyp \ +- test/unittests/unittests.gyp src/v8.gyp \ +- tools/parser-shell.gyp testing/gmock.gyp testing/gtest.gyp \ + buildtools/third_party/libc++abi/libc++abi.gyp \ +- buildtools/third_party/libc++/libc++.gyp samples/samples.gyp \ ++ buildtools/third_party/libc++/libc++.gyp \ + src/third_party/vtune/v8vtune.gyp src/d8.gyp + + # If vtunejit=on, the v8vtune.gyp will be appended. +diff --git a/gypfiles/all.gyp b/gypfiles/all.gyp +index ff1bea4..96820a0 100644 +--- a/gypfiles/all.gyp ++++ b/gypfiles/all.gyp +@@ -16,38 +16,6 @@ + '../tools/parser-shell.gyp:parser-shell', + ], + }], +- # These items don't compile for Android on Mac. +- ['host_os!="mac" or OS!="android"', { +- 'dependencies': [ +- '../samples/samples.gyp:*', +- '../test/cctest/cctest.gyp:*', +- '../test/fuzzer/fuzzer.gyp:*', +- '../test/unittests/unittests.gyp:*', +- ], +- }], +- ['test_isolation_mode != "noop"', { +- 'dependencies': [ +- '../test/bot_default.gyp:*', +- '../test/benchmarks/benchmarks.gyp:*', +- '../test/default.gyp:*', +- '../test/ignition.gyp:*', +- '../test/intl/intl.gyp:*', +- '../test/message/message.gyp:*', +- '../test/mjsunit/mjsunit.gyp:*', +- '../test/mozilla/mozilla.gyp:*', +- '../test/optimize_for_size.gyp:*', +- '../test/perf.gyp:*', +- '../test/preparser/preparser.gyp:*', +- '../test/simdjs/simdjs.gyp:*', +- '../test/test262/test262.gyp:*', +- '../test/webkit/webkit.gyp:*', +- '../tools/check-static-initializers.gyp:*', +- '../tools/gcmole/run_gcmole.gyp:*', +- '../tools/jsfunfuzz/jsfunfuzz.gyp:*', +- '../tools/run-deopt-fuzzer.gyp:*', +- '../tools/run-valgrind.gyp:*', +- ], +- }], + ] + } + ] +diff --git a/gypfiles/standalone.gypi b/gypfiles/standalone.gypi +index 89f06a0..a43976d 100644 +--- a/gypfiles/standalone.gypi ++++ b/gypfiles/standalone.gypi +@@ -506,6 +506,9 @@ + }], # fastbuild!=0 + ], + 'target_conditions': [ ++ ['_type=="static_library"', { ++ 'standalone_static_library': 1, ++ }], + ['v8_code == 0', { + 'defines!': [ + 'DEBUG', +@@ -770,7 +773,7 @@ + [ 'visibility=="hidden" and v8_enable_backtrace==0', { + 'cflags': [ '-fvisibility=hidden' ], + }], +- [ 'component=="shared_library"', { ++ [ 'component=="shared_library" or component=="static_library" and (v8_target_arch=="x64" or v8_target_arch=="arm64" or v8_target_arch=="arm")', { + 'cflags': [ '-fPIC', ], + }], + [ 'clang==0 and coverage==1', { +-- +2.9.0 + diff --git a/nixpkgs/pkgs/development/libraries/v8/plv8_6_x.nix b/nixpkgs/pkgs/development/libraries/v8/plv8_6_x.nix new file mode 100644 index 000000000000..782d324c8be0 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/v8/plv8_6_x.nix @@ -0,0 +1,189 @@ +# NOTE: this expression is NOT exported from the top-level of all-packages.nix, +# it is exclusively used by the 'plv8' PostgreSQL extension. +# Since plv8 2.3.2, plv8 no longer requires this specific version, but as of +# 2019-08-29, nixpkgs does not have v8 6.x, and v8_5 is bumped to 5.4.232, which +# is a bit outdated. plv8 3.x is planned to support v8 7.x + +{ stdenv, lib, fetchgit, fetchFromGitHub, gn, ninja, python, glib, pkgconfig +, doCheck ? false +, snapshot ? true +}: + +let + arch = if stdenv.isAarch32 + then if stdenv.is64bit + then"arm64" + else "arm" + else if stdenv.is64bit + then"x64" + else "ia32"; + git_url = "https://chromium.googlesource.com"; + + # This data is from the DEPS file in the root of a V8 checkout + deps = { + "base/trace_event/common" = fetchgit { + url = "${git_url}/chromium/src/base/trace_event/common.git"; + rev = "0e9a47d74970bee1bbfc063c47215406f8918699"; + sha256 = "07rbzrlscp8adh4z86yl5jxdnvgkc3xs950xldpk318wf9i3bh6c"; + }; + build = fetchgit { + url = "${git_url}/chromium/src/build.git"; + rev = "9338ce52d0b9bcef34c38285fbd5023b62739fac"; + sha256 = "1s2sa8dy3waidsirjylc82ggb18l1108bczjc8z0v4ywyj4k0cvh"; + }; + buildtools = fetchgit { + url = "${git_url}/chromium/buildtools.git"; + rev = "505de88083136eefd056e5ee4ca0f01fe9b33de8"; + sha256 = "0vj216nhb803bggsl0hnyagj8njrm96pn8sim6xcnqb7nhz1vabw"; + }; + "test/benchmarks/data" = fetchgit { + url = "${git_url}/v8/deps/third_party/benchmarks.git"; + rev = "05d7188267b4560491ff9155c5ee13e207ecd65f"; + sha256 = "0ad2ay14bn67d61ks4dmzadfnhkj9bw28r4yjdjjyzck7qbnzchl"; + }; + "test/mozilla/data" = fetchgit { + url = "${git_url}/v8/deps/third_party/mozilla-tests.git"; + rev = "f6c578a10ea707b1a8ab0b88943fe5115ce2b9be"; + sha256 = "0rfdan76yfawqxbwwb35aa57b723j3z9fx5a2w16nls02yk2kqyn"; + }; + "test/test262/data" = fetchgit { + url = "${git_url}/external/github.com/tc39/test262.git"; + rev = "5d4c667b271a9b39d0de73aef5ffe6879c6f8811"; + sha256 = "0q9iwb2nkybf9np95wgf5m372aw2lhx9wlsw41a2a80kbkvb2kqg"; + }; + "test/test262/harness" = fetchgit { + url = "${git_url}/external/github.com/test262-utils/test262-harness-py.git"; + rev = "0f2acdd882c84cff43b9d60df7574a1901e2cdcd"; + sha256 = "00brj5avp43yamc92kinba2mg3a2x1rcd7wnm7z093l73idprvkp"; + }; + "test/wasm-js" = fetchgit { + url = "${git_url}/external/github.com/WebAssembly/spec.git"; + rev = "a7e226a92e660a3d5413cfea4269824f513259d2"; + sha256 = "0z3aybj3ykajwh2bv5fwd6pwqjjsq8dnwrqc2wncb6r9xcjwbgxp"; + }; + "testing/gtest" = fetchgit { + url = "${git_url}/external/github.com/google/googletest.git"; + rev = "6f8a66431cb592dad629028a50b3dd418a408c87"; + sha256 = "0bdba2lr6pg15bla9600zg0r0vm4lnrx0wqz84p376wfdxra24vw"; + }; + "third_party/icu" = fetchgit { + url = "${git_url}/chromium/deps/icu.git"; + rev = "741688ebf328da9adc52505248bf4e2ef868722c"; + sha256 = "02ifm18qjlrkn5nm2rxkf9yz9bdlyq7c65jfjndv63vi1drqh1r9"; + }; + "third_party/instrumented_libraries" = fetchgit { + url = "${git_url}/chromium/src/third_party/instrumented_libraries.git"; + rev = "28417458ac4dc79f68915079d0f283f682504cc0"; + sha256 = "1qf5c2946n37p843yriv7xawi6ss6samabghq43s49cgd4wq8dc3"; + }; + "third_party/jinja2" = fetchgit { + url = "${git_url}/chromium/src/third_party/jinja2.git"; + rev = "d34383206fa42d52faa10bb9931d6d538f3a57e0"; + sha256 = "0d9hyw0bvp3p0dbwy833cm9vdqxcam0qbm9jc561ynphddxlkmgd"; + }; + "third_party/markupsafe" = fetchgit { + url = "${git_url}/chromium/src/third_party/markupsafe.git"; + rev = "8f45f5cfa0009d2a70589bcda0349b8cb2b72783"; + sha256 = "168ppjmicfdh4i1l0l25s86mdbrz9fgxmiq1rx33x79mph41scfz"; + }; + "tools/clang" = fetchgit { + url = "${git_url}/chromium/src/tools/clang.git"; + rev = "8688d267571de76a56746324dcc249bf4232b85a"; + sha256 = "0krq4zz1vnwp064bm517gwr2napy18wyccdh8w5s4qgkjwwxd63s"; + }; + "tools/gyp" = fetchgit { + url = "${git_url}/external/gyp.git"; + rev = "d61a9397e668fa9843c4aa7da9e79460fe590bfb"; + sha256 = "1z081h72mjy285jb1kj5xd0pb4p12n9blvsimsavyn3ldmswv0r0"; + }; + "tools/luci-go" = fetchgit { + url = "${git_url}/chromium/src/tools/luci-go.git"; + rev = "45a8a51fda92e123619a69e7644d9c64a320b0c1"; + sha256 = "0r7736gqk7r0i7ig0b5ib10d9q8a8xzsmc0f0fbkm9k78v847vpj"; + }; + "tools/swarming_client" = fetchgit { + url = "${git_url}/infra/luci/client-py.git"; + rev = "4bd9152f8a975d57c972c071dfb4ddf668e02200"; + sha256 = "03zk91gzvqv01g1vbl8d7h8al7vs4ymrrdc8ipg9wpq52yh65smh"; + }; + }; + +in + +stdenv.mkDerivation rec { + pname = "v8"; + version = "6.4.388.40"; + + inherit doCheck; + + src = fetchFromGitHub { + owner = "v8"; + repo = "v8"; + rev = version; + sha256 = "1lq239cgqyidrynz8g3wbdv70ymzv6s0ppad8s219gb3jnizm16a"; + }; + + postUnpack = '' + ${lib.concatStringsSep "\n" ( + lib.mapAttrsToList (n: v: '' + mkdir -p $sourceRoot/${n} + cp -r ${v}/* $sourceRoot/${n} + '') deps)} + ''; + + prePatch = '' + # use our gn, not the bundled one + sed -i -e 's#gn_path = .*#gn_path = "${gn}/bin/gn"#' tools/mb/mb.py + + # disable tests + if [ "$doCheck" = "" ]; then sed -i -e '/"test:gn_all",/d' BUILD.gn; fi + + # disable sysroot usage + chmod u+w build/config build/config/sysroot.gni + sed -i build/config/sysroot.gni \ + -e '/use_sysroot =/ { s#\(use_sysroot =\).*#\1 false#; :a n; /current_cpu/ { s/^/#/; ba }; }' + + # patch shebangs (/usr/bin/env) + patchShebangs tools/dev/v8gen.py + ''; + + configurePhase = '' + tools/dev/v8gen.py -vv ${arch}.release -- \ + is_component_build=true \ + ${if snapshot then "v8_use_external_startup_data=false" else "v8_use_snapshot=false"} \ + is_clang=false \ + linux_use_bundled_binutils=false \ + treat_warnings_as_errors=false \ + use_custom_libcxx=false \ + use_custom_libcxx_for_host=false + ''; + + nativeBuildInputs = [ gn ninja pkgconfig ]; + buildInputs = [ python glib ]; + + buildPhase = '' + ninja -C out.gn/${arch}.release/ + ''; + + enableParallelBuilding = true; + + installPhase = '' + install -vD out.gn/${arch}.release/d8 "$out/bin/d8" + install -vD out.gn/${arch}.release/mksnapshot "$out/bin/mksnapshot" + mkdir -p "$out/lib" + for f in libicui18n.so libicuuc.so libv8_libbase.so libv8_libplatform.so libv8.so; do + install -vD out.gn/${arch}.release/$f "$out/lib/$f" + done + install -vD out.gn/${arch}.release/icudtl.dat "$out/lib/icudtl.dat" + mkdir -p "$out/include" + cp -vr include/*.h "$out/include" + cp -vr include/libplatform "$out/include" + ''; + + meta = with lib; { + description = "Google's open source JavaScript engine"; + maintainers = with maintainers; [ cstrahan proglodyte ]; + platforms = platforms.linux; + license = licenses.bsd3; + }; +} diff --git a/nixpkgs/pkgs/development/libraries/v8/update.sh b/nixpkgs/pkgs/development/libraries/v8/update.sh new file mode 100755 index 000000000000..f046bb8e6885 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/v8/update.sh @@ -0,0 +1,47 @@ +#!/usr/bin/env nix-shell +#! nix-shell -i bash -p curl -p nix-prefetch-git +VERSION_OVERVIEW=https://omahaproxy.appspot.com/all?os=linux +TARGET_CHANNEL=beta +FILE_PATH=6_x.nix + +set -eo pipefail + +v8_version=$(curl -s "$VERSION_OVERVIEW" | awk -F "," "\$2 ~ /${TARGET_CHANNEL}/ { print \$11 }") + +echo "Using V8 version --> $v8_version" +sed -e "s#\\(version = \\)\"[0-9\.]*\"#\1\"$v8_version\"#" -i ${FILE_PATH} + +sha256=$(nix-prefetch-git --no-deepClone https://github.com/v8/v8.git "refs/tags/${v8_version}" \ + | sed -ne '/sha256/ { s#.*: "\(.*\)".*#\1#; p }') +sed -e "/repo = \"v8\"/ { n;n; s#\".*\"#\"${sha256}\"# }" -i ${FILE_PATH} + +deps="$(mktemp)" + +curl -s -o "$deps" "https://raw.githubusercontent.com/v8/v8/${v8_version}/DEPS" +echo $deps + +sed -ne '/= fetchgit {/ { s/.*"\(.*\)".*/\1/; p }' < ${FILE_PATH} | while read dep; do + echo "Processing dependency --> $dep" + escaped_dep=$(echo "$dep" | sed -e 's#/#\\/#g') + dep_rev=$(sed -ne "/\"v8\/${escaped_dep}\":/ { n; s#.*+ \"##; s#\".*##; p }" "$deps") + + if [ "$dep_rev" = "" ]; then + echo "Failed to resolve dependency $dep, not listed in DEPS file" + rm -f "$deps" + exit 2 + fi + + repo_url=$(sed -ne "/\"${escaped_dep}\" = fetchgit/ { n; s/.*\"\(.*\)\".*/\1/; s#\${git_url}#https://chromium.googlesource.com#; p }" ${FILE_PATH}) + sha256=$(nix-prefetch-git --no-deepClone "$repo_url" "$dep_rev" 2>/dev/null | sed -ne '/sha256/ { s#.*: "\(.*\)".*#\1#; p }') + + if [ "$sha256" = "" ]; then + echo "Failed to get sha256 via nix-prefetch-git $repo_url $dep_rev" + rm -f "$deps" + exit 2 + fi + + sed -e "/\"${escaped_dep}\" = fetchgit/ { n; n; s/\".*\"/\"${dep_rev}\"/; n; s/\".*\"/\"${sha256}\"/ }" -i ${FILE_PATH} +done + +rm -f "$deps" +echo done. |