diff options
author | Elvis Pranskevichus <elvis@magic.io> | 2017-09-12 17:27:17 -0400 |
---|---|---|
committer | Patrice Clement <monsieurp@gentoo.org> | 2017-09-22 17:21:04 +0200 |
commit | 8cacb0a99ef2edb71b74a1dad60f8cb9b37f22ba (patch) | |
tree | d6648c1ba5d3b0ab8a8240d4a8bda04796199316 /dev-util/electron/files | |
parent | app-eselect/eselect-electron: version bump to 2.0. (diff) | |
download | gentoo-8cacb0a99ef2edb71b74a1dad60f8cb9b37f22ba.tar.gz gentoo-8cacb0a99ef2edb71b74a1dad60f8cb9b37f22ba.tar.bz2 gentoo-8cacb0a99ef2edb71b74a1dad60f8cb9b37f22ba.zip |
dev-util/electron: version bump to 1.6.11.
Gentoo-Bug: https://bugs.gentoo.org/614238
Package-Manager: Portage-2.3.6, Repoman-2.3.1
Diffstat (limited to 'dev-util/electron/files')
15 files changed, 1418 insertions, 0 deletions
diff --git a/dev-util/electron/files/chromium-56-gcc4.patch b/dev-util/electron/files/chromium-56-gcc4.patch new file mode 100644 index 000000000000..e3188668ce5a --- /dev/null +++ b/dev-util/electron/files/chromium-56-gcc4.patch @@ -0,0 +1,48 @@ +From 888874f761fdd69bb9448b3905627289b5fd66dd Mon Sep 17 00:00:00 2001 +From: floppymaster <floppymaster@gmail.com> +Date: Thu, 19 Jan 2017 20:20:45 -0800 +Subject: [PATCH] Allow GCC 4.9 to compile Chromium + +In order to implicit cast an lvalue to an rvalue when returning +from a function, the return type and type of variable in the return +statement previously had to be exactly the same. When this was not +the case, std::move was required. For instance, when returning a +std::unique_ptr<Derived> variable in a function with a +std::unique_ptr<Base> return type, std::move is required. + +DR 1579 changed this, and allows for implicitly converting +to the return type, if the return type has a constructor(T&&), where +T is the type of the local variable being returned. DR 1579 was +implemented in GCC 5, but not in GCC 4.9 and below. By explicitly +qualifying the local variable with std::move, we allow for compiling +with GCC 4.9 and incur no performance penalty. The code is still +absolutely correct to the word of C++11. + +BUG=chromium:682965 + +See also: +* https://bugs.gentoo.org/show_bug.cgi?id=600288 +* https://stackoverflow.com/questions/22018115/converting-stdunique-ptrderived-to-stdunique-ptrbase#comment33375875_22018521 +* http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n3833.html#1579 + +Review-Url: https://codereview.webrtc.org/2642053003 +Cr-Commit-Position: refs/heads/master@{#16175} +--- + AUTHORS | 1 + + webrtc/modules/desktop_capture/screen_capturer_x11.cc | 2 +- + 2 files changed, 2 insertions(+), 1 deletion(-) + +--- a/third_party/webrtc/modules/desktop_capture/screen_capturer_x11.cc ++++ b/third_party/webrtc/modules/desktop_capture/screen_capturer_x11.cc +@@ -412,7 +412,7 @@ std::unique_ptr<DesktopCapturer> DesktopCapturer::CreateRawScreenCapturer( + return nullptr; + } + +- return capturer; ++ return std::move(capturer); + } + + } // namespace webrtc +-- +2.11.0 + diff --git a/dev-util/electron/files/chromium-FORTIFY_SOURCE.patch b/dev-util/electron/files/chromium-FORTIFY_SOURCE.patch new file mode 100644 index 000000000000..c6477d690872 --- /dev/null +++ b/dev-util/electron/files/chromium-FORTIFY_SOURCE.patch @@ -0,0 +1,27 @@ +Drop _FORTIFY_SOURCE=2 from defines + +Gentoo toolchains enable this by default. Removing this prevents spammy +warnings about the macro being redefined. + +--- a/build/config/compiler/BUILD.gn ++++ b/build/config/compiler/BUILD.gn +@@ -1069,19 +1069,6 @@ config("chromium_code") { + "__STDC_FORMAT_MACROS", + ] + +- if (!is_debug && !using_sanitizer && +- (!is_linux || !is_clang || is_official_build)) { +- # _FORTIFY_SOURCE isn't really supported by Clang now, see +- # http://llvm.org/bugs/show_bug.cgi?id=16821. +- # It seems to work fine with Ubuntu 12 headers though, so use it in +- # official builds. +- # +- # Non-chromium code is not guaranteed to compile cleanly with +- # _FORTIFY_SOURCE. Also, fortified build may fail when optimizations are +- # disabled, so only do that for Release build. +- defines += [ "_FORTIFY_SOURCE=2" ] +- } +- + if (is_mac || is_ios) { + cflags_objc = [ "-Wobjc-missing-property-synthesis" ] + cflags_objcc = [ "-Wobjc-missing-property-synthesis" ] diff --git a/dev-util/electron/files/chromium-glibc-2.24.patch b/dev-util/electron/files/chromium-glibc-2.24.patch new file mode 100644 index 000000000000..f7bfd816433f --- /dev/null +++ b/dev-util/electron/files/chromium-glibc-2.24.patch @@ -0,0 +1,15 @@ +--- a/third_party/WebKit/Source/wtf/allocator/PageAllocator.cpp.orig 2017-01-05 20:50:56.329369189 +0000 ++++ b/third_party/WebKit/Source/wtf/allocator/PageAllocator.cpp 2017-01-05 20:51:32.926099779 +0000 +@@ -242,6 +242,12 @@ + ASSERT(!(len & kSystemPageOffsetMask)); + #if OS(POSIX) + int ret = madvise(addr, len, MADV_FREE); ++ if (ret != 0 && errno == EINVAL) { ++ // MADV_FREE only works on Linux 4.5+ . If request failed, ++ // retry with older MADV_DONTNEED . Note that MADV_FREE ++ // being defined at compile time doesn't imply runtime support. ++ ret = madvise(addr, len, MADV_DONTNEED); ++ } + RELEASE_ASSERT(!ret); + #else + setSystemPagesInaccessible(addr, len); diff --git a/dev-util/electron/files/chromium-jinja-fix.patch b/dev-util/electron/files/chromium-jinja-fix.patch new file mode 100644 index 000000000000..83ac33be31b6 --- /dev/null +++ b/dev-util/electron/files/chromium-jinja-fix.patch @@ -0,0 +1,24 @@ +--- a/third_party/WebKit/Source/platform/v8_inspector/v8_inspector.gyp +--- b/third_party/WebKit/Source/platform/v8_inspector/v8_inspector.gyp +@@ -53,21 +53,10 @@ + 'type': 'none', + 'dependencies': ['protocol_version'], + 'variables': { +- 'conditions': [ +- ['debug_devtools=="node"', { +- # Node build +- 'jinja_module_files': [ +- '../../deps/jinja2/jinja2/__init__.py', +- '../../deps/markupsafe/markupsafe/__init__.py', # jinja2 dep +- ], +- }, { + 'jinja_module_files': [ + '<(DEPTH)/third_party/jinja2/__init__.py', + '<(DEPTH)/third_party/markupsafe/__init__.py', # jinja2 dep + ], +- } +- ], +- ], + }, + 'actions': [ + { diff --git a/dev-util/electron/files/chromium-lto-fixes-r3.patch b/dev-util/electron/files/chromium-lto-fixes-r3.patch new file mode 100644 index 000000000000..10493e6fd388 --- /dev/null +++ b/dev-util/electron/files/chromium-lto-fixes-r3.patch @@ -0,0 +1,108 @@ +From 2f2028a19fd12477fcd9050ea354174f33b68b46 Mon Sep 17 00:00:00 2001 +From: Elvis Pranskevichus <elvis@magic.io> +Date: Mon, 21 Aug 2017 10:16:44 -0400 +Subject: [PATCH] LTO fixes + +--- + build/config/compiler/BUILD.gn | 35 +++++++++++++++++++++++++---------- + build/config/posix/BUILD.gn | 2 +- + build/toolchain/gcc_ar_wrapper.py | 12 +++++++++++- + 3 files changed, 37 insertions(+), 12 deletions(-) + +diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn +index d0510b8..583f186 100644 +--- a/build/config/compiler/BUILD.gn ++++ b/build/config/compiler/BUILD.gn +@@ -448,20 +448,35 @@ config("compiler") { + } else { + # Note: ThinLTO does not currently have this feature implemented + # For Full LTO, it provides a measurable runtime speedup of Chrome. +- cflags += [ +- "-flto", +- "-fwhole-program-vtables", +- ] +- ldflags += [ +- "-flto", +- "-fwhole-program-vtables", +- ] ++ if (is_clang) { ++ cflags += [ ++ "-flto", ++ "-fwhole-program-vtables" ++ ] ++ ldflags += [ ++ "-flto", ++ "-fwhole-program-vtables" ++ ] ++ } else { ++ cflags += [ ++ "-flto=4", ++ "-fno-fat-lto-objects", ++ "-fuse-linker-plugin", ++ "--param=lto-partitions=1", ++ ] ++ ldflags += [ ++ "-flto=4", ++ "-fno-fat-lto-objects", ++ "-fuse-linker-plugin", ++ "--param=lto-partitions=1", ++ ] ++ } + + # Apply a lower LTO optimization level as the default is too slow. + if (is_linux) { + if (use_lld) { + ldflags += [ "-Wl,--lto-O1" ] +- } else { ++ } else if (is_clang) { + ldflags += [ "-Wl,-plugin-opt,O1" ] + } + } else if (is_mac) { +@@ -478,7 +493,7 @@ config("compiler") { + # targeting ARM, without this flag, LTO produces a .text section that is + # larger than the maximum call displacement, preventing the linker from + # relocating calls (http://llvm.org/PR22999). +- if (is_linux) { ++ if (is_linux && is_clang) { + ldflags += [ "-Wl,-plugin-opt,-function-sections" ] + } + } +diff --git a/build/config/posix/BUILD.gn b/build/config/posix/BUILD.gn +index d7e917a..fc68864 100644 +--- a/build/config/posix/BUILD.gn ++++ b/build/config/posix/BUILD.gn +@@ -21,7 +21,7 @@ config("compiler") { + if ((allow_posix_link_time_opt || is_cfi) && !is_nacl) { + arflags = [ + "--plugin", +- rebase_path("$clang_base_path/lib/LLVMgold.so", root_build_dir), ++ "auto" + ] + } + } +diff --git a/build/toolchain/gcc_ar_wrapper.py b/build/toolchain/gcc_ar_wrapper.py +index de53df0..39c7b56 100755 +--- a/build/toolchain/gcc_ar_wrapper.py ++++ b/build/toolchain/gcc_ar_wrapper.py +@@ -47,7 +47,17 @@ def main(): + + command = [args.ar, args.operation] + if args.plugin is not None: +- command += ['--plugin', args.plugin] ++ if args.plugin == 'auto': ++ gcc = os.environ.get('CC', '/usr/bin/cc') ++ gcc_ver = subprocess.check_output([gcc, '-dumpversion'], ++ universal_newlines=True) ++ gcc_ver = gcc_ver.strip(' \n') ++ plugin = '/usr/libexec/gcc/x86_64-pc-linux-gnu/{}/liblto_plugin.so'. \ ++ format(gcc_ver) ++ else: ++ plugin = args.plugin ++ ++ command += ['--plugin', plugin] + command.append(args.output) + command += args.inputs + +-- +2.14.1 + diff --git a/dev-util/electron/files/chromium-remove-gardiner-mod-font-r1.patch b/dev-util/electron/files/chromium-remove-gardiner-mod-font-r1.patch new file mode 100644 index 000000000000..f59549094107 --- /dev/null +++ b/dev-util/electron/files/chromium-remove-gardiner-mod-font-r1.patch @@ -0,0 +1,13 @@ +diff --git a/components/test_runner/BUILD.gn~ b/components/test_runner/BUILD.gn +index 3ac8955..6a968cb 100644 +--- a/components/test_runner/BUILD.gn~ ++++ b/components/test_runner/BUILD.gn +@@ -155,8 +155,6 @@ if (use_x11) { + copy("copy_x11_fonts") { + visibility = [ ":*" ] + sources = [ +- "//third_party/gardiner_mod/GardinerModBug.ttf", +- "//third_party/gardiner_mod/GardinerModCat.ttf", + "resources/fonts/fonts.conf", + ] + outputs = [ diff --git a/dev-util/electron/files/chromium-shared-v8-r2.patch b/dev-util/electron/files/chromium-shared-v8-r2.patch new file mode 100644 index 000000000000..475da8193a92 --- /dev/null +++ b/dev-util/electron/files/chromium-shared-v8-r2.patch @@ -0,0 +1,79 @@ +diff --git a/v8/BUILD.gn.orig b/v8/BUILD.gn +index 8587356..4365e03 100644 +--- a/v8/BUILD.gn ++++ b/v8/BUILD.gn +@@ -113,7 +113,7 @@ config("internal_config") { + + include_dirs = [ "." ] + +- if (is_component_build) { ++ if (is_component_build || is_electron_build) { + defines = [ "BUILDING_V8_SHARED" ] + } + } +@@ -127,14 +127,14 @@ config("internal_config_base") { + # This config should be applied to code using the libplatform. + config("libplatform_config") { + include_dirs = [ "include" ] +- if (is_component_build) { ++ if (is_component_build || is_electron_build) { + defines = [ "USING_V8_PLATFORM_SHARED" ] + } + } + + # This config should be applied to code using the libbase. + config("libbase_config") { +- if (is_component_build) { ++ if (is_component_build || is_electron_build) { + defines = [ "USING_V8_BASE_SHARED" ] + } + libs = [] +@@ -151,7 +151,7 @@ config("libsampler_config") { + # This config should only be applied to code using V8 and not any V8 code + # itself. + config("external_config") { +- if (is_component_build) { ++ if (is_component_build || is_electron_build) { + defines = [ "USING_V8_SHARED" ] + } + include_dirs = [ "include" ] +@@ -2265,7 +2265,7 @@ v8_component("v8_libbase") { + + defines = [] + +- if (is_component_build) { ++ if (is_component_build || is_electron_build) { + defines = [ "BUILDING_V8_BASE_SHARED" ] + } + +@@ -2355,7 +2355,7 @@ v8_component("v8_libplatform") { + + configs = [ ":internal_config_base" ] + +- if (is_component_build) { ++ if (is_component_build || is_electron_build) { + defines = [ "BUILDING_V8_PLATFORM_SHARED" ] + } + +@@ -2498,7 +2498,7 @@ group("gn_all") { + } + } + +-if (is_component_build) { ++if (is_component_build || is_electron_build) { + v8_component("v8") { + sources = [ + "src/v8dll-main.cc", +diff --git a/v8/src/inspector/BUILD.gn b/v8/src/inspector/BUILD.gn +index 6ebb91c..b6a2489 100644 +--- a/v8/src/inspector/BUILD.gn ++++ b/v8/src/inspector/BUILD.gn +@@ -106,7 +106,7 @@ config("inspector_config") { + "/wd4996", # Deprecated function call. + ] + } +- if (is_component_build) { ++ if (is_component_build || is_electron_build) { + defines = [ "BUILDING_V8_SHARED" ] + } + } diff --git a/dev-util/electron/files/chromium-system-ffmpeg-r4.patch b/dev-util/electron/files/chromium-system-ffmpeg-r4.patch new file mode 100644 index 000000000000..3abfc163e8a2 --- /dev/null +++ b/dev-util/electron/files/chromium-system-ffmpeg-r4.patch @@ -0,0 +1,48 @@ +--- a/media/ffmpeg/ffmpeg_common.h.orig 2016-09-09 13:16:07.757294768 +0000 ++++ b/media/ffmpeg/ffmpeg_common.h 2016-09-09 13:16:41.705989273 +0000 +@@ -22,10 +22,6 @@ + + // Include FFmpeg header files. + extern "C" { +-// Disable deprecated features which result in spammy compile warnings. This +-// list of defines must mirror those in the 'defines' section of FFmpeg's +-// BUILD.gn file or the headers below will generate different structures! +-#define FF_API_CONVERGENCE_DURATION 0 + // Upstream libavcodec/utils.c still uses the deprecated + // av_dup_packet(), causing deprecation warnings. + // The normal fix for such things is to disable the feature as below, +@@ -35,7 +35,6 @@ + MSVC_PUSH_DISABLE_WARNING(4244); + #include <libavcodec/avcodec.h> + #include <libavformat/avformat.h> +-#include <libavformat/internal.h> + #include <libavformat/avio.h> + #include <libavutil/avutil.h> + #include <libavutil/imgutils.h> +--- a/media/filters/ffmpeg_demuxer.cc.orig 2016-09-09 14:21:40.185828912 +0000 ++++ b/media/filters/ffmpeg_demuxer.cc 2016-09-09 14:21:52.894089352 +0000 +@@ -1185,24 +1185,6 @@ + // If no estimate is found, the stream entry will be kInfiniteDuration. + std::vector<base::TimeDelta> start_time_estimates(format_context->nb_streams, + kInfiniteDuration); +- const AVFormatInternal* internal = format_context->internal; +- if (internal && internal->packet_buffer && +- format_context->start_time != static_cast<int64_t>(AV_NOPTS_VALUE)) { +- struct AVPacketList* packet_buffer = internal->packet_buffer; +- while (packet_buffer != internal->packet_buffer_end) { +- DCHECK_LT(static_cast<size_t>(packet_buffer->pkt.stream_index), +- start_time_estimates.size()); +- const AVStream* stream = +- format_context->streams[packet_buffer->pkt.stream_index]; +- if (packet_buffer->pkt.pts != static_cast<int64_t>(AV_NOPTS_VALUE)) { +- const base::TimeDelta packet_pts = +- ConvertFromTimeBase(stream->time_base, packet_buffer->pkt.pts); +- if (packet_pts < start_time_estimates[stream->index]) +- start_time_estimates[stream->index] = packet_pts; +- } +- packet_buffer = packet_buffer->next; +- } +- } + + std::unique_ptr<MediaTracks> media_tracks(new MediaTracks()); + diff --git a/dev-util/electron/files/chromium-system-jinja-r11.patch b/dev-util/electron/files/chromium-system-jinja-r11.patch new file mode 100644 index 000000000000..0b3c9b72478b --- /dev/null +++ b/dev-util/electron/files/chromium-system-jinja-r11.patch @@ -0,0 +1,79 @@ +--- third_party/WebKit/Source/bindings/scripts/scripts.gyp.orig 2014-08-19 09:55:10.330972228 +0000 ++++ third_party/WebKit/Source/bindings/scripts/scripts.gyp 2014-08-19 09:55:26.387286232 +0000 +@@ -54,7 +54,6 @@ + 'actions': [{ + 'action_name': 'cache_jinja_templates', + 'inputs': [ +- '<@(jinja_module_files)', + 'code_generator_v8.py', + '<@(code_generator_template_files)', + ], +--- third_party/WebKit/Source/build/scripts/scripts.gypi.orig 2014-08-19 10:00:00.216521733 +0000 ++++ third_party/WebKit/Source/build/scripts/scripts.gypi 2014-08-19 10:00:11.464735099 +0000 +@@ -2,10 +2,6 @@ + { + 'variables': { + 'scripts_for_in_files': [ +- # jinja2/__init__.py contains version string, so sufficient as +- # dependency for whole jinja2 package +- '<(DEPTH)/third_party/jinja2/__init__.py', +- '<(DEPTH)/third_party/markupsafe/__init__.py', # jinja2 dep + 'hasher.py', + 'in_file.py', + 'in_generator.py', +--- third_party/WebKit/Source/bindings/scripts/scripts.gypi.orig 2014-08-19 10:53:02.824618979 +0000 ++++ third_party/WebKit/Source/bindings/scripts/scripts.gypi 2014-08-19 10:53:20.784957370 +0000 +@@ -12,9 +12,6 @@ + '<(DEPTH)/third_party/markupsafe/__init__.py', # jinja2 dep + ], + 'idl_lexer_parser_files': [ +- # PLY (Python Lex-Yacc) +- '<(DEPTH)/third_party/ply/lex.py', +- '<(DEPTH)/third_party/ply/yacc.py', + # Web IDL lexer/parser (base parser) + '<(DEPTH)/tools/idl_parser/idl_lexer.py', + '<(DEPTH)/tools/idl_parser/idl_node.py', +--- third_party/WebKit/Source/build/scripts/scripts.gni.orig 2016-06-02 09:54:28.510152077 +0000 ++++ third_party/WebKit/Source/build/scripts/scripts.gni 2016-06-02 09:54:50.966612510 +0000 +@@ -9,10 +9,6 @@ + _scripts_dir = "//third_party/WebKit/Source/build/scripts" + + scripts_for_in_files = [ +- # jinja2/__init__.py contains version string, so sufficient as +- # dependency for whole jinja2 package +- "//third_party/jinja2/__init__.py", +- "//third_party/markupsafe/__init__.py", # jinja2 dep + "$_scripts_dir/hasher.py", + "$_scripts_dir/in_file.py", + "$_scripts_dir/in_generator.py", +--- third_party/WebKit/Source/bindings/scripts/BUILD.gn.orig 2016-06-02 10:03:01.100658943 +0000 ++++ third_party/WebKit/Source/bindings/scripts/BUILD.gn 2016-06-02 10:03:13.240907715 +0000 +@@ -36,7 +36,7 @@ + action("cached_jinja_templates") { + script = "code_generator_v8.py" + +- inputs = jinja_module_files + [ "code_generator_v8.py" ] + ++ inputs = [ "code_generator_v8.py" ] + + code_generator_template_files + + # Dummy file to track dependency. +--- third_party/WebKit/Source/platform/v8_inspector/v8_inspector.gyp.orig 2016-06-03 12:31:49.844954196 +0000 ++++ third_party/WebKit/Source/platform/v8_inspector/v8_inspector.gyp 2016-06-03 12:32:01.869198425 +0000 +@@ -60,7 +60,6 @@ + { + 'action_name': 'generateV8InspectorProtocolBackendSources', + 'inputs': [ +- '<@(jinja_module_files)', + # The python script in action below. + '../inspector_protocol/CodeGenerator.py', + # Input files for the script. +--- third_party/WebKit/Source/core/inspector/inspector.gyp.orig 2016-06-03 12:38:20.712891692 +0000 ++++ third_party/WebKit/Source/core/inspector/inspector.gyp 2016-06-03 12:38:31.197104557 +0000 +@@ -52,7 +52,6 @@ + { + 'action_name': 'generateInspectorProtocolBackendSources', + 'inputs': [ +- '<@(jinja_module_files)', + # The python script in action below. + '../../platform/inspector_protocol/CodeGenerator.py', + # Input files for the script. diff --git a/dev-util/electron/files/electron-1.6.11-vendor-brightray.patch b/dev-util/electron/files/electron-1.6.11-vendor-brightray.patch new file mode 100644 index 000000000000..a1a351195d00 --- /dev/null +++ b/dev-util/electron/files/electron-1.6.11-vendor-brightray.patch @@ -0,0 +1,163 @@ +From 610ee2681f9532a13f63edf78aab55b1dcb8abf2 Mon Sep 17 00:00:00 2001 +From: Elvis Pranskevichus <elvis@magic.io> +Date: Mon, 8 Feb 2016 15:14:58 -0500 +Subject: [PATCH] brightray build fixes + +--- + brightray.gyp | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++++++---- + brightray.gypi | 14 ++----------- + 2 files changed, 64 insertions(+), 16 deletions(-) + +diff --git a/brightray.gyp b/brightray.gyp +index e60d17a..37e5159 100644 +--- a/brightray.gyp ++++ b/brightray.gyp +@@ -1,7 +1,7 @@ + { + 'variables': { + # The libraries brightray will be compiled to. +- 'linux_system_libraries': 'gtk+-2.0 dbus-1 x11 x11-xcb xcb xi xcursor xdamage xrandr xcomposite xext xfixes xrender xtst xscrnsaver gconf-2.0 gmodule-2.0 nss' ++ 'linux_system_libraries': 'gtk+-2.0 dbus-1 x11 x11-xcb xcb xi xcursor xdamage xrandr xcomposite xext xfixes xrender xtst xscrnsaver gmodule-2.0 nss' + }, + 'includes': [ + 'filenames.gypi', +@@ -9,6 +9,10 @@ + 'targets': [ + { + 'target_name': 'brightray', ++ 'dependencies': [ ++ 'cups', ++ 'gconf', ++ ], + 'type': 'static_library', + 'include_dirs': [ + '.', +@@ -130,18 +134,30 @@ + }, { + 'link_settings': { + 'libraries': [ +- # Link with ffmpeg. +- '<(libchromiumcontent_dir)/libffmpeg.so', + # Following libraries are required by libchromiumcontent: + '-lasound', + '-lcap', +- '-lcups', + '-lrt', + '-ldl', + '-lresolv', + '-lfontconfig', + '-lfreetype', + '-lexpat', ++ '-lre2', ++ '-ljpeg', ++ '-lsnappy', ++ '-lharfbuzz', ++ '-lpng', ++ '-lxml2', ++ '-lxslt', ++ '-lwebp', ++ '-lwebpdemux', ++ '-lavcodec', ++ '-lavformat', ++ '-lavutil', ++ '-lvpx', ++ '-lFLAC', ++ '-lminizip', + ], + }, + }], +@@ -390,5 +406,47 @@ + }], # OS=="win" + ], + }, ++ { ++ 'target_name': 'gconf', ++ 'type': 'none', ++ 'conditions': [ ++ ['use_gconf==1 and _toolset=="target"', { ++ 'direct_dependent_settings': { ++ 'cflags': [ ++ '<!@(<(pkg-config) --cflags gconf-2.0)', ++ ], ++ 'defines': [ ++ 'USE_GCONF', ++ ], ++ }, ++ 'link_settings': { ++ 'ldflags': [ ++ '<!@(<(pkg-config) --libs-only-L --libs-only-other gconf-2.0)', ++ ], ++ 'libraries': [ ++ '<!@(<(pkg-config) --libs-only-l gconf-2.0)', ++ ], ++ }, ++ }], ++ ], ++ }, ++ { ++ 'target_name': 'cups', ++ 'type': 'none', ++ 'conditions': [ ++ ['use_cups==1', { ++ 'direct_dependent_settings': { ++ 'defines': [ ++ 'USE_CUPS', ++ ], ++ 'link_settings': { ++ 'libraries': [ ++ '-lcups', ++ ], ++ }, ++ }, ++ }], ++ ], ++ }, + ], + } +diff --git a/brightray.gypi b/brightray.gypi +index 064ae1a..95d6f14 100644 +--- a/brightray.gypi ++++ b/brightray.gypi +@@ -1,6 +1,6 @@ + { + 'includes': [ +- 'vendor/download/libchromiumcontent/filenames.gypi', ++ 'vendor/libchromiumcontent/dist/main/filenames.gypi', + ], + 'variables': { + 'libchromiumcontent_component%': 1, +@@ -14,7 +14,7 @@ + }, { + 'libchromiumcontent_dir%': '<(libchromiumcontent_static_libraries_dir)', + 'libchromiumcontent_libraries%': '<(libchromiumcontent_static_libraries)', +- 'libchromiumcontent_v8_libraries%': '<(libchromiumcontent_static_v8_libraries)', ++ 'libchromiumcontent_v8_libraries%': '<(libchromiumcontent_shared_v8_libraries)', + }], + ], + }, +@@ -235,22 +235,12 @@ + 'conditions': [ + ['OS=="linux"', { + 'cflags': [ +- '-O2', +- # Generate symbols, will be stripped later. +- '-g', +- # Don't emit the GCC version ident directives, they just end up +- # in the .comment section taking up binary size. +- '-fno-ident', + # Put data and code in their own sections, so that unused symbols + # can be removed at link time with --gc-sections. + '-fdata-sections', + '-ffunction-sections', + ], + 'ldflags': [ +- # Specifically tell the linker to perform optimizations. +- # See http://lwn.net/Articles/192624/ . +- '-Wl,-O1', +- '-Wl,--as-needed', + '-Wl,--gc-sections', + ], + }], # OS=="linux" +-- +2.13.3 + diff --git a/dev-util/electron/files/electron-1.6.11-vendor-libchromiumcontent.patch b/dev-util/electron/files/electron-1.6.11-vendor-libchromiumcontent.patch new file mode 100644 index 000000000000..d724e41f1fdb --- /dev/null +++ b/dev-util/electron/files/electron-1.6.11-vendor-libchromiumcontent.patch @@ -0,0 +1,86 @@ +From 0a28ad879b544f73f74491ddd58646750335bf1d Mon Sep 17 00:00:00 2001 +From: Elvis Pranskevichus <elvis@magic.io> +Date: Fri, 28 Apr 2017 17:22:38 -0400 +Subject: [PATCH] Gentoo build fixes + +--- + chromiumcontent/BUILD.gn | 8 ++------ + chromiumcontent/build_libs.py | 2 +- + script/create-dist | 4 ---- + script/lib/config.py | 2 +- + 4 files changed, 4 insertions(+), 12 deletions(-) + +diff --git a/chromiumcontent/BUILD.gn b/chromiumcontent/BUILD.gn +index e4e4166..25be865 100644 +--- a/chromiumcontent/BUILD.gn ++++ b/chromiumcontent/BUILD.gn +@@ -343,12 +343,8 @@ if (is_electron_build && !is_component_build) { + } + } + +- static_library("v8") { +- complete_static_lib = true +- sources = [] +- if (defined(obj_v8)) { +- sources += obj_v8 +- } ++ shared_library("v8") { ++ deps = [ "//v8:v8", "//v8:v8_libplatform" ] + } + + } else { +diff --git a/chromiumcontent/build_libs.py b/chromiumcontent/build_libs.py +index e10f320..716c5f2 100644 +--- a/chromiumcontent/build_libs.py ++++ b/chromiumcontent/build_libs.py +@@ -82,7 +82,7 @@ with open(args.out, 'w') as out: + "third_party/usrsctp", + "third_party/woff2", + "third_party/zlib", +- "tools", ++ "tools/battor_agent", + "ui", + "url", + ]) +diff --git a/script/create-dist b/script/create-dist +index aec75e5..64c7401 100755 +--- a/script/create-dist ++++ b/script/create-dist +@@ -45,7 +45,6 @@ COMPONENTS = ['static_library', 'shared_library'] + BINARIES = { + 'all': [ + 'content_shell.pak', +- 'icudtl.dat', + 'natives_blob.bin', + 'snapshot_blob.bin', + os.path.join('gen', 'blink', 'public', 'resources', 'blink_image_resources_200_percent.pak'), +@@ -59,7 +58,6 @@ BINARIES = { + 'libffmpeg.dylib', + ], + 'linux': [ +- 'libffmpeg.so', + ], + 'win32': [ + 'd3dcompiler_47.dll', +@@ -312,8 +310,6 @@ def main(): + copy_generated_sources(target_arch, component) + copy_locales(target_arch, component) + +- copy_ffmpeg(target_arch) +- copy_sources() + generate_licenses() + if not args.no_zip: + create_zip(create_debug_archive) +diff --git a/script/lib/config.py b/script/lib/config.py +index 3455161..195b2a1 100644 +--- a/script/lib/config.py ++++ b/script/lib/config.py +@@ -4,4 +4,4 @@ import os + + + def get_output_dir(source_root, target_arch, component): +- return os.path.join(source_root, 'src', 'out-' + target_arch, component) ++ return os.environ.get('CHROMIUM_BUILD_DIR') +-- +2.13.3 + diff --git a/dev-util/electron/files/electron-1.6.11-vendor-node.patch b/dev-util/electron/files/electron-1.6.11-vendor-node.patch new file mode 100644 index 000000000000..2f931771f91a --- /dev/null +++ b/dev-util/electron/files/electron-1.6.11-vendor-node.patch @@ -0,0 +1,80 @@ +From fc6ba3a74ffa88b22435531d6522d934a52187e5 Mon Sep 17 00:00:00 2001 +From: Elvis Pranskevichus <elvis@magic.io> +Date: Wed, 10 Feb 2016 14:45:13 -0500 +Subject: [PATCH] Build fixes + +--- + lib/internal/bootstrap_node.js | 2 ++ + node.gyp | 9 +++++++++ + src/node_main.cc | 2 ++ + 3 files changed, 13 insertions(+) + +diff --git a/lib/internal/bootstrap_node.js b/lib/internal/bootstrap_node.js +index 085ea00fd0..cb49fc87a7 100644 +--- a/lib/internal/bootstrap_node.js ++++ b/lib/internal/bootstrap_node.js +@@ -40,7 +40,9 @@ + setupGlobalConsole(); + } + ++ if (!process.env.ELECTRON_NODE_DISABLE_ASAR_SUPPORT) { + setupAsarSupport(); ++ } + + const _process = NativeModule.require('internal/process'); + +diff --git a/node.gyp b/node.gyp +index 95f24933fc..1434904324 100644 +--- a/node.gyp ++++ b/node.gyp +@@ -17,6 +17,7 @@ + 'node_shared_libuv%': 'false', + 'node_use_openssl%': 'true', + 'node_shared_openssl%': 'false', ++ 'node_v8_path%': 'deps/v8', + 'node_v8_options%': '', + 'node_enable_v8_vtunejit%': 'false', + 'node_core_target_name%': 'node', +@@ -133,6 +134,7 @@ + ], + + 'include_dirs': [ ++ '<(node_v8_path)/include', + 'src', + 'tools/msvs/genfiles', + 'deps/uv/src/ares', +@@ -238,6 +240,13 @@ + 'V8_DEPRECATION_WARNINGS=1', + ], + ++ 'link_settings': { ++ 'ldflags': [ ++ '-Wl,-rpath=\$$ORIGIN/', ++ # Make native module dynamic loading work. ++ '-rdynamic', ++ ], ++ }, + + 'conditions': [ + [ 'node_shared=="false"', { +diff --git a/src/node_main.cc b/src/node_main.cc +index 16bda81ae6..fd559ef1c3 100644 +--- a/src/node_main.cc ++++ b/src/node_main.cc +@@ -50,11 +50,13 @@ int wmain(int argc, wchar_t *wargv[]) { + } + #else + // UNIX ++#include <stdlib.h> + int main(int argc, char *argv[]) { + // Disable stdio buffering, it interacts poorly with printf() + // calls elsewhere in the program (e.g., any logging from V8.) + setvbuf(stdout, nullptr, _IONBF, 0); + setvbuf(stderr, nullptr, _IONBF, 0); ++ putenv("ELECTRON_NODE_DISABLE_ASAR_SUPPORT=1"); + return node::Start(argc, argv); + } + #endif +-- +2.13.3 + diff --git a/dev-util/electron/files/electron-1.6.11.patch b/dev-util/electron/files/electron-1.6.11.patch new file mode 100644 index 000000000000..b40d471348ab --- /dev/null +++ b/dev-util/electron/files/electron-1.6.11.patch @@ -0,0 +1,512 @@ +From b756fa976480791c76e9338a16ee2b0a29265b93 Mon Sep 17 00:00:00 2001 +From: Elvis Pranskevichus <elvis@magic.io> +Date: Mon, 8 Feb 2016 15:16:40 -0500 +Subject: [PATCH] electron build fixes + +--- + common.gypi | 43 ++++++++++++++++++++++----- + electron.gyp | 74 +++++++++++++++++++++++++++++++++++---------- + toolchain.gypi | 76 +++++++++++++++++++---------------------------- + tools/ar-flags.py | 15 ++++++++++ + tools/atom_source_root.py | 5 ++++ + tools/browserify.py | 24 +++++++++++++++ + tools/get-endianness.py | 4 +++ + tools/js2asar.py | 13 ++++---- + 8 files changed, 179 insertions(+), 75 deletions(-) + create mode 100644 tools/ar-flags.py + create mode 100644 tools/atom_source_root.py + create mode 100644 tools/browserify.py + create mode 100644 tools/get-endianness.py + +diff --git a/common.gypi b/common.gypi +index 7c1bf366a..c441ae04b 100644 +--- a/common.gypi ++++ b/common.gypi +@@ -2,6 +2,7 @@ + 'includes': [ + 'toolchain.gypi', + 'vendor/brightray/brightray.gypi', ++ 'vendor/node/common.gypi', + ], + 'variables': { + # Tell crashpad to build as external project. +@@ -16,26 +17,23 @@ + 'openssl_no_asm': 1, + 'use_openssl_def': 0, + 'OPENSSL_PRODUCT': 'libopenssl.a', +- 'node_release_urlbase': 'https://atom.io/download/atom-shell', +- 'node_byteorder': '<!(node <(DEPTH)/tools/get-endianness.js)', ++ 'node_release_urlbase': 'https://atom.io/download/electron', ++ 'node_byteorder': '<!(python <(DEPTH)/tools/get-endianness.py)', + 'node_target_type': 'shared_library', ++ 'node_module_version': '', + 'node_install_npm': 'false', + 'node_prefix': '', + 'node_shared': 'true', +- 'node_shared_cares': 'false', +- 'node_shared_http_parser': 'false', +- 'node_shared_libuv': 'false', +- 'node_shared_openssl': 'false', + 'node_shared_v8': 'true', +- 'node_shared_zlib': 'false', + 'node_tag': '', + 'node_use_dtrace': 'false', + 'node_use_etw': 'false', + 'node_use_mdb': 'false', + 'node_use_openssl': 'true', + 'node_use_perfctr': 'false', +- 'node_use_v8_platform': 'false', ++ 'node_use_v8_platform': 'true', + 'node_use_bundled_v8': 'false', ++ 'node_v8_path': '<(DEPTH)/chromium/v8/', + 'node_enable_d8': 'false', + 'uv_library': 'static_library', + 'uv_parent_path': 'vendor/node/deps/uv', +@@ -44,10 +42,16 @@ + 'v8_postmortem_support': 'false', + 'v8_enable_i18n_support': 'false', + 'v8_inspector': 'false', ++ 'v8_use_snapshot': 'true', ++ 'v8_use_external_startup_data': 1, + }, + # Settings to compile node under Windows. + 'target_defaults': { + 'target_conditions': [ ++ ['_target_name in ["icuuc", "icui18n"]', { ++ 'cflags_cc!': ['-fno-rtti'] ++ }], ++ + ['_target_name in ["libuv", "http_parser", "openssl", "openssl-cli", "cares", "node", "zlib"]', { + 'msvs_disabled_warnings': [ + 4003, # not enough actual parameters for macro 'V' +@@ -128,6 +132,14 @@ + ], + }], + ['_target_name=="node"', { ++ 'cflags!': [ ++ '-fvisibility=hidden', ++ '-fdata-sections', ++ '-ffunction-sections', ++ ], ++ 'cflags_cc!': [ ++ '-fvisibility-inlines-hidden', ++ ], + 'include_dirs': [ + '<(libchromiumcontent_src_dir)', + '<(libchromiumcontent_src_dir)/third_party/icu/source/common', +@@ -228,6 +240,21 @@ + }], # OS=="win" + ], + }], ++ ['_target_name=="shell_runner_host_lib"', { ++ 'conditions': [ ++ ['icu_use_data_file_flag==1', { ++ 'defines': ['ICU_UTIL_DATA_IMPL=ICU_UTIL_DATA_FILE'], ++ }, { # else icu_use_data_file_flag !=1 ++ 'conditions': [ ++ ['OS=="win"', { ++ 'defines': ['ICU_UTIL_DATA_IMPL=ICU_UTIL_DATA_SHARED'], ++ }, { ++ 'defines': ['ICU_UTIL_DATA_IMPL=ICU_UTIL_DATA_STATIC'], ++ }], ++ ], ++ }], ++ ], ++ }], + ], + 'msvs_cygwin_shell': 0, # Strangely setting it to 1 would make building under cygwin fail. + 'msvs_disabled_warnings': [ +diff --git a/electron.gyp b/electron.gyp +index b415525b1..4d0185561 100644 +--- a/electron.gyp ++++ b/electron.gyp +@@ -191,7 +191,7 @@ + }, { + 'copied_libraries': [ + '<(PRODUCT_DIR)/lib/libnode.so', +- '<(libchromiumcontent_dir)/libffmpeg.so', ++ '<@(libchromiumcontent_shared_v8_libraries)', + ], + }], + ], +@@ -200,7 +200,6 @@ + 'files': [ + '<@(copied_libraries)', + '<(libchromiumcontent_dir)/locales', +- '<(libchromiumcontent_dir)/icudtl.dat', + '<(libchromiumcontent_dir)/blink_image_resources_200_percent.pak', + '<(libchromiumcontent_dir)/content_resources_200_percent.pak', + '<(libchromiumcontent_dir)/content_shell.pak', +@@ -245,15 +244,17 @@ + '<@(lib_sources)', + ], + 'include_dirs': [ +- '.', + 'chromium_src', ++ '.', + 'vendor/brightray', + 'vendor/native_mate', ++ # libicu headers shim. ++ '<(SHARED_INTERMEDIATE_DIR)/shim_headers/icui18n_shim', ++ '<(SHARED_INTERMEDIATE_DIR)/shim_headers/icuuc_shim', + # Include atom_natives.h. + '<(SHARED_INTERMEDIATE_DIR)', + # Include directories for uv and node. + 'vendor/node/src', +- 'vendor/node/deps/http_parser', + 'vendor/node/deps/uv/include', + # The `node.h` is using `#include"v8.h"`. + '<(libchromiumcontent_src_dir)/v8/include', +@@ -342,11 +343,12 @@ + '<@(lib_sources_nss)', + ], + 'link_settings': { ++ 'libraries': [ '<@(libchromiumcontent_v8_libraries)' ], + 'ldflags': [ + # Make binary search for libraries under current directory, so we + # don't have to manually set $LD_LIBRARY_PATH: + # http://serverfault.com/questions/279068/cant-find-so-in-the-same-directory-as-the-executable +- '-rpath \$$ORIGIN', ++ '-Wl,-rpath=\$$ORIGIN/', + # Make native module dynamic loading work. + '-rdynamic', + ], +@@ -368,6 +370,9 @@ + { + 'target_name': 'js2asar', + 'type': 'none', ++ 'dependencies': [ ++ 'nodebin' ++ ], + 'actions': [ + { + 'action_name': 'js2asar', +@@ -389,6 +394,7 @@ + 'action': [ + 'python', + 'tools/js2asar.py', ++ '<(PRODUCT_DIR)/nodebin', + '<@(_outputs)', + 'lib', + '<@(_inputs)', +@@ -399,6 +405,9 @@ + { + 'target_name': 'app2asar', + 'type': 'none', ++ 'dependencies': [ ++ 'nodebin' ++ ], + 'actions': [ + { + 'action_name': 'app2asar', +@@ -420,6 +429,7 @@ + 'action': [ + 'python', + 'tools/js2asar.py', ++ '<(PRODUCT_DIR)/nodebin', + '<@(_outputs)', + 'default_app', + '<@(_inputs)', +@@ -445,6 +455,7 @@ + 'dependencies': [ + # depend on this target to ensure the '<(js2c_input_dir)' is created + 'atom_js2c_copy', ++ 'nodebin' + ], + 'variables': { + 'sandbox_args': [ +@@ -474,11 +485,9 @@ + '<(js2c_input_dir)/preload_bundle.js', + ], + 'action': [ +- 'npm', +- 'run', +- '--silent', +- 'browserify', +- '--', ++ 'python', ++ 'tools/browserify.py', ++ '<(PRODUCT_DIR)/nodebin', + '<@(sandbox_args)', + '-o', + '<@(_outputs)', +@@ -493,12 +502,11 @@ + '<(js2c_input_dir)/isolated_bundle.js', + ], + 'action': [ +- 'npm', +- 'run', +- '--silent', +- 'browserify', +- '--', ++ 'python', ++ 'tools/browserify.py', ++ '<(PRODUCT_DIR)/nodebin', + '<@(isolated_args)', ++ 'lib/isolated_renderer/init.js', + '-o', + '<@(_outputs)', + ], +@@ -533,6 +541,42 @@ + } + ], + }, # target atom_js2c ++ { ++ 'target_name': 'nodebin', ++ 'type': 'executable', ++ 'defines': [ ++ 'ELECTRON_NODE_BUILD_NO_ASAR' ++ ], ++ 'sources': [ ++ 'vendor/node/src/node_main.cc', ++ ], ++ 'dependencies': [ ++ 'vendor/node/node.gyp:node', ++ ], ++ 'include_dirs': [ ++ '.', ++ '<(node_v8_path)/include', ++ 'vendor/native_mate', ++ # Include atom_natives.h. ++ '<(SHARED_INTERMEDIATE_DIR)', ++ # Include directories for uv and node. ++ 'vendor/node/src', ++ 'vendor/node/deps/uv/include', ++ '<(libchromiumcontent_src_dir)', ++ # The `node.h` is using `#include"v8.h"`. ++ '<(libchromiumcontent_src_dir)/v8/include', ++ # The `node.h` is using `#include"ares.h"`. ++ 'vendor/node/deps/cares/include', ++ ], ++ 'link_settings': { ++ 'libraries': [ '<@(libchromiumcontent_v8_libraries)' ], ++ 'ldflags': [ ++ '-Wl,-rpath=\$$ORIGIN/', ++ # Make native module dynamic loading work. ++ '-rdynamic', ++ ], ++ }, ++ }, # target nodebin + ], + 'conditions': [ + ['OS=="mac"', { +diff --git a/toolchain.gypi b/toolchain.gypi +index 1c5f8a713..c20ed1a0f 100644 +--- a/toolchain.gypi ++++ b/toolchain.gypi +@@ -16,7 +16,7 @@ + 'arm_neon%': 1, + + # Abosulte path to source root. +- 'source_root%': '<!(node <(DEPTH)/tools/atom_source_root.js)', ++ 'source_root%': '<!(python <(DEPTH)/tools/atom_source_root.py)', + }, + + # Copy conditionally-set variables out one scope. +@@ -40,34 +40,6 @@ + 'mac_sdk%': '<!(python <(DEPTH)/tools/mac/find_sdk.py <(mac_sdk_min))', + }], + +- ['OS=="linux"', { +- 'variables': { +- # The system libdir used for this ABI. +- 'system_libdir%': 'lib', +- +- # Setting the path to sysroot. +- 'conditions': [ +- ['target_arch=="arm"', { +- # sysroot needs to be an absolute path otherwise it generates +- # incorrect results when passed to pkg-config +- 'sysroot%': '<(source_root)/vendor/debian_wheezy_arm-sysroot', +- }], +- ['target_arch=="ia32"', { +- 'sysroot%': '<(source_root)/vendor/debian_wheezy_i386-sysroot', +- }], +- ['target_arch=="x64"', { +- 'sysroot%': '<(source_root)/vendor/debian_wheezy_amd64-sysroot', +- }], +- ], +- }, +- # Copy conditionally-set variables out one scope. +- 'sysroot%': '<(sysroot)', +- 'system_libdir%': '<(system_libdir)', +- +- # Redirect pkg-config to search from sysroot. +- 'pkg-config%': '<(source_root)/tools/linux/pkg-config-wrapper "<(sysroot)" "<(target_arch)" "<(system_libdir)"', +- }], +- + # Set default compiler flags depending on ARM version. + ['arm_version==6', { + 'arm_arch%': 'armv6', +@@ -136,23 +108,6 @@ + }, + }], + +- # Setup sysroot environment. +- ['OS=="linux" and target_arch in ["arm", "ia32", "x64"]', { +- 'target_defaults': { +- 'target_conditions': [ +- ['_toolset=="target"', { +- 'cflags': [ +- '--sysroot=<(sysroot)', +- ], +- 'ldflags': [ +- '--sysroot=<(sysroot)', +- '<!(<(source_root)/tools/linux/sysroot_ld_path.sh <(sysroot))', +- ], +- }] +- ], +- }, +- }], # sysroot +- + # Setup cross-compilation on Linux. + ['OS=="linux"', { + 'target_defaults': { +@@ -179,6 +134,35 @@ + 'ldflags': [ + '-m64', + ], ++ 'conditions': [ ++ ['use_lto==1 and clang==0', { ++ 'cflags': [ ++ '-fno-fat-lto-objects', ++ '-fuse-linker-plugin', ++ '-flto=4', ++ '--param=lto-partitions=1', ++ ], ++ 'ldflags': [ ++ '-fno-fat-lto-objects', ++ '-fuse-linker-plugin', ++ '-flto=4', ++ '--param=lto-partitions=1', ++ ], ++ 'arflags': [ ++ '<!@(python <(DEPTH)/tools/ar-flags.py)', ++ ] ++ }], ++ ['use_lto==1 and clang==1', { ++ 'cflags': [ ++ '-flto', ++ '-fwhole-program-vtables' ++ ], ++ 'ldflags': [ ++ '-flto', ++ '-fwhole-program-vtables' ++ ], ++ }], ++ ], + }], # target_arch=="x64" and _toolset=="target" + ['target_arch=="arm" and _toolset=="target"', { + 'conditions': [ +diff --git a/tools/ar-flags.py b/tools/ar-flags.py +new file mode 100644 +index 000000000..80b338a6e +--- /dev/null ++++ b/tools/ar-flags.py +@@ -0,0 +1,15 @@ ++#!/usr/bin/env python ++ ++import os ++import subprocess ++ ++if __name__ == '__main__': ++ cc = os.environ.get('CC', '/usr/bin/cc') ++ gcc_version = subprocess.check_output( ++ [cc, '-dumpversion'], universal_newlines=True).strip(' \n') ++ ++ lto_plugin = os.path.join( ++ '/usr/libexec/gcc/x86_64-pc-linux-gnu/', gcc_version, ++ 'liblto_plugin.so') ++ ++ print('--plugin={}'.format(lto_plugin)) +diff --git a/tools/atom_source_root.py b/tools/atom_source_root.py +new file mode 100644 +index 000000000..316e99701 +--- /dev/null ++++ b/tools/atom_source_root.py +@@ -0,0 +1,5 @@ ++#!/usr/bin/env python ++ ++import os.path ++ ++print(os.path.abspath(os.path.dirname(os.path.dirname(__file__)))) +diff --git a/tools/browserify.py b/tools/browserify.py +new file mode 100644 +index 000000000..15472c953 +--- /dev/null ++++ b/tools/browserify.py +@@ -0,0 +1,24 @@ ++#!/usr/bin/env python ++ ++import os ++import subprocess ++import sys ++ ++SOURCE_ROOT = os.path.dirname(os.path.dirname(__file__)) ++ ++ ++def main(): ++ node = sys.argv[1] ++ args = sys.argv[2:] ++ ++ call_browserify(node, args) ++ ++ ++def call_browserify(node, args): ++ browserify = os.path.join( ++ SOURCE_ROOT, 'node_modules', '.bin', 'browserify') ++ subprocess.check_call([node, browserify] + args) ++ ++ ++if __name__ == '__main__': ++ sys.exit(main()) +diff --git a/tools/get-endianness.py b/tools/get-endianness.py +new file mode 100644 +index 000000000..31507936f +--- /dev/null ++++ b/tools/get-endianness.py +@@ -0,0 +1,4 @@ ++#!/usr/bin/env python ++ ++import sys ++print(sys.byteorder) +diff --git a/tools/js2asar.py b/tools/js2asar.py +index adad1751e..ca7686893 100755 +--- a/tools/js2asar.py ++++ b/tools/js2asar.py +@@ -11,13 +11,14 @@ SOURCE_ROOT = os.path.dirname(os.path.dirname(__file__)) + + + def main(): +- archive = sys.argv[1] +- folder_name = sys.argv[2] +- source_files = sys.argv[3:] ++ node = sys.argv[1] ++ archive = sys.argv[2] ++ folder_name = sys.argv[3] ++ source_files = sys.argv[4:] + + output_dir = tempfile.mkdtemp() + copy_files(source_files, output_dir) +- call_asar(archive, os.path.join(output_dir, folder_name)) ++ call_asar(node, archive, os.path.join(output_dir, folder_name)) + shutil.rmtree(output_dir) + + +@@ -28,11 +29,11 @@ def copy_files(source_files, output_dir): + shutil.copy2(source_file, output_path) + + +-def call_asar(archive, output_dir): ++def call_asar(node, archive, output_dir): + asar = os.path.join(SOURCE_ROOT, 'node_modules', '.bin', 'asar') + if sys.platform in ['win32', 'cygwin']: + asar += '.cmd' +- subprocess.check_call([asar, 'pack', output_dir, archive]) ++ subprocess.check_call([node, asar, 'pack', output_dir, archive]) + + + def safe_mkdir(path): +-- +2.14.1 + diff --git a/dev-util/electron/files/electron-vendor-node-external-snapshots-r2.patch b/dev-util/electron/files/electron-vendor-node-external-snapshots-r2.patch new file mode 100644 index 000000000000..b3cd18c2fe2b --- /dev/null +++ b/dev-util/electron/files/electron-vendor-node-external-snapshots-r2.patch @@ -0,0 +1,117 @@ +From da7d4d995b31fcdc94158bbc4adc01bf9bab78a9 Mon Sep 17 00:00:00 2001 +From: Elvis Pranskevichus <elvis@magic.io> +Date: Sat, 11 Jun 2016 18:27:19 -0400 +Subject: [PATCH] Add support for external V8 snapshots + +--- + src/node.cc | 87 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 87 insertions(+) + +diff --git a/src/node.cc b/src/node.cc +index 66233d451..96e4e22d6 100644 +--- a/src/node.cc ++++ b/src/node.cc +@@ -4493,6 +4493,91 @@ inline int Start(Isolate* isolate, IsolateData* isolate_data, + return exit_code; + } + ++#include <sys/mman.h> ++ ++const char kProcSelfExe[] = "/proc/self/exe"; ++const char kNativesFileName[] = "natives_blob.bin"; ++const char kSnapshotFileName[] = "snapshot_blob.bin"; ++const char *g_mapped_natives = nullptr; ++const char *g_mapped_snapshot = nullptr; ++ ++static char* SnapshotPath(const char* filename) { ++ char *path; ++ char *dir; ++ ssize_t r; ++ ++ path = reinterpret_cast<char*>(malloc(4096 + strlen(filename) + 2)); ++ if (path == nullptr) { ++ fprintf(stderr, "out of memory\n"); ++ ABORT(); ++ } ++ ++ r = readlink(kProcSelfExe, path, 4096 + 1); ++ if (r == -1) { ++ perror("could not determine node executable directory"); ++ ABORT(); ++ } ++ ++ path[r] = '\0'; ++ ++ dir = strrchr(path, '/'); ++ ++ strcpy(dir + 1, filename); ++ ++ return path; ++} ++ ++static void LoadV8Snapshot(const char* name, const char** addr, size_t *size) { ++ char *path = SnapshotPath(name); ++ int fd; ++ struct stat sb; ++ ++ fd = open(path, O_RDONLY); ++ ++ if (fd == -1) { ++ fprintf(stderr, "could not open snapshot file '%s': %s\n", ++ path, sys_errlist[errno]); ++ ABORT(); ++ } ++ ++ if (fstat(fd, &sb) == -1) { ++ fprintf(stderr, "could not stat snapshot file '%s': %s\n", ++ path, sys_errlist[errno]); ++ ABORT(); ++ } ++ ++ *size = sb.st_size; ++ ++ *addr = reinterpret_cast<const char*>( ++ mmap(NULL, sb.st_size, PROT_READ, MAP_PRIVATE, fd, 0)); ++ if (*addr == MAP_FAILED) { ++ fprintf(stderr, "could not read snapshot file '%s': %s\n", ++ path, sys_errlist[errno]); ++ ABORT(); ++ } ++ ++ close(fd); ++ free(path); ++} ++ ++static void LoadV8Snapshots() { ++ size_t natives_size; ++ size_t snapshot_size; ++ ++ LoadV8Snapshot(kNativesFileName, &g_mapped_natives, &natives_size); ++ LoadV8Snapshot(kSnapshotFileName, &g_mapped_snapshot, &snapshot_size); ++ ++ v8::StartupData natives; ++ natives.data = g_mapped_natives; ++ natives.raw_size = natives_size; ++ V8::SetNativesDataBlob(&natives); ++ ++ v8::StartupData snapshot; ++ snapshot.data = g_mapped_snapshot; ++ snapshot.raw_size = snapshot_size; ++ V8::SetSnapshotDataBlob(&snapshot); ++} ++ + inline int Start(uv_loop_t* event_loop, + int argc, const char* const* argv, + int exec_argc, const char* const* exec_argv) { +@@ -4557,6 +4642,8 @@ int Start(int argc, char** argv) { + const char** exec_argv; + Init(&argc, const_cast<const char**>(argv), &exec_argc, &exec_argv); + ++ LoadV8Snapshots(); ++ + #if HAVE_OPENSSL + if (const char* extra = secure_getenv("NODE_EXTRA_CA_CERTS")) + crypto::UseExtraCaCerts(extra); +-- +2.11.1 + diff --git a/dev-util/electron/files/toolchain/BUILD.gn b/dev-util/electron/files/toolchain/BUILD.gn new file mode 100644 index 000000000000..78f7b57e3be5 --- /dev/null +++ b/dev-util/electron/files/toolchain/BUILD.gn @@ -0,0 +1,19 @@ +import("//build/toolchain/gcc_toolchain.gni") + +gcc_toolchain("default") { + cc = getenv("CC") + cxx = getenv("CXX") + ar = getenv("AR") + nm = getenv("NM") + ld = cxx + + extra_cflags = getenv("CFLAGS") + extra_cppflags = getenv("CPPFLAGS") + extra_cxxflags = getenv("CXXFLAGS") + extra_ldflags = getenv("LDFLAGS") + + toolchain_args = { + current_cpu = current_cpu + current_os = current_os + } +} |