diff options
| author | Antoine Brodin <antoine@FreeBSD.org> | 2021-01-01 10:11:34 +0000 | 
|---|---|---|
| committer | Antoine Brodin <antoine@FreeBSD.org> | 2021-01-01 10:11:34 +0000 | 
| commit | 26b4c8f71f91d22e081b27814782686edde0c90a (patch) | |
| tree | 1c321c39372c25d8634e75b5c8e08edc676b296d /devel/electron6/files | |
| parent | New port: math/py-optuna: A hyperparameter optimization framework (diff) | |
Revert r559792 to unbreak INDEX and bulk -a
It seems a lot of reverse dependencies were missed
With hat:	portmgr
Diffstat (limited to 'devel/electron6/files')
786 files changed, 28265 insertions, 0 deletions
diff --git a/devel/electron6/files/apply-electron-patches.sh b/devel/electron6/files/apply-electron-patches.sh new file mode 100644 index 000000000000..300c8166f223 --- /dev/null +++ b/devel/electron6/files/apply-electron-patches.sh @@ -0,0 +1,20 @@ +#! /bin/sh + +PATH=/bin:/usr/bin:/usr/local/bin + +PATCH_CMD="git apply" +#PATCH_FLAGS="--numstat --check" # for debugging +PATCH_FLAGS="--verbose --reject" + +WRKSRC=$1 +PATCH_CONF=${WRKSRC}/electron/patches/common/config.json + +PATCHD_REPOD_PAIRS=$(sed -e '1d; $d; /^$/d; s/[",]//g; s/:  */:/' "${PATCH_CONF}") +for prp in ${PATCHD_REPOD_PAIRS}; do +    pd=$(echo "${prp}" | awk -F: '{print $1}' | sed -e 's/src/./') +    rd=$(echo "${prp}" | awk -F: '{print $2}' | sed -e 's/src/./') +    (cd "${WRKSRC}/${rd}" && \ +         while read -r p; do +             ${PATCH_CMD} ${PATCH_FLAGS} "${WRKSRC}/${pd}/${p}" +         done < "${WRKSRC}/${pd}/.patches") +done diff --git a/devel/electron6/files/package.json b/devel/electron6/files/package.json new file mode 100644 index 000000000000..f5c5742f1eed --- /dev/null +++ b/devel/electron6/files/package.json @@ -0,0 +1,135 @@ +{ +  "name": "electron", +  "version": "6.1.12", +  "repository": "https://github.com/electron/electron", +  "description": "Build cross platform desktop apps with JavaScript, HTML, and CSS", +  "devDependencies": { +    "@octokit/rest": "^16.3.2", +    "@types/chai": "^4.1.7", +    "@types/chai-as-promised": "^7.1.0", +    "@types/express": "^4.16.1", +    "@types/fs-extra": "^5.0.5", +    "@types/mocha": "^5.2.6", +    "@types/node": "^10.12.21", +    "@types/split": "^1.0.0", +    "@typescript-eslint/eslint-plugin": "^1.4.2", +    "@typescript-eslint/parser": "^1.4.2", +    "aliasify": "^2.1.0", +    "asar": "^1.0.0", +    "browserify": "^16.2.3", +    "check-for-leaks": "^1.0.2", +    "clang-format": "^1.2.3", +    "colors": "^1.1.2", +    "dotenv-safe": "^4.0.4", +    "dugite": "^1.45.0", +    "electron-docs-linter": "^3.0.1", +    "electron-typescript-definitions": "^8.2.2", +    "eslint": "^5.13.0", +    "eslint-config-standard": "^12.0.0", +    "eslint-plugin-import": "^2.17.2", +    "eslint-plugin-mocha": "^5.2.0", +    "eslint-plugin-node": "^8.0.1", +    "eslint-plugin-standard": "^4.0.0", +    "eslint-plugin-typescript": "^0.14.0", +    "express": "^4.16.4", +    "folder-hash": "^2.1.1", +    "fs-extra": "^7.0.1", +    "husky": "^0.14.3", +    "klaw": "^3.0.0", +    "lint": "^1.1.2", +    "lint-staged": "^8.1.0", +    "minimist": "^1.2.0", +    "nugget": "^2.0.1", +    "octicons": "^7.3.0", +    "plist": "^3.0.1", +    "pre-flight": "^1.1.0", +    "remark-cli": "^4.0.0", +    "remark-preset-lint-markdown-style-guide": "^2.1.1", +    "request": "^2.88.0", +    "semver": "^5.6.0", +    "serve": "^6.5.8", +    "shx": "^0.3.2", +    "standard-markdown": "^5.0.0", +    "sumchecker": "^2.0.2", +    "temp": "^0.8.3", +    "ts-node": "^6.0.3", +    "tsify": "^4.0.1", +    "typescript": "~3.3.3333" +  }, +  "private": true, +  "scripts": { +    "asar": "asar", +    "browserify": "browserify", +    "bump-version": "./script/bump-version.js", +    "check-tls": "python ./script/tls.py", +    "clang-format": "find atom/ chromium_src/ -iname *.h -o -iname *.cc -o -iname *.mm | xargs clang-format -i", +    "lint": "node ./script/lint.js && npm run lint:clang-format && npm run lint:docs", +    "lint:js": "node ./script/lint.js --js", +    "lint:clang-format": "python script/run-clang-format.py -r -c atom/ chromium_src/ || (echo \"\\nCode not formatted correctly.\" && exit 1)", +    "lint:cpp": "node ./script/lint.js --cc", +    "lint:py": "node ./script/lint.js --py", +    "lint:gn": "node ./script/lint.js --gn", +    "lint:docs": "remark docs -qf && npm run lint:js-in-markdown && npm run create-typescript-definitions && npm run lint:docs-relative-links && npm run lint:check-trailing-whitespace", +    "lint:docs-relative-links": "python ./script/check-relative-doc-links.py", +    "lint:check-trailing-whitespace": "python ./script/check-trailing-whitespace.py", +    "lint:js-in-markdown": "standard-markdown docs", +    "create-api-json": "electron-docs-linter docs --outfile=electron-api.json", +    "create-typescript-definitions": "npm run create-api-json && electron-typescript-definitions --in=electron-api.json --out=electron.d.ts && node spec/ts-smoke/runner.js", +    "gn-typescript-definitions": "npm run create-typescript-definitions && shx cp electron.d.ts", +    "pre-flight": "pre-flight", +    "preinstall": "node -e 'process.exit(0)'", +    "precommit": "lint-staged", +    "prepack": "check-for-leaks", +    "prepush": "check-for-leaks", +    "repl": "node ./script/start.js --interactive", +    "start": "node ./script/start.js", +    "test": "node ./script/spec-runner.js", +    "tsc": "tsc" +  }, +  "license": "MIT", +  "author": "Electron Community", +  "keywords": [ +    "electron" +  ], +  "aliasify": { +    "replacements": { +      "@electron/internal/(.+)": "./lib/$1" +    }, +    "appliesTo": { +      "includeExtensions": [ +        ".js", +        ".ts" +      ] +    } +  }, +  "lint-staged": { +    "*.{js,ts}": [ +      "node script/lint.js --js --fix --only --", +      "git add" +    ], +    "*.{js,ts,d.ts}": [ +      "node script/gen-filenames.js", +      "git add" +    ], +    "*.{cc,mm,c,h}": [ +      "python script/run-clang-format.py -r -c --fix", +      "git add" +    ], +    "*.md": [ +      "remark -qf" +    ], +    "*.{gn,gni}": [ +      "python script/run-gn-format.py", +      "git add" +    ], +    "*.py": [ +      "node script/lint.js --py --fix --only --", +      "git add" +    ], +    "docs/api/**/*.md": [ +      "node script/gen-filenames.js", +      "python script/check-trailing-whitespace.py --fix", +      "git add filenames.auto.gni" +    ] +  } +} diff --git a/devel/electron6/files/patch-BUILD.gn b/devel/electron6/files/patch-BUILD.gn new file mode 100644 index 000000000000..a796b070c41e --- /dev/null +++ b/devel/electron6/files/patch-BUILD.gn @@ -0,0 +1,95 @@ +--- BUILD.gn.orig	2019-09-10 11:13:30 UTC ++++ BUILD.gn +@@ -386,7 +386,7 @@ group("gn_all") { +     ] +   } +  +-  if (is_linux || is_android) { ++  if ((is_linux && !is_bsd) || is_android) { +     deps += [ +       "//third_party/breakpad:breakpad_unittests", +       "//third_party/breakpad:core-2-minidump", +@@ -427,8 +427,6 @@ group("gn_all") { +       "//net:disk_cache_memory_test", +       "//net:quic_client", +       "//net:quic_server", +-      "//sandbox/linux:chrome_sandbox", +-      "//sandbox/linux:sandbox_linux_unittests", +       "//testing:empty_main", +     ] +  +@@ -483,10 +481,6 @@ group("gn_all") { +         "//chrome/test:load_library_perf_tests", +         "//chrome/test:sync_performance_tests", +         "//chrome/test/chromedriver:chromedriver", +-        "//courgette:courgette", +-        "//courgette:courgette_fuzz", +-        "//courgette:courgette_minimal_tool", +-        "//courgette:courgette_unittests", +         "//media/cast:generate_barcode_video", +         "//media/cast:generate_timecode_audio", +         "//net:crash_cache", +@@ -541,10 +535,6 @@ group("gn_all") { +       "//mojo:mojo_perftests", +       "//services/service_manager/public/cpp", +       "//testing/gmock:gmock_main", +-      "//third_party/breakpad:dump_syms($host_toolchain)", +-      "//third_party/breakpad:microdump_stackwalk($host_toolchain)", +-      "//third_party/breakpad:minidump_dump($host_toolchain)", +-      "//third_party/breakpad:minidump_stackwalk($host_toolchain)", +     ] +  +     if (!is_android) { +@@ -619,7 +609,7 @@ group("gn_all") { +         host_os == "win") { +       deps += [ "//chrome/test/mini_installer:mini_installer_tests" ] +     } +-  } else if (!is_android && !is_ios && !is_fuchsia) { ++  } else if (!is_android && !is_ios && !is_fuchsia && !is_bsd) { +     deps += [ "//third_party/breakpad:symupload($host_toolchain)" ] +   } +  +@@ -758,7 +748,6 @@ group("gn_all") { +       "//chrome/browser/vr:vr_common_perftests", +       "//chrome/browser/vr:vr_common_unittests", +       "//chrome/browser/vr:vr_pixeltests", +-      "//tools/perf/contrib/vr_benchmarks:vr_perf_tests", +     ] +     if (is_desktop_linux && use_ozone) { +       deps += [ "//chrome/browser/vr/testapp:vr_testapp" ] +@@ -877,7 +866,6 @@ if (is_chromeos) { +       "//ppapi/examples/video_decode", +       "//sandbox/linux:chrome_sandbox", +       "//sandbox/linux:sandbox_linux_unittests", +-      "//third_party/breakpad:minidump_stackwalk($host_toolchain)", +  +       # Blocked on https://github.com/catapult-project/catapult/issues/2297 +       #"//third_party/catapult/telemetry:bitmaptools", +@@ -1033,7 +1021,7 @@ if (!is_ios) { +       ] +     } +  +-    if (!is_win && !is_android) { ++    if (!is_win && !is_android && !is_bsd) { +       data_deps += +           [ "//third_party/breakpad:minidump_stackwalk($host_toolchain)" ] +     } +@@ -1042,7 +1030,7 @@ if (!is_ios) { +       data_deps += [ "//third_party/breakpad:dump_syms($host_toolchain)" ] +     } +  +-    if (is_linux) { ++    if (is_linux && !is_bsd) { +       data_deps += [ "//third_party/breakpad:dump_syms($host_toolchain)" ] +     } +  +@@ -1185,9 +1173,6 @@ group("chromium_builder_perf") { +  +     if (is_win) { +       data_deps += [ "//chrome/installer/mini_installer:mini_installer" ] +-    } else { +-      data_deps += +-          [ "//third_party/breakpad:minidump_stackwalk($host_toolchain)" ] +     } +     if (is_win || is_android) { +       data_deps += [ diff --git a/devel/electron6/files/patch-apps_ui_views_app__window__frame__view.cc b/devel/electron6/files/patch-apps_ui_views_app__window__frame__view.cc new file mode 100644 index 000000000000..0a2a0a44c935 --- /dev/null +++ b/devel/electron6/files/patch-apps_ui_views_app__window__frame__view.cc @@ -0,0 +1,11 @@ +--- apps/ui/views/app_window_frame_view.cc.orig	2019-09-10 10:42:26 UTC ++++ apps/ui/views/app_window_frame_view.cc +@@ -125,7 +125,7 @@ gfx::Rect AppWindowFrameView::GetBoundsForClientView() + gfx::Rect AppWindowFrameView::GetWindowBoundsForClientBounds( +     const gfx::Rect& client_bounds) const { +   gfx::Rect window_bounds = client_bounds; +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS) +   // Get the difference between the widget's client area bounds and window +   // bounds, and grow |window_bounds| by that amount. +   gfx::Insets native_frame_insets = diff --git a/devel/electron6/files/patch-ash_display_mirror__window__controller.cc b/devel/electron6/files/patch-ash_display_mirror__window__controller.cc new file mode 100644 index 000000000000..8b7a0cd355e9 --- /dev/null +++ b/devel/electron6/files/patch-ash_display_mirror__window__controller.cc @@ -0,0 +1,14 @@ +--- ash/display/mirror_window_controller.cc.orig	2019-09-10 10:42:26 UTC ++++ ash/display/mirror_window_controller.cc +@@ -274,7 +274,11 @@ void MirrorWindowController::UpdateWindow( +                          return info.id() == iter->first; +                        }) == display_info_list.end()) { +         CloseAndDeleteHost(iter->second, true); ++#if defined(__llvm__) ++        mirroring_host_info_map_.erase(iter++); ++#else +         iter = mirroring_host_info_map_.erase(iter); ++#endif +       } else { +         ++iter; +       } diff --git a/devel/electron6/files/patch-base_BUILD.gn b/devel/electron6/files/patch-base_BUILD.gn new file mode 100644 index 000000000000..ec0075851862 --- /dev/null +++ b/devel/electron6/files/patch-base_BUILD.gn @@ -0,0 +1,67 @@ +--- base/BUILD.gn.orig	2019-09-10 11:13:31 UTC ++++ base/BUILD.gn +@@ -1258,7 +1258,7 @@ jumbo_component("base") { +   # Needed for <atomic> if using newer C++ library than sysroot, except if +   # building inside the cros_sdk environment - use host_toolchain as a +   # more robust check for this. +-  if (!use_sysroot && (is_android || (is_linux && !is_chromecast)) && ++  if (!use_sysroot && (is_android || (is_linux && !is_chromecast) && !is_clang) && +       host_toolchain != "//build/toolchain/cros:host") { +     libs += [ "atomic" ] +   } +@@ -1284,7 +1284,7 @@ jumbo_component("base") { +         "allocator/allocator_shim_override_glibc_weak_symbols.h", +       ] +       deps += [ "//base/allocator:tcmalloc" ] +-    } else if (is_linux && use_allocator == "none") { ++    } else if ((is_linux && !is_bsd) && use_allocator == "none") { +       sources += [ "allocator/allocator_shim_default_dispatch_to_glibc.cc" ] +     } else if (is_android && use_allocator == "none") { +       sources += [ +@@ -1862,6 +1862,33 @@ jumbo_component("base") { +     } +   } +  ++  if (is_bsd) { ++    sources -= [ ++      "files/file_path_watcher_linux.cc", ++      "files/file_util_linux.cc", ++      "process/memory_linux.cc", ++      "process/process_handle_linux.cc", ++      "process/process_iterator_linux.cc", ++      "process/process_metrics_linux.cc", ++      "system/sys_info_linux.cc" ++    ] ++    sources += [ ++      "files/file_path_watcher_kqueue.cc", ++      "files/file_path_watcher_kqueue.h", ++      "files/file_path_watcher_stub.cc", ++      "process/memory_stubs.cc", ++      "process/process_handle_freebsd.cc", ++      "process/process_iterator_freebsd.cc", ++      "process/process_metrics_freebsd.cc", ++      "system/sys_info_freebsd.cc", ++    ] ++    libs = [ ++      "execinfo", # logging.cc ++      "kvm",      # process_metrics_freebsd ++      "util"      # process_metrics_freebsd ++    ] ++  } ++ +   # iOS +   if (is_ios) { +     set_sources_assignment_filter([]) +@@ -2999,6 +3026,12 @@ test("base_unittests") { +     ] +     set_sources_assignment_filter(sources_assignment_filter) +   } ++ ++  if (is_bsd) { ++    sources -= [ ++      "debug/proc_maps_linux_unittest.cc", ++    ] ++  }  +  +   if (is_win) { +     deps += [ "//base:scoped_handle_test_dll" ] diff --git a/devel/electron6/files/patch-base_allocator_allocator__shim.cc b/devel/electron6/files/patch-base_allocator_allocator__shim.cc new file mode 100644 index 000000000000..adac3317fa52 --- /dev/null +++ b/devel/electron6/files/patch-base_allocator_allocator__shim.cc @@ -0,0 +1,11 @@ +--- base/allocator/allocator_shim.cc.orig	2019-09-10 11:13:31 UTC ++++ base/allocator/allocator_shim.cc +@@ -70,7 +70,7 @@ inline const base::allocator::AllocatorDispatch* GetCh +   // Unfortunately due to that bug NoBarrier_Load() is mistakenly fully +   // barriered on Linux+Clang, and that causes visible perf regressons. +   return reinterpret_cast<const base::allocator::AllocatorDispatch*>( +-#if defined(OS_LINUX) && defined(__clang__) ++#if (defined(OS_BSD) || defined(OS_LINUX)) && defined(__clang__) +       *static_cast<const volatile base::subtle::AtomicWord*>(&g_chain_head) + #else +       base::subtle::NoBarrier_Load(&g_chain_head) diff --git a/devel/electron6/files/patch-base_allocator_allocator__shim__default__dispatch__to__glibc.cc b/devel/electron6/files/patch-base_allocator_allocator__shim__default__dispatch__to__glibc.cc new file mode 100644 index 000000000000..7fe4a32e0d17 --- /dev/null +++ b/devel/electron6/files/patch-base_allocator_allocator__shim__default__dispatch__to__glibc.cc @@ -0,0 +1,76 @@ +--- base/allocator/allocator_shim_default_dispatch_to_glibc.cc.orig	2019-09-10 10:42:26 UTC ++++ base/allocator/allocator_shim_default_dispatch_to_glibc.cc +@@ -5,18 +5,28 @@ + #include "base/allocator/allocator_shim.h" +  + #include <dlfcn.h> +-#include <malloc.h> ++#include <stdio.h> ++#include <stdlib.h> ++#include <malloc_np.h> +  + // This translation unit defines a default dispatch for the allocator shim which + // routes allocations to libc functions. +-// The code here is strongly inspired from tcmalloc's libc_override_glibc.h. ++// The code here is strongly inspired from tcmalloc's override_glibc.h. +  + extern "C" { +-void* __libc_malloc(size_t size); +-void* __libc_calloc(size_t n, size_t size); +-void* __libc_realloc(void* address, size_t size); +-void* __libc_memalign(size_t alignment, size_t size); +-void __libc_free(void* ptr); ++void* __malloc(size_t size); ++void* __calloc(size_t n, size_t size); ++void* __realloc(void* address, size_t len); ++void* __memalign(size_t alignment, size_t size) { ++  void *ret; ++  if (__posix_memalign(&ret, alignment, size) != 0) { ++    return nullptr; ++  } else { ++    return ret; ++  } ++} ++int __posix_memalign(void **ptr, size_t alignment, size_t size); ++void __free(void* ptr); + }  // extern "C" +  + namespace { +@@ -24,32 +34,32 @@ namespace { + using base::allocator::AllocatorDispatch; +  + void* GlibcMalloc(const AllocatorDispatch*, size_t size, void* context) { +-  return __libc_malloc(size); ++  return __malloc(size); + } +  + void* GlibcCalloc(const AllocatorDispatch*, +                   size_t n, +                   size_t size, +                   void* context) { +-  return __libc_calloc(n, size); ++  return __calloc(n, size); + } +  + void* GlibcRealloc(const AllocatorDispatch*, +                    void* address, +                    size_t size, +                    void* context) { +-  return __libc_realloc(address, size); ++  return __realloc(address, size); + } +  + void* GlibcMemalign(const AllocatorDispatch*, +                     size_t alignment, +                     size_t size, +                     void* context) { +-  return __libc_memalign(alignment, size); ++  return __memalign(alignment, size); + } +  + void GlibcFree(const AllocatorDispatch*, void* address, void* context) { +-  __libc_free(address); ++  __free(address); + } +  + size_t GlibcGetSizeEstimate(const AllocatorDispatch*, diff --git a/devel/electron6/files/patch-base_allocator_allocator__shim__override__libc__symbols.h b/devel/electron6/files/patch-base_allocator_allocator__shim__override__libc__symbols.h new file mode 100644 index 000000000000..f82530fb8050 --- /dev/null +++ b/devel/electron6/files/patch-base_allocator_allocator__shim__override__libc__symbols.h @@ -0,0 +1,11 @@ +--- base/allocator/allocator_shim_override_libc_symbols.h.orig	2019-09-10 10:42:26 UTC ++++ base/allocator/allocator_shim_override_libc_symbols.h +@@ -10,7 +10,7 @@ + #endif + #define BASE_ALLOCATOR_ALLOCATOR_SHIM_OVERRIDE_LIBC_SYMBOLS_H_ +  +-#include <malloc.h> ++#include <stdlib.h> +  + #include "base/allocator/allocator_shim_internals.h" +  diff --git a/devel/electron6/files/patch-base_allocator_allocator__shim__unittest.cc b/devel/electron6/files/patch-base_allocator_allocator__shim__unittest.cc new file mode 100644 index 000000000000..f9259057a4ca --- /dev/null +++ b/devel/electron6/files/patch-base_allocator_allocator__shim__unittest.cc @@ -0,0 +1,36 @@ +--- base/allocator/allocator_shim_unittest.cc.orig	2019-09-10 10:42:26 UTC ++++ base/allocator/allocator_shim_unittest.cc +@@ -348,7 +348,7 @@ TEST_F(AllocatorShimTest, InterceptLibcSymbols) { +   ASSERT_GE(aligned_allocs_intercepted_by_size[61], 1u); + #endif  // !OS_WIN +  +-#if !defined(OS_WIN) && !defined(OS_MACOSX) ++#if !defined(OS_WIN) && !defined(OS_MACOSX) && !defined(OS_BSD) +   void* memalign_ptr = memalign(128, 53); +   ASSERT_NE(nullptr, memalign_ptr); +   ASSERT_EQ(0u, reinterpret_cast<uintptr_t>(memalign_ptr) % 128); +@@ -361,7 +361,7 @@ TEST_F(AllocatorShimTest, InterceptLibcSymbols) { +   ASSERT_GE(aligned_allocs_intercepted_by_alignment[kPageSize], 1u); +   // pvalloc rounds the size up to the next page. +   ASSERT_GE(aligned_allocs_intercepted_by_size[kPageSize], 1u); +-#endif  // !OS_WIN && !OS_MACOSX ++#endif  // !OS_WIN && !OS_MACOSX && !OS_BSD +  +   char* realloc_ptr = static_cast<char*>(malloc(10)); +   strcpy(realloc_ptr, "foobar"); +@@ -377,13 +377,13 @@ TEST_F(AllocatorShimTest, InterceptLibcSymbols) { +   free(zero_alloc_ptr); +   ASSERT_GE(frees_intercepted_by_addr[Hash(zero_alloc_ptr)], 1u); +  +-#if !defined(OS_WIN) && !defined(OS_MACOSX) ++#if !defined(OS_WIN) && !defined(OS_MACOSX) && !defined(OS_BSD) +   free(memalign_ptr); +   ASSERT_GE(frees_intercepted_by_addr[Hash(memalign_ptr)], 1u); +  +   free(pvalloc_ptr); +   ASSERT_GE(frees_intercepted_by_addr[Hash(pvalloc_ptr)], 1u); +-#endif  // !OS_WIN && !OS_MACOSX ++#endif  // !OS_WIN && !OS_MACOSX && !OS_BSD +  + #if !defined(OS_WIN) +   free(posix_memalign_ptr); diff --git a/devel/electron6/files/patch-base_allocator_partition__allocator_page__allocator__internals__posix.h b/devel/electron6/files/patch-base_allocator_partition__allocator_page__allocator__internals__posix.h new file mode 100644 index 000000000000..bd3157dd56b5 --- /dev/null +++ b/devel/electron6/files/patch-base_allocator_partition__allocator_page__allocator__internals__posix.h @@ -0,0 +1,11 @@ +--- base/allocator/partition_allocator/page_allocator_internals_posix.h.orig	2019-09-10 11:13:31 UTC ++++ base/allocator/partition_allocator/page_allocator_internals_posix.h +@@ -16,7 +16,7 @@ +  + #include <mach/mach.h> + #endif +-#if defined(OS_LINUX) ++#if defined(OS_BSD) || defined(OS_LINUX) + #include <sys/resource.h> +  + #include <algorithm> diff --git a/devel/electron6/files/patch-base_base__switches.cc b/devel/electron6/files/patch-base_base__switches.cc new file mode 100644 index 000000000000..e9e2538d3252 --- /dev/null +++ b/devel/electron6/files/patch-base_base__switches.cc @@ -0,0 +1,20 @@ +--- base/base_switches.cc.orig	2019-09-10 11:13:31 UTC ++++ base/base_switches.cc +@@ -107,7 +107,7 @@ const char kProfilingFlush[] = "profiling-flush"; + const char kDisableUsbKeyboardDetect[]      = "disable-usb-keyboard-detect"; + #endif +  +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) + // The /dev/shm partition is too small in certain VM environments, causing + // Chrome to fail or crash (see http://crbug.com/715363). Use this flag to + // work-around this issue (a temporary directory will always be used to create +@@ -128,7 +128,7 @@ const char kEnableCrashReporterForTesting[] = + const char kEnableReachedCodeProfiler[] = "enable-reached-code-profiler"; + #endif +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + // Controls whether or not retired instruction counts are surfaced for threads + // in trace events on Linux. + // diff --git a/devel/electron6/files/patch-base_base__switches.h b/devel/electron6/files/patch-base_base__switches.h new file mode 100644 index 000000000000..783350718c07 --- /dev/null +++ b/devel/electron6/files/patch-base_base__switches.h @@ -0,0 +1,20 @@ +--- base/base_switches.h.orig	2019-09-10 11:13:31 UTC ++++ base/base_switches.h +@@ -36,7 +36,7 @@ extern const char kWaitForDebugger[]; + extern const char kDisableUsbKeyboardDetect[]; + #endif +  +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) + extern const char kDisableDevShmUsage[]; + #endif +  +@@ -49,7 +49,7 @@ extern const char kEnableReachedCodeProfiler[]; + extern const char kOrderfileMemoryOptimization[]; + #endif +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + extern const char kEnableThreadInstructionCount[]; + #endif +  diff --git a/devel/electron6/files/patch-base_cpu.cc b/devel/electron6/files/patch-base_cpu.cc new file mode 100644 index 000000000000..9fcc9b111de7 --- /dev/null +++ b/devel/electron6/files/patch-base_cpu.cc @@ -0,0 +1,38 @@ +--- base/cpu.cc.orig	2019-09-10 11:13:31 UTC ++++ base/cpu.cc +@@ -15,7 +15,7 @@ + #include "base/stl_util.h" + #include "build/build_config.h" +  +-#if defined(ARCH_CPU_ARM_FAMILY) && (defined(OS_ANDROID) || defined(OS_LINUX)) ++#if defined(ARCH_CPU_ARM_FAMILY) && (defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_BSD)) + #include "base/files/file_util.h" + #endif +  +@@ -97,7 +97,7 @@ uint64_t xgetbv(uint32_t xcr) { +  + #endif  // ARCH_CPU_X86_FAMILY +  +-#if defined(ARCH_CPU_ARM_FAMILY) && (defined(OS_ANDROID) || defined(OS_LINUX)) ++#if defined(ARCH_CPU_ARM_FAMILY) && (defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_BSD)) + std::string* CpuInfoBrand() { +   static std::string* brand = []() { +     // This function finds the value from /proc/cpuinfo under the key "model +@@ -127,7 +127,7 @@ std::string* CpuInfoBrand() { +   return brand; + } + #endif  // defined(ARCH_CPU_ARM_FAMILY) && (defined(OS_ANDROID) || +-        // defined(OS_LINUX)) ++        // defined(OS_LINUX) || defined(OS_BSD)) +  + }  // namespace +  +@@ -252,7 +252,7 @@ void CPU::Initialize() { +     } +   } + #elif defined(ARCH_CPU_ARM_FAMILY) +-#if (defined(OS_ANDROID) || defined(OS_LINUX)) ++#if (defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_BSD)) +   cpu_brand_ = *CpuInfoBrand(); + #elif defined(OS_WIN) +   // Windows makes high-resolution thread timing information available in diff --git a/devel/electron6/files/patch-base_debug_debugger__posix.cc b/devel/electron6/files/patch-base_debug_debugger__posix.cc new file mode 100644 index 000000000000..1c7702c70ed6 --- /dev/null +++ b/devel/electron6/files/patch-base_debug_debugger__posix.cc @@ -0,0 +1,56 @@ +--- base/debug/debugger_posix.cc.orig	2019-09-10 11:13:31 UTC ++++ base/debug/debugger_posix.cc +@@ -87,7 +87,7 @@ bool BeingDebugged() { +     KERN_PROC, +     KERN_PROC_PID, +     getpid() +-#if defined(OS_OPENBSD) ++#if defined(OS_BSD)  +     , sizeof(struct kinfo_proc), +     0 + #endif +@@ -95,33 +95,35 @@ bool BeingDebugged() { +  +   // Caution: struct kinfo_proc is marked __APPLE_API_UNSTABLE.  The source and +   // binary interfaces may change. +-  struct kinfo_proc info; +-  size_t info_size = sizeof(info); ++  struct kinfo_proc *info; ++  size_t info_size; +  +-#if defined(OS_OPENBSD) +   if (sysctl(mib, base::size(mib), NULL, &info_size, NULL, 0) < 0) +     return -1; +  ++  info = (struct kinfo_proc *)malloc(info_size); +   mib[5] = (info_size / sizeof(struct kinfo_proc)); +-#endif +  +-  int sysctl_result = sysctl(mib, base::size(mib), &info, &info_size, NULL, 0); ++  int sysctl_result = sysctl(mib, base::size(mib), info, &info_size, NULL, 0); +   DCHECK_EQ(sysctl_result, 0); +   if (sysctl_result != 0) { +     is_set = true; +     being_debugged = false; +-    return being_debugged; ++    goto out; +   } +  +   // This process is being debugged if the P_TRACED flag is set. +   is_set = true; + #if defined(OS_FREEBSD) +-  being_debugged = (info.ki_flag & P_TRACED) != 0; ++  being_debugged = (info->ki_flag & P_TRACED) != 0; + #elif defined(OS_BSD) +-  being_debugged = (info.p_flag & P_TRACED) != 0; ++  being_debugged = (info->p_flag & P_TRACED) != 0; + #else +-  being_debugged = (info.kp_proc.p_flag & P_TRACED) != 0; ++  being_debugged = (info->kp_proc.p_flag & P_TRACED) != 0; + #endif ++ ++out: ++  free(info); +   return being_debugged; + } +  diff --git a/devel/electron6/files/patch-base_debug_elf__reader.cc b/devel/electron6/files/patch-base_debug_elf__reader.cc new file mode 100644 index 000000000000..f9d6f2fa0a2e --- /dev/null +++ b/devel/electron6/files/patch-base_debug_elf__reader.cc @@ -0,0 +1,18 @@ +--- base/debug/elf_reader.cc.orig	2019-09-10 10:42:27 UTC ++++ base/debug/elf_reader.cc +@@ -83,6 +83,7 @@ size_t ReadElfBuildId(const void* elf_mapped_base, +         reinterpret_cast<const Nhdr*>(elf_base + header.p_vaddr); +     bool found = false; +     while (current_note < section_end) { ++#if !defined(OS_BSD) +       if (current_note->n_type == NT_GNU_BUILD_ID) { +         const char* note_name = +             reinterpret_cast<const char*>(current_note) + sizeof(Nhdr); +@@ -92,6 +93,7 @@ size_t ReadElfBuildId(const void* elf_mapped_base, +           break; +         } +       } ++#endif +  +       current_note = reinterpret_cast<const Nhdr*>( +           reinterpret_cast<const char*>(current_note) + sizeof(Nhdr) + diff --git a/devel/electron6/files/patch-base_debug_proc__maps__linux.cc b/devel/electron6/files/patch-base_debug_proc__maps__linux.cc new file mode 100644 index 000000000000..f00b430389aa --- /dev/null +++ b/devel/electron6/files/patch-base_debug_proc__maps__linux.cc @@ -0,0 +1,11 @@ +--- base/debug/proc_maps_linux.cc.orig	2019-09-10 10:42:27 UTC ++++ base/debug/proc_maps_linux.cc +@@ -12,7 +12,7 @@ + #include "base/strings/string_split.h" + #include "build/build_config.h" +  +-#if defined(OS_LINUX) || defined(OS_ANDROID) ++#if defined(OS_LINUX) || defined(OS_BSD) || defined(OS_ANDROID) + #include <inttypes.h> + #endif +  diff --git a/devel/electron6/files/patch-base_debug_stack__trace.cc b/devel/electron6/files/patch-base_debug_stack__trace.cc new file mode 100644 index 000000000000..dc573d9ddf69 --- /dev/null +++ b/devel/electron6/files/patch-base_debug_stack__trace.cc @@ -0,0 +1,11 @@ +--- base/debug/stack_trace.cc.orig	2019-09-10 10:42:27 UTC ++++ base/debug/stack_trace.cc +@@ -14,7 +14,7 @@ +  + #if BUILDFLAG(CAN_UNWIND_WITH_FRAME_POINTERS) +  +-#if defined(OS_LINUX) || defined(OS_ANDROID) ++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD) + #include <pthread.h> + #include "base/process/process_handle.h" + #include "base/threading/platform_thread.h" diff --git a/devel/electron6/files/patch-base_debug_stack__trace.h b/devel/electron6/files/patch-base_debug_stack__trace.h new file mode 100644 index 000000000000..b29a41e77e09 --- /dev/null +++ b/devel/electron6/files/patch-base_debug_stack__trace.h @@ -0,0 +1,10 @@ +--- base/debug/stack_trace.h.orig	2019-09-10 11:13:31 UTC ++++ base/debug/stack_trace.h +@@ -16,6 +16,7 @@ + #include "build/build_config.h" +  + #if defined(OS_POSIX) ++#include <sys/stdint.h> + #include <unistd.h> + #endif +  diff --git a/devel/electron6/files/patch-base_debug_stack__trace__posix.cc b/devel/electron6/files/patch-base_debug_stack__trace__posix.cc new file mode 100644 index 000000000000..1e89ec696670 --- /dev/null +++ b/devel/electron6/files/patch-base_debug_stack__trace__posix.cc @@ -0,0 +1,31 @@ +--- base/debug/stack_trace_posix.cc.orig	2019-09-10 11:13:31 UTC ++++ base/debug/stack_trace_posix.cc +@@ -35,7 +35,7 @@ + #include <AvailabilityMacros.h> + #endif +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + #include "base/debug/proc_maps_linux.h" + #endif +  +@@ -653,6 +653,11 @@ class SandboxSymbolizeHelper { +   // for the modules that are loaded in the current process. +   // Returns true on success. +   bool CacheMemoryRegions() { ++#if defined(OS_BSD) ++    // TODO (rene) avoid link error, implement something? ++    NOTIMPLEMENTED(); ++    return false; ++#else +     // Reads /proc/self/maps. +     std::string contents; +     if (!ReadProcMaps(&contents)) { +@@ -670,6 +675,7 @@ class SandboxSymbolizeHelper { +  +     is_initialized_ = true; +     return true; ++#endif +   } +  +   // Opens all object files and caches their file descriptors. diff --git a/devel/electron6/files/patch-base_files_file__path__unittest.cc b/devel/electron6/files/patch-base_files_file__path__unittest.cc new file mode 100644 index 000000000000..4f2fb9153233 --- /dev/null +++ b/devel/electron6/files/patch-base_files_file__path__unittest.cc @@ -0,0 +1,11 @@ +--- base/files/file_path_unittest.cc.orig	2019-09-10 11:13:31 UTC ++++ base/files/file_path_unittest.cc +@@ -1139,7 +1139,7 @@ TEST_F(FilePathTest, FromUTF8Unsafe_And_AsUTF8Unsafe)  +       "\xEF\xBC\xA1\xEF\xBC\xA2\xEF\xBC\xA3.txt" }, +   }; +  +-#if !defined(SYSTEM_NATIVE_UTF8) && defined(OS_LINUX) ++#if !defined(SYSTEM_NATIVE_UTF8) && (defined(OS_LINUX) || defined(OS_BSD)) +   ScopedLocale locale("en_US.UTF-8"); + #endif +  diff --git a/devel/electron6/files/patch-base_files_file__path__watcher.cc b/devel/electron6/files/patch-base_files_file__path__watcher.cc new file mode 100644 index 000000000000..0887616e47da --- /dev/null +++ b/devel/electron6/files/patch-base_files_file__path__watcher.cc @@ -0,0 +1,11 @@ +--- base/files/file_path_watcher.cc.orig	2019-09-10 10:42:27 UTC ++++ base/files/file_path_watcher.cc +@@ -20,7 +20,7 @@ FilePathWatcher::~FilePathWatcher() { + // static + bool FilePathWatcher::RecursiveWatchAvailable() { + #if (defined(OS_MACOSX) && !defined(OS_IOS)) || defined(OS_WIN) || \ +-    defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_AIX) ++    defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_AIX) || defined(OS_BSD) +   return true; + #else +   // FSEvents isn't available on iOS. diff --git a/devel/electron6/files/patch-base_files_file__path__watcher__kqueue.h b/devel/electron6/files/patch-base_files_file__path__watcher__kqueue.h new file mode 100644 index 000000000000..70c1d4a9870c --- /dev/null +++ b/devel/electron6/files/patch-base_files_file__path__watcher__kqueue.h @@ -0,0 +1,13 @@ +--- base/files/file_path_watcher_kqueue.h.orig	2019-09-10 10:42:27 UTC ++++ base/files/file_path_watcher_kqueue.h +@@ -5,6 +5,10 @@ + #ifndef BASE_FILES_FILE_PATH_WATCHER_KQUEUE_H_ + #define BASE_FILES_FILE_PATH_WATCHER_KQUEUE_H_ +  ++#ifdef __FreeBSD__ ++#include <sys/stdint.h> ++#include <sys/types.h> ++#endif + #include <sys/event.h> +  + #include <memory> diff --git a/devel/electron6/files/patch-base_files_file__path__watcher__stub.cc b/devel/electron6/files/patch-base_files_file__path__watcher__stub.cc new file mode 100644 index 000000000000..22b0a9df5193 --- /dev/null +++ b/devel/electron6/files/patch-base_files_file__path__watcher__stub.cc @@ -0,0 +1,51 @@ +--- base/files/file_path_watcher_stub.cc.orig	2019-09-10 10:42:27 UTC ++++ base/files/file_path_watcher_stub.cc +@@ -1,14 +1,15 @@ +-// Copyright (c) 2012 The Chromium Authors. All rights reserved. ++// Copyright 2014 The Chromium Authors. All rights reserved. + // Use of this source code is governed by a BSD-style license that can be + // found in the LICENSE file. +  +-// This file exists for Unix systems which don't have the inotify headers, and +-// thus cannot build file_watcher_inotify.cc +  +-#include "base/files/file_path_watcher.h" ++#include <memory> +  ++#include "base/files/file_path_watcher.h" ++#include "base/files/file_path_watcher_kqueue.h" + #include "base/macros.h" + #include "base/memory/ptr_util.h" ++#include "build/build_config.h" +  + namespace base { +  +@@ -22,12 +23,26 @@ class FilePathWatcherImpl : public FilePathWatcher::Pl +   bool Watch(const FilePath& path, +              bool recursive, +              const FilePathWatcher::Callback& callback) override { +-    return false; ++    DCHECK(!impl_.get()); ++    if (recursive) { ++      if (!FilePathWatcher::RecursiveWatchAvailable()) ++        return false; ++    } else { ++     impl_ = std::make_unique<FilePathWatcherKQueue>(); ++    } ++    DCHECK(impl_.get()); ++    return impl_->Watch(path, recursive, callback); +   } +  +-  void Cancel() override {} ++  void Cancel() override { ++    if (impl_.get()) ++      impl_->Cancel(); ++    set_cancelled(); ++  } +  +  private: ++  std::unique_ptr<PlatformDelegate> impl_; ++ +   DISALLOW_COPY_AND_ASSIGN(FilePathWatcherImpl); + }; +  diff --git a/devel/electron6/files/patch-base_files_file__path__watcher__unittest.cc b/devel/electron6/files/patch-base_files_file__path__watcher__unittest.cc new file mode 100644 index 000000000000..1f43ef0299b4 --- /dev/null +++ b/devel/electron6/files/patch-base_files_file__path__watcher__unittest.cc @@ -0,0 +1,11 @@ +--- base/files/file_path_watcher_unittest.cc.orig	2019-09-10 11:13:31 UTC ++++ base/files/file_path_watcher_unittest.cc +@@ -436,7 +436,7 @@ TEST_F(FilePathWatcherTest, WatchDirectory) { +   VLOG(1) << "Waiting for file1 creation"; +   ASSERT_TRUE(WaitForEvents()); +  +-#if !defined(OS_MACOSX) ++#if !defined(OS_MACOSX) && !defined(OS_BSD) +   // Mac implementation does not detect files modified in a directory. +   ASSERT_TRUE(WriteFile(file1, "content v2")); +   VLOG(1) << "Waiting for file1 modification"; diff --git a/devel/electron6/files/patch-base_files_file__util.h b/devel/electron6/files/patch-base_files_file__util.h new file mode 100644 index 000000000000..4f3b9d590a3d --- /dev/null +++ b/devel/electron6/files/patch-base_files_file__util.h @@ -0,0 +1,11 @@ +--- base/files/file_util.h.orig	2019-09-10 11:13:31 UTC ++++ base/files/file_util.h +@@ -476,7 +476,7 @@ BASE_EXPORT bool VerifyPathControlledByAdmin(const bas + // the directory |path|, in the number of FilePath::CharType, or -1 on failure. + BASE_EXPORT int GetMaximumPathComponentLength(const base::FilePath& path); +  +-#if defined(OS_LINUX) || defined(OS_AIX) ++#if defined(OS_LINUX) || defined(OS_AIX) || defined(OS_BSD) + // Broad categories of file systems as returned by statfs() on Linux. + enum FileSystemType { +   FILE_SYSTEM_UNKNOWN,  // statfs failed. diff --git a/devel/electron6/files/patch-base_files_file__util__posix.cc b/devel/electron6/files/patch-base_files_file__util__posix.cc new file mode 100644 index 000000000000..0280c0e5cc65 --- /dev/null +++ b/devel/electron6/files/patch-base_files_file__util__posix.cc @@ -0,0 +1,11 @@ +--- base/files/file_util_posix.cc.orig	2019-09-10 11:13:31 UTC ++++ base/files/file_util_posix.cc +@@ -419,7 +419,7 @@ bool CreatePipe(ScopedFD* read_fd, ScopedFD* write_fd, + } +  + bool CreateLocalNonBlockingPipe(int fds[2]) { +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   return pipe2(fds, O_CLOEXEC | O_NONBLOCK) == 0; + #else +   int raw_fds[2]; diff --git a/devel/electron6/files/patch-base_files_scoped__file.cc b/devel/electron6/files/patch-base_files_scoped__file.cc new file mode 100644 index 000000000000..7ddee9104d01 --- /dev/null +++ b/devel/electron6/files/patch-base_files_scoped__file.cc @@ -0,0 +1,11 @@ +--- base/files/scoped_file.cc.orig	2019-09-10 10:42:27 UTC ++++ base/files/scoped_file.cc +@@ -30,7 +30,7 @@ void ScopedFDCloseTraits::Free(int fd) { +   // a single open directory would bypass the entire security model. +   int ret = IGNORE_EINTR(close(fd)); +  +-#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_FUCHSIA) || \ ++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_FUCHSIA) || defined(OS_BSD) || \ +     defined(OS_ANDROID) +   // NB: Some file descriptors can return errors from close() e.g. network +   // filesystems such as NFS and Linux input devices. On Linux, macOS, and diff --git a/devel/electron6/files/patch-base_i18n_icu__util.cc b/devel/electron6/files/patch-base_i18n_icu__util.cc new file mode 100644 index 000000000000..a5209430a706 --- /dev/null +++ b/devel/electron6/files/patch-base_i18n_icu__util.cc @@ -0,0 +1,20 @@ +--- base/i18n/icu_util.cc.orig	2019-09-10 10:42:27 UTC ++++ base/i18n/icu_util.cc +@@ -20,7 +20,7 @@ + #include "build/build_config.h" + #include "third_party/icu/source/common/unicode/putil.h" + #include "third_party/icu/source/common/unicode/udata.h" +-#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_ANDROID) ++#if (defined(OS_LINUX) || defined(OS_BSD) && !defined(OS_CHROMEOS)) || defined(OS_ANDROID) + #include "third_party/icu/source/i18n/unicode/timezone.h" + #endif +  +@@ -285,7 +285,7 @@ bool InitializeICU() { + // TODO(jungshik): Some callers do not care about tz at all. If necessary, + // add a boolean argument to this function to init'd the default tz only + // when requested. +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS) +   if (result) +     std::unique_ptr<icu::TimeZone> zone(icu::TimeZone::createDefault()); + #endif diff --git a/devel/electron6/files/patch-base_linux__util.cc b/devel/electron6/files/patch-base_linux__util.cc new file mode 100644 index 000000000000..5440aa6dd760 --- /dev/null +++ b/devel/electron6/files/patch-base_linux__util.cc @@ -0,0 +1,18 @@ +--- base/linux_util.cc.orig	2019-09-10 10:42:27 UTC ++++ base/linux_util.cc +@@ -90,12 +90,14 @@ char g_linux_distro[kDistroSize] = +     "CrOS"; + #elif defined(OS_ANDROID) +     "Android"; ++#elif defined(OS_BSD) ++    "BSD"; + #else  // if defined(OS_LINUX) +     "Unknown"; + #endif +  + std::string GetLinuxDistro() { +-#if defined(OS_CHROMEOS) || defined(OS_ANDROID) ++#if defined(OS_CHROMEOS) || defined(OS_ANDROID) || defined(OS_BSD) +   return g_linux_distro; + #elif defined(OS_LINUX) +   LinuxDistroHelper* distro_state_singleton = LinuxDistroHelper::GetInstance(); diff --git a/devel/electron6/files/patch-base_logging__unittest.cc b/devel/electron6/files/patch-base_logging__unittest.cc new file mode 100644 index 000000000000..220ec7e65bad --- /dev/null +++ b/devel/electron6/files/patch-base_logging__unittest.cc @@ -0,0 +1,11 @@ +--- base/logging_unittest.cc.orig	2019-09-10 11:13:31 UTC ++++ base/logging_unittest.cc +@@ -444,7 +444,7 @@ void CheckCrashTestSighandler(int, siginfo_t* info, vo +   // need the arch-specific boilerplate below, which is inspired by breakpad. +   // At the same time, on OSX, ucontext.h is deprecated but si_addr works fine. +   uintptr_t crash_addr = 0; +-#if defined(OS_MACOSX) ++#if defined(OS_MACOSX) || defined(OS_BSD) +   crash_addr = reinterpret_cast<uintptr_t>(info->si_addr); + #else  // OS_POSIX && !OS_MACOSX +   ucontext_t* context = reinterpret_cast<ucontext_t*>(context_ptr); diff --git a/devel/electron6/files/patch-base_memory_protected__memory__posix.cc b/devel/electron6/files/patch-base_memory_protected__memory__posix.cc new file mode 100644 index 000000000000..af81d832c693 --- /dev/null +++ b/devel/electron6/files/patch-base_memory_protected__memory__posix.cc @@ -0,0 +1,31 @@ +--- base/memory/protected_memory_posix.cc.orig	2019-09-10 10:42:27 UTC ++++ base/memory/protected_memory_posix.cc +@@ -8,9 +8,9 @@ + #include <sys/mman.h> + #include <unistd.h> +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + #include <sys/resource.h> +-#endif  // defined(OS_LINUX) ++#endif  // defined(OS_LINUX) || defined(OS_BSD) +  + #if defined(OS_MACOSX) && !defined(OS_IOS) + #include <mach/mach.h> +@@ -44,7 +44,7 @@ bool AutoWritableMemory::SetMemoryReadOnly(void* start +   return SetMemory(start, end, PROT_READ); + } +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + void AssertMemoryIsReadOnly(const void* ptr) { + #if DCHECK_IS_ON() +   const uintptr_t page_mask = ~(base::GetPageSize() - 1); +@@ -74,6 +74,6 @@ void AssertMemoryIsReadOnly(const void* ptr) { +   DCHECK_EQ(region_info.protection, VM_PROT_READ); + #endif  // DCHECK_IS_ON() + } +-#endif  // defined(OS_LINUX) || (defined(OS_MACOSX) && !defined(OS_IOS)) ++#endif  // defined(OS_LINUX) || (defined(OS_MACOSX) && !defined(OS_IOS)) || defined(OS_BSD) +  + }  // namespace base diff --git a/devel/electron6/files/patch-base_native__library__posix.cc b/devel/electron6/files/patch-base_native__library__posix.cc new file mode 100644 index 000000000000..7c0440464d56 --- /dev/null +++ b/devel/electron6/files/patch-base_native__library__posix.cc @@ -0,0 +1,11 @@ +--- base/native_library_posix.cc.orig	2019-09-10 10:42:27 UTC ++++ base/native_library_posix.cc +@@ -29,7 +29,7 @@ NativeLibrary LoadNativeLibraryWithOptions(const FileP +   // http://crbug.com/17943, http://crbug.com/17557, http://crbug.com/36892, +   // and http://crbug.com/40794. +   int flags = RTLD_LAZY; +-#if defined(OS_ANDROID) || !defined(RTLD_DEEPBIND) ++#if defined(OS_ANDROID) || !defined(RTLD_DEEPBIND) || defined(OS_BSD) +   // Certain platforms don't define RTLD_DEEPBIND. Android dlopen() requires +   // further investigation, as it might vary across versions. Crash here to +   // warn developers that they're trying to rely on uncertain behavior. diff --git a/devel/electron6/files/patch-base_native__library__unittest.cc b/devel/electron6/files/patch-base_native__library__unittest.cc new file mode 100644 index 000000000000..6d808ba54fc8 --- /dev/null +++ b/devel/electron6/files/patch-base_native__library__unittest.cc @@ -0,0 +1,11 @@ +--- base/native_library_unittest.cc.orig	2019-09-10 10:42:27 UTC ++++ base/native_library_unittest.cc +@@ -120,7 +120,7 @@ TEST(NativeLibraryTest, LoadLibrary) { + // Android dlopen() requires further investigation, as it might vary across + // versions with respect to symbol resolution scope. + // TSan and MSan error out on RTLD_DEEPBIND, https://crbug.com/705255 +-#if !defined(OS_ANDROID) && !defined(THREAD_SANITIZER) && \ ++#if !defined(OS_ANDROID) && !defined(OS_BSD) && !defined(THREAD_SANITIZER) && \ +     !defined(MEMORY_SANITIZER) +  + // Verifies that the |prefer_own_symbols| option satisfies its guarantee that diff --git a/devel/electron6/files/patch-base_numerics_safe__math__shared__impl.h b/devel/electron6/files/patch-base_numerics_safe__math__shared__impl.h new file mode 100644 index 000000000000..c18190d0ead6 --- /dev/null +++ b/devel/electron6/files/patch-base_numerics_safe__math__shared__impl.h @@ -0,0 +1,13 @@ +--- base/numerics/safe_math_shared_impl.h.orig	2019-09-10 11:13:31 UTC ++++ base/numerics/safe_math_shared_impl.h +@@ -19,9 +19,7 @@ +  + // Where available use builtin math overflow support on Clang and GCC. + #if !defined(__native_client__) &&                         \ +-    ((defined(__clang__) &&                                \ +-      ((__clang_major__ > 3) ||                            \ +-       (__clang_major__ == 3 && __clang_minor__ >= 4))) || \ ++    ((defined(__clang__) && (__clang_major__ > 6)) ||      \ +      (defined(__GNUC__) && __GNUC__ >= 5)) + #include "base/numerics/safe_math_clang_gcc_impl.h" + #define BASE_HAS_OPTIMIZED_SAFE_MATH (1) diff --git a/devel/electron6/files/patch-base_posix_can__lower__nice__to.cc b/devel/electron6/files/patch-base_posix_can__lower__nice__to.cc new file mode 100644 index 000000000000..37ccec83ab7d --- /dev/null +++ b/devel/electron6/files/patch-base_posix_can__lower__nice__to.cc @@ -0,0 +1,20 @@ +--- base/posix/can_lower_nice_to.cc.orig	2019-09-10 10:42:27 UTC ++++ base/posix/can_lower_nice_to.cc +@@ -31,6 +31,9 @@ bool CanLowerNiceTo(int nice_value) { +   if (geteuid() == 0) +     return true; +  ++#if defined(OS_BSD) ++  return false; ++#else +   // 2. Skip checking the CAP_SYS_NICE permission because it would require +   // libcap.so. +  +@@ -54,6 +57,7 @@ bool CanLowerNiceTo(int nice_value) { +   // And lowering niceness to |nice_value| is allowed if it is greater than or +   // equal to the limit: +   return nice_value >= lowest_nice_allowed; ++#endif + } +  + }  // namespace internal diff --git a/devel/electron6/files/patch-base_posix_unix__domain__socket.cc b/devel/electron6/files/patch-base_posix_unix__domain__socket.cc new file mode 100644 index 000000000000..a4691b9effe2 --- /dev/null +++ b/devel/electron6/files/patch-base_posix_unix__domain__socket.cc @@ -0,0 +1,49 @@ +--- base/posix/unix_domain_socket.cc.orig	2019-09-10 10:42:27 UTC ++++ base/posix/unix_domain_socket.cc +@@ -5,7 +5,10 @@ + #include "base/posix/unix_domain_socket.h" +  + #include <errno.h> ++#include <sys/param.h> + #include <sys/socket.h> ++#include <sys/types.h> ++#include <sys/ucred.h> + #if !defined(OS_NACL_NONSFI) + #include <sys/un.h> + #endif +@@ -28,6 +31,14 @@ namespace base { +  + const size_t UnixDomainSocket::kMaxFileDescriptors = 16; +  ++#ifndef SCM_CREDENTIALS ++#  define SCM_CREDENTIALS  0x9001 ++#endif ++ ++#ifndef SO_PASSCRED ++#  define SO_PASSCRED      0x9002 ++#endif ++ + #if !defined(OS_NACL_NONSFI) + bool CreateSocketPair(ScopedFD* one, ScopedFD* two) { +   int raw_socks[2]; +@@ -150,7 +161,7 @@ ssize_t UnixDomainSocket::RecvMsgWithFlags(int fd, + #if !defined(OS_NACL_NONSFI) && !defined(OS_MACOSX) +       // The PNaCl toolchain for Non-SFI binary build and macOS do not support +       // ucred. macOS supports xucred, but this structure is insufficient. +-      + CMSG_SPACE(sizeof(struct ucred)) ++      + CMSG_SPACE(sizeof(struct cmsgcred)) + #endif  // OS_NACL_NONSFI or OS_MACOSX +       ; +   char control_buffer[kControlBufferSize]; +@@ -180,9 +191,9 @@ ssize_t UnixDomainSocket::RecvMsgWithFlags(int fd, +       // SCM_CREDENTIALS. +       if (cmsg->cmsg_level == SOL_SOCKET && +           cmsg->cmsg_type == SCM_CREDENTIALS) { +-        DCHECK_EQ(payload_len, sizeof(struct ucred)); ++        DCHECK_EQ(payload_len, sizeof(struct cmsgcred)); +         DCHECK_EQ(pid, -1); +-        pid = reinterpret_cast<struct ucred*>(CMSG_DATA(cmsg))->pid; ++        pid = getpid(); +       } + #endif  // !defined(OS_NACL_NONSFI) && !defined(OS_MACOSX) +     } diff --git a/devel/electron6/files/patch-base_posix_unix__domain__socket__unittest.cc b/devel/electron6/files/patch-base_posix_unix__domain__socket__unittest.cc new file mode 100644 index 000000000000..7e4d9d7bf2d2 --- /dev/null +++ b/devel/electron6/files/patch-base_posix_unix__domain__socket__unittest.cc @@ -0,0 +1,12 @@ +--- base/posix/unix_domain_socket_unittest.cc.orig	2019-09-10 10:42:27 UTC ++++ base/posix/unix_domain_socket_unittest.cc +@@ -8,6 +8,9 @@ + #include <stdint.h> + #include <sys/socket.h> + #include <sys/types.h> ++#if defined(OS_BSD) ++#include <signal.h> ++#endif + #include <unistd.h> +  + #include "base/bind.h" diff --git a/devel/electron6/files/patch-base_process_internal__linux.cc b/devel/electron6/files/patch-base_process_internal__linux.cc new file mode 100644 index 000000000000..c5d97bd968f5 --- /dev/null +++ b/devel/electron6/files/patch-base_process_internal__linux.cc @@ -0,0 +1,16 @@ +--- base/process/internal_linux.cc.orig	2019-09-10 10:42:27 UTC ++++ base/process/internal_linux.cc +@@ -60,10 +60,13 @@ bool ReadProcFile(const FilePath& file, std::string* b +   // Synchronously reading files in /proc is safe. +   ThreadRestrictions::ScopedAllowIO allow_io; +  ++#if !defined(OS_BSD) +   if (!ReadFileToString(file, buffer)) { +     DLOG(WARNING) << "Failed to read " << file.MaybeAsASCII(); +     return false; +   } ++#endif ++ +   return !buffer->empty(); + } +  diff --git a/devel/electron6/files/patch-base_process_internal__linux.h b/devel/electron6/files/patch-base_process_internal__linux.h new file mode 100644 index 000000000000..6d7b3291ce21 --- /dev/null +++ b/devel/electron6/files/patch-base_process_internal__linux.h @@ -0,0 +1,11 @@ +--- base/process/internal_linux.h.orig	2019-09-10 10:42:27 UTC ++++ base/process/internal_linux.h +@@ -14,6 +14,8 @@ +  + #include "base/files/file_path.h" +  ++#include <unistd.h> /* pid_t */ ++ + namespace base { +  + class Time; diff --git a/devel/electron6/files/patch-base_process_kill.h b/devel/electron6/files/patch-base_process_kill.h new file mode 100644 index 000000000000..3033cb958c26 --- /dev/null +++ b/devel/electron6/files/patch-base_process_kill.h @@ -0,0 +1,16 @@ +--- base/process/kill.h.orig	2019-09-10 10:42:27 UTC ++++ base/process/kill.h +@@ -111,11 +111,11 @@ BASE_EXPORT TerminationStatus GetTerminationStatus(Pro + BASE_EXPORT TerminationStatus GetKnownDeadTerminationStatus( +     ProcessHandle handle, int* exit_code); +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + // Spawns a thread to wait asynchronously for the child |process| to exit + // and then reaps it. + BASE_EXPORT void EnsureProcessGetsReaped(Process process); +-#endif  // defined(OS_LINUX) ++#endif  // defined(OS_LINUX) || defined(OS_BSD) + #endif  // defined(OS_POSIX) +  + // Registers |process| to be asynchronously monitored for termination, forcibly diff --git a/devel/electron6/files/patch-base_process_kill__posix.cc b/devel/electron6/files/patch-base_process_kill__posix.cc new file mode 100644 index 000000000000..4a2b6a0300f4 --- /dev/null +++ b/devel/electron6/files/patch-base_process_kill__posix.cc @@ -0,0 +1,20 @@ +--- base/process/kill_posix.cc.orig	2019-09-10 10:42:27 UTC ++++ base/process/kill_posix.cc +@@ -168,7 +168,7 @@ void EnsureProcessTerminated(Process process) { +       0, new BackgroundReaper(std::move(process), TimeDelta::FromSeconds(2))); + } +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + void EnsureProcessGetsReaped(Process process) { +   DCHECK(!process.is_current()); +  +@@ -179,7 +179,7 @@ void EnsureProcessGetsReaped(Process process) { +   PlatformThread::CreateNonJoinable( +       0, new BackgroundReaper(std::move(process), TimeDelta())); + } +-#endif  // defined(OS_LINUX) ++#endif  // defined(OS_LINUX) || defined(OS_BSD) +  + #endif  // !defined(OS_MACOSX) + #endif  // !defined(OS_NACL_NONSFI) diff --git a/devel/electron6/files/patch-base_process_launch.cc b/devel/electron6/files/patch-base_process_launch.cc new file mode 100644 index 000000000000..5963a42c8a32 --- /dev/null +++ b/devel/electron6/files/patch-base_process_launch.cc @@ -0,0 +1,11 @@ +--- base/process/launch.cc.orig	2019-09-10 10:42:27 UTC ++++ base/process/launch.cc +@@ -15,7 +15,7 @@ LaunchOptions::~LaunchOptions() = default; +  + LaunchOptions LaunchOptionsForTest() { +   LaunchOptions options; +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   // To prevent accidental privilege sharing to an untrusted child, processes +   // are started with PR_SET_NO_NEW_PRIVS. Do not set that here, since this +   // new child will be used for testing only. diff --git a/devel/electron6/files/patch-base_process_launch.h b/devel/electron6/files/patch-base_process_launch.h new file mode 100644 index 000000000000..471f975026dc --- /dev/null +++ b/devel/electron6/files/patch-base_process_launch.h @@ -0,0 +1,20 @@ +--- base/process/launch.h.orig	2019-09-10 11:13:31 UTC ++++ base/process/launch.h +@@ -181,7 +181,7 @@ struct BASE_EXPORT LaunchOptions { +   bool clear_environment = false; + #endif  // OS_WIN || OS_POSIX || OS_FUCHSIA +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   // If non-zero, start the process using clone(), using flags as provided. +   // Unlike in clone, clone_flags may not contain a custom termination signal +   // that is sent to the parent when the child dies. The termination signal will +@@ -194,7 +194,7 @@ struct BASE_EXPORT LaunchOptions { +  +   // Sets parent process death signal to SIGKILL. +   bool kill_on_parent_death = false; +-#endif  // defined(OS_LINUX) ++#endif  // defined(OS_LINUX) || defined(OS_BSD) +  + #if defined(OS_MACOSX) && !defined(OS_IOS) +   // Mach ports that will be accessible to the child process. These are not diff --git a/devel/electron6/files/patch-base_process_launch__posix.cc b/devel/electron6/files/patch-base_process_launch__posix.cc new file mode 100644 index 000000000000..9c0f57699832 --- /dev/null +++ b/devel/electron6/files/patch-base_process_launch__posix.cc @@ -0,0 +1,10 @@ +--- base/process/launch_posix.cc.orig	2019-09-10 10:42:27 UTC ++++ base/process/launch_posix.cc +@@ -65,6 +65,7 @@ + #error "macOS should use launch_mac.cc" + #endif +  ++#pragma weak environ + extern char** environ; +  + namespace base { diff --git a/devel/electron6/files/patch-base_process_memory.cc b/devel/electron6/files/patch-base_process_memory.cc new file mode 100644 index 000000000000..4fbfd71d9399 --- /dev/null +++ b/devel/electron6/files/patch-base_process_memory.cc @@ -0,0 +1,20 @@ +--- base/process/memory.cc.orig	2019-09-10 10:42:27 UTC ++++ base/process/memory.cc +@@ -10,7 +10,7 @@ + namespace base { +  + // Defined in memory_win.cc for Windows. +-#if !defined(OS_WIN) ++#if !defined(OS_WIN) && !defined(OS_BSD) +  + namespace { +  +@@ -31,7 +31,7 @@ void TerminateBecauseOutOfMemory(size_t size) { + #endif +  + // Defined in memory_mac.mm for Mac. +-#if !defined(OS_MACOSX) ++#if !defined(OS_MACOSX) && !defined(OS_BSD) +  + bool UncheckedCalloc(size_t num_items, size_t size, void** result) { +   const size_t alloc_size = num_items * size; diff --git a/devel/electron6/files/patch-base_process_memory.h b/devel/electron6/files/patch-base_process_memory.h new file mode 100644 index 000000000000..e6f1024d76ce --- /dev/null +++ b/devel/electron6/files/patch-base_process_memory.h @@ -0,0 +1,11 @@ +--- base/process/memory.h.orig	2019-09-10 11:13:31 UTC ++++ base/process/memory.h +@@ -32,7 +32,7 @@ BASE_EXPORT void EnableTerminationOnOutOfMemory(); + // Crash reporting classifies such crashes as OOM. + BASE_EXPORT void TerminateBecauseOutOfMemory(size_t size); +  +-#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_AIX) ++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_AIX) || defined(OS_BSD) + BASE_EXPORT extern size_t g_oom_size; +  + // The maximum allowed value for the OOM score. diff --git a/devel/electron6/files/patch-base_process_memory__unittest.cc b/devel/electron6/files/patch-base_process_memory__unittest.cc new file mode 100644 index 000000000000..4ef793aa5df3 --- /dev/null +++ b/devel/electron6/files/patch-base_process_memory__unittest.cc @@ -0,0 +1,18 @@ +--- base/process/memory_unittest.cc.orig	2019-09-10 11:13:31 UTC ++++ base/process/memory_unittest.cc +@@ -104,7 +104,7 @@ TEST(MemoryTest, AllocatorShimWorking) { + // OpenBSD does not support these tests. Don't test these on ASan/TSan/MSan + // configurations: only test the real allocator. + // Windows only supports these tests with the allocator shim in place. +-#if !defined(OS_OPENBSD) && BUILDFLAG(USE_ALLOCATOR_SHIM) && \ ++#if !defined(OS_BSD) && BUILDFLAG(USE_ALLOCATOR_SHIM) && \ +     !defined(MEMORY_TOOL_REPLACES_ALLOCATOR) +  + namespace { +@@ -529,5 +529,5 @@ TEST_F(OutOfMemoryHandledTest, UncheckedCalloc) { +   EXPECT_FALSE(base::UncheckedCalloc(1, test_size_, &value_)); +   EXPECT_TRUE(value_ == nullptr); + } +-#endif  // !defined(OS_OPENBSD) && BUILDFLAG(ENABLE_WIN_ALLOCATOR_SHIM_TESTS) && ++#endif  // !defined(OS_BSD) && BUILDFLAG(ENABLE_WIN_ALLOCATOR_SHIM_TESTS) && +         // !defined(MEMORY_TOOL_REPLACES_ALLOCATOR) diff --git a/devel/electron6/files/patch-base_process_process__handle.cc b/devel/electron6/files/patch-base_process_process__handle.cc new file mode 100644 index 000000000000..b7acb7b0249a --- /dev/null +++ b/devel/electron6/files/patch-base_process_process__handle.cc @@ -0,0 +1,11 @@ +--- base/process/process_handle.cc.orig	2019-09-10 11:13:31 UTC ++++ base/process/process_handle.cc +@@ -39,7 +39,7 @@ uint32_t GetUniqueIdForProcess() { +   return g_unique_id; + } +  +-#if defined(OS_LINUX) || defined(OS_AIX) ++#if defined(OS_LINUX) || defined(OS_AIX) || defined(OS_BSD) +  + void InitUniqueIdForProcessInPidNamespace(ProcessId pid_outside_of_namespace) { +   g_unique_id = MangleProcessId(pid_outside_of_namespace); diff --git a/devel/electron6/files/patch-base_process_process__handle.h b/devel/electron6/files/patch-base_process_process__handle.h new file mode 100644 index 000000000000..0d966d2e7997 --- /dev/null +++ b/devel/electron6/files/patch-base_process_process__handle.h @@ -0,0 +1,11 @@ +--- base/process/process_handle.h.orig	2019-09-10 11:13:31 UTC ++++ base/process/process_handle.h +@@ -64,7 +64,7 @@ BASE_EXPORT ProcessId GetCurrentProcId(); + // a process's PID. + BASE_EXPORT uint32_t GetUniqueIdForProcess(); +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + // When a process is started in a different PID namespace from the browser + // process, this function must be called with the process's PID in the browser's + // PID namespace in order to initialize its unique ID. Not thread safe. diff --git a/devel/electron6/files/patch-base_process_process__handle__freebsd.cc b/devel/electron6/files/patch-base_process_process__handle__freebsd.cc new file mode 100644 index 000000000000..34da38ffcf3c --- /dev/null +++ b/devel/electron6/files/patch-base_process_process__handle__freebsd.cc @@ -0,0 +1,17 @@ +--- base/process/process_handle_freebsd.cc.orig	2019-09-10 10:42:27 UTC ++++ base/process/process_handle_freebsd.cc +@@ -16,10 +16,13 @@ namespace base { +  + ProcessId GetParentProcessId(ProcessHandle process) { +   struct kinfo_proc info; +-  size_t length; ++  size_t length = sizeof(struct kinfo_proc); +   int mib[] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, process }; +  +   if (sysctl(mib, base::size(mib), &info, &length, NULL, 0) < 0) ++    return -1; ++ ++  if (length < sizeof(struct kinfo_proc)) +     return -1; +  +   return info.ki_ppid; diff --git a/devel/electron6/files/patch-base_process_process__iterator__freebsd.cc b/devel/electron6/files/patch-base_process_process__iterator__freebsd.cc new file mode 100644 index 000000000000..a8db39e07923 --- /dev/null +++ b/devel/electron6/files/patch-base_process_process__iterator__freebsd.cc @@ -0,0 +1,44 @@ +--- base/process/process_iterator_freebsd.cc.orig	2019-09-10 10:42:27 UTC ++++ base/process/process_iterator_freebsd.cc +@@ -10,6 +10,10 @@ + #include <sys/sysctl.h> + #include <unistd.h> +  ++/* getuid() */ ++#include <unistd.h> ++#include <sys/types.h> ++ + #include "base/logging.h" + #include "base/stl_util.h" + #include "base/strings/string_split.h" +@@ -40,7 +44,7 @@ ProcessIterator::ProcessIterator(const ProcessFilter*  +       num_of_kinfo_proc += 16; +       kinfo_procs_.resize(num_of_kinfo_proc); +       len = num_of_kinfo_proc * sizeof(struct kinfo_proc); +-      if (sysctl(mib, base::size(mib), &kinfo_procs_[0], &len, NULL, 0) < 0) { ++      if (sysctl(mib, base::size(mib), kinfo_procs_.data(), &len, NULL, 0) < 0) { +         // If we get a mem error, it just means we need a bigger buffer, so +         // loop around again.  Anything else is a real error and give up. +         if (errno != ENOMEM) { +@@ -72,18 +76,13 @@ bool ProcessIterator::CheckForNextProcess() { +   for (; index_of_kinfo_proc_ < kinfo_procs_.size(); ++index_of_kinfo_proc_) { +     size_t length; +     struct kinfo_proc kinfo = kinfo_procs_[index_of_kinfo_proc_]; +-    int mib[] = { CTL_KERN, KERN_PROC_ARGS, kinfo.ki_pid }; ++    int mib[] = { CTL_KERN, KERN_PROC, KERN_PROC_ARGS, kinfo.ki_pid }; +  +     if ((kinfo.ki_pid > 0) && (kinfo.ki_stat == SZOMB)) +       continue; +  +-    length = 0; +-    if (sysctl(mib, base::size(mib), NULL, &length, NULL, 0) < 0) { +-      LOG(ERROR) << "failed to figure out the buffer size for a command line"; +-      continue; +-    } +- +-    data.resize(length); ++    data.resize(ARG_MAX); ++    length = ARG_MAX; +  +     if (sysctl(mib, base::size(mib), &data[0], &length, NULL, 0) < 0) { +       LOG(ERROR) << "failed to fetch a commandline"; diff --git a/devel/electron6/files/patch-base_process_process__linux.cc b/devel/electron6/files/patch-base_process_process__linux.cc new file mode 100644 index 000000000000..5cb802db33c2 --- /dev/null +++ b/devel/electron6/files/patch-base_process_process__linux.cc @@ -0,0 +1,18 @@ +--- base/process/process_linux.cc.orig	2019-09-10 10:42:27 UTC ++++ base/process/process_linux.cc +@@ -88,6 +88,7 @@ Time Process::CreationTime() const { +   return Time(boot_time + start_offset); + } +  ++#if !defined(OS_BSD) + // static + bool Process::CanBackgroundProcesses() { + #if defined(OS_CHROMEOS) +@@ -139,6 +140,7 @@ bool Process::SetProcessBackgrounded(bool background)  +   DPCHECK(result == 0); +   return result == 0; + } ++#endif // !defined(OS_BSD) +  + #if defined(OS_CHROMEOS) + bool IsProcessBackgroundedCGroup(const StringPiece& cgroup_contents) { diff --git a/devel/electron6/files/patch-base_process_process__metrics.cc b/devel/electron6/files/patch-base_process_process__metrics.cc new file mode 100644 index 000000000000..cb415df9ad5d --- /dev/null +++ b/devel/electron6/files/patch-base_process_process__metrics.cc @@ -0,0 +1,38 @@ +--- base/process/process_metrics.cc.orig	2019-09-10 10:42:27 UTC ++++ base/process/process_metrics.cc +@@ -57,7 +57,7 @@ SystemMetrics SystemMetrics::Sample() { +   SystemMetrics system_metrics; +  +   system_metrics.committed_memory_ = GetSystemCommitCharge(); +-#if defined(OS_LINUX) || defined(OS_ANDROID) ++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD) +   GetSystemMemoryInfo(&system_metrics.memory_info_); +   GetVmStatInfo(&system_metrics.vmstat_info_); +   GetSystemDiskInfo(&system_metrics.disk_info_); +@@ -75,7 +75,7 @@ std::unique_ptr<Value> SystemMetrics::ToValue() const  +   std::unique_ptr<DictionaryValue> res(new DictionaryValue()); +  +   res->SetIntKey("committed_memory", static_cast<int>(committed_memory_)); +-#if defined(OS_LINUX) || defined(OS_ANDROID) ++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD) +   std::unique_ptr<DictionaryValue> meminfo = memory_info_.ToValue(); +   std::unique_ptr<DictionaryValue> vmstat = vmstat_info_.ToValue(); +   meminfo->MergeDictionary(vmstat.get()); +@@ -126,7 +126,7 @@ double ProcessMetrics::GetPlatformIndependentCPUUsage( + } + #endif +  +-#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_AIX) ++#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_AIX) || defined(OS_BSD) + int ProcessMetrics::CalculateIdleWakeupsPerSecond( +     uint64_t absolute_idle_wakeups) { +   return CalculateEventsPerSecond(absolute_idle_wakeups, +@@ -138,7 +138,7 @@ int ProcessMetrics::GetIdleWakeupsPerSecond() { +   NOTIMPLEMENTED();  // http://crbug.com/120488 +   return 0; + } +-#endif  // defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_AIX) ++#endif  // defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_AIX) || defined(OS_BSD) +  + #if defined(OS_MACOSX) + int ProcessMetrics::CalculatePackageIdleWakeupsPerSecond( diff --git a/devel/electron6/files/patch-base_process_process__metrics.h b/devel/electron6/files/patch-base_process_process__metrics.h new file mode 100644 index 000000000000..6533c2c46542 --- /dev/null +++ b/devel/electron6/files/patch-base_process_process__metrics.h @@ -0,0 +1,131 @@ +--- base/process/process_metrics.h.orig	2019-09-10 11:13:31 UTC ++++ base/process/process_metrics.h +@@ -41,7 +41,7 @@ namespace base { + // Full declaration is in process_metrics_iocounters.h. + struct IoCounters; +  +-#if defined(OS_LINUX) || defined(OS_ANDROID) ++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD) + // Minor and major page fault counts since the process creation. + // Both counts are process-wide, and exclude child processes. + // +@@ -51,7 +51,7 @@ struct PageFaultCounts { +   int64_t minor; +   int64_t major; + }; +-#endif  // defined(OS_LINUX) || defined(OS_ANDROID) ++#endif  // defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD) +  + // Convert a POSIX timeval to microseconds. + BASE_EXPORT int64_t TimeValToMicroseconds(const struct timeval& tv); +@@ -92,7 +92,7 @@ class BASE_EXPORT ProcessMetrics { +   // convenience wrapper for CreateProcessMetrics(). +   static std::unique_ptr<ProcessMetrics> CreateCurrentProcessMetrics(); +  +-#if defined(OS_LINUX) || defined(OS_ANDROID) ++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD) +   // Resident Set Size is a Linux/Android specific memory concept. Do not +   // attempt to extend this to other platforms. +   BASE_EXPORT size_t GetResidentSetSize() const; +@@ -199,14 +199,14 @@ class BASE_EXPORT ProcessMetrics { +   int GetOpenFdSoftLimit() const; + #endif  // defined(OS_POSIX) +  +-#if defined(OS_LINUX) || defined(OS_ANDROID) ++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD) +   // Bytes of swap as reported by /proc/[pid]/status. +   uint64_t GetVmSwapBytes() const; +  +   // Minor and major page fault count as reported by /proc/[pid]/stat. +   // Returns true for success. +   bool GetPageFaultCounts(PageFaultCounts* counts) const; +-#endif  // defined(OS_LINUX) || defined(OS_ANDROID) ++#endif  // defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD) +  +   // Returns total memory usage of malloc. +   size_t GetMallocUsage(); +@@ -218,7 +218,7 @@ class BASE_EXPORT ProcessMetrics { +   ProcessMetrics(ProcessHandle process, PortProvider* port_provider); + #endif  // !defined(OS_MACOSX) || defined(OS_IOS) +  +-#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_AIX) ++#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_AIX) || defined(OS_BSD) +   int CalculateIdleWakeupsPerSecond(uint64_t absolute_idle_wakeups); + #endif + #if defined(OS_MACOSX) +@@ -247,7 +247,7 @@ class BASE_EXPORT ProcessMetrics { +   // Number of bytes transferred to/from disk in bytes. +   uint64_t last_cumulative_disk_usage_ = 0; +  +-#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_AIX) ++#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_AIX) || defined(OS_BSD) +   // Same thing for idle wakeups. +   TimeTicks last_idle_wakeups_time_; +   uint64_t last_absolute_idle_wakeups_; +@@ -292,7 +292,7 @@ BASE_EXPORT size_t GetMaxFds(); + BASE_EXPORT void IncreaseFdLimitTo(unsigned int max_descriptors); + #endif  // defined(OS_POSIX) +  +-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || \ ++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) || \ +     defined(OS_ANDROID) || defined(OS_AIX) || defined(OS_FUCHSIA) + // Data about system-wide memory consumption. Values are in KB. Available on + // Windows, Mac, Linux, Android and Chrome OS. +@@ -326,7 +326,7 @@ struct BASE_EXPORT SystemMemoryInfoKB { +   int avail_phys = 0; + #endif +  +-#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_AIX) ++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_AIX) || defined(OS_BSD) +   // This provides an estimate of available memory as described here: +   // https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=34e431b0ae398fc54ea69ff85ec700722c9da773 +   // NOTE: this is ONLY valid in kernels 3.14 and up.  Its value will always +@@ -340,7 +340,7 @@ struct BASE_EXPORT SystemMemoryInfoKB { +   int swap_free = 0; + #endif +  +-#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_AIX) || \ ++#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_AIX) || defined(OS_BSD) || \ +     defined(OS_FUCHSIA) +   int buffers = 0; +   int cached = 0; +@@ -350,7 +350,7 @@ struct BASE_EXPORT SystemMemoryInfoKB { +   int inactive_file = 0; +   int dirty = 0; +   int reclaimable = 0; +-#endif  // defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_AIX) || ++#endif  // defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_AIX) || defined(OS_BSD) || +         // defined(OS_FUCHSIA) +  + #if defined(OS_CHROMEOS) +@@ -376,10 +376,10 @@ struct BASE_EXPORT SystemMemoryInfoKB { + // Exposed for memory debugging widget. + BASE_EXPORT bool GetSystemMemoryInfo(SystemMemoryInfoKB* meminfo); +  +-#endif  // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || ++#endif  // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) +         // defined(OS_ANDROID) || defined(OS_AIX) || defined(OS_FUCHSIA) +  +-#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_AIX) ++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_AIX) || defined(OS_BSD) + // Parse the data found in /proc/<pid>/stat and return the sum of the + // CPU-related ticks.  Returns -1 on parse error. + // Exposed for testing. +@@ -452,7 +452,7 @@ BASE_EXPORT bool GetSystemDiskInfo(SystemDiskInfo* dis + // Returns the amount of time spent in user space since boot across all CPUs. + BASE_EXPORT TimeDelta GetUserCpuTimeSinceBoot(); +  +-#endif  // defined(OS_LINUX) || defined(OS_ANDROID) ++#endif  // defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD) +  + #if defined(OS_CHROMEOS) + // Data from files in directory /sys/block/zram0 about ZRAM usage. +@@ -547,7 +547,7 @@ class BASE_EXPORT SystemMetrics { +   FRIEND_TEST_ALL_PREFIXES(SystemMetricsTest, SystemMetrics); +  +   size_t committed_memory_; +-#if defined(OS_LINUX) || defined(OS_ANDROID) ++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD) +   SystemMemoryInfoKB memory_info_; +   VmStatInfo vmstat_info_; +   SystemDiskInfo disk_info_; diff --git a/devel/electron6/files/patch-base_process_process__metrics__freebsd.cc b/devel/electron6/files/patch-base_process_process__metrics__freebsd.cc new file mode 100644 index 000000000000..aebb0088725b --- /dev/null +++ b/devel/electron6/files/patch-base_process_process__metrics__freebsd.cc @@ -0,0 +1,259 @@ +--- base/process/process_metrics_freebsd.cc.orig	2019-09-10 10:42:27 UTC ++++ base/process/process_metrics_freebsd.cc +@@ -5,6 +5,7 @@ + #include "base/process/process_metrics.h" +  + #include <stddef.h> ++#include <sys/types.h> + #include <sys/sysctl.h> + #include <sys/user.h> + #include <unistd.h> +@@ -14,11 +15,29 @@ + #include "base/process/process_metrics_iocounters.h" + #include "base/stl_util.h" +  ++#include <unistd.h> /* getpagesize() */ ++#include <fcntl.h>  /* O_RDONLY */ ++#include <kvm.h> ++#include <libutil.h> ++ + namespace base { ++namespace { +  ++int GetPageShift() { ++  int pagesize = getpagesize(); ++  int pageshift = 0; ++ ++  while (pagesize > 1) { ++    pageshift++; ++    pagesize >>= 1; ++  } ++ ++  return pageshift; ++} ++} ++ + ProcessMetrics::ProcessMetrics(ProcessHandle process) +-    : process_(process), +-      last_cpu_(0) {} ++    : process_(process) {} +  + // static + std::unique_ptr<ProcessMetrics> ProcessMetrics::CreateProcessMetrics( +@@ -69,4 +88,216 @@ size_t GetSystemCommitCharge() { +   return mem_total - (mem_free*pagesize) - (mem_inactive*pagesize); + } +  ++int GetNumberOfThreads(ProcessHandle process) { ++  // Taken from FreeBSD top (usr.bin/top/machine.c) ++ ++  kvm_t* kd = kvm_open(NULL, "/dev/null", NULL, O_RDONLY, "kvm_open"); ++  if (kd == NULL) ++    return 0; ++ ++  struct kinfo_proc* pbase; ++  int nproc; ++  pbase = kvm_getprocs(kd, KERN_PROC_PID, process, &nproc); ++  if (pbase == NULL) ++    return 0; ++ ++  if (kvm_close(kd) == -1) ++    return 0; ++ ++  return nproc; ++} ++ ++bool GetSystemMemoryInfo(SystemMemoryInfoKB *meminfo) { ++  unsigned int mem_total, mem_free, swap_total, swap_used; ++  size_t length; ++  int pagesizeKB; ++ ++  pagesizeKB = getpagesize() / 1024; ++ ++  length = sizeof(mem_total); ++  if (sysctlbyname("vm.stats.vm.v_page_count", &mem_total, ++      &length, NULL, 0) != 0 || length != sizeof(mem_total)) ++    return false; ++ ++  length = sizeof(mem_free); ++  if (sysctlbyname("vm.stats.vm.v_free_count", &mem_free, &length, NULL, 0) ++      != 0 || length != sizeof(mem_free)) ++    return false; ++ ++  length = sizeof(swap_total); ++  if (sysctlbyname("vm.swap_size", &swap_total, &length, NULL, 0) ++      != 0 || length != sizeof(swap_total)) ++    return false; ++ ++  length = sizeof(swap_used); ++  if (sysctlbyname("vm.swap_anon_use", &swap_used, &length, NULL, 0) ++      != 0 || length != sizeof(swap_used)) ++    return false; ++ ++  meminfo->total = mem_total * pagesizeKB; ++  meminfo->free = mem_free * pagesizeKB; ++  meminfo->swap_total = swap_total * pagesizeKB; ++  meminfo->swap_free = (swap_total - swap_used) * pagesizeKB; ++ ++  return true; ++} ++ ++int ProcessMetrics::GetOpenFdCount() const { ++  struct kinfo_file * kif; ++  int cnt; ++ ++  if ((kif = kinfo_getfile(process_, &cnt)) == NULL) ++    return -1; ++ ++  free(kif); ++ ++  return cnt; ++} ++ ++int ProcessMetrics::GetOpenFdSoftLimit() const { ++  size_t length; ++  int total_count = 0; ++  int mib[] = { CTL_KERN, KERN_MAXFILESPERPROC }; ++ ++  length = sizeof(total_count); ++ ++  if (sysctl(mib, base::size(mib), &total_count, &length, NULL, 0) < 0) { ++    total_count = -1; ++  } ++ ++  return total_count; ++} ++ ++size_t ProcessMetrics::GetResidentSetSize() const { ++  kvm_t *kd = kvm_open(nullptr, "/dev/null", nullptr, O_RDONLY, "kvm_open"); ++ ++  if (kd == nullptr) ++    return 0; ++ ++  struct kinfo_proc *pp; ++  int nproc; ++ ++  if ((pp = kvm_getprocs(kd, KERN_PROC_PID, process_, &nproc)) == nullptr) { ++    kvm_close(kd); ++    return 0; ++  } ++   ++  size_t rss; ++ ++  if (nproc > 0) { ++    rss = pp->ki_rssize << GetPageShift(); ++  } else { ++    rss = 0; ++  } ++ ++  kvm_close(kd); ++  return rss; ++} ++ ++uint64_t ProcessMetrics::GetVmSwapBytes() const { ++  kvm_t *kd = kvm_open(nullptr, "/dev/null", nullptr, O_RDONLY, "kvm_open"); ++ ++  if (kd == nullptr) ++    return 0; ++ ++  struct kinfo_proc *pp; ++  int nproc; ++ ++  if ((pp = kvm_getprocs(kd, KERN_PROC_PID, process_, &nproc)) == nullptr) { ++    kvm_close(kd); ++    return 0; ++  } ++   ++  size_t swrss; ++ ++  if (nproc > 0) { ++    swrss = pp->ki_swrss > pp->ki_rssize ++      ? (pp->ki_swrss - pp->ki_rssize) << GetPageShift() ++      : 0; ++  } else { ++    swrss = 0; ++  } ++ ++  kvm_close(kd); ++  return swrss; ++} ++ ++int ProcessMetrics::GetIdleWakeupsPerSecond() { ++  NOTIMPLEMENTED(); ++  return 0; ++} ++ ++bool GetSystemDiskInfo(SystemDiskInfo* diskinfo) { ++  NOTIMPLEMENTED(); ++  return false; ++} ++ ++bool GetVmStatInfo(VmStatInfo* vmstat) { ++  NOTIMPLEMENTED(); ++  return false; ++} ++ ++SystemDiskInfo::SystemDiskInfo() { ++  reads = 0; ++  reads_merged = 0; ++  sectors_read = 0; ++  read_time = 0; ++  writes = 0; ++  writes_merged = 0; ++  sectors_written = 0; ++  write_time = 0; ++  io = 0; ++  io_time = 0; ++  weighted_io_time = 0; ++} ++ ++SystemDiskInfo::SystemDiskInfo(const SystemDiskInfo& other) = default; ++ ++std::unique_ptr<Value> SystemDiskInfo::ToValue() const { ++  auto res = std::make_unique<DictionaryValue>(); ++ ++  // Write out uint64_t variables as doubles. ++  // Note: this may discard some precision, but for JS there's no other option. ++  res->SetDouble("reads", static_cast<double>(reads)); ++  res->SetDouble("reads_merged", static_cast<double>(reads_merged)); ++  res->SetDouble("sectors_read", static_cast<double>(sectors_read)); ++  res->SetDouble("read_time", static_cast<double>(read_time)); ++  res->SetDouble("writes", static_cast<double>(writes)); ++  res->SetDouble("writes_merged", static_cast<double>(writes_merged)); ++  res->SetDouble("sectors_written", static_cast<double>(sectors_written)); ++  res->SetDouble("write_time", static_cast<double>(write_time)); ++  res->SetDouble("io", static_cast<double>(io)); ++  res->SetDouble("io_time", static_cast<double>(io_time)); ++  res->SetDouble("weighted_io_time", static_cast<double>(weighted_io_time)); ++ ++  return std::move(res); ++} ++ ++std::unique_ptr<DictionaryValue> SystemMemoryInfoKB::ToValue() const { ++  auto res = std::make_unique<DictionaryValue>(); ++  res->SetIntKey("total", total); ++  res->SetIntKey("free", free); ++  res->SetIntKey("available", available); ++  res->SetIntKey("buffers", buffers); ++  res->SetIntKey("cached", cached); ++  res->SetIntKey("active_anon", active_anon); ++  res->SetIntKey("inactive_anon", inactive_anon); ++  res->SetIntKey("active_file", active_file); ++  res->SetIntKey("inactive_file", inactive_file); ++  res->SetIntKey("swap_total", swap_total); ++  res->SetIntKey("swap_free", swap_free); ++  res->SetIntKey("swap_used", swap_total - swap_free); ++  res->SetIntKey("dirty", dirty); ++  res->SetIntKey("reclaimable", reclaimable); ++ ++  return res; ++} ++ ++std::unique_ptr<DictionaryValue> VmStatInfo::ToValue() const { ++  auto res = std::make_unique<DictionaryValue>(); ++  res->SetIntKey("pswpin", pswpin); ++  res->SetIntKey("pswpout", pswpout); ++  res->SetIntKey("pgmajfault", pgmajfault); ++  return res; ++} + }  // namespace base diff --git a/devel/electron6/files/patch-base_process_process__metrics__posix.cc b/devel/electron6/files/patch-base_process_process__metrics__posix.cc new file mode 100644 index 000000000000..5bb95f40e403 --- /dev/null +++ b/devel/electron6/files/patch-base_process_process__metrics__posix.cc @@ -0,0 +1,20 @@ +--- base/process/process_metrics_posix.cc.orig	2019-09-10 11:13:31 UTC ++++ base/process/process_metrics_posix.cc +@@ -19,6 +19,8 @@ +  + #if defined(OS_MACOSX) + #include <malloc/malloc.h> ++#elif defined(OS_FREEBSD) ++#include <stdlib.h> + #else + #include <malloc.h> + #endif +@@ -107,7 +109,7 @@ size_t ProcessMetrics::GetMallocUsage() { + #else +   return minfo.hblkhd + minfo.arena; + #endif +-#elif defined(OS_FUCHSIA) ++#elif defined(OS_FUCHSIA) || defined(OS_BSD) +   // TODO(fuchsia): Not currently exposed. https://crbug.com/735087. +   return 0; + #endif diff --git a/devel/electron6/files/patch-base_process_process__unittest.cc b/devel/electron6/files/patch-base_process_process__unittest.cc new file mode 100644 index 000000000000..0bc720f373e3 --- /dev/null +++ b/devel/electron6/files/patch-base_process_process__unittest.cc @@ -0,0 +1,11 @@ +--- base/process/process_unittest.cc.orig	2019-09-10 10:42:27 UTC ++++ base/process/process_unittest.cc +@@ -148,7 +148,7 @@ TEST_F(ProcessTest, CreationTimeOtherProcess) { +   // was spawned and a time recorded after it was spawned. However, since the +   // base::Time and process creation clocks don't match, tolerate some error. +   constexpr base::TimeDelta kTolerance = +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +       // On Linux, process creation time is relative to boot time which has a +       // 1-second resolution. Tolerate 1 second for the imprecise boot time and +       // 100 ms for the imprecise clock. diff --git a/devel/electron6/files/patch-base_profiler_stack__sampling__profiler__unittest.cc b/devel/electron6/files/patch-base_profiler_stack__sampling__profiler__unittest.cc new file mode 100644 index 000000000000..0308930a37ce --- /dev/null +++ b/devel/electron6/files/patch-base_profiler_stack__sampling__profiler__unittest.cc @@ -0,0 +1,11 @@ +--- base/profiler/stack_sampling_profiler_unittest.cc.orig	2019-09-10 11:13:31 UTC ++++ base/profiler/stack_sampling_profiler_unittest.cc +@@ -41,7 +41,7 @@ + #include <intrin.h> + #include <malloc.h> + #include <windows.h> +-#else ++#elif !defined(OS_BSD) + #include <alloca.h> + #endif +  diff --git a/devel/electron6/files/patch-base_sampling__heap__profiler_sampling__heap__profiler.cc b/devel/electron6/files/patch-base_sampling__heap__profiler_sampling__heap__profiler.cc new file mode 100644 index 000000000000..6b79044cf15c --- /dev/null +++ b/devel/electron6/files/patch-base_sampling__heap__profiler_sampling__heap__profiler.cc @@ -0,0 +1,24 @@ +--- base/sampling_heap_profiler/sampling_heap_profiler.cc.orig	2019-09-10 11:13:31 UTC ++++ base/sampling_heap_profiler/sampling_heap_profiler.cc +@@ -30,6 +30,10 @@ + #include <sys/prctl.h> + #endif +  ++#if defined(OS_BSD) ++#include <pthread_np.h> ++#endif ++ + #if defined(OS_ANDROID) && BUILDFLAG(CAN_UNWIND_WITH_CFI_TABLE) && \ +     defined(OFFICIAL_BUILD) + #include "base/trace_event/cfi_backtrace_android.h" +@@ -65,6 +69,10 @@ const char* GetAndLeakThreadName() { + #elif defined(OS_MACOSX) +   int err = pthread_getname_np(pthread_self(), name, kBufferLen); +   if (err == 0 && *name != '\0') ++    return strdup(name); ++#elif defined(OS_BSD) && __FreeBSD__ >= 12 ++  pthread_get_name_np(pthread_self(), name, kBufferLen); ++  if (*name != '\0') +     return strdup(name); + #endif  // defined(OS_LINUX) || defined(OS_ANDROID) +  diff --git a/devel/electron6/files/patch-base_security__unittest.cc b/devel/electron6/files/patch-base_security__unittest.cc new file mode 100644 index 000000000000..7337e79d5f74 --- /dev/null +++ b/devel/electron6/files/patch-base_security__unittest.cc @@ -0,0 +1,11 @@ +--- base/security_unittest.cc.orig	2019-09-10 11:13:31 UTC ++++ base/security_unittest.cc +@@ -60,7 +60,7 @@ NOINLINE Type HideValueFromCompiler(volatile Type valu + // FAILS_ is too clunky. + void OverflowTestsSoftExpectTrue(bool overflow_detected) { +   if (!overflow_detected) { +-#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_MACOSX) ++#if defined(OS_POSIX) && !defined(OS_NACL) +     // Sadly, on Linux, Android, and OSX we don't have a good story yet. Don't +     // fail the test, but report. +     printf("Platform has overflow: %s\n", diff --git a/devel/electron6/files/patch-base_strings_safe__sprintf__unittest.cc b/devel/electron6/files/patch-base_strings_safe__sprintf__unittest.cc new file mode 100644 index 000000000000..8c971ef5bc42 --- /dev/null +++ b/devel/electron6/files/patch-base_strings_safe__sprintf__unittest.cc @@ -0,0 +1,18 @@ +--- base/strings/safe_sprintf_unittest.cc.orig	2019-09-10 10:42:27 UTC ++++ base/strings/safe_sprintf_unittest.cc +@@ -730,6 +730,7 @@ TEST(SafeSPrintfTest, EmbeddedNul) { + } +  + TEST(SafeSPrintfTest, EmitNULL) { ++/* Avoid compiler error: http://pastebin.com/1edWUE84 +   char buf[40]; + #if defined(__GNUC__) + #pragma GCC diagnostic push +@@ -741,6 +742,7 @@ TEST(SafeSPrintfTest, EmitNULL) { +   EXPECT_EQ("0x0", std::string(buf)); +   EXPECT_EQ(6, SafeSPrintf(buf, "%s", NULL)); +   EXPECT_EQ("<NULL>", std::string(buf)); ++*/ + #if defined(__GCC__) + #pragma GCC diagnostic pop + #endif diff --git a/devel/electron6/files/patch-base_syslog__logging.cc b/devel/electron6/files/patch-base_syslog__logging.cc new file mode 100644 index 000000000000..22909dec40d2 --- /dev/null +++ b/devel/electron6/files/patch-base_syslog__logging.cc @@ -0,0 +1,20 @@ +--- base/syslog_logging.cc.orig	2019-09-10 11:13:31 UTC ++++ base/syslog_logging.cc +@@ -9,7 +9,7 @@ + #include "base/bind.h" + #include "base/callback_helpers.h" + #include "base/debug/stack_trace.h" +-#elif defined(OS_LINUX) ++#elif defined(OS_LINUX) || defined(OS_BSD) + // <syslog.h> defines LOG_INFO, LOG_WARNING macros that could conflict with + // base::LOG_INFO, base::LOG_WARNING. + #include <syslog.h> +@@ -94,7 +94,7 @@ EventLogMessage::~EventLogMessage() { +                     1, 0, strings, nullptr)) { +     stream() << " !!NOT ADDED TO EVENTLOG!!"; +   } +-#elif defined(OS_LINUX) ++#elif defined(OS_LINUX) || defined(OS_BSD) +   const char kEventSource[] = "chrome"; +   openlog(kEventSource, LOG_NOWAIT | LOG_PID, LOG_USER); +   // We can't use the defined names for the logging severity from syslog.h diff --git a/devel/electron6/files/patch-base_system_sys__info.h b/devel/electron6/files/patch-base_system_sys__info.h new file mode 100644 index 000000000000..74c59cc8ca84 --- /dev/null +++ b/devel/electron6/files/patch-base_system_sys__info.h @@ -0,0 +1,11 @@ +--- base/system/sys_info.h.orig	2019-09-10 10:42:27 UTC ++++ base/system/sys_info.h +@@ -192,7 +192,7 @@ class BASE_EXPORT SysInfo { +   static bool IsLowEndDeviceImpl(); +   static HardwareInfo GetHardwareInfoSync(); +  +-#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_AIX) ++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_AIX) || defined(OS_BSD) +   static int64_t AmountOfAvailablePhysicalMemory( +       const SystemMemoryInfoKB& meminfo); + #endif diff --git a/devel/electron6/files/patch-base_system_sys__info__freebsd.cc b/devel/electron6/files/patch-base_system_sys__info__freebsd.cc new file mode 100644 index 000000000000..caf063d4da0a --- /dev/null +++ b/devel/electron6/files/patch-base_system_sys__info__freebsd.cc @@ -0,0 +1,71 @@ +--- base/system/sys_info_freebsd.cc.orig	2019-09-10 10:42:27 UTC ++++ base/system/sys_info_freebsd.cc +@@ -13,26 +13,58 @@ + namespace base { +  + int64_t SysInfo::AmountOfPhysicalMemoryImpl() { +-  int pages, page_size; ++  int pages, page_size, r = 0; +   size_t size = sizeof(pages); +-  sysctlbyname("vm.stats.vm.v_page_count", &pages, &size, NULL, 0); +-  sysctlbyname("vm.stats.vm.v_page_size", &page_size, &size, NULL, 0); +-  if (pages == -1 || page_size == -1) { ++  if(r == 0) ++    r = sysctlbyname("vm.stats.vm.v_page_count", &pages, &size, NULL, 0); ++  if(r == 0) ++    r =sysctlbyname("vm.stats.vm.v_page_size", &page_size, &size, NULL, 0); ++  if(r == -1) { +     NOTREACHED(); +     return 0; +   } +   return static_cast<int64_t>(pages) * page_size; + } +  +-// static +-uint64_t SysInfo::MaxSharedMemorySize() { +-  size_t limit; +-  size_t size = sizeof(limit); +-  if (sysctlbyname("kern.ipc.shmmax", &limit, &size, NULL, 0) < 0) { ++int64_t SysInfo::AmountOfAvailablePhysicalMemoryImpl() { ++  int page_size, r = 0; ++  unsigned pgfree, pginact, pgcache; ++  size_t size = sizeof(page_size); ++  size_t szpg = sizeof(pgfree); ++  if(r == 0) ++    r = sysctlbyname("vm.stats.vm.v_page_size", &page_size, &size, NULL, 0); ++  if(r == 0) ++    r = sysctlbyname("vm.stats.vm.v_free_count", &pgfree, &szpg, NULL, 0); ++  if(r == 0) ++    r = sysctlbyname("vm.stats.vm.v_inactive_count", &pginact, &szpg, NULL, 0); ++  if(r == 0) ++    r = sysctlbyname("vm.stats.vm.v_cache_count", &pgcache, &szpg, NULL, 0); ++  if(r == -1) { +     NOTREACHED(); +     return 0; +   } +-  return static_cast<uint64_t>(limit); ++  return static_cast<int64_t>((pgfree + pginact + pgcache) * page_size); ++} ++ ++// static ++std::string SysInfo::CPUModelName() { ++  int mib[] = { CTL_HW, HW_MODEL }; ++  char name[256]; ++  size_t size = base::size(name); ++  if (sysctl(mib, base::size(mib), &name, &size, NULL, 0) == 0) ++    return name; ++  return std::string(); ++} ++ ++int SysInfo::NumberOfProcessors() { ++  int mib[] = { CTL_HW, HW_NCPU }; ++  int ncpu; ++  size_t size = sizeof(ncpu); ++  if (sysctl(mib, base::size(mib), &ncpu, &size, NULL, 0) == -1) { ++    NOTREACHED(); ++    return 1; ++  } ++  return ncpu; + } +  + }  // namespace base diff --git a/devel/electron6/files/patch-base_system_sys__info__posix.cc b/devel/electron6/files/patch-base_system_sys__info__posix.cc new file mode 100644 index 000000000000..921d6a5ffde1 --- /dev/null +++ b/devel/electron6/files/patch-base_system_sys__info__posix.cc @@ -0,0 +1,38 @@ +--- base/system/sys_info_posix.cc.orig	2019-09-10 11:13:31 UTC ++++ base/system/sys_info_posix.cc +@@ -38,7 +38,7 @@ +  + namespace { +  +-#if !defined(OS_OPENBSD) && !defined(OS_FUCHSIA) ++#if !defined(OS_FUCHSIA) && !defined(OS_BSD) + int NumberOfProcessors() { +   // sysconf returns the number of "logical" (not "physical") processors on both +   // Mac and Linux.  So we get the number of max available "logical" processors. +@@ -64,7 +64,7 @@ int NumberOfProcessors() { +  + base::LazyInstance<base::internal::LazySysInfoValue<int, NumberOfProcessors>>:: +     Leaky g_lazy_number_of_processors = LAZY_INSTANCE_INITIALIZER; +-#endif  // !defined(OS_OPENBSD) && !defined(OS_FUCHSIA) ++#endif  // !defined(OS_FUCHSIA) && !defined(OS_BSD) +  + #if !defined(OS_FUCHSIA) + int64_t AmountOfVirtualMemory() { +@@ -132,7 +132,7 @@ bool GetDiskSpaceInfo(const base::FilePath& path, +  + namespace base { +  +-#if !defined(OS_OPENBSD) && !defined(OS_FUCHSIA) ++#if !defined(OS_FUCHSIA) && !defined(OS_BSD) + int SysInfo::NumberOfProcessors() { +   return g_lazy_number_of_processors.Get().value(); + } +@@ -227,6 +227,8 @@ std::string SysInfo::OperatingSystemArchitecture() { +     arch = "x86"; +   } else if (arch == "amd64") { +     arch = "x86_64"; ++  } else if (arch == "arm64") { ++    arch = "aarch64"; +   } else if (std::string(info.sysname) == "AIX") { +     arch = "ppc64"; +   } diff --git a/devel/electron6/files/patch-base_task_thread__pool_environment__config__unittest.cc b/devel/electron6/files/patch-base_task_thread__pool_environment__config__unittest.cc new file mode 100644 index 000000000000..b5b813ab5c37 --- /dev/null +++ b/devel/electron6/files/patch-base_task_thread__pool_environment__config__unittest.cc @@ -0,0 +1,11 @@ +--- base/task/thread_pool/environment_config_unittest.cc.orig	2019-09-10 10:42:27 UTC ++++ base/task/thread_pool/environment_config_unittest.cc +@@ -14,7 +14,7 @@ namespace internal { + TEST(ThreadPoolEnvironmentConfig, CanUseBackgroundPriorityForWorker) { + #if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_IOS) +   EXPECT_TRUE(CanUseBackgroundPriorityForWorkerThread()); +-#elif defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_FUCHSIA) || \ ++#elif defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_FUCHSIA) || defined(OS_BSD) || \ +     defined(OS_CHROMEOS) || defined(OS_NACL) +   EXPECT_FALSE(CanUseBackgroundPriorityForWorkerThread()); + #else diff --git a/devel/electron6/files/patch-base_test_fontconfig__util__linux.cc b/devel/electron6/files/patch-base_test_fontconfig__util__linux.cc new file mode 100644 index 000000000000..792f57840d80 --- /dev/null +++ b/devel/electron6/files/patch-base_test_fontconfig__util__linux.cc @@ -0,0 +1,408 @@ +--- base/test/fontconfig_util_linux.cc.orig	2019-09-10 10:42:27 UTC ++++ base/test/fontconfig_util_linux.cc +@@ -6,24 +6,397 @@ +  + #include <fontconfig/fontconfig.h> +  +-#include <memory> +- + #include "base/base_paths.h" + #include "base/environment.h" + #include "base/files/file_path.h" ++#include "base/files/file_util.h" + #include "base/logging.h" ++#include "base/macros.h" + #include "base/path_service.h" ++#include "base/strings/string_util.h" +  + namespace base { +  ++namespace { ++ ++const char kFontsConfTemplate[] = R"(<?xml version="1.0"?> ++<!DOCTYPE fontconfig SYSTEM "fonts.dtd"> ++<fontconfig> ++ ++  <!-- Cache location. --> ++  <cachedir>$1</cachedir> ++ ++  <!-- GCS-synced fonts. --> ++  <dir>$2</dir> ++ ++  <!-- Default properties. --> ++  <match target="font"> ++    <edit name="embeddedbitmap" mode="append_last"> ++      <bool>false</bool> ++    </edit> ++  </match> ++ ++  <match target="pattern"> ++    <test qual="any" name="family"> ++      <string>Times</string> ++    </test> ++    <edit name="family" mode="assign"> ++      <string>Tinos</string> ++    </edit> ++  </match> ++ ++  <match target="pattern"> ++    <test qual="any" name="family"> ++      <string>sans</string> ++    </test> ++    <edit name="family" mode="assign"> ++      <string>DejaVu Sans</string> ++    </edit> ++  </match> ++ ++  <match target="pattern"> ++    <test qual="any" name="family"> ++      <string>sans serif</string> ++    </test> ++    <edit name="family" mode="assign"> ++      <string>Arimo</string> ++    </edit> ++  </match> ++ ++  <!-- Some layout tests specify Helvetica as a family and we need to make sure ++       that we don't fallback to Tinos for them --> ++  <match target="pattern"> ++    <test qual="any" name="family"> ++      <string>Helvetica</string> ++    </test> ++    <edit name="family" mode="assign"> ++      <string>Arimo</string> ++    </edit> ++  </match> ++ ++  <match target="pattern"> ++    <test qual="any" name="family"> ++      <string>sans-serif</string> ++    </test> ++    <edit name="family" mode="assign"> ++      <string>Arimo</string> ++    </edit> ++  </match> ++ ++  <match target="pattern"> ++    <test qual="any" name="family"> ++      <string>serif</string> ++    </test> ++    <edit name="family" mode="assign"> ++      <string>Tinos</string> ++    </edit> ++  </match> ++ ++  <match target="pattern"> ++    <test qual="any" name="family"> ++      <string>mono</string> ++    </test> ++    <edit name="family" mode="assign"> ++      <string>Cousine</string> ++    </edit> ++  </match> ++ ++  <match target="pattern"> ++    <test qual="any" name="family"> ++      <string>monospace</string> ++    </test> ++    <edit name="family" mode="assign"> ++      <string>Cousine</string> ++    </edit> ++  </match> ++ ++  <match target="pattern"> ++    <test qual="any" name="family"> ++      <string>Courier</string> ++    </test> ++    <edit name="family" mode="assign"> ++      <string>Cousine</string> ++    </edit> ++  </match> ++ ++  <match target="pattern"> ++    <test qual="any" name="family"> ++      <string>cursive</string> ++    </test> ++    <edit name="family" mode="assign"> ++      <string>Comic Sans MS</string> ++    </edit> ++  </match> ++ ++  <match target="pattern"> ++    <test qual="any" name="family"> ++      <string>fantasy</string> ++    </test> ++    <edit name="family" mode="assign"> ++      <string>Impact</string> ++    </edit> ++  </match> ++ ++  <match target="pattern"> ++    <test qual="any" name="family"> ++      <string>Monaco</string> ++    </test> ++    <edit name="family" mode="assign"> ++      <string>Tinos</string> ++    </edit> ++  </match> ++ ++  <match target="pattern"> ++    <test qual="any" name="family"> ++      <string>Arial</string> ++    </test> ++    <edit name="family" mode="assign"> ++      <string>Arimo</string> ++    </edit> ++  </match> ++ ++  <match target="pattern"> ++    <test qual="any" name="family"> ++      <string>Courier New</string> ++    </test> ++    <edit name="family" mode="assign"> ++      <string>Cousine</string> ++    </edit> ++  </match> ++ ++  <match target="pattern"> ++    <test qual="any" name="family"> ++      <string>Georgia</string> ++    </test> ++    <edit name="family" mode="assign"> ++      <string>Gelasio</string> ++    </edit> ++  </match> ++ ++  <match target="pattern"> ++    <test qual="any" name="family"> ++      <string>Times New Roman</string> ++    </test> ++    <edit name="family" mode="assign"> ++      <string>Tinos</string> ++    </edit> ++  </match> ++ ++  <match target="pattern"> ++    <test qual="any" name="family"> ++      <string>Verdana</string> ++    </test> ++    <!-- NOT metrically compatible! --> ++    <edit name="family" mode="assign"> ++      <string>Arimo</string> ++    </edit> ++  </match> ++ ++  <!-- TODO(thomasanderson): Move these configs to be test-specific. --> ++  <match target="pattern"> ++    <test name="family" compare="eq"> ++      <string>NonAntiAliasedSans</string> ++    </test> ++    <edit name="family" mode="assign"> ++      <string>Arimo</string> ++    </edit> ++    <edit name="antialias" mode="assign"> ++      <bool>false</bool> ++    </edit> ++  </match> ++ ++  <match target="pattern"> ++    <test name="family" compare="eq"> ++      <string>SlightHintedGeorgia</string> ++    </test> ++    <edit name="family" mode="assign"> ++      <string>Gelasio</string> ++    </edit> ++    <edit name="hintstyle" mode="assign"> ++      <const>hintslight</const> ++    </edit> ++  </match> ++ ++  <match target="pattern"> ++    <test name="family" compare="eq"> ++      <string>NonHintedSans</string> ++    </test> ++    <edit name="family" mode="assign"> ++      <string>Arimo</string> ++    </edit> ++    <!-- These deliberately contradict each other. The 'hinting' preference ++         should take priority --> ++    <edit name="hintstyle" mode="assign"> ++      <const>hintfull</const> ++    </edit> ++   <edit name="hinting" mode="assign"> ++      <bool>false</bool> ++    </edit> ++  </match> ++ ++  <match target="pattern"> ++    <test name="family" compare="eq"> ++      <string>AutohintedSerif</string> ++    </test> ++    <edit name="family" mode="assign"> ++      <string>Arimo</string> ++    </edit> ++    <edit name="autohint" mode="assign"> ++      <bool>true</bool> ++    </edit> ++    <edit name="hintstyle" mode="assign"> ++      <const>hintmedium</const> ++    </edit> ++  </match> ++ ++  <match target="pattern"> ++    <test name="family" compare="eq"> ++      <string>HintedSerif</string> ++    </test> ++    <edit name="family" mode="assign"> ++      <string>Arimo</string> ++    </edit> ++    <edit name="autohint" mode="assign"> ++      <bool>false</bool> ++    </edit> ++    <edit name="hintstyle" mode="assign"> ++      <const>hintmedium</const> ++    </edit> ++  </match> ++ ++  <match target="pattern"> ++    <test name="family" compare="eq"> ++      <string>FullAndAutoHintedSerif</string> ++    </test> ++    <edit name="family" mode="assign"> ++      <string>Arimo</string> ++    </edit> ++    <edit name="autohint" mode="assign"> ++      <bool>true</bool> ++    </edit> ++    <edit name="hintstyle" mode="assign"> ++      <const>hintfull</const> ++    </edit> ++  </match> ++ ++  <match target="pattern"> ++    <test name="family" compare="eq"> ++      <string>SubpixelEnabledArial</string> ++    </test> ++    <edit name="family" mode="assign"> ++      <string>Arimo</string> ++    </edit> ++    <edit name="rgba" mode="assign"> ++      <const>rgb</const> ++    </edit> ++  </match> ++ ++  <match target="pattern"> ++    <test name="family" compare="eq"> ++      <string>SubpixelDisabledArial</string> ++    </test> ++    <edit name="family" mode="assign"> ++      <string>Arimo</string> ++    </edit> ++    <edit name="rgba" mode="assign"> ++      <const>none</const> ++    </edit> ++  </match> ++ ++  <match target="pattern"> ++    <!-- FontConfig doesn't currently provide a well-defined way to turn on ++         subpixel positioning.  This is just an arbitrary pattern to use after ++         turning subpixel positioning on globally to ensure that we don't have ++         issues with our style getting cached for other tests. --> ++    <test name="family" compare="eq"> ++      <string>SubpixelPositioning</string> ++    </test> ++    <edit name="family" mode="assign"> ++      <string>Tinos</string> ++    </edit> ++  </match> ++ ++  <match target="pattern"> ++    <!-- See comments above --> ++    <test name="family" compare="eq"> ++      <string>SubpixelPositioningAhem</string> ++    </test> ++    <edit name="family" mode="assign"> ++      <string>ahem</string> ++    </edit> ++  </match> ++ ++  <match target="pattern"> ++    <test name="family" compare="eq"> ++      <string>SlightHintedTimesNewRoman</string> ++    </test> ++    <edit name="family" mode="assign"> ++      <string>Tinos</string> ++    </edit> ++    <edit name="hintstyle" mode="assign"> ++      <const>hintslight</const> ++    </edit> ++  </match> ++ ++  <!-- When we encounter a character that the current font doesn't ++       support, gfx::GetFallbackFontForChar() returns the first font ++       that does have a glyph for the character. The list of fonts is ++       sorted by a pattern that includes the current locale, but doesn't ++       include a font family (which means that the fallback font depends ++       on the locale but not on the current font). ++ ++       DejaVu Sans is commonly the only font that supports some ++       characters, such as "⇧", and even when other candidates are ++       available, DejaVu Sans is commonly first among them, because of ++       the way Fontconfig is ordinarily configured. For example, the ++       configuration in the Fonconfig source lists DejaVu Sans under the ++       sans-serif generic family, and appends sans-serif to patterns ++       that don't already include a generic family (such as the pattern ++       in gfx::GetFallbackFontForChar()). ++ ++       To get the same fallback font in the layout tests, we could ++       duplicate this configuration here, or more directly, simply ++       append DejaVu Sans to all patterns. --> ++  <match target="pattern"> ++    <edit name="family" mode="append_last"> ++      <string>DejaVu Sans</string> ++    </edit> ++  </match> ++ ++</fontconfig> ++)"; ++ ++}  // namespace ++ + void SetUpFontconfig() { +-  FilePath dir_module; +-  CHECK(PathService::Get(DIR_MODULE, &dir_module)); ++  std::unique_ptr<Environment> env = Environment::Create(); ++  if (!env->HasVar("FONTCONFIG_FILE")) { ++    // fonts.conf must be generated on-the-fly since it contains absolute paths ++    // which may be different if ++    //   1. The user moves/renames their build directory (or any parent dirs). ++    //   2. The build directory is mapped on a swarming bot at a location ++    //      different from the one the buildbot used. ++    FilePath dir_module; ++    PathService::Get(DIR_MODULE, &dir_module); ++    FilePath font_cache = dir_module.Append("fontconfig_caches"); ++    FilePath test_fonts = dir_module.Append("test_fonts"); ++    std::string fonts_conf = ReplaceStringPlaceholders( ++        kFontsConfTemplate, {font_cache.value(), test_fonts.value()}, nullptr); +  +-  std::unique_ptr<Environment> env(Environment::Create()); +-  // TODO(thomasanderson): This still stat()'s the real /etc/fonts/fonts.conf. +-  // Prevent fontconfig from doing this. +-  CHECK(env->SetVar("FONTCONFIG_SYSROOT", dir_module.value().c_str())); ++    // Write the data to a different file and then atomically rename it to ++    // fonts.conf.  This avoids the file being in a bad state when different ++    // parallel tests call this function at the same time. ++    FilePath fonts_conf_file_temp; ++    if(!CreateTemporaryFileInDir(dir_module, &fonts_conf_file_temp)) ++      CHECK(CreateTemporaryFile(&fonts_conf_file_temp)); ++    CHECK( ++        WriteFile(fonts_conf_file_temp, fonts_conf.c_str(), fonts_conf.size())); ++    FilePath fonts_conf_file = dir_module.Append("fonts.conf"); ++    if (ReplaceFile(fonts_conf_file_temp, fonts_conf_file, nullptr)) ++      env->SetVar("FONTCONFIG_FILE", fonts_conf_file.value()); ++    else ++      env->SetVar("FONTCONFIG_FILE", fonts_conf_file_temp.value()); ++  } + } +  + }  // namespace base diff --git a/devel/electron6/files/patch-base_test_generate__fontconfig__caches.cc b/devel/electron6/files/patch-base_test_generate__fontconfig__caches.cc new file mode 100644 index 000000000000..53f2e4bfcee5 --- /dev/null +++ b/devel/electron6/files/patch-base_test_generate__fontconfig__caches.cc @@ -0,0 +1,25 @@ +--- base/test/generate_fontconfig_caches.cc.orig	2019-09-10 10:42:27 UTC ++++ base/test/generate_fontconfig_caches.cc +@@ -52,14 +52,21 @@ int main() { +  +   // Delete directory before generating fontconfig caches. This will notify +   // future fontconfig_caches changes. +-  CHECK(base::DeleteFile(fontconfig_caches, /*recursive=*/true)); +  ++  CHECK(base::DeleteFile(fontconfig_caches, /*recursive=*/true)); +   base::SetUpFontconfig(); +   FcInit(); +   FcFini(); +  +   // Check existence of intended fontconfig cache file. ++#if defined(OS_BSD) ++  // Our version of fontconfig is too old to respect .uuid files in font directories, ++  // so we check for the CACHEDIR.TAG file instead +   CHECK(base::PathExists( ++      fontconfig_caches.Append("CACHEDIR.TAG"))); ++#else ++  CHECK(base::PathExists( +       fontconfig_caches.Append(base::StrCat({uuid, "-le64.cache-7"})))); ++#endif +   return 0; + } diff --git a/devel/electron6/files/patch-base_test_launcher_test__launcher.cc b/devel/electron6/files/patch-base_test_launcher_test__launcher.cc new file mode 100644 index 000000000000..974714483b30 --- /dev/null +++ b/devel/electron6/files/patch-base_test_launcher_test__launcher.cc @@ -0,0 +1,10 @@ +--- base/test/launcher/test_launcher.cc.orig	2019-09-10 11:13:31 UTC ++++ base/test/launcher/test_launcher.cc +@@ -53,6 +53,7 @@ + #include "testing/gtest/include/gtest/gtest.h" +  + #if defined(OS_POSIX) ++#include <signal.h> + #include <fcntl.h> +  + #include "base/files/file_descriptor_watcher_posix.h" diff --git a/devel/electron6/files/patch-base_test_test__file__util__linux.cc b/devel/electron6/files/patch-base_test_test__file__util__linux.cc new file mode 100644 index 000000000000..72effb5b877b --- /dev/null +++ b/devel/electron6/files/patch-base_test_test__file__util__linux.cc @@ -0,0 +1,13 @@ +--- base/test/test_file_util_linux.cc.orig	2019-09-10 10:42:27 UTC ++++ base/test/test_file_util_linux.cc +@@ -51,8 +51,10 @@ bool EvictFileFromSystemCache(const FilePath& file) { +     return false; +   if (fdatasync(fd.get()) != 0) +     return false; ++#if !defined(OS_BSD) +   if (posix_fadvise(fd.get(), 0, 0, POSIX_FADV_DONTNEED) != 0) +     return false; ++#endif +   return true; + } +  diff --git a/devel/electron6/files/patch-base_test_test__file__util__posix.cc b/devel/electron6/files/patch-base_test_test__file__util__posix.cc new file mode 100644 index 000000000000..7e78e3eb7711 --- /dev/null +++ b/devel/electron6/files/patch-base_test_test__file__util__posix.cc @@ -0,0 +1,11 @@ +--- base/test/test_file_util_posix.cc.orig	2019-09-10 10:42:27 UTC ++++ base/test/test_file_util_posix.cc +@@ -85,7 +85,7 @@ void SyncPageCacheToDisk() { +   sync(); + } +  +-#if !defined(OS_LINUX) && !defined(OS_MACOSX) && !defined(OS_ANDROID) ++#if !defined(OS_LINUX) && !defined(OS_MACOSX) && !defined(OS_ANDROID) && !defined(OS_BSD) + bool EvictFileFromSystemCache(const FilePath& file) { +   // There doesn't seem to be a POSIX way to cool the disk cache. +   NOTIMPLEMENTED(); diff --git a/devel/electron6/files/patch-base_third__party_libevent_BUILD.gn b/devel/electron6/files/patch-base_third__party_libevent_BUILD.gn new file mode 100644 index 000000000000..6720b6ba96dc --- /dev/null +++ b/devel/electron6/files/patch-base_third__party_libevent_BUILD.gn @@ -0,0 +1,24 @@ +--- base/third_party/libevent/BUILD.gn.orig	2019-09-10 10:42:27 UTC ++++ base/third_party/libevent/BUILD.gn +@@ -43,13 +43,20 @@ static_library("libevent") { +       "mac/event-config.h", +     ] +     include_dirs = [ "mac" ] +-  } else if (is_linux) { ++  } else if (is_linux && !is_bsd) { +     sources += [ +       "epoll.c", +       "linux/config.h", +       "linux/event-config.h", +     ] +     include_dirs = [ "linux" ] ++  } else if (is_bsd) { ++    sources += [  ++      "kqueue.c", ++      "freebsd/config.h", ++      "freebsd/event-config.h", ++    ] ++    include_dirs = [ "freebsd" ] +   } else if (is_android) { +     sources += [ +       "android/config.h", diff --git a/devel/electron6/files/patch-base_threading_platform__thread.h b/devel/electron6/files/patch-base_threading_platform__thread.h new file mode 100644 index 000000000000..a3b866a6ee3b --- /dev/null +++ b/devel/electron6/files/patch-base_threading_platform__thread.h @@ -0,0 +1,11 @@ +--- base/threading/platform_thread.h.orig	2019-09-10 11:13:31 UTC ++++ base/threading/platform_thread.h +@@ -220,7 +220,7 @@ class BASE_EXPORT PlatformThread { +  +   static ThreadPriority GetCurrentThreadPriority(); +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   // Toggles a specific thread's priority at runtime. This can be used to +   // change the priority of a thread in a different process and will fail +   // if the calling process does not have proper permissions. The diff --git a/devel/electron6/files/patch-base_threading_platform__thread__linux.cc b/devel/electron6/files/patch-base_threading_platform__thread__linux.cc new file mode 100644 index 000000000000..e91cd08201a6 --- /dev/null +++ b/devel/electron6/files/patch-base_threading_platform__thread__linux.cc @@ -0,0 +1,30 @@ +--- base/threading/platform_thread_linux.cc.orig	2019-09-10 10:42:27 UTC ++++ base/threading/platform_thread_linux.cc +@@ -18,7 +18,9 @@ +  + #if !defined(OS_NACL) && !defined(OS_AIX) + #include <pthread.h> ++#if !defined(OS_BSD) + #include <sys/prctl.h> ++#endif + #include <sys/resource.h> + #include <sys/time.h> + #include <sys/types.h> +@@ -99,7 +101,7 @@ const ThreadPriorityToNiceValuePair kThreadPriorityToN +  + Optional<bool> CanIncreaseCurrentThreadPriorityForPlatform( +     ThreadPriority priority) { +-#if !defined(OS_NACL) ++#if !defined(OS_NACL) && !defined(OS_BSD) +   // A non-zero soft-limit on RLIMIT_RTPRIO is required to be allowed to invoke +   // pthread_setschedparam in SetCurrentThreadPriorityForPlatform(). +   struct rlimit rlim; +@@ -141,7 +143,7 @@ Optional<ThreadPriority> GetCurrentThreadPriorityForPl + void PlatformThread::SetName(const std::string& name) { +   ThreadIdNameManager::GetInstance()->SetName(name); +  +-#if !defined(OS_NACL) && !defined(OS_AIX) ++#if !defined(OS_NACL) && !defined(OS_AIX) && !defined(OS_BSD) +   // On linux we can get the thread names to show up in the debugger by setting +   // the process name for the LWP.  We don't want to do this for the main +   // thread because that would rename the process, causing tools like killall diff --git a/devel/electron6/files/patch-base_threading_platform__thread__posix.cc b/devel/electron6/files/patch-base_threading_platform__thread__posix.cc new file mode 100644 index 000000000000..126b24a3c18a --- /dev/null +++ b/devel/electron6/files/patch-base_threading_platform__thread__posix.cc @@ -0,0 +1,11 @@ +--- base/threading/platform_thread_posix.cc.orig	2019-09-10 10:42:27 UTC ++++ base/threading/platform_thread_posix.cc +@@ -66,7 +66,7 @@ void* ThreadFunc(void* params) { +     if (!thread_params->joinable) +       base::ThreadRestrictions::SetSingletonAllowed(false); +  +-#if !defined(OS_NACL) ++#if !defined(OS_NACL) && !defined(OS_BSD) +     // Threads on linux/android may inherit their priority from the thread +     // where they were created. This explicitly sets the priority of all new +     // threads. diff --git a/devel/electron6/files/patch-base_threading_thread__local__storage__unittest.cc b/devel/electron6/files/patch-base_threading_thread__local__storage__unittest.cc new file mode 100644 index 000000000000..64c8dc88a3a5 --- /dev/null +++ b/devel/electron6/files/patch-base_threading_thread__local__storage__unittest.cc @@ -0,0 +1,11 @@ +--- base/threading/thread_local_storage_unittest.cc.orig	2019-09-10 10:42:27 UTC ++++ base/threading/thread_local_storage_unittest.cc +@@ -86,7 +86,7 @@ class ThreadLocalStorageRunner : public DelegateSimple + void ThreadLocalStorageCleanup(void *value) { +   int *ptr = reinterpret_cast<int*>(value); +   // Destructors should never be called with a NULL. +-  ASSERT_NE(reinterpret_cast<int*>(NULL), ptr); ++  ASSERT_NE(static_cast<int*>(NULL), ptr); +   if (*ptr == kFinalTlsValue) +     return;  // We've been called enough times. +   ASSERT_LT(kFinalTlsValue, *ptr); diff --git a/devel/electron6/files/patch-base_threading_thread__task__runner__handle.cc b/devel/electron6/files/patch-base_threading_thread__task__runner__handle.cc new file mode 100644 index 000000000000..54a572404ad7 --- /dev/null +++ b/devel/electron6/files/patch-base_threading_thread__task__runner__handle.cc @@ -0,0 +1,26 @@ +--- base/threading/thread_task_runner_handle.cc.orig	2019-09-10 10:42:27 UTC ++++ base/threading/thread_task_runner_handle.cc +@@ -8,6 +8,7 @@ + #include <utility> +  + #include "base/bind.h" ++#include "base/callback_helpers.h" + #include "base/lazy_instance.h" + #include "base/logging.h" + #include "base/run_loop.h" +@@ -37,6 +38,7 @@ bool ThreadTaskRunnerHandle::IsSet() { +   return !!thread_task_runner_tls.Pointer()->Get(); + } +  ++#if defined(OS_BSD) + // static + ScopedClosureRunner ThreadTaskRunnerHandle::OverrideForTesting( +     scoped_refptr<SingleThreadTaskRunner> overriding_task_runner) { +@@ -81,6 +83,7 @@ ScopedClosureRunner ThreadTaskRunnerHandle::OverrideFo +       base::Unretained(ttrh->task_runner_.get()), +       std::move(no_running_during_override))); + } ++#endif +  + ThreadTaskRunnerHandle::ThreadTaskRunnerHandle( +     scoped_refptr<SingleThreadTaskRunner> task_runner) diff --git a/devel/electron6/files/patch-base_trace__event_malloc__dump__provider.cc b/devel/electron6/files/patch-base_trace__event_malloc__dump__provider.cc new file mode 100644 index 000000000000..460e7c80e458 --- /dev/null +++ b/devel/electron6/files/patch-base_trace__event_malloc__dump__provider.cc @@ -0,0 +1,21 @@ +--- base/trace_event/malloc_dump_provider.cc.orig	2019-09-10 11:13:31 UTC ++++ base/trace_event/malloc_dump_provider.cc +@@ -17,6 +17,8 @@ +  + #if defined(OS_MACOSX) + #include <malloc/malloc.h> ++#elif defined(OS_BSD) ++#include <stdlib.h> + #else + #include <malloc.h> + #endif +@@ -132,6 +134,9 @@ bool MallocDumpProvider::OnMemoryDump(const MemoryDump +   } + #elif defined(OS_FUCHSIA) + // TODO(fuchsia): Port, see https://crbug.com/706592. ++#elif defined(OS_BSD) ++  total_virtual_size = 0; ++  allocated_objects_size = 0; + #else +   struct mallinfo info = mallinfo(); +   DCHECK_GE(info.arena + info.hblkhd, info.uordblks); diff --git a/devel/electron6/files/patch-base_trace__event_process__memory__dump.cc b/devel/electron6/files/patch-base_trace__event_process__memory__dump.cc new file mode 100644 index 000000000000..797561ed0b25 --- /dev/null +++ b/devel/electron6/files/patch-base_trace__event_process__memory__dump.cc @@ -0,0 +1,11 @@ +--- base/trace_event/process_memory_dump.cc.orig	2019-09-10 10:42:27 UTC ++++ base/trace_event/process_memory_dump.cc +@@ -94,7 +94,7 @@ size_t ProcessMemoryDump::CountResidentBytes(void* sta + #if defined(OS_WIN) +   std::unique_ptr<PSAPI_WORKING_SET_EX_INFORMATION[]> vec( +       new PSAPI_WORKING_SET_EX_INFORMATION[max_vec_size]); +-#elif defined(OS_MACOSX) ++#elif defined(OS_MACOSX) || defined(OS_BSD) +   std::unique_ptr<char[]> vec(new char[max_vec_size]); + #elif defined(OS_POSIX) || defined(OS_FUCHSIA) +   std::unique_ptr<unsigned char[]> vec(new unsigned char[max_vec_size]); diff --git a/devel/electron6/files/patch-base_trace__event_process__memory__dump.h b/devel/electron6/files/patch-base_trace__event_process__memory__dump.h new file mode 100644 index 000000000000..15e8996c3844 --- /dev/null +++ b/devel/electron6/files/patch-base_trace__event_process__memory__dump.h @@ -0,0 +1,11 @@ +--- base/trace_event/process_memory_dump.h.orig	2019-09-10 10:42:27 UTC ++++ base/trace_event/process_memory_dump.h +@@ -22,7 +22,7 @@ +  + // Define COUNT_RESIDENT_BYTES_SUPPORTED if platform supports counting of the + // resident memory. +-#if !defined(OS_NACL) ++#if !defined(OS_NACL) && !defined(OS_BSD) + #define COUNT_RESIDENT_BYTES_SUPPORTED + #endif +  diff --git a/devel/electron6/files/patch-build_config_BUILD.gn b/devel/electron6/files/patch-build_config_BUILD.gn new file mode 100644 index 000000000000..c9bc3faf1bc9 --- /dev/null +++ b/devel/electron6/files/patch-build_config_BUILD.gn @@ -0,0 +1,30 @@ +--- build/config/BUILD.gn.orig	2019-09-10 11:13:31 UTC ++++ build/config/BUILD.gn +@@ -161,7 +161,7 @@ config("debug") { +       # builds, and we have to tell it to turn it off. +       defines += [ "_HAS_ITERATOR_DEBUGGING=0" ] +     } +-  } else if (is_linux && current_cpu == "x64" && enable_iterator_debugging) { ++  } else if ((is_linux || is_bsd) && current_cpu == "x64" && enable_iterator_debugging) { +     # Enable libstdc++ debugging facilities to help catch problems early, see +     # http://crbug.com/65151 . +     # TODO(phajdan.jr): Should we enable this for all of POSIX? +@@ -259,9 +259,7 @@ config("default_libs") { +     ] +   } else if (is_linux) { +     libs = [ +-      "dl", +       "pthread", +-      "rt", +     ] +   } + } +@@ -349,7 +347,7 @@ config("executable_config") { +       "//build/config/ios:ios_dynamic_flags", +       "//build/config/ios:ios_executable_flags", +     ] +-  } else if (is_linux || is_android || current_os == "aix") { ++  } else if (is_linux || is_bsd || is_android || current_os == "aix") { +     configs += [ "//build/config/gcc:executable_config" ] +     if (is_chromecast) { +       configs += [ "//build/config/chromecast:executable_config" ] diff --git a/devel/electron6/files/patch-build_config_BUILDCONFIG.gn b/devel/electron6/files/patch-build_config_BUILDCONFIG.gn new file mode 100644 index 000000000000..789168df9ce2 --- /dev/null +++ b/devel/electron6/files/patch-build_config_BUILDCONFIG.gn @@ -0,0 +1,48 @@ +--- build/config/BUILDCONFIG.gn.orig	2019-09-16 09:24:24 UTC ++++ build/config/BUILDCONFIG.gn +@@ -134,10 +134,10 @@ declare_args() { +   is_official_build = false +  +   # Whether we're a traditional desktop unix. +-  is_desktop_linux = current_os == "linux" ++  is_desktop_linux = current_os == "linux" || current_os == "freebsd" +  +   # Set to true when compiling with the Clang compiler. +-  is_clang = current_os != "linux" || ++  is_clang = current_os != "linux" || current_os == "freebsd" || +              (current_cpu != "s390x" && current_cpu != "s390" && +               current_cpu != "ppc64" && current_cpu != "ppc" && +               current_cpu != "mips" && current_cpu != "mips64") +@@ -189,8 +189,8 @@ if (host_toolchain == "") { +   # TODO(dpranke): Add some sort of assert here that verifies that +   # no toolchain omitted host_toolchain from its toolchain_args(). +  +-  if (host_os == "linux") { +-    if (target_os != "linux") { ++  if (host_os == "linux" || host_os == "freebsd") { ++    if (target_os != "linux" && target_os != "freebsd") { +       host_toolchain = "//build/toolchain/linux:clang_$host_cpu" +     } else if (is_clang) { +       host_toolchain = "//build/toolchain/linux:clang_$host_cpu" +@@ -227,7 +227,7 @@ if (target_os == "android") { +   assert(host_os == "linux" || host_os == "mac", +          "Android builds are only supported on Linux and Mac hosts.") +   _default_toolchain = "//build/toolchain/android:android_clang_$target_cpu" +-} else if (target_os == "chromeos" || target_os == "linux") { ++} else if (target_os == "chromeos" || target_os == "linux" || target_os == "freebsd") { +   # See comments in build/toolchain/cros/BUILD.gn about board compiles. +   if (is_clang) { +     _default_toolchain = "//build/toolchain/linux:clang_$target_cpu" +@@ -291,10 +291,11 @@ is_android = current_os == "android" + is_chromeos = current_os == "chromeos" + is_fuchsia = current_os == "fuchsia" + is_ios = current_os == "ios" +-is_linux = current_os == "chromeos" || current_os == "linux" ++is_linux = current_os == "chromeos" || current_os == "linux" || current_os == "freebsd" + is_mac = current_os == "mac" + is_nacl = current_os == "nacl" + is_win = current_os == "win" || current_os == "winuwp" ++is_bsd = current_os == "freebsd" +  + is_posix = !is_win && !is_fuchsia +  diff --git a/devel/electron6/files/patch-build_config_allocator.gni b/devel/electron6/files/patch-build_config_allocator.gni new file mode 100644 index 000000000000..cb963a2bb89b --- /dev/null +++ b/devel/electron6/files/patch-build_config_allocator.gni @@ -0,0 +1,20 @@ +--- build/config/allocator.gni.orig	2019-09-10 11:13:31 UTC ++++ build/config/allocator.gni +@@ -6,7 +6,7 @@ import("//build/config/sanitizers/sanitizers.gni") +  + # Temporarily disable tcmalloc on arm64 linux to get rid of compilation errors. + if (is_android || is_mac || is_ios || is_asan || is_lsan || is_tsan || +-    is_msan || is_win || is_fuchsia || (is_linux && target_cpu == "arm64")) { ++    is_msan || is_win || is_fuchsia || (is_linux && target_cpu == "arm64") || is_bsd) { +   _default_allocator = "none" + } else { +   _default_allocator = "tcmalloc" +@@ -17,7 +17,7 @@ if (is_android || is_mac || is_ios || is_asan || is_ls + # against the debug CRT with "is_nacl=false". + if ((is_linux || is_android || is_mac || +      (is_win && !is_component_build && !is_debug)) && !is_asan && !is_hwasan && +-    !is_lsan && !is_tsan && !is_msan) { ++    !is_lsan && !is_tsan && !is_msan && !is_bsd) { +   _default_use_allocator_shim = true + } else { +   _default_use_allocator_shim = false diff --git a/devel/electron6/files/patch-build_config_compiler_BUILD.gn b/devel/electron6/files/patch-build_config_compiler_BUILD.gn new file mode 100644 index 000000000000..6adaadb95efa --- /dev/null +++ b/devel/electron6/files/patch-build_config_compiler_BUILD.gn @@ -0,0 +1,92 @@ +--- build/config/compiler/BUILD.gn.orig	2019-09-10 11:13:31 UTC ++++ build/config/compiler/BUILD.gn +@@ -54,7 +54,7 @@ declare_args() { +   # only two architectures that are currently checked in). Turn this off when +   # you are using a custom toolchain and need to control -B in cflags. +   linux_use_bundled_binutils = +-      linux_use_bundled_binutils_override && is_linux && ++      linux_use_bundled_binutils_override && (is_linux && !is_bsd) && +       (current_cpu == "x64" || current_cpu == "x86") +   binutils_path = rebase_path("//third_party/binutils/Linux_x64/Release/bin", +                               root_build_dir) +@@ -269,7 +269,7 @@ config("compiler") { +     # Linker warnings. +     if (fatal_linker_warnings && !(is_chromeos && current_cpu == "arm") && +         !(is_android && use_order_profiling) && !is_mac && !is_ios && +-        current_os != "aix") { ++        current_os != "aix" && !is_bsd) { +       # TODO(jochen): Enable this on chromeos on arm. http://crbug.com/356580 +       # TODO(lizeb,pasko): Fix link errors when linking with order_profiling=1 +       # crbug.com/485542 +@@ -363,7 +363,7 @@ config("compiler") { +  +     # Compiler instrumentation can introduce dependencies in DSOs to symbols in +     # the executable they are loaded into, so they are unresolved at link-time. +-    if (!using_sanitizer) { ++    if (!using_sanitizer && !is_bsd) { +       ldflags += [ +         "-Wl,-z,defs", +         "-Wl,--as-needed", +@@ -471,7 +471,7 @@ config("compiler") { +     } +   } +  +-  if (is_clang && !is_nacl && !use_xcode_clang) { ++  if (is_clang && !is_nacl && !use_xcode_clang && !is_bsd) { +     cflags += [ "-fcrash-diagnostics-dir=" + +                 rebase_path("//tools/clang/crashreports", root_build_dir) ] +  +@@ -741,7 +741,7 @@ config("compiler_cpu_abi") { +         cflags += [ "-mtune=$arm_tune" ] +       } +     } else if (current_cpu == "arm64") { +-      if (is_clang && !is_android && !is_nacl && !is_fuchsia) { ++      if (is_clang && !is_android && !is_nacl && !is_fuchsia && !is_bsd) { +         cflags += [ "--target=aarch64-linux-gnu" ] +         ldflags += [ "--target=aarch64-linux-gnu" ] +       } +@@ -1102,7 +1102,7 @@ config("compiler_deterministic") { +       "-Xclang", +       ".", +     ] +-    if (!is_win) { ++    if (!is_win && !is_bsd) { +       # We don't use clang -cc1as on Windows (yet? https://crbug.com/762167) +       asmflags = [ "-Wa,-fdebug-compilation-dir,." ] +     } +@@ -1492,7 +1492,7 @@ config("default_warnings") { +         cflags += [ "-Wno-nonportable-include-path" ] +       } +  +-      if (current_toolchain == host_toolchain || !use_xcode_clang) { ++      if ((current_toolchain == host_toolchain || !use_xcode_clang) && !is_bsd) { +         # Flags NaCl (Clang 3.7) and Xcode 9.2 (Clang clang-900.0.39.2) do not +         # recognize. +         cflags += [ +@@ -1701,7 +1701,7 @@ config("thin_archive") { +   # Mac and iOS use the mac-specific "libtool" command, not ar, which doesn't +   # have a "thin archive" mode (it does accept -T, but it means truncating +   # archive names to 16 characters, which is not what we want). +-  if ((is_posix && !is_nacl && !is_mac && !is_ios) || is_fuchsia) { ++  if ((is_posix && !is_nacl && !is_mac && !is_ios && !is_bsd) || is_fuchsia) { +     arflags = [ "-T" ] +   } else if (is_win && use_lld) { +     arflags = [ "/llvmlibthin" ] +@@ -2288,7 +2288,7 @@ config("symbols") { +     # flag, so we can use use -g1 for pnacl and nacl-clang compiles. +     # gcc nacl is is_nacl && !is_clang, pnacl and nacl-clang are && is_clang. +     if (!is_nacl || is_clang) { +-      cflags += [ "-g2" ] ++      cflags += [ "-g0" ] +     } +  +     if (use_debug_fission && !is_nacl && !is_android) { +@@ -2309,7 +2309,7 @@ config("symbols") { +     # DWARF info may be corrupt; offsets in a range list entry are in different +     # sections" there.  Maybe just a bug in nacl_switch_32.S. +     if (!is_mac && !is_ios && !is_nacl && current_cpu != "x86" && +-        (use_gold || use_lld)) { ++        (use_gold || use_lld) && !is_bsd) { +       if (is_clang) { +         # This flag enables the GNU-format pubnames and pubtypes sections, +         # which lld needs in order to generate a correct GDB index. diff --git a/devel/electron6/files/patch-build_config_compiler_compiler.gni b/devel/electron6/files/patch-build_config_compiler_compiler.gni new file mode 100644 index 000000000000..92b64565c1b2 --- /dev/null +++ b/devel/electron6/files/patch-build_config_compiler_compiler.gni @@ -0,0 +1,11 @@ +--- build/config/compiler/compiler.gni.orig	2019-09-10 11:13:31 UTC ++++ build/config/compiler/compiler.gni +@@ -179,7 +179,7 @@ declare_args() { + declare_args() { +   # Whether to use the gold linker from binutils instead of lld or bfd. +   use_gold = +-      !use_lld && !(is_chromecast && is_linux && ++      !is_bsd && !use_lld && !(is_chromecast && is_linux && +                     (current_cpu == "arm" || current_cpu == "mipsel")) && +       ((is_linux && (current_cpu == "x64" || current_cpu == "x86" || +                      current_cpu == "arm" || current_cpu == "arm64" || diff --git a/devel/electron6/files/patch-build_config_features.gni b/devel/electron6/files/patch-build_config_features.gni new file mode 100644 index 000000000000..834c9637a5db --- /dev/null +++ b/devel/electron6/files/patch-build_config_features.gni @@ -0,0 +1,11 @@ +--- build/config/features.gni.orig	2019-09-10 11:13:32 UTC ++++ build/config/features.gni +@@ -45,7 +45,7 @@ declare_args() { +   } +  +   # libudev usage. This currently only affects the content layer. +-  use_udev = is_linux && !is_chromecast ++  use_udev = is_linux && !is_chromecast && !is_bsd +  +   use_dbus = is_linux && !is_chromecast +  diff --git a/devel/electron6/files/patch-build_config_freetype_freetype.gni b/devel/electron6/files/patch-build_config_freetype_freetype.gni new file mode 100644 index 000000000000..4dd88cdc4a20 --- /dev/null +++ b/devel/electron6/files/patch-build_config_freetype_freetype.gni @@ -0,0 +1,9 @@ +--- build/config/freetype/freetype.gni.orig	2019-09-10 10:42:27 UTC ++++ build/config/freetype/freetype.gni +@@ -10,5 +10,5 @@ declare_args() { +   # than version 2.7.1 and have color bitmap support compiled in. WARNING: +   # System FreeType configurations other than as described WILL INTRODUCE TEXT +   # RENDERING AND SECURITY REGRESSIONS. +-  use_system_freetype = false ++  use_system_freetype = true + } diff --git a/devel/electron6/files/patch-build_config_linux_BUILD.gn b/devel/electron6/files/patch-build_config_linux_BUILD.gn new file mode 100644 index 000000000000..975dfdd1f96e --- /dev/null +++ b/devel/electron6/files/patch-build_config_linux_BUILD.gn @@ -0,0 +1,11 @@ +--- build/config/linux/BUILD.gn.orig	2019-09-10 10:42:27 UTC ++++ build/config/linux/BUILD.gn +@@ -28,7 +28,7 @@ config("runtime_library") { +   } +  +   if ((!is_chromeos || default_toolchain != "//build/toolchain/cros:target") && +-      (!use_custom_libcxx || current_cpu == "mipsel")) { ++      (!use_custom_libcxx || current_cpu == "mipsel") && !is_bsd) { +     libs = [ "atomic" ] +   } + } diff --git a/devel/electron6/files/patch-build_config_linux_pkg-config.py b/devel/electron6/files/patch-build_config_linux_pkg-config.py new file mode 100644 index 000000000000..51d73283252c --- /dev/null +++ b/devel/electron6/files/patch-build_config_linux_pkg-config.py @@ -0,0 +1,26 @@ +--- build/config/linux/pkg-config.py.orig	2019-09-10 10:42:27 UTC ++++ build/config/linux/pkg-config.py +@@ -59,8 +59,12 @@ def SetConfigPath(options): +     print("You must specify an architecture via -a if using a sysroot.") +     sys.exit(1) +  +-  libdir = sysroot + '/usr/' + options.system_libdir + '/pkgconfig' +-  libdir += ':' + sysroot + '/usr/share/pkgconfig' ++  if "linux" in sys.platform: ++    libdir = sysroot + '/libdata/' + options.system_libdir + '/pkgconfig' ++    libdir += ':' + sysroot + '/usr/share/pkgconfig' ++  elif "bsd" in sys.platform: ++    libdir = sysroot + '/libdata/pkgconfig' ++    libdir += ':' + '/usr/libdata/pkgconfig' +   os.environ['PKG_CONFIG_LIBDIR'] = libdir +   return libdir +  +@@ -109,7 +113,7 @@ def main(): +   # If this is run on non-Linux platforms, just return nothing and indicate +   # success. This allows us to "kind of emulate" a Linux build from other +   # platforms. +-  if "linux" not in sys.platform: ++  if "bsd" not in sys.platform: +     print("[[],[],[],[],[]]") +     return 0 +  diff --git a/devel/electron6/files/patch-build_config_sysroot.gni b/devel/electron6/files/patch-build_config_sysroot.gni new file mode 100644 index 000000000000..5836c542a813 --- /dev/null +++ b/devel/electron6/files/patch-build_config_sysroot.gni @@ -0,0 +1,15 @@ +--- build/config/sysroot.gni.orig	2019-09-10 11:13:32 UTC ++++ build/config/sysroot.gni +@@ -15,9 +15,10 @@ declare_args() { +   # The absolute path to directory containing linux sysroot images +   target_sysroot_dir = "//build/linux" +  +-  use_sysroot = current_cpu == "x86" || current_cpu == "x64" || ++  use_sysroot = !is_bsd && ( ++                current_cpu == "x86" || current_cpu == "x64" || +                 current_cpu == "arm" || current_cpu == "arm64" || +-                current_cpu == "mipsel" || current_cpu == "mips64el" ++                current_cpu == "mipsel" || current_cpu == "mips64el") + } +  + if (current_os == target_os && current_cpu == target_cpu && diff --git a/devel/electron6/files/patch-build_detect__host__arch.py b/devel/electron6/files/patch-build_detect__host__arch.py new file mode 100644 index 000000000000..609d0cbc48bd --- /dev/null +++ b/devel/electron6/files/patch-build_detect__host__arch.py @@ -0,0 +1,11 @@ +--- build/detect_host_arch.py.orig	2019-09-10 10:42:27 UTC ++++ build/detect_host_arch.py +@@ -21,6 +21,8 @@ def HostArch(): +     host_arch = 'ia32' +   elif host_arch in ['x86_64', 'amd64']: +     host_arch = 'x64' ++  elif host_arch.startswith('arm64'): ++    host_arch = 'arm64' +   elif host_arch.startswith('arm'): +     host_arch = 'arm' +   elif host_arch.startswith('aarch64'): diff --git a/devel/electron6/files/patch-build_gn__run__binary.py b/devel/electron6/files/patch-build_gn__run__binary.py new file mode 100644 index 000000000000..df5a65dc910f --- /dev/null +++ b/devel/electron6/files/patch-build_gn__run__binary.py @@ -0,0 +1,11 @@ +--- build/gn_run_binary.py.orig	2019-09-10 10:42:27 UTC ++++ build/gn_run_binary.py +@@ -24,7 +24,7 @@ if not os.path.isabs(path): + # The rest of the arguments are passed directly to the executable. + args = [path] + sys.argv[2:] +  +-ret = subprocess.call(args) ++ret = subprocess.call(args, env={"CHROME_EXE_PATH":"${WRKSRC}/out/Release/chrome"}) + if ret != 0: +   if ret <= -100: +     # Windows error codes such as 0xC0000005 and 0xC0000409 are much easier to diff --git a/devel/electron6/files/patch-build_linux_chrome.map b/devel/electron6/files/patch-build_linux_chrome.map new file mode 100644 index 000000000000..3fd5dce03090 --- /dev/null +++ b/devel/electron6/files/patch-build_linux_chrome.map @@ -0,0 +1,29 @@ +--- build/linux/chrome.map.orig	2019-09-10 10:42:27 UTC ++++ build/linux/chrome.map +@@ -1,4 +1,7 @@ + { ++local: ++  *; ++ + global: +   __bss_start; +   __data_start; +@@ -20,6 +23,10 @@ global: +   # Program entry point. +   _start; +  ++  # FreeBSD specific variables. ++  __progname; ++  environ; ++ +   # Memory allocation symbols.  We want chrome and any libraries to +   # share the same heap, so it is correct to export these symbols. +   calloc; +@@ -81,7 +88,4 @@ global: +   localtime64; +   localtime64_r; +   localtime_r; +- +-local: +-  *; + }; diff --git a/devel/electron6/files/patch-build_linux_libpci_BUILD.gn b/devel/electron6/files/patch-build_linux_libpci_BUILD.gn new file mode 100644 index 000000000000..e6b5d78f81ab --- /dev/null +++ b/devel/electron6/files/patch-build_linux_libpci_BUILD.gn @@ -0,0 +1,53 @@ +--- build/linux/libpci/BUILD.gn.orig	2019-09-10 10:42:27 UTC ++++ build/linux/libpci/BUILD.gn +@@ -3,20 +3,36 @@ + # found in the LICENSE file. +  + import("//tools/generate_library_loader/generate_library_loader.gni") ++import("//build/config/linux/pkg_config.gni") +  +-# This generates a target named "libpci". +-generate_library_loader("libpci") { +-  name = "LibPciLoader" +-  output_h = "libpci.h" +-  output_cc = "libpci_loader.cc" +-  header = "<pci/pci.h>" ++declare_args() { ++  use_system_libpci = is_bsd ++} +  +-  functions = [ +-    "pci_alloc", +-    "pci_init", +-    "pci_cleanup", +-    "pci_scan_bus", +-    "pci_fill_info", +-    "pci_lookup_name", +-  ] ++if (use_system_libpci) { ++  pkg_config("system_libpci") { ++    packages = [ "libpci" ] ++  } ++ ++  source_set("libpci") { ++    public_configs = [ ":system_libpci" ] ++  } ++ ++} else { ++  # This generates a target named "libpci". ++  generate_library_loader("libpci") { ++    name = "LibPciLoader" ++    output_h = "libpci.h" ++    output_cc = "libpci_loader.cc" ++    header = "<pci/pci.h>" ++ ++    functions = [ ++      "pci_alloc", ++      "pci_init", ++      "pci_cleanup", ++      "pci_scan_bus", ++      "pci_fill_info", ++      "pci_lookup_name", ++    ] ++  } + } diff --git a/devel/electron6/files/patch-build_linux_unbundle_libusb.gn b/devel/electron6/files/patch-build_linux_unbundle_libusb.gn new file mode 100644 index 000000000000..e4d1bb15f11d --- /dev/null +++ b/devel/electron6/files/patch-build_linux_unbundle_libusb.gn @@ -0,0 +1,27 @@ +--- build/linux/unbundle/libusb.gn.orig	2019-09-16 09:25:10 UTC ++++ build/linux/unbundle/libusb.gn +@@ -0,0 +1,24 @@ ++# Copyright 2016 The Chromium Authors. All rights reserved. ++# Use of this source code is governed by a BSD-style license that can be ++# found in the LICENSE file. ++ ++import("//build/config/linux/pkg_config.gni") ++import("//build/shim_headers.gni") ++ ++pkg_config("system_libusb") { ++  packages = [ "libusb-1.0" ] ++} ++ ++shim_headers("libusb_shim") { ++  root_path = "src/libusb" ++  headers = [ ++    "libusb.h", ++  ] ++} ++ ++source_set("libusb") { ++  deps = [ ++    ":libusb_shim", ++  ] ++  public_configs = [ ":system_libusb" ] ++} diff --git a/devel/electron6/files/patch-build_linux_unbundle_replace__gn__files.py b/devel/electron6/files/patch-build_linux_unbundle_replace__gn__files.py new file mode 100644 index 000000000000..310b08490351 --- /dev/null +++ b/devel/electron6/files/patch-build_linux_unbundle_replace__gn__files.py @@ -0,0 +1,10 @@ +--- build/linux/unbundle/replace_gn_files.py.orig	2019-09-10 10:42:27 UTC ++++ build/linux/unbundle/replace_gn_files.py +@@ -27,6 +27,7 @@ REPLACEMENTS = { +   'libevent': 'base/third_party/libevent/BUILD.gn', +   'libjpeg': 'third_party/libjpeg.gni', +   'libpng': 'third_party/libpng/BUILD.gn', ++  'libusb': 'third_party/libusb/BUILD.gn', +   'libvpx': 'third_party/libvpx/BUILD.gn', +   'libwebp': 'third_party/libwebp/BUILD.gn', +   'libxml': 'third_party/libxml/BUILD.gn', diff --git a/devel/electron6/files/patch-build_toolchain_gcc__toolchain.gni b/devel/electron6/files/patch-build_toolchain_gcc__toolchain.gni new file mode 100644 index 000000000000..de9f6ffbe48b --- /dev/null +++ b/devel/electron6/files/patch-build_toolchain_gcc__toolchain.gni @@ -0,0 +1,45 @@ +--- build/toolchain/gcc_toolchain.gni.orig	2019-09-10 11:13:32 UTC ++++ build/toolchain/gcc_toolchain.gni +@@ -36,6 +36,11 @@ if (is_linux && target_os == "android") { +   enable_resource_whitelist_generation = false + } +  ++declare_args() { ++  extra_cxxflags = "" ++  extra_ldflags = "" ++} ++ + # This template defines a toolchain for something that works like gcc + # (including clang). + # +@@ -617,13 +622,23 @@ template("clang_toolchain") { +   } +  +   gcc_toolchain(target_name) { +-    prefix = rebase_path("$clang_base_path/bin", root_build_dir) +-    cc = "$prefix/clang" +-    cxx = "$prefix/clang++" +-    ld = cxx +-    readelf = "${toolprefix}readelf" +-    ar = "${prefix}/llvm-ar" +-    nm = "${toolprefix}nm" ++    if (is_bsd) { ++      prefix = "/usr/local/bin" ++      cc = "cc" ++      cxx = "c++" ++      ld = cxx ++      readelf = "readelf" ++      ar = "${prefix}/ar" ++      nm = "${toolprefix}nm" ++    } else { ++      prefix = rebase_path("$clang_base_path/bin", root_build_dir) ++      cc = "$prefix/clang" ++      cxx = "$prefix/clang++" ++      ld = cxx ++      readelf = "${toolprefix}readelf" ++      ar = "${prefix}/llvm-ar" ++      nm = "${toolprefix}nm" ++    } +  +     forward_variables_from(invoker, +                            [ diff --git a/devel/electron6/files/patch-build_toolchain_get__concurrent__links.py b/devel/electron6/files/patch-build_toolchain_get__concurrent__links.py new file mode 100644 index 000000000000..a0b276ce8036 --- /dev/null +++ b/devel/electron6/files/patch-build_toolchain_get__concurrent__links.py @@ -0,0 +1,17 @@ +--- build/toolchain/get_concurrent_links.py.orig	2019-09-10 10:42:27 UTC ++++ build/toolchain/get_concurrent_links.py +@@ -48,6 +48,14 @@ def _GetTotalMemoryInBytes(): +       return int(subprocess.check_output(['sysctl', '-n', 'hw.memsize'])) +     except Exception: +       return 0 ++  elif sys.platform.startswith('freebsd'): ++    try: ++      avail_bytes = int(subprocess.check_output(['sysctl', '-n', 'hw.physmem'])) ++      # With -fuse-lld it doesn't take a lot of ram, feel free to change that ++      # 1 * ... to needed amount ++      return max(1, avail_bytes / (1 * (2 ** 30)))  # total / 4GB ++    except Exception: ++      return 1 +   # TODO(scottmg): Implement this for other platforms. +   return 0 +  diff --git a/devel/electron6/files/patch-build_toolchain_linux_BUILD.gn b/devel/electron6/files/patch-build_toolchain_linux_BUILD.gn new file mode 100644 index 000000000000..248c492da700 --- /dev/null +++ b/devel/electron6/files/patch-build_toolchain_linux_BUILD.gn @@ -0,0 +1,10 @@ +--- build/toolchain/linux/BUILD.gn.orig	2019-09-10 10:42:27 UTC ++++ build/toolchain/linux/BUILD.gn +@@ -22,7 +22,6 @@ clang_toolchain("clang_arm") { + } +  + clang_toolchain("clang_arm64") { +-  toolprefix = "aarch64-linux-gnu-" +   toolchain_args = { +     current_cpu = "arm64" +     current_os = "linux" diff --git a/devel/electron6/files/patch-cc_BUILD.gn b/devel/electron6/files/patch-cc_BUILD.gn new file mode 100644 index 000000000000..44ac52da9549 --- /dev/null +++ b/devel/electron6/files/patch-cc_BUILD.gn @@ -0,0 +1,21 @@ +--- cc/BUILD.gn.orig	2019-09-10 11:13:32 UTC ++++ cc/BUILD.gn +@@ -566,7 +566,7 @@ cc_test_static_library("test_support") { +   if (enable_vulkan) { +     deps += [ "//gpu/vulkan/init" ] +   } +-  if (!is_android) { ++  if (!is_android && !is_bsd) { +     data_deps = [ +       "//third_party/mesa_headers", +     ] +@@ -767,9 +767,6 @@ cc_test("cc_unittests") { +     "//ui/gfx/geometry", +     "//ui/gl", +     "//ui/gl:test_support", +-  ] +-  data_deps = [ +-    "//third_party/mesa_headers", +   ] + } +  diff --git a/devel/electron6/files/patch-cc_layers_scrollbar__layer__impl__base.cc b/devel/electron6/files/patch-cc_layers_scrollbar__layer__impl__base.cc new file mode 100644 index 000000000000..4224dd142bf9 --- /dev/null +++ b/devel/electron6/files/patch-cc_layers_scrollbar__layer__impl__base.cc @@ -0,0 +1,13 @@ +--- cc/layers/scrollbar_layer_impl_base.cc.orig	2019-09-10 11:13:32 UTC ++++ cc/layers/scrollbar_layer_impl_base.cc +@@ -218,8 +218,8 @@ gfx::Rect ScrollbarLayerImplBase::ComputeThumbQuadRect +   int thumb_offset = TrackStart(); +   if (maximum > 0) { +     float ratio = clamped_current_pos / maximum; +-    float max_offset = track_length - thumb_length; +-    thumb_offset += static_cast<int>(ratio * max_offset); ++    float _max_offset = track_length - thumb_length; ++    thumb_offset += static_cast<int>(ratio * _max_offset); +   } +  +   float thumb_thickness_adjustment = diff --git a/devel/electron6/files/patch-cc_trees_property__tree.cc b/devel/electron6/files/patch-cc_trees_property__tree.cc new file mode 100644 index 000000000000..81e150be23a2 --- /dev/null +++ b/devel/electron6/files/patch-cc_trees_property__tree.cc @@ -0,0 +1,20 @@ +--- cc/trees/property_tree.cc.orig	2019-09-10 11:13:33 UTC ++++ cc/trees/property_tree.cc +@@ -1348,13 +1348,13 @@ gfx::ScrollOffset ScrollTree::MaxScrollOffset(int scro +  +   gfx::Size clip_layer_bounds = container_bounds(scroll_node->id); +  +-  gfx::ScrollOffset max_offset( ++  gfx::ScrollOffset _max_offset( +       scaled_scroll_bounds.width() - clip_layer_bounds.width(), +       scaled_scroll_bounds.height() - clip_layer_bounds.height()); +  +-  max_offset.Scale(1 / scale_factor); +-  max_offset.SetToMax(gfx::ScrollOffset()); +-  return max_offset; ++  _max_offset.Scale(1 / scale_factor); ++  _max_offset.SetToMax(gfx::ScrollOffset()); ++  return _max_offset; + } +  + gfx::SizeF ScrollTree::scroll_bounds(int scroll_node_id) const { diff --git a/devel/electron6/files/patch-chrome_app_chrome__command__ids.h b/devel/electron6/files/patch-chrome_app_chrome__command__ids.h new file mode 100644 index 000000000000..5fd254d7ee57 --- /dev/null +++ b/devel/electron6/files/patch-chrome_app_chrome__command__ids.h @@ -0,0 +1,11 @@ +--- chrome/app/chrome_command_ids.h.orig	2019-09-10 11:13:35 UTC ++++ chrome/app/chrome_command_ids.h +@@ -63,7 +63,7 @@ + #define IDC_VISIT_DESKTOP_OF_LRU_USER_2 34049 + #define IDC_VISIT_DESKTOP_OF_LRU_USER_3 34050 +  +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS) + #define IDC_USE_SYSTEM_TITLE_BAR        34051 + #define IDC_RESTORE_WINDOW              34052 + #endif diff --git a/devel/electron6/files/patch-chrome_app_chrome__content__browser__overlay__manifest.cc b/devel/electron6/files/patch-chrome_app_chrome__content__browser__overlay__manifest.cc new file mode 100644 index 000000000000..041395feabcc --- /dev/null +++ b/devel/electron6/files/patch-chrome_app_chrome__content__browser__overlay__manifest.cc @@ -0,0 +1,20 @@ +--- chrome/app/chrome_content_browser_overlay_manifest.cc.orig	2019-09-10 11:13:35 UTC ++++ chrome/app/chrome_content_browser_overlay_manifest.cc +@@ -79,7 +79,7 @@ + #include "chrome/services/app_service/public/cpp/manifest.h" + #endif +  +-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || \ ++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) || \ +     defined(OS_CHROMEOS) + #include "chrome/browser/performance_manager/webui_graph_dump.mojom.h"  // nogncheck + #include "chrome/browser/ui/webui/discards/discards.mojom.h" +@@ -240,7 +240,7 @@ const service_manager::Manifest& GetChromeContentBrows + #else +                 app_management::mojom::PageHandlerFactory, + #endif +-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || \ ++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) || \ +     defined(OS_CHROMEOS) +                 mojom::DiscardsDetailsProvider, +                 performance_manager::mojom::WebUIGraphDump, diff --git a/devel/electron6/files/patch-chrome_app_chrome__main.cc b/devel/electron6/files/patch-chrome_app_chrome__main.cc new file mode 100644 index 000000000000..3a27ea7058cf --- /dev/null +++ b/devel/electron6/files/patch-chrome_app_chrome__main.cc @@ -0,0 +1,16 @@ +--- chrome/app/chrome_main.cc.orig	2019-09-10 11:13:35 UTC ++++ chrome/app/chrome_main.cc +@@ -94,11 +94,11 @@ int ChromeMain(int argc, const char** argv) { + #endif +  +   // Chrome-specific process modes. +-#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) ++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_BSD) +   if (command_line->HasSwitch(switches::kHeadless)) { +     return headless::HeadlessShellMain(params); +   } +-#endif  // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) ++#endif  // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_BSD) +  +   int rv = content::ContentMain(params); +  diff --git a/devel/electron6/files/patch-chrome_app_chrome__main__delegate.cc b/devel/electron6/files/patch-chrome_app_chrome__main__delegate.cc new file mode 100644 index 000000000000..20d645e2d045 --- /dev/null +++ b/devel/electron6/files/patch-chrome_app_chrome__main__delegate.cc @@ -0,0 +1,137 @@ +--- chrome/app/chrome_main_delegate.cc.orig	2019-09-10 11:13:35 UTC ++++ chrome/app/chrome_main_delegate.cc +@@ -100,7 +100,7 @@ + #include "chrome/app/shutdown_signal_handlers_posix.h" + #endif +  +-#if BUILDFLAG(ENABLE_NACL) && defined(OS_LINUX) ++#if BUILDFLAG(ENABLE_NACL) && defined(OS_LINUX) && !defined(OS_BSD) + #include "components/nacl/common/nacl_paths.h" + #include "components/nacl/zygote/nacl_fork_delegate_linux.h" + #endif +@@ -137,7 +137,7 @@ + #include "v8/include/v8.h" + #endif +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + #include "base/environment.h" + #endif +  +@@ -241,7 +241,7 @@ bool UseHooks() { +  + #endif  // defined(OS_WIN) +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) && !defined(OS_BSD) + void AdjustLinuxOOMScore(const std::string& process_type) { +   // Browsers and zygotes should still be killable, but killed last. +   const int kZygoteScore = 0; +@@ -300,7 +300,7 @@ void AdjustLinuxOOMScore(const std::string& process_ty +   if (score > -1) +     base::AdjustOOMScore(base::GetCurrentProcId(), score); + } +-#endif  // defined(OS_LINUX) ++#endif  // defined(OS_LINUX) && !defined(OS_BSD) +  + // Returns true if this subprocess type needs the ResourceBundle initialized + // and resources loaded. +@@ -345,7 +345,7 @@ bool HandleVersionSwitches(const base::CommandLine& co +   return false; + } +  +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) + // Show the man page if --help or -h is on the command line. + void HandleHelpSwitches(const base::CommandLine& command_line) { +   if (command_line.HasSwitch(switches::kHelp) || +@@ -355,7 +355,7 @@ void HandleHelpSwitches(const base::CommandLine& comma +     PLOG(FATAL) << "execlp failed"; +   } + } +-#endif  // defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#endif  // (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) +  + #if !defined(OS_MACOSX) && !defined(OS_ANDROID) + void SIGTERMProfilingShutdown(int signal) { +@@ -409,7 +409,7 @@ void InitializeUserDataDir(base::CommandLine* command_ +   std::string process_type = +       command_line->GetSwitchValueASCII(switches::kProcessType); +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   // On Linux, Chrome does not support running multiple copies under different +   // DISPLAYs, so the profile directory can be specified in the environment to +   // support the virtual desktop use-case. +@@ -421,7 +421,7 @@ void InitializeUserDataDir(base::CommandLine* command_ +       user_data_dir = base::FilePath::FromUTF8Unsafe(user_data_dir_string); +     } +   } +-#endif  // OS_LINUX ++#endif  // OS_LINUX || OS_BSD + #if defined(OS_MACOSX) +   policy::path_parser::CheckUserDataDirPolicy(&user_data_dir); + #endif  // OS_MAC +@@ -478,7 +478,7 @@ void InitLogging(const std::string& process_type) { + void RecordMainStartupMetrics(base::TimeTicks exe_entry_point_ticks) { +   if (!exe_entry_point_ticks.is_null()) +     startup_metric_utils::RecordExeMainEntryPointTicks(exe_entry_point_ticks); +-#if defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_LINUX) ++#if defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD) +   // Record the startup process creation time on supported platforms. +   startup_metric_utils::RecordStartupProcessCreationTime( +       base::Process::Current().CreationTime()); +@@ -650,7 +650,7 @@ bool ChromeMainDelegate::BasicStartupComplete(int* exi +     *exit_code = 0; +     return true;  // Got a --version switch; exit with a success error code. +   } +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) +   // This will directly exit if the user asked for help. +   HandleHelpSwitches(command_line); + #endif +@@ -674,7 +674,7 @@ bool ChromeMainDelegate::BasicStartupComplete(int* exi + #if defined(OS_CHROMEOS) +   chromeos::RegisterPathProvider(); + #endif +-#if BUILDFLAG(ENABLE_NACL) && defined(OS_LINUX) ++#if BUILDFLAG(ENABLE_NACL) && defined(OS_LINUX) && !defined(OS_BSD) +   nacl::RegisterPathProvider(); + #endif +  +@@ -868,7 +868,7 @@ void ChromeMainDelegate::PreSandboxStartup() { + #if defined(OS_WIN) +   child_process_logging::Init(); + #endif +-#if defined(ARCH_CPU_ARM_FAMILY) && (defined(OS_ANDROID) || defined(OS_LINUX)) ++#if defined(ARCH_CPU_ARM_FAMILY) && (defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_BSD)) +   // Create an instance of the CPU class to parse /proc/cpuinfo and cache +   // cpu_brand info. +   base::CPU cpu_info; +@@ -996,7 +996,7 @@ void ChromeMainDelegate::PreSandboxStartup() { +   InitializePDF(); + #endif +  +-#if defined(OS_POSIX) && !defined(OS_MACOSX) ++#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_BSD) +   // Zygote needs to call InitCrashReporter() in RunZygote(). +   if (process_type != service_manager::switches::kZygoteProcess) { + #if defined(OS_ANDROID) +@@ -1011,7 +1011,7 @@ void ChromeMainDelegate::PreSandboxStartup() { +     breakpad::InitCrashReporter(process_type); + #endif  // defined(OS_ANDROID) +   } +-#endif  // defined(OS_POSIX) && !defined(OS_MACOSX) ++#endif  // defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_BSD) +  +   // After all the platform Breakpads have been initialized, store the command +   // line for crash reporting. +@@ -1021,7 +1021,7 @@ void ChromeMainDelegate::PreSandboxStartup() { + void ChromeMainDelegate::SandboxInitialized(const std::string& process_type) { +   // Note: If you are adding a new process type below, be sure to adjust the +   // AdjustLinuxOOMScore function too. +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) && !defined(OS_BSD) +   AdjustLinuxOOMScore(process_type); + #endif + #if defined(OS_WIN) diff --git a/devel/electron6/files/patch-chrome_app_chromium__strings.grd b/devel/electron6/files/patch-chrome_app_chromium__strings.grd new file mode 100644 index 000000000000..6fb62dfcf696 --- /dev/null +++ b/devel/electron6/files/patch-chrome_app_chromium__strings.grd @@ -0,0 +1,29 @@ +--- chrome/app/chromium_strings.grd.orig	2019-09-10 11:13:35 UTC ++++ chrome/app/chromium_strings.grd +@@ -690,7 +690,7 @@ Signing in anyway will merge Chromium information like +       </if> +  +       <!-- about:browser-switch strings --> +-      <if expr="is_win or is_macosx or (is_linux and not is_chromeos)"> ++      <if expr="is_win or is_macosx or (is_posix and not is_chromeos)"> +         <message name="IDS_ABOUT_BROWSER_SWITCH_DESCRIPTION_UNKNOWN_BROWSER" desc="Description shown while waiting for an alternative browser to open, when the browser name is not auto-detected"> +           Your system administrator has configured Chromium to open an alternative browser to access <ph name="TARGET_URL_HOSTNAME">$1<ex>example.com</ex></ph>. +         </message> +@@ -815,7 +815,7 @@ Signing in anyway will merge Chromium information like +       </message> +  +       <!-- ProcessSingleton --> +-      <if expr="is_linux or is_macosx"> ++      <if expr="is_linux or is_macosx or is_posix"> +         <message name="IDS_PROFILE_IN_USE_POSIX" desc="Message shown when the browser cannot start because the profile is in use on a different host."> +           The profile appears to be in use by another Chromium process (<ph name="PROCESS_ID">$1<ex>12345</ex></ph>) on another computer (<ph name="HOST_NAME">$2<ex>example.com</ex></ph>). Chromium has locked the profile so that it doesn't get corrupted. If you are sure no other processes are using this profile, you can unlock the profile and relaunch Chromium. +         </message> +@@ -1074,7 +1074,7 @@ Please check your email at <ph name="ACCOUNT_EMAIL">$2 +       </message> +  +       <!-- Plugin Placeholders --> +-      <if expr="is_linux"> ++      <if expr="is_posix"> +         <message name="IDS_PLUGIN_RESTART_REQUIRED" desc="The placeholder text for a plugin that can't be loaded until the browser is restarted."> +           Restart Chromium to enable <ph name="PLUGIN_NAME">$1<ex>Flash</ex></ph> +         </message> diff --git a/devel/electron6/files/patch-chrome_app_generated__resources.grd b/devel/electron6/files/patch-chrome_app_generated__resources.grd new file mode 100644 index 000000000000..cfab296a2170 --- /dev/null +++ b/devel/electron6/files/patch-chrome_app_generated__resources.grd @@ -0,0 +1,29 @@ +--- chrome/app/generated_resources.grd.orig	2019-09-10 11:13:35 UTC ++++ chrome/app/generated_resources.grd +@@ -4805,7 +4805,7 @@ Keep your key file in a safe place. You will need it t +       </if> +  +       <!-- chrome://browser-switch strings --> +-      <if expr="is_win or is_macosx or (is_linux and not is_chromeos)"> ++      <if expr="is_win or is_macosx or (is_posix and not is_chromeos)"> +         <message name="IDS_ABOUT_BROWSER_SWITCH_TITLE" desc="about:browser-switch page title"> +           Legacy Browser Support +         </message> +@@ -6370,7 +6370,7 @@ the Bookmarks menu."> +         Google Pay +       </message> +  +-      <if expr="is_linux and not chromeos"> ++      <if expr="is_posix and not chromeos"> +         <message name="IDS_SHOW_WINDOW_DECORATIONS" desc="The label of a radio button in the options dialog for using the system title bar and borders."> +           Use system title bar and borders +         </message> +@@ -7223,7 +7223,7 @@ Please help our engineers fix this problem. Tell us wh +         Set as default +       </message> +  +-      <if expr="is_linux and not chromeos"> ++      <if expr="is_posix and not chromeos"> +         <message name="IDS_MINIMIZE_WINDOW_MENU" desc="The Linux browser window menu item text for minimizing the window."> +           Minimize +         </message> diff --git a/devel/electron6/files/patch-chrome_app_google__chrome__strings.grd b/devel/electron6/files/patch-chrome_app_google__chrome__strings.grd new file mode 100644 index 000000000000..53f102c48e87 --- /dev/null +++ b/devel/electron6/files/patch-chrome_app_google__chrome__strings.grd @@ -0,0 +1,29 @@ +--- chrome/app/google_chrome_strings.grd.orig	2019-09-10 11:13:35 UTC ++++ chrome/app/google_chrome_strings.grd +@@ -702,7 +702,7 @@ Signing in anyway will merge Chrome information like b +       </if> +  +       <!-- about:browser-switch strings --> +-      <if expr="is_win or is_macosx or (is_linux and not is_chromeos)"> ++      <if expr="is_win or is_macosx or (is_posix and not is_chromeos)"> +         <message name="IDS_ABOUT_BROWSER_SWITCH_DESCRIPTION_UNKNOWN_BROWSER" desc="Description shown while waiting for an alternative browser to open, when the browser name is not auto-detected"> +           Your system administrator has configured Google Chrome to open an alternative browser to access <ph name="TARGET_URL_HOSTNAME">$1<ex>example.com</ex></ph>. +         </message> +@@ -827,7 +827,7 @@ Signing in anyway will merge Chrome information like b +       </message> +  +       <!-- ProcessSingleton --> +-      <if expr="is_linux or is_macosx"> ++      <if expr="is_linux or is_macosx or is_posix"> +         <message name="IDS_PROFILE_IN_USE_POSIX" desc="Message shown when the browser cannot start because the profile is in use on a different host."> +           The profile appears to be in use by another Google Chrome process (<ph name="PROCESS_ID">$1<ex>12345</ex></ph>) on another computer (<ph name="HOST_NAME">$2<ex>example.com</ex></ph>).  Chrome has locked the profile so that it doesn't get corrupted.  If you are sure no other processes are using this profile, you can unlock the profile and relaunch Chrome. +         </message> +@@ -1093,7 +1093,7 @@ Please check your email at <ph name="ACCOUNT_EMAIL">$2 +       </message> +  +       <!-- Plugin Placeholders --> +-      <if expr="is_linux"> ++      <if expr="is_posix"> +         <message name="IDS_PLUGIN_RESTART_REQUIRED" desc="The placeholder text for a plugin that can't be loaded until the browser is restarted."> +           Restart Chrome to enable <ph name="PLUGIN_NAME">$1<ex>Flash</ex></ph> +         </message> diff --git a/devel/electron6/files/patch-chrome_app_settings__strings.grdp b/devel/electron6/files/patch-chrome_app_settings__strings.grdp new file mode 100644 index 000000000000..d79f857c0a5e --- /dev/null +++ b/devel/electron6/files/patch-chrome_app_settings__strings.grdp @@ -0,0 +1,20 @@ +--- chrome/app/settings_strings.grdp.orig	2019-09-10 11:13:37 UTC ++++ chrome/app/settings_strings.grdp +@@ -653,7 +653,7 @@ +       Themes +     </message> +   </if> +-  <if expr="is_linux and not chromeos"> ++  <if expr="is_posix and not chromeos"> +     <message name="IDS_SETTINGS_SYSTEM_THEME" desc="Text of the label describing the system (GTK+) browser theme on Linux"> +       GTK+ +     </message> +@@ -667,7 +667,7 @@ +       Use Classic +     </message> +   </if> +-  <if expr="not is_linux or chromeos"> ++  <if expr="not is_posix or chromeos"> +     <message name="IDS_SETTINGS_RESET_TO_DEFAULT_THEME" desc="Name of the control which resets the browser theme back to the default theme."> +       Reset to default +     </message> diff --git a/devel/electron6/files/patch-chrome_app_shutdown__signal__handlers__posix.cc b/devel/electron6/files/patch-chrome_app_shutdown__signal__handlers__posix.cc new file mode 100644 index 000000000000..515ca276ffd1 --- /dev/null +++ b/devel/electron6/files/patch-chrome_app_shutdown__signal__handlers__posix.cc @@ -0,0 +1,21 @@ +--- chrome/app/shutdown_signal_handlers_posix.cc.orig	2019-09-10 10:42:28 UTC ++++ chrome/app/shutdown_signal_handlers_posix.cc +@@ -186,12 +186,18 @@ void InstallShutdownSignalHandlers( +   g_pipe_pid = getpid(); +   g_shutdown_pipe_read_fd = pipefd[0]; +   g_shutdown_pipe_write_fd = pipefd[1]; ++#if defined(OS_BSD) ++  // PTHREAD_STACK_MIN causes chromium to crash under FreeBSD, ++  // we request the default pthread stack size by specifying 0 here. ++  const size_t kShutdownDetectorThreadStackSize = 0; ++#else + #if !defined(ADDRESS_SANITIZER) +   const size_t kShutdownDetectorThreadStackSize = PTHREAD_STACK_MIN * 2; + #else +   // ASan instrumentation bloats the stack frames, so we need to increase the +   // stack size to avoid hitting the guard page. +   const size_t kShutdownDetectorThreadStackSize = PTHREAD_STACK_MIN * 4; ++#endif + #endif +   ShutdownDetector* detector = new ShutdownDetector( +       g_shutdown_pipe_read_fd, std::move(shutdown_callback), task_runner); diff --git a/devel/electron6/files/patch-chrome_app_theme_chrome__unscaled__resources.grd b/devel/electron6/files/patch-chrome_app_theme_chrome__unscaled__resources.grd new file mode 100644 index 000000000000..7e8eb90d5609 --- /dev/null +++ b/devel/electron6/files/patch-chrome_app_theme_chrome__unscaled__resources.grd @@ -0,0 +1,20 @@ +--- chrome/app/theme/chrome_unscaled_resources.grd.orig	2019-09-10 11:13:37 UTC ++++ chrome/app/theme/chrome_unscaled_resources.grd +@@ -18,7 +18,7 @@ +         <include name="IDR_PRODUCT_LOGO_64" file="google_chrome/product_logo_64.png" type="BINDATA" /> +         <include name="IDR_PRODUCT_LOGO_128" file="google_chrome/product_logo_128.png" type="BINDATA" /> +         <include name="IDR_PRODUCT_LOGO_256" file="google_chrome/product_logo_256.png" type="BINDATA" /> +-        <if expr="is_linux"> ++        <if expr="is_posix"> +           <include name="IDR_PRODUCT_LOGO_128_BETA" file="google_chrome/product_logo_128_beta.png" type="BINDATA" /> +           <include name="IDR_PRODUCT_LOGO_128_DEV" file="google_chrome/product_logo_128_dev.png" type="BINDATA" /> +         </if> +@@ -100,7 +100,7 @@ +         <include name="IDR_PROFILE_AVATAR_2X_25" file="default_200_percent/common/profile_avatar_sun_cloud.png" type="BINDATA" /> +         <include name="IDR_PROFILE_AVATAR_2X_26" file="default_200_percent/common/profile_avatar_placeholder.png" type="BINDATA" /> +       </if> +-      <if expr="is_linux and enable_app_list"> ++      <if expr="is_posix and enable_app_list"> +         <!-- App Launcher icons for desktop icon. --> +         <if expr="_google_chrome"> +           <then> diff --git a/devel/electron6/files/patch-chrome_browser_about__flags.cc b/devel/electron6/files/patch-chrome_browser_about__flags.cc new file mode 100644 index 000000000000..dadc7717233c --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_about__flags.cc @@ -0,0 +1,183 @@ +--- chrome/browser/about_flags.cc.orig	2019-09-10 11:13:37 UTC ++++ chrome/browser/about_flags.cc +@@ -621,7 +621,7 @@ const FeatureEntry::FeatureVariation +          nullptr}}; + #endif  // OS_ANDROID +  +-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) ++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) + const FeatureEntry::FeatureParam +     kAutofillSaveCreditCardUsesImprovedMessagingStoreCard[] = { +         {autofill::features:: +@@ -668,7 +668,7 @@ const FeatureEntry::FeatureVariation +              kAutofillSaveCreditCardUsesImprovedMessagingConfirmAndSaveCard), +          nullptr}, + }; +-#endif  // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) ++#endif  // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) +  + const FeatureEntry::Choice kMemlogModeChoices[] = { +     {flags_ui::kGenericExperimentChoiceDisabled, "", ""}, +@@ -776,7 +776,7 @@ const FeatureEntry::FeatureVariation kOmniboxMaxURLMat +     {"6 matches", kOmniboxMaxURLMatches6, base::size(kOmniboxMaxURLMatches6), +      nullptr}}; +  +-#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) || \ ++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_BSD) || \ +     defined(OS_CHROMEOS) + const FeatureEntry::FeatureParam kTranslateBubbleUIButton[] = { +     {language::kTranslateUIBubbleKey, language::kTranslateUIBubbleButtonValue}}; +@@ -792,7 +792,7 @@ const FeatureEntry::FeatureVariation kTranslateBubbleU +     {"Tab", kTranslateBubbleUITab, base::size(kTranslateBubbleUITab), nullptr}, +     {"Button_GM2", kTranslateBubbleUIButtonGM2, +      base::size(kTranslateBubbleUIButton), nullptr}}; +-#endif  // OS_LINUX || OS_MACOSX || OS_WIN || OS_CHROMEOS ++#endif  // OS_LINUX || OS_MACOSX || OS_WIN || OS_BSD || OS_CHROMEOS +  + const FeatureEntry::FeatureParam kOmniboxUIVerticalMargin0px[] = { +     {OmniboxFieldTrial::kUIVerticalMarginParam, "0"}}; +@@ -1567,13 +1567,13 @@ const FeatureEntry kFeatureEntries[] = { +      flag_descriptions::kCloudPrintXpsDescription, kOsWin, +      SINGLE_VALUE_TYPE(switches::kEnableCloudPrintXps)}, + #endif  // OS_WIN +-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) ++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD) +     {"enable-webgl2-compute-context", +      flag_descriptions::kWebGL2ComputeContextName, +      flag_descriptions::kWebGL2ComputeContextDescription, +      kOsWin | kOsLinux | kOsCrOS, +      SINGLE_VALUE_TYPE(switches::kEnableWebGL2ComputeContext)}, +-#endif  // defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) ++#endif  // defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD) +     {"enable-webgl-draft-extensions", +      flag_descriptions::kWebglDraftExtensionsName, +      flag_descriptions::kWebglDraftExtensionsDescription, kOsAll, +@@ -1614,14 +1614,14 @@ const FeatureEntry kFeatureEntries[] = { +                                     "OverrideTranslateTriggerInIndia")}, + #endif  // OS_ANDROID +  +-#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) || \ ++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_BSD) || \ +     defined(OS_CHROMEOS) +     {"translate-ui-bubble-options", flag_descriptions::kTranslateBubbleUIName, +      flag_descriptions::kTranslateBubbleUIDescription, kOsDesktop, +      FEATURE_WITH_PARAMS_VALUE_TYPE(language::kUseButtonTranslateBubbleUI, +                                     kTranslateBubbleUIVariations, +                                     "UseButtonTranslateBubbleUI")}, +-#endif  // OS_LINUX || OS_MACOSX || OS_WIN || OS_CHROMEOS ++#endif  // OS_LINUX || OS_MACOSX || OS_WIN || OS_BSD || OS_CHROMEOS +  + #if BUILDFLAG(ENABLE_NATIVE_NOTIFICATIONS) && !defined(OS_CHROMEOS) +     {"enable-native-notifications", +@@ -1762,7 +1762,7 @@ const FeatureEntry kFeatureEntries[] = { +      FEATURE_VALUE_TYPE( +          previews::features::kHTTPSServerPreviewsUsingURLLoader)}, + #endif  // OS_ANDROID +-#if defined(OS_CHROMEOS) || defined(OS_LINUX) ++#if defined(OS_CHROMEOS) || defined(OS_LINUX) || defined(OS_BSD) +     {"enable-save-data", flag_descriptions::kEnableSaveDataName, +      flag_descriptions::kEnableSaveDataDescription, kOsCrOS, +      SINGLE_VALUE_TYPE( +@@ -2091,12 +2091,12 @@ const FeatureEntry kFeatureEntries[] = { +      FEATURE_VALUE_TYPE(chrome::android::kAndroidNightMode)}, + #endif  // BUILDFLAG(ENABLE_ANDROID_NIGHT_MODE) + #endif  // OS_ANDROID +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) +     {"passwords-migrate-linux-to-login-db", +      flag_descriptions::kPasswordsMigrateLinuxToLoginDBName, +      flag_descriptions::kPasswordsMigrateLinuxToLoginDBDescription, kOsLinux, +      FEATURE_VALUE_TYPE(password_manager::features::kMigrateLinuxToLoginDB)}, +-#endif  // defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#endif  // (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) +     {"enable-experimental-accessibility-features", +      flag_descriptions::kExperimentalAccessibilityFeaturesName, +      flag_descriptions::kExperimentalAccessibilityFeaturesDescription, kOsCrOS, +@@ -2423,7 +2423,7 @@ const FeatureEntry kFeatureEntries[] = { +      flag_descriptions::kOmniboxLocalEntitySuggestionsDescription, kOsDesktop, +      FEATURE_VALUE_TYPE(omnibox::kOmniboxLocalEntitySuggestions)}, +  +-#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) ++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_BSD) +     {"omnibox-experimental-keyword-mode", +      flag_descriptions::kOmniboxExperimentalKeywordModeName, +      flag_descriptions::kOmniboxExperimentalKeywordModeDescription, kOsDesktop, +@@ -2470,7 +2470,7 @@ const FeatureEntry kFeatureEntries[] = { +      flag_descriptions::kOmniboxDeduplicateDriveUrlsName, +      flag_descriptions::kOmniboxDeduplicateDriveUrlsDescription, kOsDesktop, +      FEATURE_VALUE_TYPE(omnibox::kDedupeGoogleDriveURLs)}, +-#endif  // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) ++#endif  // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_BSD) +  +     {"enable-speculative-service-worker-start-on-query-input", +      flag_descriptions::kSpeculativeServiceWorkerStartOnQueryInputName, +@@ -2696,7 +2696,7 @@ const FeatureEntry kFeatureEntries[] = { +      flag_descriptions::kClickToOpenPDFDescription, kOsAll, +      FEATURE_VALUE_TYPE(features::kClickToOpenPDFPlaceholder)}, +  +-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) ++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) +     {"direct-manipulation-stylus", +      flag_descriptions::kDirectManipulationStylusName, +      flag_descriptions::kDirectManipulationStylusDescription, +@@ -2707,7 +2707,7 @@ const FeatureEntry kFeatureEntries[] = { +      flag_descriptions::kShowManagedUiDescription, +      kOsWin | kOsMac | kOsLinux | kOsCrOS, +      FEATURE_VALUE_TYPE(features::kShowManagedUi)}, +-#endif  // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) ++#endif  // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) +  + #if !defined(OS_ANDROID) +     {"chrome-colors", flag_descriptions::kChromeColorsName, +@@ -3514,7 +3514,7 @@ const FeatureEntry kFeatureEntries[] = { +      FEATURE_VALUE_TYPE(features::kForceEnableSystemAec)}, + #endif  // defined(OS_MACOSX) || defined(OS_CHROMEOS) +  +-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) ++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) +     {"autofill-always-show-server-cards-in-sync-transport", +      flag_descriptions::kAutofillAlwaysShowServerCardsInSyncTransportName, +      flag_descriptions:: +@@ -3522,7 +3522,7 @@ const FeatureEntry kFeatureEntries[] = { +      kOsMac | kOsWin | kOsLinux, +      FEATURE_VALUE_TYPE( +          autofill::features::kAutofillAlwaysShowServerCardsInSyncTransport)}, +-#endif  // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) ++#endif  // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) +  + #if BUILDFLAG(ENABLE_PRINT_PREVIEW) && defined(OS_MACOSX) +     {"enable-custom-mac-paper-sizes", +@@ -3562,13 +3562,13 @@ const FeatureEntry kFeatureEntries[] = { +      FEATURE_VALUE_TYPE(features::kCrostiniAppSearch)}, + #endif  // OS_CHROMEOS +  +-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) ++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) +     {"autofill-settings-split-by-card-type", +      flag_descriptions::kAutofillSettingsSplitByCardTypeName, +      flag_descriptions::kAutofillSettingsSplitByCardTypeDescription, +      kOsMac | kOsWin | kOsLinux, +      FEATURE_VALUE_TYPE(autofill::features::kAutofillSettingsCardTypeSplit)}, +-#endif  // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) ++#endif  // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) +  + #if !defined(OS_ANDROID) +     {"hardware-media-key-handling", +@@ -3895,7 +3895,7 @@ const FeatureEntry kFeatureEntries[] = { +      flag_descriptions::kAudioWorkletRealtimeThreadDescription, kOsAll, +      FEATURE_VALUE_TYPE(blink::features::kAudioWorkletRealtimeThread)}, +  +-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) ++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) +     {"enable-autofill-save-credit-card-uses-improved-messaging", +      flag_descriptions::kEnableAutofillSaveCreditCardUsesImprovedMessagingName, +      flag_descriptions:: +@@ -3905,7 +3905,7 @@ const FeatureEntry kFeatureEntries[] = { +          autofill::features::kAutofillSaveCreditCardUsesImprovedMessaging, +          kAutofillSaveCreditCardUsesImprovedMessagingVariations, +          "AutofillSaveCreditCardUsesImprovedMessaging")}, +-#endif  // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) ++#endif  // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) +  + #if defined(OS_CHROMEOS) +     {"smart-dim-model-v3", flag_descriptions::kSmartDimModelV3Name, diff --git a/devel/electron6/files/patch-chrome_browser_after__startup__task__utils.cc b/devel/electron6/files/patch-chrome_browser_after__startup__task__utils.cc new file mode 100644 index 000000000000..1e4ca09babf0 --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_after__startup__task__utils.cc @@ -0,0 +1,38 @@ +--- chrome/browser/after_startup_task_utils.cc.orig	2019-09-10 11:13:37 UTC ++++ chrome/browser/after_startup_task_utils.cc +@@ -32,7 +32,7 @@ + #include "chrome/browser/ui/tabs/tab_strip_model.h" + #endif +  +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) + #include "ui/views/linux_ui/linux_ui.h" + #endif +  +@@ -118,7 +118,7 @@ void QueueTask(std::unique_ptr<AfterStartupTask> queue +  + void SetBrowserStartupIsComplete() { +   DCHECK_CURRENTLY_ON(BrowserThread::UI); +-#if defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_LINUX) ++#if defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD) +   // Process::Current().CreationTime() is not available on all platforms. +   const base::Time process_creation_time = +       base::Process::Current().CreationTime(); +@@ -126,7 +126,7 @@ void SetBrowserStartupIsComplete() { +     UMA_HISTOGRAM_LONG_TIMES("Startup.AfterStartupTaskDelayedUntilTime", +                              base::Time::Now() - process_creation_time); +   } +-#endif  // defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_LINUX) ++#endif  // defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD) +   UMA_HISTOGRAM_COUNTS_10000("Startup.AfterStartupTaskCount", +                              g_after_startup_tasks.Get().size()); +   g_startup_complete_flag.Get().Set(); +@@ -135,7 +135,7 @@ void SetBrowserStartupIsComplete() { +   g_after_startup_tasks.Get().clear(); +   g_after_startup_tasks.Get().shrink_to_fit(); +  +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) +   // Make sure we complete the startup notification sequence, or launchers will +   // get confused by not receiving the expected message from the main process. +   views::LinuxUI* linux_ui = views::LinuxUI::instance(); diff --git a/devel/electron6/files/patch-chrome_browser_apps_platform__apps_api_music__manager__private_device__id__linux.cc b/devel/electron6/files/patch-chrome_browser_apps_platform__apps_api_music__manager__private_device__id__linux.cc new file mode 100644 index 000000000000..8a9d677d4a18 --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_apps_platform__apps_api_music__manager__private_device__id__linux.cc @@ -0,0 +1,70 @@ +--- chrome/browser/apps/platform_apps/api/music_manager_private/device_id_linux.cc.orig	2019-09-10 11:13:38 UTC ++++ chrome/browser/apps/platform_apps/api/music_manager_private/device_id_linux.cc +@@ -4,6 +4,11 @@ +  + #include "chrome/browser/apps/platform_apps/api/music_manager_private/device_id.h" +  ++#if defined(OS_FREEBSD) ++#include <sys/types.h> ++#include <net/if_dl.h> ++#endif ++ + #include <ifaddrs.h> + #include <net/if.h> + #include <stddef.h> +@@ -106,9 +111,36 @@ class MacAddressProcessor { +                         const char* const prefixes[], +                         size_t prefixes_count) { +     const int MAC_LENGTH = 6; ++#if defined(OS_FREEBSD) ++    struct ifaddrs *ifap, *ifinfo; ++#else +     struct ifreq ifinfo; ++#endif +  +     memset(&ifinfo, 0, sizeof(ifinfo)); ++ ++#if defined(OS_FREEBSD) ++    int result = getifaddrs(&ifap); ++ ++    if (result != 0) ++      return true; ++ ++    result = 1; // no MAC found yet ++ ++    for (ifinfo = ifap; ifinfo != NULL; ifinfo = ifinfo->ifa_next) { ++      struct sockaddr* sa = ifinfo->ifa_addr; ++      if (sa->sa_family == AF_LINK && ++        !strncmp(ifinfo->ifa_name, ifaddr->ifa_name, ++        sizeof(ifinfo->ifa_name) - 1)) {  ++          result = 0; ++	  break; ++      } ++    } ++ ++    char mac_address[6]; ++ ++    strncpy(mac_address, (const char*)LLADDR((struct sockaddr_dl*)ifinfo->ifa_addr), sizeof(mac_address)); ++#else +     strncpy(ifinfo.ifr_name, ifaddr->ifa_name, sizeof(ifinfo.ifr_name) - 1); +  +     int sd = socket(AF_INET, SOCK_DGRAM, 0); +@@ -120,11 +152,18 @@ class MacAddressProcessor { +  +     const char* mac_address = +         static_cast<const char*>(ifinfo.ifr_hwaddr.sa_data); ++#endif ++ +     if (!is_valid_mac_address_.Run(mac_address, MAC_LENGTH)) +       return true; +  ++#if defined(OS_FREEBSD) ++    if (!IsValidPrefix(ifinfo->ifa_name, prefixes, prefixes_count)) ++      return true; ++#else +     if (!IsValidPrefix(ifinfo.ifr_name, prefixes, prefixes_count)) +       return true; ++#endif +  +     // Got one! +     found_mac_address_ = diff --git a/devel/electron6/files/patch-chrome_browser_autocomplete_chrome__autocomplete__scheme__classifier.cc b/devel/electron6/files/patch-chrome_browser_autocomplete_chrome__autocomplete__scheme__classifier.cc new file mode 100644 index 000000000000..abe212f15752 --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_autocomplete_chrome__autocomplete__scheme__classifier.cc @@ -0,0 +1,17 @@ +--- chrome/browser/autocomplete/chrome_autocomplete_scheme_classifier.cc.orig	2019-09-10 11:13:38 UTC ++++ chrome/browser/autocomplete/chrome_autocomplete_scheme_classifier.cc +@@ -59,12 +59,12 @@ ChromeAutocompleteSchemeClassifier::GetInputTypeForSch +       return metrics::OmniboxInputType::QUERY; +  +     case ExternalProtocolHandler::UNKNOWN: { +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +       // Linux impl of GetApplicationNameForProtocol doesn't distinguish +       // between URL schemes with handers and those without. This will +       // make the default behaviour be search on Linux. +       return metrics::OmniboxInputType::INVALID; +-#endif // defined(OS_LINUX) ++#endif // defined(OS_LINUX) || defined(OS_BSD) +       // If block state is unknown, check if there is an application registered +       // for the url scheme. +       GURL url(scheme + "://"); diff --git a/devel/electron6/files/patch-chrome_browser_background_background__mode__optimizer.cc b/devel/electron6/files/patch-chrome_browser_background_background__mode__optimizer.cc new file mode 100644 index 000000000000..3aaecb96ba66 --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_background_background__mode__optimizer.cc @@ -0,0 +1,15 @@ +--- chrome/browser/background/background_mode_optimizer.cc.orig	2019-09-10 10:42:29 UTC ++++ chrome/browser/background/background_mode_optimizer.cc +@@ -30,10 +30,10 @@ std::unique_ptr<BackgroundModeOptimizer> BackgroundMod +           switches::kKeepAliveForTest)) +     return nullptr; +  +-#if defined(OS_WIN) || defined(OS_LINUX) ++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD) +   if (base::FeatureList::IsEnabled(features::kBackgroundModeAllowRestart)) +     return base::WrapUnique(new BackgroundModeOptimizer()); +-#endif  // defined(OS_WIN) || defined(OS_LINUX) ++#endif  // defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD) +  +   return nullptr; + } diff --git a/devel/electron6/files/patch-chrome_browser_browser__resources.grd b/devel/electron6/files/patch-chrome_browser_browser__resources.grd new file mode 100644 index 000000000000..8f1a0c69870c --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_browser__resources.grd @@ -0,0 +1,20 @@ +--- chrome/browser/browser_resources.grd.orig	2019-09-10 11:13:38 UTC ++++ chrome/browser/browser_resources.grd +@@ -77,7 +77,7 @@ +         <include name="IDR_DISCARDS_SORTED_TABLE_BEHAVIOR_JS" file="resources\discards\sorted_table_behavior.js" compress="gzip" type="BINDATA" /> +         <include name="IDR_DISCARDS_WEBUI_GRAPH_DUMP_MOJOM_LITE_JS" file="${root_gen_dir}\chrome\browser\performance_manager\webui_graph_dump.mojom-lite.js" compress="gzip" use_base_dir="false" type="BINDATA" /> +       </if> +-      <if expr="is_win or is_macosx or (is_linux and not is_chromeos)"> ++      <if expr="is_win or is_macosx or (is_posix and not is_chromeos)"> +         <include name="IDR_BROWSER_SWITCH_APP_HTML" file="resources\browser_switch\app.html" compress="gzip" allowexternalscript="true" type="BINDATA" /> +         <include name="IDR_BROWSER_SWITCH_APP_JS" file="resources\browser_switch\app.js" compress="gzip" type="BINDATA" /> +         <include name="IDR_BROWSER_SWITCH_PROXY_HTML" file="resources\browser_switch\browser_switch_proxy.html" compress="gzip" allowexternalscript="true" type="BINDATA" /> +@@ -666,7 +666,7 @@ +         <include name="IDR_WELCOME_WIN10_PIN_WEBP" file="resources\welcome\pin.webp" type="BINDATA" /> +       </if> +       <include name="IDR_SSL_ERROR_ASSISTANT_PB" file="${root_gen_dir}/chrome/browser/resources/ssl/ssl_error_assistant/ssl_error_assistant.pb" use_base_dir="false" type="BINDATA" /> +-      <if expr="is_android or is_linux"> ++      <if expr="is_android or is_posix"> +         <include name="IDR_SANDBOX_INTERNALS_HTML" file="resources\sandbox_internals\sandbox_internals.html" flattenhtml="true" allowexternalscript="true" type="BINDATA" compress="gzip" /> +         <include name="IDR_SANDBOX_INTERNALS_JS" file="resources\sandbox_internals\sandbox_internals.js" type="BINDATA" compress="gzip" /> +       </if> diff --git a/devel/electron6/files/patch-chrome_browser_chrome__browser__main.cc b/devel/electron6/files/patch-chrome_browser_chrome__browser__main.cc new file mode 100644 index 000000000000..27d75ad1ec0d --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_chrome__browser__main.cc @@ -0,0 +1,75 @@ +--- chrome/browser/chrome_browser_main.cc.orig	2019-09-10 11:13:38 UTC ++++ chrome/browser/chrome_browser_main.cc +@@ -220,9 +220,9 @@ + #include "components/arc/metrics/stability_metrics_manager.h" + #endif  // defined(OS_CHROMEOS) +  +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS) + #include "chrome/browser/first_run/upgrade_util_linux.h" +-#endif  // defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#endif  // (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS) +  + #if defined(OS_LINUX) + #include "components/crash/content/app/breakpad_linux.h" +@@ -260,7 +260,7 @@ + #endif  // defined(OS_WIN) +  + #if defined(OS_WIN) || defined(OS_MACOSX) || \ +-    (defined(OS_LINUX) && !defined(OS_CHROMEOS)) ++    (defined(OS_LINUX) && !defined(OS_CHROMEOS) || defined(OS_BSD)) + #include "chrome/browser/metrics/desktop_session_duration/desktop_session_duration_tracker.h" + #include "chrome/browser/profiles/profile_activity_metrics_recorder.h" + #endif +@@ -1079,7 +1079,7 @@ int ChromeBrowserMainParts::PreCreateThreadsImpl() { +       AddFirstRunNewTabs(browser_creator_.get(), master_prefs_->new_tabs); +     } +  +-#if defined(OS_MACOSX) || defined(OS_LINUX) ++#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) +     // Create directory for user-level Native Messaging manifest files. This +     // makes it less likely that the directory will be created by third-party +     // software with incorrect owner or permission. See crbug.com/725513 . +@@ -1088,14 +1088,14 @@ int ChromeBrowserMainParts::PreCreateThreadsImpl() { +                                  &user_native_messaging_dir)); +     if (!base::PathExists(user_native_messaging_dir)) +       base::CreateDirectory(user_native_messaging_dir); +-#endif  // defined(OS_MACOSX) || defined(OS_LINUX) ++#endif  // defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) +   } + #endif  // !defined(OS_ANDROID) && !defined(OS_CHROMEOS) +  +-#if defined(OS_LINUX) || defined(OS_OPENBSD) ++#if defined(OS_LINUX) +   // Set the product channel for crash reports. +   breakpad::SetChannelCrashKey(chrome::GetChannelName()); +-#endif  // defined(OS_LINUX) || defined(OS_OPENBSD) ++#endif  // defined(OS_LINUX) +  + #if defined(OS_MACOSX) +   // Get the Keychain API to register for distributed notifications on the main +@@ -1125,7 +1125,7 @@ int ChromeBrowserMainParts::PreCreateThreadsImpl() { +   } +  + #if defined(OS_WIN) || defined(OS_MACOSX) || \ +-    (defined(OS_LINUX) && !defined(OS_CHROMEOS)) ++    (defined(OS_LINUX) && !defined(OS_CHROMEOS) || defined(OS_BSD)) +   metrics::DesktopSessionDurationTracker::Initialize(); +   ProfileActivityMetricsRecorder::Initialize(); + #endif +@@ -1291,6 +1291,7 @@ void ChromeBrowserMainParts::PostBrowserStart() { +       base::TimeDelta::FromMinutes(1)); +  + #if !defined(OS_ANDROID) ++#if !defined(OS_BSD) +   if (base::FeatureList::IsEnabled(features::kWebUsb)) { +     web_usb_detector_.reset(new WebUsbDetector()); +     BrowserThread::PostAfterStartupTask( +@@ -1299,6 +1300,7 @@ void ChromeBrowserMainParts::PostBrowserStart() { +         base::BindOnce(&WebUsbDetector::Initialize, +                        base::Unretained(web_usb_detector_.get()))); +   } ++#endif +   if (base::FeatureList::IsEnabled(features::kTabMetricsLogging)) { +     // Initialize the TabActivityWatcher to begin logging tab activity events. +     resource_coordinator::TabActivityWatcher::GetInstance(); diff --git a/devel/electron6/files/patch-chrome_browser_chrome__browser__main__linux.cc b/devel/electron6/files/patch-chrome_browser_chrome__browser__main__linux.cc new file mode 100644 index 000000000000..b267f596dea8 --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_chrome__browser__main__linux.cc @@ -0,0 +1,27 @@ +--- chrome/browser/chrome_browser_main_linux.cc.orig	2019-09-10 11:13:38 UTC ++++ chrome/browser/chrome_browser_main_linux.cc +@@ -90,12 +90,14 @@ void ChromeBrowserMainPartsLinux::PreProfileInit() { + void ChromeBrowserMainPartsLinux::PostProfileInit() { +   ChromeBrowserMainPartsPosix::PostProfileInit(); +  ++#if !defined(OS_BSD) +   g_browser_process->metrics_service()->RecordBreakpadRegistration( +       breakpad::IsCrashReporterEnabled()); ++#endif + } +  + void ChromeBrowserMainPartsLinux::PostMainMessageLoopStart() { +-#if !defined(OS_CHROMEOS) ++#if !defined(OS_CHROMEOS) && !defined(OS_BSD) +   bluez::BluezDBusManager::Initialize(nullptr /* system_bus */); + #endif +  +@@ -103,7 +105,7 @@ void ChromeBrowserMainPartsLinux::PostMainMessageLoopS + } +  + void ChromeBrowserMainPartsLinux::PostDestroyThreads() { +-#if !defined(OS_CHROMEOS) ++#if !defined(OS_CHROMEOS) && !defined(OS_BSD) +   bluez::BluezDBusManager::Shutdown(); +   bluez::BluezDBusThreadManager::Shutdown(); + #endif diff --git a/devel/electron6/files/patch-chrome_browser_chrome__browser__main__posix.cc b/devel/electron6/files/patch-chrome_browser_chrome__browser__main__posix.cc new file mode 100644 index 000000000000..fb5d828c47fc --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_chrome__browser__main__posix.cc @@ -0,0 +1,20 @@ +--- chrome/browser/chrome_browser_main_posix.cc.orig	2019-09-10 11:13:38 UTC ++++ chrome/browser/chrome_browser_main_posix.cc +@@ -70,7 +70,7 @@ void ExitHandler::ExitWhenPossibleOnUIThread(int signa +     // ExitHandler takes care of deleting itself. +     new ExitHandler(); +   } else { +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) +     switch (signal) { +       case SIGINT: +       case SIGHUP: +@@ -166,7 +166,7 @@ void ChromeBrowserMainPartsPosix::PostMainMessageLoopS + void ChromeBrowserMainPartsPosix::ShowMissingLocaleMessageBox() { + #if defined(OS_CHROMEOS) +   NOTREACHED();  // Should not ever happen on ChromeOS. +-#elif defined(OS_MACOSX) ++#elif defined(OS_MACOSX) || defined(OS_BSD) +   // Not called on Mac because we load the locale files differently. +   NOTREACHED(); + #elif defined(USE_AURA) diff --git a/devel/electron6/files/patch-chrome_browser_chrome__content__browser__client.cc b/devel/electron6/files/patch-chrome_browser_chrome__content__browser__client.cc new file mode 100644 index 000000000000..8543d17771fa --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_chrome__content__browser__client.cc @@ -0,0 +1,92 @@ +--- chrome/browser/chrome_content_browser_client.cc.orig	2019-09-10 11:13:38 UTC ++++ chrome/browser/chrome_content_browser_client.cc +@@ -429,7 +429,7 @@ + #include "chromeos/services/secure_channel/secure_channel_service.h" + #include "components/user_manager/user_manager.h" + #include "services/service_manager/public/mojom/interface_provider_spec.mojom.h" +-#elif defined(OS_LINUX) ++#elif defined(OS_LINUX) || defined(OS_BSD) + #include "chrome/browser/chrome_browser_main_linux.h" + #elif defined(OS_ANDROID) + #include "base/android/application_status_listener.h" +@@ -484,7 +484,7 @@ + #endif  //  !defined(OS_ANDROID) +  + #if defined(OS_WIN) || defined(OS_MACOSX) || \ +-    (defined(OS_LINUX) && !defined(OS_CHROMEOS)) ++    (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) + #include "chrome/browser/browser_switcher/browser_switcher_navigation_throttle.h" + #endif +  +@@ -510,7 +510,7 @@ + #include "chrome/browser/ui/views/chrome_browser_main_extra_parts_views.h" + #endif +  +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) + #if defined(USE_X11) + #include "chrome/browser/ui/views/chrome_browser_main_extra_parts_views_linux_x11.h" + #else +@@ -1250,7 +1250,7 @@ ChromeContentBrowserClient::CreateBrowserMainParts( + #elif defined(OS_CHROMEOS) +   main_parts = std::make_unique<chromeos::ChromeBrowserMainPartsChromeos>( +       parameters, startup_data_); +-#elif defined(OS_LINUX) ++#elif defined(OS_LINUX) || defined(OS_BSD) +   main_parts = +       std::make_unique<ChromeBrowserMainPartsLinux>(parameters, startup_data_); + #elif defined(OS_ANDROID) +@@ -1276,7 +1276,7 @@ ChromeContentBrowserClient::CreateBrowserMainParts( +     // Construct additional browser parts. Stages are called in the order in +     // which they are added. + #if defined(TOOLKIT_VIEWS) +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) + #if defined(USE_X11) +   main_parts->AddParts(new ChromeBrowserMainExtraPartsViewsLinuxX11()); + #else +@@ -2093,7 +2093,7 @@ void ChromeContentBrowserClient::AppendExtraCommandLin +     command_line->AppendSwitchASCII(switches::kMetricsClientID, +                                     client_info->client_id); +   } +-#elif defined(OS_POSIX) ++#elif defined(OS_POSIX) && !defined(OS_BSD) + #if defined(OS_ANDROID) +   bool enable_crash_reporter = true; + #else +@@ -2318,7 +2318,7 @@ void ChromeContentBrowserClient::AppendExtraCommandLin +       process_type, +       command_line); +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   // Processes may only query perf_event_open with the BPF sandbox disabled. +   if (browser_command_line.HasSwitch(switches::kEnableThreadInstructionCount) && +       command_line->HasSwitch(service_manager::switches::kNoSandbox)) { +@@ -3660,7 +3660,7 @@ void ChromeContentBrowserClient::GetAdditionalFileSyst +   } + } +  +-#if defined(OS_POSIX) && !defined(OS_MACOSX) ++#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_BSD) + void ChromeContentBrowserClient::GetAdditionalMappedFilesForChildProcess( +     const base::CommandLine& command_line, +     int child_process_id, +@@ -4362,7 +4362,7 @@ ChromeContentBrowserClient::CreateThrottlesForNavigati +   } +  + #if defined(OS_WIN) || defined(OS_MACOSX) || \ +-    (defined(OS_LINUX) && !defined(OS_CHROMEOS)) ++    (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) +   std::unique_ptr<content::NavigationThrottle> browser_switcher_throttle = +       browser_switcher::BrowserSwitcherNavigationThrottle :: +           MaybeCreateThrottleFor(handle); +@@ -5205,7 +5205,7 @@ bool ChromeContentBrowserClient::HandleExternalProtoco + std::unique_ptr<content::OverlayWindow> + ChromeContentBrowserClient::CreateWindowForPictureInPicture( +     content::PictureInPictureWindowController* controller) { +-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || \ ++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) || \ +     defined(OS_CHROMEOS) +   // Note: content::OverlayWindow::Create() is defined by platform-specific +   // implementation in chrome/browser/ui/views. This layering hack, which goes diff --git a/devel/electron6/files/patch-chrome_browser_chrome__content__browser__client.h b/devel/electron6/files/patch-chrome_browser_chrome__content__browser__client.h new file mode 100644 index 000000000000..501089b6acc7 --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_chrome__content__browser__client.h @@ -0,0 +1,17 @@ +--- chrome/browser/chrome_content_browser_client.h.orig	2019-09-10 11:13:38 UTC ++++ chrome/browser/chrome_content_browser_client.h +@@ -380,12 +380,12 @@ class ChromeContentBrowserClient : public content::Con +   void OverridePageVisibilityState( +       content::RenderFrameHost* render_frame_host, +       content::PageVisibilityState* visibility_state) override; +-#if defined(OS_POSIX) && !defined(OS_MACOSX) ++#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_BSD) +   void GetAdditionalMappedFilesForChildProcess( +       const base::CommandLine& command_line, +       int child_process_id, +       content::PosixFileDescriptorInfo* mappings) override; +-#endif  // defined(OS_POSIX) && !defined(OS_MACOSX) ++#endif  // defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_BSD) + #if defined(OS_WIN) +   bool PreSpawnRenderer(sandbox::TargetPolicy* policy) override; +   base::string16 GetAppContainerSidForSandboxType( diff --git a/devel/electron6/files/patch-chrome_browser_custom__handlers_protocol__handler__registry.cc b/devel/electron6/files/patch-chrome_browser_custom__handlers_protocol__handler__registry.cc new file mode 100644 index 000000000000..4cb0dfb25897 --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_custom__handlers_protocol__handler__registry.cc @@ -0,0 +1,11 @@ +--- chrome/browser/custom_handlers/protocol_handler_registry.cc.orig	2019-09-10 11:13:38 UTC ++++ chrome/browser/custom_handlers/protocol_handler_registry.cc +@@ -48,7 +48,7 @@ const ProtocolHandler& LookupHandler( + // If true default protocol handlers will be removed if the OS level + // registration for a protocol is no longer Chrome. + bool ShouldRemoveHandlersNotInOS() { +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   // We don't do this on Linux as the OS registration there is not reliable, +   // and Chrome OS doesn't have any notion of OS registration. +   // TODO(benwells): When Linux support is more reliable remove this diff --git a/devel/electron6/files/patch-chrome_browser_defaults.cc b/devel/electron6/files/patch-chrome_browser_defaults.cc new file mode 100644 index 000000000000..b230d044577c --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_defaults.cc @@ -0,0 +1,11 @@ +--- chrome/browser/defaults.cc.orig	2019-09-10 10:42:29 UTC ++++ chrome/browser/defaults.cc +@@ -43,7 +43,7 @@ const bool kSyncAutoStarts = true; + const bool kSyncAutoStarts = false; + #endif +  +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS) + const bool kScrollEventChangesTab = true; + #else + const bool kScrollEventChangesTab = false; diff --git a/devel/electron6/files/patch-chrome_browser_devtools_devtools__eye__dropper.cc b/devel/electron6/files/patch-chrome_browser_devtools_devtools__eye__dropper.cc new file mode 100644 index 000000000000..6a47447c722c --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_devtools_devtools__eye__dropper.cc @@ -0,0 +1,11 @@ +--- chrome/browser/devtools/devtools_eye_dropper.cc.orig	2019-09-10 11:13:38 UTC ++++ chrome/browser/devtools/devtools_eye_dropper.cc +@@ -164,7 +164,7 @@ void DevToolsEyeDropper::UpdateCursor() { + // magnified projection only with centered hotspot. + // Mac Retina requires cursor to be > 120px in order to render smoothly. +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   const float kCursorSize = 63; +   const float kDiameter = 63; +   const float kHotspotOffset = 32; diff --git a/devel/electron6/files/patch-chrome_browser_diagnostics_diagnostics__writer.h b/devel/electron6/files/patch-chrome_browser_diagnostics_diagnostics__writer.h new file mode 100644 index 000000000000..0749a35d7e3e --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_diagnostics_diagnostics__writer.h @@ -0,0 +1,11 @@ +--- chrome/browser/diagnostics/diagnostics_writer.h.orig	2019-09-10 10:42:29 UTC ++++ chrome/browser/diagnostics/diagnostics_writer.h +@@ -15,6 +15,8 @@ namespace diagnostics { + // Console base class used internally. + class SimpleConsole; +  ++#undef MACHINE ++ + class DiagnosticsWriter : public DiagnosticsModel::Observer { +  public: +   // The type of formatting done by this writer. diff --git a/devel/electron6/files/patch-chrome_browser_download_chrome__download__manager__delegate.cc b/devel/electron6/files/patch-chrome_browser_download_chrome__download__manager__delegate.cc new file mode 100644 index 000000000000..3a70a92ef1c1 --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_download_chrome__download__manager__delegate.cc @@ -0,0 +1,20 @@ +--- chrome/browser/download/chrome_download_manager_delegate.cc.orig	2019-09-10 11:13:38 UTC ++++ chrome/browser/download/chrome_download_manager_delegate.cc +@@ -1237,7 +1237,7 @@ void ChromeDownloadManagerDelegate::OnDownloadTargetDe +         target_info->is_filetype_handled_safely) +       DownloadItemModel(item).SetShouldPreferOpeningInBrowser(true); +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +     if (item->GetOriginalMimeType() == "application/x-x509-user-cert") +       DownloadItemModel(item).SetShouldPreferOpeningInBrowser(true); + #endif +@@ -1267,7 +1267,7 @@ void ChromeDownloadManagerDelegate::OnDownloadTargetDe +  + bool ChromeDownloadManagerDelegate::IsOpenInBrowserPreferreredForFile( +     const base::FilePath& path) { +-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) ++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) +   if (path.MatchesExtension(FILE_PATH_LITERAL(".pdf"))) { +     return !download_prefs_->ShouldOpenPdfInSystemReader(); +   } diff --git a/devel/electron6/files/patch-chrome_browser_download_download__commands.cc b/devel/electron6/files/patch-chrome_browser_download_download__commands.cc new file mode 100644 index 000000000000..72442f45864e --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_download_download__commands.cc @@ -0,0 +1,35 @@ +--- chrome/browser/download/download_commands.cc.orig	2019-09-10 11:13:39 UTC ++++ chrome/browser/download/download_commands.cc +@@ -30,7 +30,7 @@ + #include "net/base/url_util.h" + #include "ui/base/clipboard/scoped_clipboard_writer.h" +  +-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) ++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) + #include "chrome/browser/ui/browser.h" + #include "chrome/browser/ui/browser_finder.h" + #include "chrome/browser/ui/scoped_tabbed_browser_displayer.h" +@@ -157,7 +157,7 @@ void DownloadCommands::ExecuteCommand(Command command) +   model_->ExecuteCommand(this, command); + } +  +-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) ++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) +  + Browser* DownloadCommands::GetBrowser() const { +   chrome::ScopedTabbedBrowserDisplayer browser_displayer(model_->profile()); +@@ -180,12 +180,12 @@ bool DownloadCommands::CanOpenPdfInSystemViewer() cons +   return IsDownloadPdf() && +          (IsAdobeReaderDefaultPDFViewer() ? is_adobe_pdf_reader_up_to_date +                                           : true); +-#elif defined(OS_MACOSX) || defined(OS_LINUX) ++#elif defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) +   return IsDownloadPdf(); + #endif + } +  +-#endif  // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) ++#endif  // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) +  + void DownloadCommands::CopyFileAsImageToClipboard() { +   if (model_->GetState() != download::DownloadItem::COMPLETE || diff --git a/devel/electron6/files/patch-chrome_browser_download_download__commands.h b/devel/electron6/files/patch-chrome_browser_download_download__commands.h new file mode 100644 index 000000000000..c77927d6d86f --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_download_download__commands.h @@ -0,0 +1,11 @@ +--- chrome/browser/download/download_commands.h.orig	2019-09-10 10:42:29 UTC ++++ chrome/browser/download/download_commands.h +@@ -45,7 +45,7 @@ class DownloadCommands { +   bool IsCommandVisible(Command command) const; +   void ExecuteCommand(Command command); +  +-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) ++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) +   bool IsDownloadPdf() const; +   bool CanOpenPdfInSystemViewer() const; +   Browser* GetBrowser() const; diff --git a/devel/electron6/files/patch-chrome_browser_download_download__item__model.cc b/devel/electron6/files/patch-chrome_browser_download_download__item__model.cc new file mode 100644 index 000000000000..f7712c15701d --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_download_download__item__model.cc @@ -0,0 +1,20 @@ +--- chrome/browser/download/download_item_model.cc.orig	2019-09-10 11:13:39 UTC ++++ chrome/browser/download/download_item_model.cc +@@ -560,7 +560,7 @@ bool DownloadItemModel::IsCommandChecked( +       return download_->GetOpenWhenComplete() || +              download_crx_util::IsExtensionDownload(*download_); +     case DownloadCommands::ALWAYS_OPEN_TYPE: +-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) ++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) +       if (download_commands->CanOpenPdfInSystemViewer()) { +         DownloadPrefs* prefs = DownloadPrefs::FromBrowserContext(profile()); +         return prefs->ShouldOpenPdfInSystemReader(); +@@ -597,7 +597,7 @@ void DownloadItemModel::ExecuteCommand(DownloadCommand +       bool is_checked = IsCommandChecked(download_commands, +                                          DownloadCommands::ALWAYS_OPEN_TYPE); +       DownloadPrefs* prefs = DownloadPrefs::FromBrowserContext(profile()); +-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) ++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) +       if (download_commands->CanOpenPdfInSystemViewer()) { +         prefs->SetShouldOpenPdfInSystemReader(!is_checked); +         SetShouldPreferOpeningInBrowser(is_checked); diff --git a/devel/electron6/files/patch-chrome_browser_download_download__prefs.cc b/devel/electron6/files/patch-chrome_browser_download_download__prefs.cc new file mode 100644 index 000000000000..08d1b758ab98 --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_download_download__prefs.cc @@ -0,0 +1,65 @@ +--- chrome/browser/download/download_prefs.cc.orig	2019-09-10 10:42:29 UTC ++++ chrome/browser/download/download_prefs.cc +@@ -62,7 +62,7 @@ namespace { + // Consider downloads 'dangerous' if they go to the home directory on Linux and + // to the desktop on any platform. + bool DownloadPathIsDangerous(const base::FilePath& download_path) { +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   base::FilePath home_dir = base::GetHomeDir(); +   if (download_path == home_dir) { +     return true; +@@ -155,7 +155,7 @@ DownloadPrefs::DownloadPrefs(Profile* profile) : profi +                                 GetDefaultDownloadDirectoryForProfile())); + #endif  // defined(OS_CHROMEOS) +  +-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) ++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) +   should_open_pdf_in_system_reader_ = +       prefs->GetBoolean(prefs::kOpenPdfDownloadInSystemReader); + #endif +@@ -257,7 +257,7 @@ void DownloadPrefs::RegisterProfilePrefs( +                                  default_download_path); +   registry->RegisterFilePathPref(prefs::kSaveFileDefaultDirectory, +                                  default_download_path); +-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) ++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) +   registry->RegisterBooleanPref(prefs::kOpenPdfDownloadInSystemReader, false); + #endif + #if defined(OS_ANDROID) +@@ -354,7 +354,7 @@ bool DownloadPrefs::IsDownloadPathManaged() const { + } +  + bool DownloadPrefs::IsAutoOpenUsed() const { +-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) ++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) +   if (ShouldOpenPdfInSystemReader()) +     return true; + #endif +@@ -368,7 +368,7 @@ bool DownloadPrefs::IsAutoOpenEnabledBasedOnExtension( +     return false; +   DCHECK(extension[0] == base::FilePath::kExtensionSeparator); +   extension.erase(0, 1); +-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) ++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) +   if (base::FilePath::CompareEqualIgnoreCase(extension, +                                              FILE_PATH_LITERAL("pdf")) && +       ShouldOpenPdfInSystemReader()) +@@ -405,7 +405,7 @@ void DownloadPrefs::DisableAutoOpenBasedOnExtension( +   SaveAutoOpenState(); + } +  +-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) ++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) + void DownloadPrefs::SetShouldOpenPdfInSystemReader(bool should_open) { +   if (should_open_pdf_in_system_reader_ == should_open) +     return; +@@ -426,7 +426,7 @@ bool DownloadPrefs::ShouldOpenPdfInSystemReader() cons + #endif +  + void DownloadPrefs::ResetAutoOpen() { +-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) ++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) +   SetShouldOpenPdfInSystemReader(false); + #endif +   auto_open_.clear(); diff --git a/devel/electron6/files/patch-chrome_browser_download_download__prefs.h b/devel/electron6/files/patch-chrome_browser_download_download__prefs.h new file mode 100644 index 000000000000..73421d200546 --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_download_download__prefs.h @@ -0,0 +1,20 @@ +--- chrome/browser/download/download_prefs.h.orig	2019-09-10 10:42:29 UTC ++++ chrome/browser/download/download_prefs.h +@@ -102,7 +102,7 @@ class DownloadPrefs { +   // Disables auto-open based on file extension. +   void DisableAutoOpenBasedOnExtension(const base::FilePath& file_name); +  +-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) ++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) +   // Store the user preference to disk. If |should_open| is true, also disable +   // the built-in PDF plugin. If |should_open| is false, enable the PDF plugin. +   void SetShouldOpenPdfInSystemReader(bool should_open); +@@ -150,7 +150,7 @@ class DownloadPrefs { +                    AutoOpenCompareFunctor> AutoOpenSet; +   AutoOpenSet auto_open_; +  +-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) ++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) +   bool should_open_pdf_in_system_reader_; + #endif +  diff --git a/devel/electron6/files/patch-chrome_browser_download_download__query.cc b/devel/electron6/files/patch-chrome_browser_download_download__query.cc new file mode 100644 index 000000000000..f883759552e7 --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_download_download__query.cc @@ -0,0 +1,14 @@ +--- chrome/browser/download/download_query.cc.orig	2019-09-10 10:42:29 UTC ++++ chrome/browser/download/download_query.cc +@@ -27,7 +27,11 @@ + #include "components/download/public/common/download_item.h" + #include "components/url_formatter/url_formatter.h" + #include "content/public/browser/content_browser_client.h" ++#if defined(OS_BSD) ++#include <re2/re2.h> ++#else + #include "third_party/re2/src/re2/re2.h" ++#endif + #include "url/gurl.h" +  + using download::DownloadDangerType; diff --git a/devel/electron6/files/patch-chrome_browser_download_download__shelf__context__menu.cc b/devel/electron6/files/patch-chrome_browser_download_download__shelf__context__menu.cc new file mode 100644 index 000000000000..fe88ac0897a6 --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_download_download__shelf__context__menu.cc @@ -0,0 +1,11 @@ +--- chrome/browser/download/download_shelf_context_menu.cc.orig	2019-09-10 10:42:29 UTC ++++ chrome/browser/download/download_shelf_context_menu.cc +@@ -127,7 +127,7 @@ base::string16 DownloadShelfContextMenu::GetLabelForCo +                    : IDS_DOWNLOAD_MENU_PLATFORM_OPEN_ALWAYS; +           break; +         } +-#elif defined(OS_MACOSX) || defined(OS_LINUX) ++#elif defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) +         if (can_open_pdf_in_system_viewer) { +           id = IDS_DOWNLOAD_MENU_PLATFORM_OPEN_ALWAYS; +           break; diff --git a/devel/electron6/files/patch-chrome_browser_download_download__status__updater.cc b/devel/electron6/files/patch-chrome_browser_download_download__status__updater.cc new file mode 100644 index 000000000000..3653d2237302 --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_download_download__status__updater.cc @@ -0,0 +1,20 @@ +--- chrome/browser/download/download_status_updater.cc.orig	2019-09-10 10:42:29 UTC ++++ chrome/browser/download/download_status_updater.cc +@@ -13,7 +13,7 @@ + #include "base/memory/ptr_util.h" + #include "build/build_config.h" +  +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS) + #include "ui/views/linux_ui/linux_ui.h" + #endif +  +@@ -136,7 +136,7 @@ void DownloadStatusUpdater::OnDownloadUpdated(content: + #if defined(OS_ANDROID) || (defined(USE_AURA) && !defined(OS_WIN)) + void DownloadStatusUpdater::UpdateAppIconDownloadProgress( +     download::DownloadItem* download) { +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS) +   const views::LinuxUI* linux_ui = views::LinuxUI::instance(); +   if (linux_ui) { +     float progress = 0; diff --git a/devel/electron6/files/patch-chrome_browser_extensions_BUILD.gn b/devel/electron6/files/patch-chrome_browser_extensions_BUILD.gn new file mode 100644 index 000000000000..ab29792d9d46 --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_extensions_BUILD.gn @@ -0,0 +1,15 @@ +--- chrome/browser/extensions/BUILD.gn.orig	2019-09-10 11:13:39 UTC ++++ chrome/browser/extensions/BUILD.gn +@@ -1135,6 +1135,12 @@ jumbo_static_library("extensions") { +     deps += [ "//chrome/common:service_process_mojom" ] +   } +  ++  if (is_bsd) { ++    sources -= [ ++      "api/image_writer_private/removable_storage_provider_linux.cc", ++    ] ++  } ++ +   if (enable_service_discovery) { +     sources += [ +       "api/mdns/mdns_api.cc", diff --git a/devel/electron6/files/patch-chrome_browser_extensions_activity__log_activity__log.cc b/devel/electron6/files/patch-chrome_browser_extensions_activity__log_activity__log.cc new file mode 100644 index 000000000000..b07f5b4ff44f --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_extensions_activity__log_activity__log.cc @@ -0,0 +1,14 @@ +--- chrome/browser/extensions/activity_log/activity_log.cc.orig	2019-09-10 11:13:39 UTC ++++ chrome/browser/extensions/activity_log/activity_log.cc +@@ -53,7 +53,11 @@ + #include "extensions/browser/extensions_browser_client.h" + #include "extensions/common/extension.h" + #include "extensions/common/extension_messages.h" ++#if defined(OS_BSD) ++#include <re2/re2.h> ++#else + #include "third_party/re2/src/re2/re2.h" ++#endif + #include "url/gurl.h" +  + namespace constants = activity_log_constants; diff --git a/devel/electron6/files/patch-chrome_browser_extensions_api_image__writer__private_removable__storage__provider.cc b/devel/electron6/files/patch-chrome_browser_extensions_api_image__writer__private_removable__storage__provider.cc new file mode 100644 index 000000000000..446d8a085346 --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_extensions_api_image__writer__private_removable__storage__provider.cc @@ -0,0 +1,20 @@ +--- chrome/browser/extensions/api/image_writer_private/removable_storage_provider.cc.orig	2019-09-10 11:13:39 UTC ++++ chrome/browser/extensions/api/image_writer_private/removable_storage_provider.cc +@@ -21,6 +21,7 @@ static base::LazyInstance<scoped_refptr<StorageDeviceL +  + void RemovableStorageProvider::GetAllDevices(DeviceListReadyCallback callback) { +   DCHECK_CURRENTLY_ON(content::BrowserThread::UI); ++#if !defined(OS_BSD) +   if (g_test_device_list.Get().get() != nullptr) { +     base::ThreadTaskRunnerHandle::Get()->PostTask( +         FROM_HERE, +@@ -34,6 +35,9 @@ void RemovableStorageProvider::GetAllDevices(DeviceLis +        base::TaskShutdownBehavior::SKIP_ON_SHUTDOWN}, +       base::BindOnce(&RemovableStorageProvider::PopulateDeviceList), +       std::move(callback)); ++#else ++  NOTIMPLEMENTED(); ++#endif + } +  + // static diff --git a/devel/electron6/files/patch-chrome_browser_extensions_api_input__ime_input__ime__api.h b/devel/electron6/files/patch-chrome_browser_extensions_api_input__ime_input__ime__api.h new file mode 100644 index 000000000000..03bd5385657c --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_extensions_api_input__ime_input__ime__api.h @@ -0,0 +1,11 @@ +--- chrome/browser/extensions/api/input_ime/input_ime_api.h.orig	2019-09-10 11:13:39 UTC ++++ chrome/browser/extensions/api/input_ime/input_ime_api.h +@@ -31,7 +31,7 @@ +  + #if defined(OS_CHROMEOS) + #include "chrome/browser/extensions/api/input_ime/input_ime_api_chromeos.h" +-#elif defined(OS_LINUX) || defined(OS_WIN) ++#elif defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD) + #include "chrome/browser/extensions/api/input_ime/input_ime_api_nonchromeos.h" + #endif  // defined(OS_CHROMEOS) +  diff --git a/devel/electron6/files/patch-chrome_browser_extensions_api_runtime_chrome__runtime__api__delegate.cc b/devel/electron6/files/patch-chrome_browser_extensions_api_runtime_chrome__runtime__api__delegate.cc new file mode 100644 index 000000000000..bdb45568bf73 --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_extensions_api_runtime_chrome__runtime__api__delegate.cc @@ -0,0 +1,11 @@ +--- chrome/browser/extensions/api/runtime/chrome_runtime_api_delegate.cc.orig	2019-09-10 11:13:39 UTC ++++ chrome/browser/extensions/api/runtime/chrome_runtime_api_delegate.cc +@@ -299,6 +299,8 @@ bool ChromeRuntimeAPIDelegate::GetPlatformInfo(Platfor +     info->os = extensions::api::runtime::PLATFORM_OS_CROS; +   } else if (strcmp(os, "linux") == 0) { +     info->os = extensions::api::runtime::PLATFORM_OS_LINUX; ++  } else if (strcmp(os, "freebsd") == 0) { ++    info->os = extensions::api::runtime::PLATFORM_OS_FREEBSD; +   } else if (strcmp(os, "openbsd") == 0) { +     info->os = extensions::api::runtime::PLATFORM_OS_OPENBSD; +   } else { diff --git a/devel/electron6/files/patch-chrome_browser_extensions_api_settings__private_prefs__util.cc b/devel/electron6/files/patch-chrome_browser_extensions_api_settings__private_prefs__util.cc new file mode 100644 index 000000000000..9d50b8e138c8 --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_extensions_api_settings__private_prefs__util.cc @@ -0,0 +1,20 @@ +--- chrome/browser/extensions/api/settings_private/prefs_util.cc.orig	2019-09-10 11:13:39 UTC ++++ chrome/browser/extensions/api/settings_private/prefs_util.cc +@@ -128,7 +128,7 @@ const PrefsUtil::TypedPrefMap& PrefsUtil::GetWhitelist +       settings_api::PrefType::PREF_TYPE_BOOLEAN; +   (*s_whitelist)[bookmarks::prefs::kShowBookmarkBar] = +       settings_api::PrefType::PREF_TYPE_BOOLEAN; +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS) +   (*s_whitelist)[::prefs::kUseCustomChromeFrame] = +       settings_api::PrefType::PREF_TYPE_BOOLEAN; + #endif +@@ -138,7 +138,7 @@ const PrefsUtil::TypedPrefMap& PrefsUtil::GetWhitelist +   // Appearance settings. +   (*s_whitelist)[::prefs::kCurrentThemeID] = +       settings_api::PrefType::PREF_TYPE_STRING; +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS) +   (*s_whitelist)[::prefs::kUsesSystemTheme] = +       settings_api::PrefType::PREF_TYPE_BOOLEAN; + #endif diff --git a/devel/electron6/files/patch-chrome_browser_extensions_api_webrtc__logging__private_webrtc__logging__private__api.cc b/devel/electron6/files/patch-chrome_browser_extensions_api_webrtc__logging__private_webrtc__logging__private__api.cc new file mode 100644 index 000000000000..202f4e4b9d66 --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_extensions_api_webrtc__logging__private_webrtc__logging__private__api.cc @@ -0,0 +1,43 @@ +--- chrome/browser/extensions/api/webrtc_logging_private/webrtc_logging_private_api.cc.orig	2019-09-10 11:13:39 UTC ++++ chrome/browser/extensions/api/webrtc_logging_private/webrtc_logging_private_api.cc +@@ -29,7 +29,7 @@ + #include "extensions/browser/process_manager.h" + #include "extensions/common/error_utils.h" +  +-#if defined(OS_LINUX) || defined(OS_CHROMEOS) ++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD) + #include "extensions/common/permissions/permissions_data.h" + #endif +  +@@ -38,7 +38,7 @@ namespace { + bool CanEnableAudioDebugRecordingsFromExtension( +     const extensions::Extension* extension) { +   bool enabled_by_permissions = false; +-#if defined(OS_LINUX) || defined(OS_CHROMEOS) ++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD) +   if (extension) { +     enabled_by_permissions = +         extension->permissions_data()->active_permissions().HasAPIPermission( +@@ -609,7 +609,7 @@ void WebrtcLoggingPrivateStartEventLoggingFunction::Fi + } +  + bool WebrtcLoggingPrivateGetLogsDirectoryFunction::RunAsync() { +-#if defined(OS_LINUX) || defined(OS_CHROMEOS) ++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD) +   // Unlike other WebrtcLoggingPrivate functions that take a RequestInfo object, +   // this function shouldn't be called by a component extension on behalf of +   // some web code. It returns a DirectoryEntry for use directly in the calling +@@ -633,11 +633,11 @@ bool WebrtcLoggingPrivateGetLogsDirectoryFunction::Run +           &WebrtcLoggingPrivateGetLogsDirectoryFunction::FireErrorCallback, +           this)); +   return true; +-#else   // defined(OS_LINUX) || defined(OS_CHROMEOS) ++#else   // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD) +   SetError("Not supported on the current OS"); +   SendResponse(false); +   return false; +-#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) ++#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD) + } +  + void WebrtcLoggingPrivateGetLogsDirectoryFunction::FireCallback( diff --git a/devel/electron6/files/patch-chrome_browser_extensions_bookmark__app__extension__util.cc b/devel/electron6/files/patch-chrome_browser_extensions_bookmark__app__extension__util.cc new file mode 100644 index 000000000000..281691145c84 --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_extensions_bookmark__app__extension__util.cc @@ -0,0 +1,11 @@ +--- chrome/browser/extensions/bookmark_app_extension_util.cc.orig	2019-09-10 11:13:39 UTC ++++ chrome/browser/extensions/bookmark_app_extension_util.cc +@@ -34,7 +34,7 @@ namespace { +  + #if !defined(OS_CHROMEOS) + bool CanOsAddDesktopShortcuts() { +-#if defined(OS_LINUX) || defined(OS_WIN) ++#if defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD) +   return true; + #else +   return false; diff --git a/devel/electron6/files/patch-chrome_browser_extensions_browser__context__keyed__service__factories.cc b/devel/electron6/files/patch-chrome_browser_extensions_browser__context__keyed__service__factories.cc new file mode 100644 index 000000000000..af7143471e43 --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_extensions_browser__context__keyed__service__factories.cc @@ -0,0 +1,20 @@ +--- chrome/browser/extensions/browser_context_keyed_service_factories.cc.orig	2019-09-10 11:13:39 UTC ++++ chrome/browser/extensions/browser_context_keyed_service_factories.cc +@@ -54,7 +54,7 @@ + #include "chrome/browser/chromeos/extensions/input_method_api.h" + #include "chrome/browser/chromeos/extensions/media_player_api.h" + #include "chrome/browser/extensions/api/input_ime/input_ime_api.h" +-#elif defined(OS_LINUX) || defined(OS_WIN) ++#elif defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD) + #include "chrome/browser/extensions/api/input_ime/input_ime_api.h" + #endif +  +@@ -92,7 +92,7 @@ void EnsureBrowserContextKeyedServiceFactoriesBuilt()  + #if defined(OS_CHROMEOS) +   extensions::InputImeAPI::GetFactoryInstance(); +   extensions::InputMethodAPI::GetFactoryInstance(); +-#elif defined(OS_LINUX) || defined(OS_WIN) ++#elif defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD) +   extensions::InputImeAPI::GetFactoryInstance(); + #endif +   extensions::LanguageSettingsPrivateDelegateFactory::GetInstance(); diff --git a/devel/electron6/files/patch-chrome_browser_extensions_external__provider__impl.cc b/devel/electron6/files/patch-chrome_browser_extensions_external__provider__impl.cc new file mode 100644 index 000000000000..f9d3932d5447 --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_extensions_external__provider__impl.cc @@ -0,0 +1,20 @@ +--- chrome/browser/extensions/external_provider_impl.cc.orig	2019-09-10 11:13:39 UTC ++++ chrome/browser/extensions/external_provider_impl.cc +@@ -755,7 +755,7 @@ void ExternalProviderImpl::CreateExternalProviders( +     chromeos::DemoSession::Get()->SetExtensionsExternalLoader(loader); +     provider_list->push_back(std::move(demo_apps_provider)); +   } +-#elif defined(OS_LINUX) ++#elif defined(OS_LINUX) || defined(OS_BSD) +   provider_list->push_back(std::make_unique<ExternalProviderImpl>( +       service, +       new ExternalPrefLoader(chrome::DIR_STANDALONE_EXTERNAL_EXTENSIONS, +@@ -782,7 +782,7 @@ void ExternalProviderImpl::CreateExternalProviders( +         bundled_extension_creation_flags)); +  +     // Define a per-user source of external extensions. +-#if defined(OS_MACOSX) || (defined(OS_LINUX) && defined(CHROMIUM_BUILD)) ++#if defined(OS_MACOSX) || ((defined(OS_LINUX) || defined(OS_BSD)) && defined(CHROMIUM_BUILD)) +     provider_list->push_back(std::make_unique<ExternalProviderImpl>( +         service, +         new ExternalPrefLoader(chrome::DIR_USER_EXTERNAL_EXTENSIONS, diff --git a/devel/electron6/files/patch-chrome_browser_extensions_install__signer.cc b/devel/electron6/files/patch-chrome_browser_extensions_install__signer.cc new file mode 100644 index 000000000000..c090765e209d --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_extensions_install__signer.cc @@ -0,0 +1,18 @@ +--- chrome/browser/extensions/install_signer.cc.orig	2019-09-10 10:42:29 UTC ++++ chrome/browser/extensions/install_signer.cc +@@ -293,13 +293,13 @@ void LogRequestStartHistograms() { +   DCHECK(g_single_thread_checker.Get().CalledOnValidThread()); +  +   // Process::Current().CreationTime is only defined on some platforms. +-#if defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_LINUX) ++#if defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD) +   const base::Time process_creation_time = +       base::Process::Current().CreationTime(); +   UMA_HISTOGRAM_COUNTS_1M( +       "ExtensionInstallSigner.UptimeAtTimeOfRequest", +       (base::Time::Now() - process_creation_time).InSeconds()); +-#endif  // defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_LINUX) ++#endif  // defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD) +  +   base::TimeDelta delta; +   base::TimeTicks now = base::TimeTicks::Now(); diff --git a/devel/electron6/files/patch-chrome_browser_first__run_first__run__dialog.h b/devel/electron6/files/patch-chrome_browser_first__run_first__run__dialog.h new file mode 100644 index 000000000000..9f551cdbd093 --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_first__run_first__run__dialog.h @@ -0,0 +1,11 @@ +--- chrome/browser/first_run/first_run_dialog.h.orig	2019-09-10 10:42:29 UTC ++++ chrome/browser/first_run/first_run_dialog.h +@@ -9,7 +9,7 @@ + #include "build/build_config.h" +  + // Hide this function on platforms where the dialog does not exist. +-#if defined(OS_MACOSX) || (defined(OS_LINUX) && !defined(OS_CHROMEOS)) ++#if defined(OS_MACOSX) || (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) +  + class Profile; +  diff --git a/devel/electron6/files/patch-chrome_browser_first__run_first__run__internal.h b/devel/electron6/files/patch-chrome_browser_first__run_first__run__internal.h new file mode 100644 index 000000000000..ac2c6417b8db --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_first__run_first__run__internal.h @@ -0,0 +1,18 @@ +--- chrome/browser/first_run/first_run_internal.h.orig	2019-09-10 10:42:29 UTC ++++ chrome/browser/first_run/first_run_internal.h +@@ -64,13 +64,13 @@ FirstRunState DetermineFirstRunState(bool has_sentinel +                                      bool force_first_run, +                                      bool no_first_run); +  +-#if defined(OS_MACOSX) || (defined(OS_LINUX) && !defined(OS_CHROMEOS)) ++#if defined(OS_MACOSX) || (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) + // For testing, forces the first run dialog to either be shown or not. If not + // called, the decision to show the dialog or not will be made by Chrome based + // on a number of factors (such as install type, whether it's a Chrome-branded + // build, etc). + void ForceFirstRunDialogShownForTesting(bool shown); +-#endif  // defined(OS_MACOSX) || (defined(OS_LINUX) && !defined(OS_CHROMEOS)) ++#endif  // defined(OS_MACOSX) || (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) +  + }  // namespace internal + }  // namespace first_run diff --git a/devel/electron6/files/patch-chrome_browser_first__run_first__run__internal__posix.cc b/devel/electron6/files/patch-chrome_browser_first__run_first__run__internal__posix.cc new file mode 100644 index 000000000000..b18d0dd1f115 --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_first__run_first__run__internal__posix.cc @@ -0,0 +1,20 @@ +--- chrome/browser/first_run/first_run_internal_posix.cc.orig	2019-09-10 11:13:39 UTC ++++ chrome/browser/first_run/first_run_internal_posix.cc +@@ -44,7 +44,7 @@ enum class ForcedShowDialogState { + ForcedShowDialogState g_forced_show_dialog_state = +     ForcedShowDialogState::kNotForced; +  +-#if !defined(OS_CHROMEOS) ++#if !defined(OS_CHROMEOS) && !defined(OS_BSD) + // Returns whether the first run dialog should be shown. This is only true for + // certain builds, and only if the user has not already set preferences. In a + // real, official-build first run, initializes the default metrics reporting if +@@ -95,7 +95,7 @@ void ForceFirstRunDialogShownForTesting(bool shown) { + } +  + void DoPostImportPlatformSpecificTasks(Profile* profile) { +-#if !defined(OS_CHROMEOS) ++#if !defined(OS_CHROMEOS) && !defined(OS_BSD) +   if (!ShouldShowFirstRunDialog()) +     return; +  diff --git a/devel/electron6/files/patch-chrome_browser_flag__descriptions.cc b/devel/electron6/files/patch-chrome_browser_flag__descriptions.cc new file mode 100644 index 000000000000..4bf61bbb05cc --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_flag__descriptions.cc @@ -0,0 +1,28 @@ +--- chrome/browser/flag_descriptions.cc.orig	2019-09-10 11:13:39 UTC ++++ chrome/browser/flag_descriptions.cc +@@ -3256,21 +3256,21 @@ const char kInstallableInkDropDescription[] = +  + // Random platform combinations ----------------------------------------------- +  +-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) ++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD) +  + const char kWebGL2ComputeContextName[] = "WebGL 2.0 Compute"; + const char kWebGL2ComputeContextDescription[] = +     "Enable the use of WebGL 2.0 Compute API."; +  +-#endif  // defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) ++#endif  // defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD) +  +-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) ++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) +  + const char kDirectManipulationStylusName[] = "Direct Manipulation Stylus"; + const char kDirectManipulationStylusDescription[] = +     "If enabled, Chrome will scroll web pages on stylus drag."; +  +-#endif  // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) ++#endif  // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) +  + #if defined(OS_MACOSX) || defined(OS_CHROMEOS) +  diff --git a/devel/electron6/files/patch-chrome_browser_flag__descriptions.h b/devel/electron6/files/patch-chrome_browser_flag__descriptions.h new file mode 100644 index 000000000000..8642932a488a --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_flag__descriptions.h @@ -0,0 +1,26 @@ +--- chrome/browser/flag_descriptions.h.orig	2019-09-10 11:13:39 UTC ++++ chrome/browser/flag_descriptions.h +@@ -1963,19 +1963,19 @@ extern const char kInstallableInkDropDescription[]; +  + // Random platform combinations ----------------------------------------------- +  +-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) ++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD) +  + extern const char kWebGL2ComputeContextName[]; + extern const char kWebGL2ComputeContextDescription[]; +  +-#endif  // defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) ++#endif  // defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD) +  +-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) ++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) +  + extern const char kDirectManipulationStylusName[]; + extern const char kDirectManipulationStylusDescription[]; +  +-#endif  // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) ++#endif  // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) +  + #if defined(OS_MACOSX) || defined(OS_CHROMEOS) +  diff --git a/devel/electron6/files/patch-chrome_browser_media__galleries_fileapi_mtp__device__map__service.cc b/devel/electron6/files/patch-chrome_browser_media__galleries_fileapi_mtp__device__map__service.cc new file mode 100644 index 000000000000..164a94a5399e --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_media__galleries_fileapi_mtp__device__map__service.cc @@ -0,0 +1,15 @@ +--- chrome/browser/media_galleries/fileapi/mtp_device_map_service.cc.orig	2019-09-10 11:13:40 UTC ++++ chrome/browser/media_galleries/fileapi/mtp_device_map_service.cc +@@ -39,10 +39,12 @@ void MTPDeviceMapService::RegisterMTPFileSystem( +     // Note that this initializes the delegate asynchronously, but since +     // the delegate will only be used from the IO thread, it is guaranteed +     // to be created before use of it expects it to be there. ++#if !defined(OS_FREEBSD) +     CreateMTPDeviceAsyncDelegate( +         device_location, read_only, +         base::Bind(&MTPDeviceMapService::AddAsyncDelegate, +                    base::Unretained(this), device_location, read_only)); ++#endif +     mtp_device_usage_map_[key] = 0; +   } +  diff --git a/devel/electron6/files/patch-chrome_browser_media__galleries_media__file__system__registry.cc b/devel/electron6/files/patch-chrome_browser_media__galleries_media__file__system__registry.cc new file mode 100644 index 000000000000..93b803ccb112 --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_media__galleries_media__file__system__registry.cc @@ -0,0 +1,14 @@ +--- chrome/browser/media_galleries/media_file_system_registry.cc.orig	2019-09-10 11:13:40 UTC ++++ chrome/browser/media_galleries/media_file_system_registry.cc +@@ -732,7 +732,10 @@ class MediaFileSystemRegistry::MediaFileSystemContextI + // Constructor in 'private' section because depends on private class definition. + MediaFileSystemRegistry::MediaFileSystemRegistry() +     : file_system_context_(new MediaFileSystemContextImpl) { +-  StorageMonitor::GetInstance()->AddObserver(this); ++  // This conditional is needed for shutdown.  Destructors ++  // try to get the media file system registry. ++  if (StorageMonitor::GetInstance()) ++    StorageMonitor::GetInstance()->AddObserver(this); + } +  + MediaFileSystemRegistry::~MediaFileSystemRegistry() { diff --git a/devel/electron6/files/patch-chrome_browser_media_router_discovery_discovery__network__list__posix.cc b/devel/electron6/files/patch-chrome_browser_media_router_discovery_discovery__network__list__posix.cc new file mode 100644 index 000000000000..11b31c5d3eb4 --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_media_router_discovery_discovery__network__list__posix.cc @@ -0,0 +1,28 @@ +--- chrome/browser/media/router/discovery/discovery_network_list_posix.cc.orig	2019-09-10 10:42:29 UTC ++++ chrome/browser/media/router/discovery/discovery_network_list_posix.cc +@@ -10,6 +10,7 @@ + #include <netinet/in.h> + #include <sys/socket.h> + #include <sys/types.h> ++#include <sys/time.h> +  + #include <algorithm> +  +@@ -19,7 +20,7 @@ + #include "chrome/browser/media/router/discovery/discovery_network_list_wifi.h" + #include "net/base/net_errors.h" +  +-#if !defined(OS_MACOSX) ++#if !defined(OS_MACOSX) && !defined(OS_BSD) + #include <netpacket/packet.h> + #else + #include <net/if_dl.h> +@@ -28,7 +29,7 @@ + namespace media_router { + namespace { +  +-#if !defined(OS_MACOSX) ++#if !defined(OS_MACOSX) && !defined(OS_BSD) + using sll = struct sockaddr_ll; + #define SOCKET_ARP_TYPE(s) ((s)->sll_hatype) + #define SOCKET_ADDRESS_LEN(s) ((s)->sll_halen) diff --git a/devel/electron6/files/patch-chrome_browser_media_router_discovery_discovery__network__list__wifi__linux.cc b/devel/electron6/files/patch-chrome_browser_media_router_discovery_discovery__network__list__wifi__linux.cc new file mode 100644 index 000000000000..39153a755e3e --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_media_router_discovery_discovery__network__list__wifi__linux.cc @@ -0,0 +1,27 @@ +--- chrome/browser/media/router/discovery/discovery_network_list_wifi_linux.cc.orig	2019-09-10 10:42:29 UTC ++++ chrome/browser/media/router/discovery/discovery_network_list_wifi_linux.cc +@@ -9,8 +9,6 @@ + #include <sys/socket.h> + #include <sys/types.h> +  +-#include <linux/wireless.h> +- + #include "base/files/scoped_file.h" + #include "base/logging.h" + #include "net/base/network_interfaces_linux.h" +@@ -20,6 +18,7 @@ namespace media_router { + bool MaybeGetWifiSSID(const std::string& if_name, std::string* ssid_out) { +   DCHECK(ssid_out); +  ++#if !defined(OS_BSD) +   base::ScopedFD ioctl_socket(socket(AF_INET, SOCK_DGRAM, 0)); +   if (!ioctl_socket.is_valid()) { +     // AF_INET is for IPv4, so it may fail for IPv6-only hosts even when there +@@ -41,6 +40,7 @@ bool MaybeGetWifiSSID(const std::string& if_name, std: +     ssid_out->assign(ssid); +     return true; +   } ++#endif +   return false; + } +  diff --git a/devel/electron6/files/patch-chrome_browser_media_router_providers_wired__display_wired__display__media__route__provider.cc b/devel/electron6/files/patch-chrome_browser_media_router_providers_wired__display_wired__display__media__route__provider.cc new file mode 100644 index 000000000000..75c038403333 --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_media_router_providers_wired__display_wired__display__media__route__provider.cc @@ -0,0 +1,23 @@ +--- chrome/browser/media/router/providers/wired_display/wired_display_media_route_provider.cc.orig	2019-09-10 11:13:40 UTC ++++ chrome/browser/media/router/providers/wired_display/wired_display_media_route_provider.cc +@@ -112,6 +112,12 @@ void WiredDisplayMediaRouteProvider::CreateRoute( +     bool incognito, +     CreateRouteCallback callback) { +   DCHECK(!base::ContainsKey(presentations_, presentation_id)); ++#if defined(OS_BSD) // XXX ++   std::move(callback).Run(base::nullopt, nullptr, ++                           std::string("Not implemented"), ++                           RouteRequestResult::UNKNOWN_ERROR); ++   return; ++#else +   base::Optional<Display> display = GetDisplayBySinkId(sink_id); +   if (!display) { +     std::move(callback).Run(base::nullopt, nullptr, +@@ -138,6 +144,7 @@ void WiredDisplayMediaRouteProvider::CreateRoute( +   std::move(callback).Run(route, nullptr, base::nullopt, +                           RouteRequestResult::OK); +   NotifyRouteObservers(); ++#endif + } +  + void WiredDisplayMediaRouteProvider::JoinRoute( diff --git a/devel/electron6/files/patch-chrome_browser_media_webrtc_webrtc__event__log__uploader.cc b/devel/electron6/files/patch-chrome_browser_media_webrtc_webrtc__event__log__uploader.cc new file mode 100644 index 000000000000..07c95966e5e1 --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_media_webrtc_webrtc__event__log__uploader.cc @@ -0,0 +1,11 @@ +--- chrome/browser/media/webrtc/webrtc_event_log_uploader.cc.orig	2019-09-10 11:13:40 UTC ++++ chrome/browser/media/webrtc/webrtc_event_log_uploader.cc +@@ -36,7 +36,7 @@ constexpr size_t kExpectedMimeOverheadBytes = 1000;  / + const char kProduct[] = "Chrome"; + #elif defined(OS_MACOSX) + const char kProduct[] = "Chrome_Mac"; +-#elif defined(OS_LINUX) ++#elif defined(OS_LINUX) || defined(OS_BSD) + const char kProduct[] = "Chrome_Linux"; + #elif defined(OS_ANDROID) + const char kProduct[] = "Chrome_Android"; diff --git a/devel/electron6/files/patch-chrome_browser_media_webrtc_webrtc__log__uploader.cc b/devel/electron6/files/patch-chrome_browser_media_webrtc_webrtc__log__uploader.cc new file mode 100644 index 000000000000..01e831b60f3c --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_media_webrtc_webrtc__log__uploader.cc @@ -0,0 +1,11 @@ +--- chrome/browser/media/webrtc/webrtc_log_uploader.cc.orig	2019-09-10 11:13:40 UTC ++++ chrome/browser/media/webrtc/webrtc_log_uploader.cc +@@ -393,6 +393,8 @@ void WebRtcLogUploader::SetupMultipart( +   const char product[] = "Chrome_Android"; + #elif defined(OS_CHROMEOS) +   const char product[] = "Chrome_ChromeOS"; ++#elif defined(OS_FREEBSD) ++  const char product[] = "Chrome_FreeBSD"; + #else + #error Platform not supported. + #endif diff --git a/devel/electron6/files/patch-chrome_browser_media_webrtc_webrtc__logging__handler__host.cc b/devel/electron6/files/patch-chrome_browser_media_webrtc_webrtc__logging__handler__host.cc new file mode 100644 index 000000000000..e77f4111ae56 --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_media_webrtc_webrtc__logging__handler__host.cc @@ -0,0 +1,33 @@ +--- chrome/browser/media/webrtc/webrtc_logging_handler_host.cc.orig	2019-09-10 11:13:40 UTC ++++ chrome/browser/media/webrtc/webrtc_logging_handler_host.cc +@@ -26,10 +26,10 @@ + #include "content/public/browser/content_browser_client.h" + #include "content/public/browser/render_process_host.h" +  +-#if defined(OS_LINUX) || defined(OS_CHROMEOS) ++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD) + #include "content/public/browser/child_process_security_policy.h" + #include "storage/browser/fileapi/isolated_context.h" +-#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) ++#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD) +  + using content::BrowserThread; + using webrtc_event_logging::WebRtcEventLogManager; +@@ -281,7 +281,7 @@ void WebRtcLoggingHandlerHost::StartEventLogging( +       web_app_id, callback); + } +  +-#if defined(OS_LINUX) || defined(OS_CHROMEOS) ++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD) + void WebRtcLoggingHandlerHost::GetLogsDirectory( +     const LogsDirectoryCallback& callback, +     const LogsDirectoryErrorCallback& error_callback) { +@@ -328,7 +328,7 @@ void WebRtcLoggingHandlerHost::GrantLogsDirectoryAcces +       FROM_HERE, {BrowserThread::UI}, +       base::BindOnce(callback, file_system.id(), registered_name)); + } +-#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) ++#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD +  + void WebRtcLoggingHandlerHost::OnRtpPacket( +     std::unique_ptr<uint8_t[]> packet_header, diff --git a/devel/electron6/files/patch-chrome_browser_media_webrtc_webrtc__logging__handler__host.h b/devel/electron6/files/patch-chrome_browser_media_webrtc_webrtc__logging__handler__host.h new file mode 100644 index 000000000000..02dfc1b9b6c7 --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_media_webrtc_webrtc__logging__handler__host.h @@ -0,0 +1,36 @@ +--- chrome/browser/media/webrtc/webrtc_logging_handler_host.h.orig	2019-09-10 11:13:40 UTC ++++ chrome/browser/media/webrtc/webrtc_logging_handler_host.h +@@ -153,13 +153,13 @@ class WebRtcLoggingHandlerHost : public content::Brows +                          size_t web_app_id, +                          const StartEventLoggingCallback& callback); +  +-#if defined(OS_LINUX) || defined(OS_CHROMEOS) ++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD) +   // Ensures that the WebRTC Logs directory exists and then grants render +   // process access to the 'WebRTC Logs' directory, and invokes |callback| with +   // the ids necessary to create a DirectoryEntry object. +   void GetLogsDirectory(const LogsDirectoryCallback& callback, +                         const LogsDirectoryErrorCallback& error_callback); +-#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) ++#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD) +  +  private: +   friend class content::BrowserThread; +@@ -226,7 +226,7 @@ class WebRtcLoggingHandlerHost : public content::Brows +       bool success, +       const std::string& error_message); +  +-#if defined(OS_LINUX) || defined(OS_CHROMEOS) ++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD) +   // Grants the render process access to the 'WebRTC Logs' directory, and +   // invokes |callback| with the ids necessary to create a DirectoryEntry +   // object. If the |logs_path| couldn't be created or found, |error_callback| +@@ -235,7 +235,7 @@ class WebRtcLoggingHandlerHost : public content::Brows +       const LogsDirectoryCallback& callback, +       const LogsDirectoryErrorCallback& error_callback, +       const base::FilePath& logs_path); +-#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) ++#endif  // defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD) +  +   // The render process ID this object belongs to. +   const int render_process_id_; diff --git a/devel/electron6/files/patch-chrome_browser_memory__details.cc b/devel/electron6/files/patch-chrome_browser_memory__details.cc new file mode 100644 index 000000000000..5aebd4178839 --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_memory__details.cc @@ -0,0 +1,20 @@ +--- chrome/browser/memory_details.cc.orig	2019-09-10 11:13:40 UTC ++++ chrome/browser/memory_details.cc +@@ -38,7 +38,7 @@ + #include "services/resource_coordinator/public/cpp/memory_instrumentation/memory_instrumentation.h" + #include "ui/base/l10n/l10n_util.h" +  +-#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_ANDROID) ++#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_ANDROID) && !defined(OS_BSD) + #include "services/service_manager/zygote/zygote_host_linux.h" + #endif +  +@@ -336,7 +336,7 @@ void MemoryDetails::CollectChildInfoOnUIThread() { +       process.titles.push_back(title); +     } +  +-#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_ANDROID) ++#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_ANDROID) && !defined(OS_BSD) +     if (service_manager::ZygoteHost::GetInstance()->IsZygotePid(process.pid)) { +       process.process_type = content::PROCESS_TYPE_ZYGOTE; +     } diff --git a/devel/electron6/files/patch-chrome_browser_memory__details__linux.cc b/devel/electron6/files/patch-chrome_browser_memory__details__linux.cc new file mode 100644 index 000000000000..53913d34622b --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_memory__details__linux.cc @@ -0,0 +1,13 @@ +--- chrome/browser/memory_details_linux.cc.orig	2019-09-10 11:13:40 UTC ++++ chrome/browser/memory_details_linux.cc +@@ -72,8 +72,10 @@ ProcessData GetProcessDataMemoryInformation( +  +     std::unique_ptr<base::ProcessMetrics> metrics( +         base::ProcessMetrics::CreateProcessMetrics(pid)); ++#if !defined(OS_BSD) +     pmi.num_open_fds = metrics->GetOpenFdCount(); +     pmi.open_fds_soft_limit = metrics->GetOpenFdSoftLimit(); ++#endif +  +     process_data.processes.push_back(pmi); +   } diff --git a/devel/electron6/files/patch-chrome_browser_metrics_bluetooth__available__utility.cc b/devel/electron6/files/patch-chrome_browser_metrics_bluetooth__available__utility.cc new file mode 100644 index 000000000000..62d63769bbcc --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_metrics_bluetooth__available__utility.cc @@ -0,0 +1,13 @@ +--- chrome/browser/metrics/bluetooth_available_utility.cc.orig	2019-09-10 11:13:40 UTC ++++ chrome/browser/metrics/bluetooth_available_utility.cc +@@ -76,8 +76,10 @@ void ReportBluetoothAvailability() { +     return; +   } +  ++#if !defined(OS_BSD) +   device::BluetoothAdapterFactory::Get().GetAdapter( +       base::BindOnce(&OnGetAdapter)); ++#endif + } +  + }  // namespace bluetooth_utility diff --git a/devel/electron6/files/patch-chrome_browser_metrics_chrome__browser__main__extra__parts__metrics.cc b/devel/electron6/files/patch-chrome_browser_metrics_chrome__browser__main__extra__parts__metrics.cc new file mode 100644 index 000000000000..e851f993f802 --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_metrics_chrome__browser__main__extra__parts__metrics.cc @@ -0,0 +1,21 @@ +--- chrome/browser/metrics/chrome_browser_main_extra_parts_metrics.cc.orig	2019-09-10 11:13:40 UTC ++++ chrome/browser/metrics/chrome_browser_main_extra_parts_metrics.cc +@@ -44,7 +44,9 @@ +  + #if defined(OS_LINUX) && !defined(OS_CHROMEOS) + #include <gnu/libc-version.h> ++#endif +  ++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) + #include "base/linux_util.h" + #include "base/strings/string_split.h" + #include "base/strings/string_util.h" +@@ -52,7 +54,7 @@ + #if defined(USE_X11) + #include "ui/base/x/x11_util.h" + #endif +-#endif  // defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#endif  // defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) +  + #if defined(USE_OZONE) || defined(USE_X11) + #include "ui/events/devices/input_device_event_observer.h" diff --git a/devel/electron6/files/patch-chrome_browser_metrics_chrome__metrics__service__client.cc b/devel/electron6/files/patch-chrome_browser_metrics_chrome__metrics__service__client.cc new file mode 100644 index 000000000000..2ba7a25f3eb6 --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_metrics_chrome__metrics__service__client.cc @@ -0,0 +1,11 @@ +--- chrome/browser/metrics/chrome_metrics_service_client.cc.orig	2019-09-10 11:13:40 UTC ++++ chrome/browser/metrics/chrome_metrics_service_client.cc +@@ -902,7 +902,7 @@ bool ChromeMetricsServiceClient::RegisterForProfileEve +   } + #endif + #if defined(OS_WIN) || defined(OS_MACOSX) || \ +-    (defined(OS_LINUX) && !defined(OS_CHROMEOS)) ++    (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) +   // This creates the DesktopProfileSessionDurationsServices if it didn't exist +   // already. +   metrics::DesktopProfileSessionDurationsServiceFactory::GetForBrowserContext( diff --git a/devel/electron6/files/patch-chrome_browser_metrics_process__memory__metrics__emitter.cc b/devel/electron6/files/patch-chrome_browser_metrics_process__memory__metrics__emitter.cc new file mode 100644 index 000000000000..f928454a9733 --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_metrics_process__memory__metrics__emitter.cc @@ -0,0 +1,20 @@ +--- chrome/browser/metrics/process_memory_metrics_emitter.cc.orig	2019-09-10 11:13:40 UTC ++++ chrome/browser/metrics/process_memory_metrics_emitter.cc +@@ -360,7 +360,7 @@ void EmitProcessUmaAndUkm(const GlobalMemoryDump::Proc +  +   builder->SetPrivateMemoryFootprint(pmd.os_dump().private_footprint_kb / 1024); +   builder->SetSharedMemoryFootprint(pmd.os_dump().shared_footprint_kb / 1024); +-#if defined(OS_LINUX) || defined(OS_ANDROID) ++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD) +   builder->SetPrivateSwapFootprint(pmd.os_dump().private_footprint_swap_kb / +                                    1024); + #endif +@@ -383,7 +383,7 @@ void EmitProcessUmaAndUkm(const GlobalMemoryDump::Proc +   MEMORY_METRICS_HISTOGRAM_MB( +       std::string(UMA_PREFIX) + process_name + ".SharedMemoryFootprint", +       pmd.os_dump().shared_footprint_kb / 1024); +-#if defined(OS_LINUX) || defined(OS_ANDROID) ++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD) +   MEMORY_METRICS_HISTOGRAM_MB( +       std::string(UMA_PREFIX) + process_name + ".PrivateSwapFootprint", +       pmd.os_dump().private_footprint_swap_kb / 1024); diff --git a/devel/electron6/files/patch-chrome_browser_net_system__network__context__manager.cc b/devel/electron6/files/patch-chrome_browser_net_system__network__context__manager.cc new file mode 100644 index 000000000000..e3848ffb689c --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_net_system__network__context__manager.cc @@ -0,0 +1,65 @@ +--- chrome/browser/net/system_network_context_manager.cc.orig	2019-09-10 11:13:40 UTC ++++ chrome/browser/net/system_network_context_manager.cc +@@ -72,12 +72,12 @@ + #include "chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h" + #endif  // defined(OS_CHROMEOS) +  +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS) + #include "chrome/common/chrome_paths_internal.h" + #include "chrome/common/chrome_switches.h" + #include "chrome/grit/chromium_strings.h" + #include "ui/base/l10n/l10n_util.h" +-#endif  // defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#endif  // (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS) +  + namespace { +  +@@ -191,10 +191,10 @@ network::mojom::HttpAuthDynamicParamsPtr CreateHttpAut +   auth_dynamic_params->enable_negotiate_port = +       local_state->GetBoolean(prefs::kEnableAuthNegotiatePort); +  +-#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_CHROMEOS) ++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_CHROMEOS) || defined(OS_BSD) +   auth_dynamic_params->delegate_by_kdc_policy = +       local_state->GetBoolean(prefs::kAuthNegotiateDelegateByKdcPolicy); +-#endif  // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_CHROMEOS) ++#endif  // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_CHROMEOS) || defined(OS_BSD) +  + #if defined(OS_POSIX) +   auth_dynamic_params->ntlm_v2_enabled = +@@ -434,10 +434,10 @@ SystemNetworkContextManager::SystemNetworkContextManag +   pref_change_registrar_.Add(prefs::kEnableAuthNegotiatePort, +                              auth_pref_callback); +  +-#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_CHROMEOS) ++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_CHROMEOS) || defined(OS_BSD) +   pref_change_registrar_.Add(prefs::kAuthNegotiateDelegateByKdcPolicy, +                              auth_pref_callback); +-#endif  // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_CHROMEOS) ++#endif  // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_CHROMEOS) || defined(OS_BSD) +  + #if defined(OS_POSIX) +   pref_change_registrar_.Add(prefs::kNtlmV2Enabled, auth_pref_callback); +@@ -486,10 +486,10 @@ void SystemNetworkContextManager::RegisterPrefs(PrefRe +   registry->RegisterStringPref(prefs::kAuthServerWhitelist, std::string()); +   registry->RegisterStringPref(prefs::kAuthNegotiateDelegateWhitelist, +                                std::string()); +-#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_CHROMEOS) ++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_CHROMEOS) || defined(OS_BSD) +   registry->RegisterBooleanPref(prefs::kAuthNegotiateDelegateByKdcPolicy, +                                 false); +-#endif  // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_CHROMEOS) ++#endif  // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_CHROMEOS) || defined(OS_BSD) +  + #if defined(OS_POSIX) +   registry->RegisterBooleanPref( +@@ -586,7 +586,7 @@ void SystemNetworkContextManager::OnNetworkServiceCrea +   content::GetNetworkService()->ConfigureStubHostResolver( +       stub_resolver_enabled, std::move(dns_over_https_servers)); +  +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS) +   const base::CommandLine& command_line = +       *base::CommandLine::ForCurrentProcess(); +  diff --git a/devel/electron6/files/patch-chrome_browser_notifications_notification__display__service__impl.cc b/devel/electron6/files/patch-chrome_browser_notifications_notification__display__service__impl.cc new file mode 100644 index 000000000000..93e5a0aee1b9 --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_notifications_notification__display__service__impl.cc @@ -0,0 +1,20 @@ +--- chrome/browser/notifications/notification_display_service_impl.cc.orig	2019-09-10 11:13:40 UTC ++++ chrome/browser/notifications/notification_display_service_impl.cc +@@ -31,7 +31,7 @@ + #include "chrome/browser/notifications/notification_platform_bridge_message_center.h" + #endif +  +-#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) ++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_BSD) + #include "chrome/browser/send_tab_to_self/desktop_notification_handler.h" + #endif +  +@@ -121,7 +121,7 @@ NotificationDisplayServiceImpl::NotificationDisplaySer +     AddNotificationHandler(NotificationHandler::Type::WEB_PERSISTENT, +                            std::make_unique<PersistentNotificationHandler>()); +  +-#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) ++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_BSD) +     AddNotificationHandler( +         NotificationHandler::Type::SEND_TAB_TO_SELF, +         std::make_unique<send_tab_to_self::DesktopNotificationHandler>( diff --git a/devel/electron6/files/patch-chrome_browser_password__manager_chrome__password__manager__client.cc b/devel/electron6/files/patch-chrome_browser_password__manager_chrome__password__manager__client.cc new file mode 100644 index 000000000000..8fe5641d2b42 --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_password__manager_chrome__password__manager__client.cc @@ -0,0 +1,14 @@ +--- chrome/browser/password_manager/chrome_password_manager_client.cc.orig	2019-09-10 11:13:40 UTC ++++ chrome/browser/password_manager/chrome_password_manager_client.cc +@@ -82,7 +82,11 @@ + #include "net/cert/cert_status_flags.h" + #include "services/identity/public/cpp/identity_manager.h" + #include "services/metrics/public/cpp/ukm_recorder.h" ++#if defined(OS_BSD) ++#include <re2/re2.h> ++#else + #include "third_party/re2/src/re2/re2.h" ++#endif + #include "url/url_constants.h" +  + #if defined(FULL_SAFE_BROWSING) diff --git a/devel/electron6/files/patch-chrome_browser_password__manager_password__store__factory.cc b/devel/electron6/files/patch-chrome_browser_password__manager_password__store__factory.cc new file mode 100644 index 000000000000..85d3eb4aa9a9 --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_password__manager_password__store__factory.cc @@ -0,0 +1,11 @@ +--- chrome/browser/password_manager/password_store_factory.cc.orig	2019-09-10 11:13:41 UTC ++++ chrome/browser/password_manager/password_store_factory.cc +@@ -302,7 +302,7 @@ PasswordStoreFactory::BuildServiceInstanceFor( +                                                   network_context_getter); +  + #if defined(OS_WIN) || defined(OS_MACOSX) || \ +-    (defined(OS_LINUX) && !defined(OS_CHROMEOS)) ++    (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) +   std::unique_ptr<password_manager::PasswordStoreSigninNotifier> notifier = +       std::make_unique<password_manager::PasswordStoreSigninNotifierImpl>( +           profile); diff --git a/devel/electron6/files/patch-chrome_browser_performance__monitor_process__metrics__history.cc b/devel/electron6/files/patch-chrome_browser_performance__monitor_process__metrics__history.cc new file mode 100644 index 000000000000..60d639e8b91f --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_performance__monitor_process__metrics__history.cc @@ -0,0 +1,38 @@ +--- chrome/browser/performance_monitor/process_metrics_history.cc.orig	2019-09-10 11:13:41 UTC ++++ chrome/browser/performance_monitor/process_metrics_history.cc +@@ -47,7 +47,7 @@ void ProcessMetricsHistory::SampleMetrics() { + #if defined(OS_WIN) +   disk_usage_ = process_metrics_->GetDiskUsageBytesPerSecond(); + #endif +-#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_AIX) ++#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_AIX) || defined(OS_BSD) +   idle_wakeups_ = process_metrics_->GetIdleWakeupsPerSecond(); + #endif + #if defined(OS_MACOSX) +@@ -87,7 +87,7 @@ void ProcessMetricsHistory::RunPerformanceTriggers() { +           kDiskUsageHistogramMin, kDiskUsageHistogramMax, +           kDiskUsageHistogramBucketCount); + #endif +-#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_AIX) ++#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_AIX) || defined(OS_BSD) +       UMA_HISTOGRAM_COUNTS_10000( +           "PerformanceMonitor.IdleWakeups.BrowserProcess", idle_wakeups_); + #endif +@@ -105,7 +105,7 @@ void ProcessMetricsHistory::RunPerformanceTriggers() { +         UMA_HISTOGRAM_BOOLEAN("PerformanceMonitor.HighCPU.RendererProcess", +                               true); +       } +-#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_AIX) ++#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_AIX) || defined(OS_BSD) +       UMA_HISTOGRAM_COUNTS_10000( +           "PerformanceMonitor.IdleWakeups.RendererProcess", idle_wakeups_); + #endif +@@ -122,7 +122,7 @@ void ProcessMetricsHistory::RunPerformanceTriggers() { +                                   kHistogramBucketCount); +       if (cpu_usage_ > kHighCPUUtilizationThreshold) +         UMA_HISTOGRAM_BOOLEAN("PerformanceMonitor.HighCPU.GPUProcess", true); +-#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_AIX) ++#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_AIX) || defined(OS_BSD) +       UMA_HISTOGRAM_COUNTS_10000("PerformanceMonitor.IdleWakeups.GPUProcess", +                                  idle_wakeups_); + #endif diff --git a/devel/electron6/files/patch-chrome_browser_performance__monitor_process__metrics__history.h b/devel/electron6/files/patch-chrome_browser_performance__monitor_process__metrics__history.h new file mode 100644 index 000000000000..0d3a4d09d36e --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_performance__monitor_process__metrics__history.h @@ -0,0 +1,11 @@ +--- chrome/browser/performance_monitor/process_metrics_history.h.orig	2019-09-10 11:13:41 UTC ++++ chrome/browser/performance_monitor/process_metrics_history.h +@@ -72,7 +72,7 @@ class ProcessMetricsHistory { +   uint64_t disk_usage_ = 0; + #endif +  +-#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_AIX) ++#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_AIX) || defined(OS_BSD) +   int idle_wakeups_ = 0; + #endif + #if defined(OS_MACOSX) diff --git a/devel/electron6/files/patch-chrome_browser_platform__util.h b/devel/electron6/files/patch-chrome_browser_platform__util.h new file mode 100644 index 000000000000..4f985533045f --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_platform__util.h @@ -0,0 +1,11 @@ +--- chrome/browser/platform_util.h.orig	2019-09-10 10:42:29 UTC ++++ chrome/browser/platform_util.h +@@ -41,7 +41,7 @@ enum OpenOperationResult { + enum OpenItemType { +   OPEN_FILE, +   OPEN_FOLDER, +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   SHOW_ITEM_IN_FOLDER + #endif + }; diff --git a/devel/electron6/files/patch-chrome_browser_plugins_plugin__info__host__impl.cc b/devel/electron6/files/patch-chrome_browser_plugins_plugin__info__host__impl.cc new file mode 100644 index 000000000000..2efd5767ba74 --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_plugins_plugin__info__host__impl.cc @@ -0,0 +1,11 @@ +--- chrome/browser/plugins/plugin_info_host_impl.cc.orig	2019-09-10 11:13:41 UTC ++++ chrome/browser/plugins/plugin_info_host_impl.cc +@@ -411,7 +411,7 @@ void PluginInfoHostImpl::ComponentPluginLookupDone( +     std::unique_ptr<component_updater::ComponentInfo> cus_plugin_info) { +   if (cus_plugin_info) { +     output->status = chrome::mojom::PluginStatus::kComponentUpdateRequired; +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +     if (cus_plugin_info->version != base::Version("0")) { +       output->status = chrome::mojom::PluginStatus::kRestartRequired; +     } diff --git a/devel/electron6/files/patch-chrome_browser_plugins_plugins__resource__service.cc b/devel/electron6/files/patch-chrome_browser_plugins_plugins__resource__service.cc new file mode 100644 index 000000000000..6ea3237d18c5 --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_plugins_plugins__resource__service.cc @@ -0,0 +1,11 @@ +--- chrome/browser/plugins/plugins_resource_service.cc.orig	2019-09-10 11:13:41 UTC ++++ chrome/browser/plugins/plugins_resource_service.cc +@@ -63,7 +63,7 @@ GURL GetPluginsServerURL() { +   filename = "plugins_win.json"; + #elif defined(OS_CHROMEOS) +   filename = "plugins_chromeos.json"; +-#elif defined(OS_LINUX) ++#elif defined(OS_LINUX) || defined(OS_BSD) +   filename = "plugins_linux.json"; + #elif defined(OS_MACOSX) +   filename = "plugins_mac.json"; diff --git a/devel/electron6/files/patch-chrome_browser_policy_configuration__policy__handler__list__factory.cc b/devel/electron6/files/patch-chrome_browser_policy_configuration__policy__handler__list__factory.cc new file mode 100644 index 000000000000..c4bf9fc723c8 --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_policy_configuration__policy__handler__list__factory.cc @@ -0,0 +1,34 @@ +--- chrome/browser/policy/configuration_policy_handler_list_factory.cc.orig	2019-09-10 11:13:41 UTC ++++ chrome/browser/policy/configuration_policy_handler_list_factory.cc +@@ -109,7 +109,7 @@ + #endif +  + #if defined(OS_WIN) || defined(OS_MACOSX) || \ +-    (defined(OS_LINUX) && !defined(OS_CHROMEOS)) ++    (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) + #include "chrome/browser/browser_switcher/browser_switcher_prefs.h" + #endif +  +@@ -321,11 +321,11 @@ const PolicyToPreferenceMapEntry kSimplePolicyMap[] =  +   { key::kSafeSitesFilterBehavior, +     policy_prefs::kSafeSitesFilterBehavior, +     base::Value::Type::INTEGER}, +-#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_CHROMEOS) ++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_CHROMEOS) || defined(OS_BSD) +   { key::kAuthNegotiateDelegateByKdcPolicy, +     prefs::kAuthNegotiateDelegateByKdcPolicy, +     base::Value::Type::BOOLEAN }, +-#endif  // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_CHROMEOS) ++#endif  // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_CHROMEOS) || defined(OS_BSD) + #if defined(OS_POSIX) +   { key::kNtlmV2Enabled, +     prefs::kNtlmV2Enabled, +@@ -1021,7 +1021,7 @@ const PolicyToPreferenceMapEntry kSimplePolicyMap[] =  +     base::Value::Type::BOOLEAN }, +  + #if defined(OS_WIN) || defined(OS_MACOSX) || \ +-    (defined(OS_LINUX) && !defined(OS_CHROMEOS)) ++    (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) +   { key::kAlternativeBrowserPath, +     browser_switcher::prefs::kAlternativeBrowserPath, +     base::Value::Type::STRING }, diff --git a/devel/electron6/files/patch-chrome_browser_policy_policy__prefs__browsertest.cc b/devel/electron6/files/patch-chrome_browser_policy_policy__prefs__browsertest.cc new file mode 100644 index 000000000000..43c8ae92e4e1 --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_policy_policy__prefs__browsertest.cc @@ -0,0 +1,11 @@ +--- chrome/browser/policy/policy_prefs_browsertest.cc.orig	2019-09-10 11:13:41 UTC ++++ chrome/browser/policy/policy_prefs_browsertest.cc +@@ -183,6 +183,8 @@ class PolicyTestCase { +     const std::string os("chromeos"); + #elif defined(OS_LINUX) +     const std::string os("linux"); ++#elif defined(OS_FREEBSD) ++    const std::string os("freebsd"); + #else + #error "Unknown platform" + #endif diff --git a/devel/electron6/files/patch-chrome_browser_prefs_browser__prefs.cc b/devel/electron6/files/patch-chrome_browser_prefs_browser__prefs.cc new file mode 100644 index 000000000000..a98a5fff5b89 --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_prefs_browser__prefs.cc @@ -0,0 +1,20 @@ +--- chrome/browser/prefs/browser_prefs.cc.orig	2019-09-10 11:13:41 UTC ++++ chrome/browser/prefs/browser_prefs.cc +@@ -338,7 +338,7 @@ + #endif +  + #if defined(OS_WIN) || defined(OS_MACOSX) || \ +-    (defined(OS_LINUX) && !defined(OS_CHROMEOS)) ++    (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) + #include "chrome/browser/browser_switcher/browser_switcher_prefs.h" + #endif +  +@@ -872,7 +872,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySync + #endif +  + #if defined(OS_WIN) || defined(OS_MACOSX) || \ +-    (defined(OS_LINUX) && !defined(OS_CHROMEOS)) ++    (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) +   browser_switcher::BrowserSwitcherPrefs::RegisterProfilePrefs(registry); + #endif +  diff --git a/devel/electron6/files/patch-chrome_browser_prefs_pref__service__incognito__whitelist.cc b/devel/electron6/files/patch-chrome_browser_prefs_pref__service__incognito__whitelist.cc new file mode 100644 index 000000000000..73fb9a2ac2a0 --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_prefs_pref__service__incognito__whitelist.cc @@ -0,0 +1,11 @@ +--- chrome/browser/prefs/pref_service_incognito_whitelist.cc.orig	2019-09-10 11:13:41 UTC ++++ chrome/browser/prefs/pref_service_incognito_whitelist.cc +@@ -183,7 +183,7 @@ const char* const kPersistentPrefNames[] = { +     prefs::kShowFullscreenToolbar, + #endif +  +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS) +     // Toggleing custom frames affects all open windows in the profile, hence +     // should be written to the regular profile when changed in incognito mode. +     prefs::kUseCustomChromeFrame, diff --git a/devel/electron6/files/patch-chrome_browser_process__singleton__posix.cc b/devel/electron6/files/patch-chrome_browser_process__singleton__posix.cc new file mode 100644 index 000000000000..6021f2492e63 --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_process__singleton__posix.cc @@ -0,0 +1,34 @@ +--- chrome/browser/process_singleton_posix.cc.orig	2019-09-10 11:13:41 UTC ++++ chrome/browser/process_singleton_posix.cc +@@ -94,11 +94,11 @@ + #include "net/base/network_interfaces.h" + #include "ui/base/l10n/l10n_util.h" +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + #include "chrome/browser/ui/process_singleton_dialog_linux.h" + #endif +  +-#if defined(TOOLKIT_VIEWS) && defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if defined(TOOLKIT_VIEWS) && (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS) + #include "ui/views/linux_ui/linux_ui.h" + #endif +  +@@ -325,7 +325,7 @@ bool DisplayProfileInUseError(const base::FilePath& lo +   if (g_disable_prompt) +     return g_user_opted_unlock_in_use_profile; +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   base::string16 relaunch_button_text = l10n_util::GetStringUTF16( +       IDS_PROFILE_IN_USE_LINUX_RELAUNCH); +   return ShowProcessSingletonDialog(error, relaunch_button_text); +@@ -901,7 +901,7 @@ ProcessSingleton::NotifyResult ProcessSingleton::Notif +     SendRemoteProcessInteractionResultHistogram(REMOTE_PROCESS_SHUTTING_DOWN); +     return PROCESS_NONE; +   } else if (strncmp(buf, kACKToken, base::size(kACKToken) - 1) == 0) { +-#if defined(TOOLKIT_VIEWS) && defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if defined(TOOLKIT_VIEWS) && (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS) +     // Likely NULL in unit tests. +     views::LinuxUI* linux_ui = views::LinuxUI::instance(); +     if (linux_ui) diff --git a/devel/electron6/files/patch-chrome_browser_profiles_chrome__browser__main__extra__parts__profiles.cc b/devel/electron6/files/patch-chrome_browser_profiles_chrome__browser__main__extra__parts__profiles.cc new file mode 100644 index 000000000000..d44e1d48f224 --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_profiles_chrome__browser__main__extra__parts__profiles.cc @@ -0,0 +1,11 @@ +--- chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc.orig	2019-09-10 11:13:41 UTC ++++ chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc +@@ -330,7 +330,7 @@ void ChromeBrowserMainExtraPartsProfiles:: +   MediaGalleriesPreferencesFactory::GetInstance(); + #endif + #if defined(OS_WIN) || defined(OS_MACOSX) || \ +-    (defined(OS_LINUX) && !defined(OS_CHROMEOS)) ++    (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) +   metrics::DesktopProfileSessionDurationsServiceFactory::GetInstance(); + #endif +   ModelTypeStoreServiceFactory::GetInstance(); diff --git a/devel/electron6/files/patch-chrome_browser_profiles_profile__attributes__entry.cc b/devel/electron6/files/patch-chrome_browser_profiles_profile__attributes__entry.cc new file mode 100644 index 000000000000..334aee2acb6f --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_profiles_profile__attributes__entry.cc @@ -0,0 +1,11 @@ +--- chrome/browser/profiles/profile_attributes_entry.cc.orig	2019-09-10 10:42:29 UTC ++++ chrome/browser/profiles/profile_attributes_entry.cc +@@ -83,7 +83,7 @@ void ProfileAttributesEntry::Initialize(ProfileInfoCac +   if (is_force_signin_enabled_) { +     if (!IsAuthenticated()) +       is_force_signin_profile_locked_ = true; +-#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_WIN) ++#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD) +   } else if (IsSigninRequired()) { +     // Profiles that require signin in the absence of an enterprise policy are +     // left-overs from legacy supervised users. Just unlock them, so users can diff --git a/devel/electron6/files/patch-chrome_browser_renderer__context__menu_render__view__context__menu.cc b/devel/electron6/files/patch-chrome_browser_renderer__context__menu_render__view__context__menu.cc new file mode 100644 index 000000000000..4e31893ed033 --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_renderer__context__menu_render__view__context__menu.cc @@ -0,0 +1,29 @@ +--- chrome/browser/renderer_context_menu/render_view_context_menu.cc.orig	2019-09-10 11:13:41 UTC ++++ chrome/browser/renderer_context_menu/render_view_context_menu.cc +@@ -1672,7 +1672,7 @@ void RenderViewContextMenu::AppendEditableItems() { + // 'Undo' and 'Redo' for text input with no suggestions and no text selected. + // We make an exception for OS X as context clicking will select the closest + // word. In this case both items are always shown. +-#if defined(OS_MACOSX) ++#if defined(OS_MACOSX) || defined(OS_BSD) +   menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_UNDO, +                                   IDS_CONTENT_CONTEXT_UNDO); +   menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_REDO, +@@ -1714,7 +1714,7 @@ void RenderViewContextMenu::AppendLanguageSettings() { +   if (!use_spelling) +     return; +  +-#if defined(OS_MACOSX) ++#if defined(OS_MACOSX) || defined(OS_BSD) +   menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_LANGUAGE_SETTINGS, +                                   IDS_CONTENT_CONTEXT_LANGUAGE_SETTINGS); + #else +@@ -1994,7 +1994,7 @@ bool RenderViewContextMenu::IsCommandIdEnabled(int id) +     case IDC_CHECK_SPELLING_WHILE_TYPING: +       return prefs->GetBoolean(spellcheck::prefs::kSpellCheckEnable); +  +-#if !defined(OS_MACOSX) && defined(OS_POSIX) ++#if !defined(OS_MACOSX) && !defined(OS_BSD) && defined(OS_POSIX) +     // TODO(suzhe): this should not be enabled for password fields. +     case IDC_INPUT_METHODS_MENU: +       return true; diff --git a/devel/electron6/files/patch-chrome_browser_renderer__preferences__util.cc b/devel/electron6/files/patch-chrome_browser_renderer__preferences__util.cc new file mode 100644 index 000000000000..3a399fbf326b --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_renderer__preferences__util.cc @@ -0,0 +1,29 @@ +--- chrome/browser/renderer_preferences_util.cc.orig	2019-09-10 10:42:29 UTC ++++ chrome/browser/renderer_preferences_util.cc +@@ -30,7 +30,7 @@ + #include "ui/base/cocoa/defaults_utils.h" + #endif +  +-#if defined(USE_AURA) && defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if defined(USE_AURA) && (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS) + #include "chrome/browser/themes/theme_service.h" + #include "chrome/browser/themes/theme_service_factory.h" + #include "ui/views/linux_ui/linux_ui.h" +@@ -130,7 +130,7 @@ void UpdateFromSystemSettings(blink::mojom::RendererPr +     prefs->caret_blink_interval = interval; + #endif +  +-#if defined(USE_AURA) && defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if defined(USE_AURA) && (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS) +   views::LinuxUI* linux_ui = views::LinuxUI::instance(); +   if (linux_ui) { +     if (ThemeServiceFactory::GetForProfile(profile)->UsingSystemTheme()) { +@@ -149,7 +149,7 @@ void UpdateFromSystemSettings(blink::mojom::RendererPr +   } + #endif +  +-#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_WIN) ++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_WIN) || defined(OS_BSD) +   content::UpdateFontRendererPreferencesFromSystemSettings(prefs); + #endif +  diff --git a/devel/electron6/files/patch-chrome_browser_resources_safe__browsing_gen__file__type__proto.py b/devel/electron6/files/patch-chrome_browser_resources_safe__browsing_gen__file__type__proto.py new file mode 100644 index 000000000000..ea3dccc6f3c2 --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_resources_safe__browsing_gen__file__type__proto.py @@ -0,0 +1,19 @@ +--- chrome/browser/resources/safe_browsing/gen_file_type_proto.py.orig	2019-09-10 10:42:30 UTC ++++ chrome/browser/resources/safe_browsing/gen_file_type_proto.py +@@ -31,6 +31,7 @@ def PlatformTypes(): +     "android": download_file_types_pb2.DownloadFileType.PLATFORM_ANDROID, +     "chromeos": download_file_types_pb2.DownloadFileType.PLATFORM_CHROME_OS, +     "linux": download_file_types_pb2.DownloadFileType.PLATFORM_LINUX, ++    "bsd": download_file_types_pb2.DownloadFileType.PLATFORM_LINUX, +     "mac": download_file_types_pb2.DownloadFileType.PLATFORM_MAC, +     "win": download_file_types_pb2.DownloadFileType.PLATFORM_WINDOWS, +   } +@@ -169,7 +170,7 @@ class DownloadFileTypeProtoGenerator(BinaryProtoGenera +                       'Outfile must have a %d for version and %s for platform.') +     parser.add_option('-t', '--type', +                       help='The platform type. One of android, chromeos, ' + +-                      'linux, mac, win') ++                      'linux, bsd, mac, win') +  +   def AddExtraCommandLineArgsForVirtualEnvRun(self, opts, command): +     if opts.type is not None: diff --git a/devel/electron6/files/patch-chrome_browser_resources_settings_appearance__page_appearance__browser__proxy.js b/devel/electron6/files/patch-chrome_browser_resources_settings_appearance__page_appearance__browser__proxy.js new file mode 100644 index 000000000000..96a34fa994d2 --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_resources_settings_appearance__page_appearance__browser__proxy.js @@ -0,0 +1,20 @@ +--- chrome/browser/resources/settings/appearance_page/appearance_browser_proxy.js.orig	2019-09-10 11:13:42 UTC ++++ chrome/browser/resources/settings/appearance_page/appearance_browser_proxy.js +@@ -35,7 +35,7 @@ cr.define('settings', function() { +  +     useDefaultTheme() {} +  +-    // <if expr="is_linux and not chromeos"> ++    // <if expr="is_bsd and not chromeos"> +     useSystemTheme() {} +  +     // </if> +@@ -93,7 +93,7 @@ cr.define('settings', function() { +       chrome.send('useDefaultTheme'); +     } +  +-    // <if expr="is_linux and not chromeos"> ++    // <if expr="is_bsd and not chromeos"> +     /** @override */ +     useSystemTheme() { +       chrome.send('useSystemTheme'); diff --git a/devel/electron6/files/patch-chrome_browser_resources_settings_appearance__page_appearance__page.html b/devel/electron6/files/patch-chrome_browser_resources_settings_appearance__page_appearance__page.html new file mode 100644 index 000000000000..304136750d27 --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_resources_settings_appearance__page_appearance__page.html @@ -0,0 +1,29 @@ +--- chrome/browser/resources/settings/appearance_page/appearance_page.html.orig	2019-09-10 11:13:42 UTC ++++ chrome/browser/resources/settings/appearance_page/appearance_page.html +@@ -64,7 +64,7 @@ +           <cr-link-row class="first" hidden="[[!pageVisibility.setTheme]]" +               label="$i18n{themes}" sub-label="[[themeSublabel_]]" +               on-click="openThemeUrl_" external></cr-link-row> +-<if expr="not is_linux or chromeos"> ++<if expr="not is_posix or chromeos"> +           <template is="dom-if" if="[[prefs.extensions.theme.id.value]]"> +             <div class="separator"></div> +             <paper-button id="useDefault" on-click="onUseDefaultTap_" +@@ -73,7 +73,7 @@ +             </paper-button> +           </template> + </if> +-<if expr="is_linux and not chromeos"> ++<if expr="is_posix and not chromeos"> +           <div class="settings-row continuation" +               hidden="[[!showThemesSecondary_( +               prefs.extensions.theme.id.value, useSystemTheme_)]]" +@@ -138,7 +138,7 @@ +             pref="{{prefs.bookmark_bar.show_on_all_tabs}}" +             label="$i18n{showBookmarksBar}"> +         </settings-toggle-button> +-<if expr="is_linux and not chromeos"> ++<if expr="is_posix and not chromeos"> +         <settings-toggle-button +             class$="[[getFirst_(pageVisibility.bookmarksBar)]]" +             pref="{{prefs.browser.custom_chrome_frame}}" diff --git a/devel/electron6/files/patch-chrome_browser_resources_settings_appearance__page_appearance__page.js b/devel/electron6/files/patch-chrome_browser_resources_settings_appearance__page_appearance__page.js new file mode 100644 index 000000000000..7124f1a9c0a4 --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_resources_settings_appearance__page_appearance__page.js @@ -0,0 +1,33 @@ +--- chrome/browser/resources/settings/appearance_page/appearance_page.js.orig	2019-09-10 11:13:42 UTC ++++ chrome/browser/resources/settings/appearance_page/appearance_page.js +@@ -125,7 +125,7 @@ Polymer({ +     'defaultFontSizeChanged_(prefs.webkit.webprefs.default_font_size.value)', +     'themeChanged_(prefs.extensions.theme.id.value, useSystemTheme_)', +  +-    // <if expr="is_linux and not chromeos"> ++    // <if expr="is_bsd and not chromeos"> +     // NOTE: this pref only exists on Linux. +     'useSystemThemePrefChanged_(prefs.extensions.theme.use_system.value)', +     // </if> +@@ -228,7 +228,7 @@ Polymer({ +     this.browserProxy_.useDefaultTheme(); +   }, +  +-  // <if expr="is_linux and not chromeos"> ++  // <if expr="is_bsd and not chromeos"> +   /** +    * @param {boolean} useSystemTheme +    * @private +@@ -304,10 +304,10 @@ Polymer({ +     } +  +     let i18nId; +-    // <if expr="is_linux and not chromeos"> ++    // <if expr="is_bsd and not chromeos"> +     i18nId = useSystemTheme ? 'systemTheme' : 'classicTheme'; +     // </if> +-    // <if expr="not is_linux or chromeos"> ++    // <if expr="not is_bsd or chromeos"> +     i18nId = 'chooseFromWebStore'; +     // </if> +     this.themeSublabel_ = this.i18n(i18nId); diff --git a/devel/electron6/files/patch-chrome_browser_safe__browsing_incident__reporting_incident__handler__util.cc b/devel/electron6/files/patch-chrome_browser_safe__browsing_incident__reporting_incident__handler__util.cc new file mode 100644 index 000000000000..402180c12971 --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_safe__browsing_incident__reporting_incident__handler__util.cc @@ -0,0 +1,15 @@ +--- chrome/browser/safe_browsing/incident_reporting/incident_handler_util.cc.orig	2019-09-10 10:42:30 UTC ++++ chrome/browser/safe_browsing/incident_reporting/incident_handler_util.cc +@@ -8,7 +8,12 @@ +  + #include "base/hash/hash.h" + #include "base/logging.h" ++//XXX(rene) needs shim headers? ++#if defined(USE_SYSTEM_PROTOBUF) ++#include <google/protobuf/message_lite.h> ++#else + #include "third_party/protobuf/src/google/protobuf/message_lite.h" ++#endif +  + namespace safe_browsing { +  diff --git a/devel/electron6/files/patch-chrome_browser_safe__browsing_incident__reporting_incident__reporting__service.cc b/devel/electron6/files/patch-chrome_browser_safe__browsing_incident__reporting_incident__reporting__service.cc new file mode 100644 index 000000000000..59192f39e3d3 --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_safe__browsing_incident__reporting_incident__reporting__service.cc @@ -0,0 +1,11 @@ +--- chrome/browser/safe_browsing/incident_reporting/incident_reporting_service.cc.orig	2019-09-10 11:13:42 UTC ++++ chrome/browser/safe_browsing/incident_reporting/incident_reporting_service.cc +@@ -716,7 +716,7 @@ void IncidentReportingService::OnEnvironmentDataCollec +   environment_collection_pending_ = false; +  + // Process::Current().CreationTime() is missing on some platforms. +-#if defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_LINUX) ++#if defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD) +   base::TimeDelta uptime = +       first_incident_time_ - base::Process::Current().CreationTime(); +   environment_data->mutable_process()->set_uptime_msec(uptime.InMilliseconds()); diff --git a/devel/electron6/files/patch-chrome_browser_search_local__files__ntp__source.cc b/devel/electron6/files/patch-chrome_browser_search_local__files__ntp__source.cc new file mode 100644 index 000000000000..37cccabe590a --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_search_local__files__ntp__source.cc @@ -0,0 +1,16 @@ +--- chrome/browser/search/local_files_ntp_source.cc.orig	2019-09-10 11:13:42 UTC ++++ chrome/browser/search/local_files_ntp_source.cc +@@ -20,8 +20,13 @@ + #include "build/build_config.h" + #include "chrome/common/url_constants.h" + #include "content/public/browser/url_data_source.h" ++#if defined(OS_BSD) ++#include <re2/re2.h> ++#include <re2/stringpiece.h> ++#else + #include "third_party/re2/src/re2/re2.h" + #include "third_party/re2/src/re2/stringpiece.h" ++#endif +  + namespace { +  diff --git a/devel/electron6/files/patch-chrome_browser_send__tab__to__self_receiving__ui__handler__registry.cc b/devel/electron6/files/patch-chrome_browser_send__tab__to__self_receiving__ui__handler__registry.cc new file mode 100644 index 000000000000..9521e61d874d --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_send__tab__to__self_receiving__ui__handler__registry.cc @@ -0,0 +1,20 @@ +--- chrome/browser/send_tab_to_self/receiving_ui_handler_registry.cc.orig	2019-09-10 10:42:30 UTC ++++ chrome/browser/send_tab_to_self/receiving_ui_handler_registry.cc +@@ -11,7 +11,7 @@ + #include "chrome/browser/profiles/profile.h" + #include "chrome/browser/send_tab_to_self/receiving_ui_handler.h" +  +-#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) ++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_BSD) + #include "chrome/browser/send_tab_to_self/desktop_notification_handler.h" + #endif +  +@@ -32,7 +32,7 @@ ReceivingUiHandlerRegistry* ReceivingUiHandlerRegistry + // Instantiates all the handlers relevant to this platform. + void ReceivingUiHandlerRegistry::InstantiatePlatformSpecificHandlers( +     Profile* profile) { +-#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) ++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_BSD) +   applicable_handlers_.push_back( +       std::make_unique<send_tab_to_self::DesktopNotificationHandler>(profile)); + #elif defined(OS_ANDROID) diff --git a/devel/electron6/files/patch-chrome_browser_send__tab__to__self_send__tab__to__self__client__service.cc b/devel/electron6/files/patch-chrome_browser_send__tab__to__self_send__tab__to__self__client__service.cc new file mode 100644 index 000000000000..bc338a2c34e6 --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_send__tab__to__self_send__tab__to__self__client__service.cc @@ -0,0 +1,11 @@ +--- chrome/browser/send_tab_to_self/send_tab_to_self_client_service.cc.orig	2019-09-10 10:42:30 UTC ++++ chrome/browser/send_tab_to_self/send_tab_to_self_client_service.cc +@@ -41,7 +41,7 @@ void SendTabToSelfClientService::SendTabToSelfModelLoa + void SendTabToSelfClientService::EntriesAddedRemotely( +     const std::vector<const SendTabToSelfEntry*>& new_entries) { +   for (const std::unique_ptr<ReceivingUiHandler>& handler : GetHandlers()) { +-#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) ++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_BSD) +     // Only respond to notifications corresponding to this service's profile +     // for these OSes; mobile does not have a Profile. +     // Cast note: on desktop, handlers are guaranteed to be the derived class diff --git a/devel/electron6/files/patch-chrome_browser_signin_signin__util.cc b/devel/electron6/files/patch-chrome_browser_signin_signin__util.cc new file mode 100644 index 000000000000..b80cb996d55d --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_signin_signin__util.cc @@ -0,0 +1,20 @@ +--- chrome/browser/signin/signin_util.cc.orig	2019-09-10 11:13:42 UTC ++++ chrome/browser/signin/signin_util.cc +@@ -33,7 +33,7 @@ + #include "services/identity/public/cpp/primary_account_mutator.h" + #include "ui/base/l10n/l10n_util.h" +  +-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) ++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) + #include "chrome/browser/ui/browser_finder.h" + #include "chrome/browser/ui/browser_list.h" + #include "chrome/browser/ui/browser_list_observer.h" +@@ -45,7 +45,7 @@ namespace { +  + constexpr char kSignoutSettingKey[] = "signout_setting"; +  +-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) ++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) + #define CAN_DELETE_PROFILE + #endif +  diff --git a/devel/electron6/files/patch-chrome_browser_ssl_captive__portal__blocking__page.cc b/devel/electron6/files/patch-chrome_browser_ssl_captive__portal__blocking__page.cc new file mode 100644 index 000000000000..ed56fcf76d33 --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_ssl_captive__portal__blocking__page.cc @@ -0,0 +1,11 @@ +--- chrome/browser/ssl/captive_portal_blocking_page.cc.orig	2019-09-10 11:13:42 UTC ++++ chrome/browser/ssl/captive_portal_blocking_page.cc +@@ -124,7 +124,7 @@ std::string CaptivePortalBlockingPage::GetWiFiSSID() c +   wifi_service->GetConnectedNetworkSSID(&ssid, &error); +   if (!error.empty()) +     return std::string(); +-#elif defined(OS_LINUX) ++#elif defined(OS_LINUX) || defined(OS_BSD) +   ssid = net::GetWifiSSID(); + #elif defined(OS_ANDROID) +   ssid = net::android::GetWifiSSID(); diff --git a/devel/electron6/files/patch-chrome_browser_ssl_ssl__error__controller__client.cc b/devel/electron6/files/patch-chrome_browser_ssl_ssl__error__controller__client.cc new file mode 100644 index 000000000000..7ac4a5134155 --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_ssl_ssl__error__controller__client.cc @@ -0,0 +1,20 @@ +--- chrome/browser/ssl/ssl_error_controller_client.cc.orig	2019-09-10 11:13:43 UTC ++++ chrome/browser/ssl/ssl_error_controller_client.cc +@@ -79,7 +79,7 @@ void LaunchDateAndTimeSettingsImpl() { + #if defined(OS_ANDROID) +   chrome::android::OpenDateAndTimeSettings(); +  +-#elif defined(OS_LINUX) ++#elif defined(OS_LINUX) || defined(OS_BSD) +   struct ClockCommand { +     const char* const pathname; +     const char* const argument; +@@ -218,7 +218,7 @@ void SSLErrorControllerClient::Proceed() { + } +  + bool SSLErrorControllerClient::CanLaunchDateAndTimeSettings() { +-#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_MACOSX) || \ ++#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) || \ +     defined(OS_WIN) +   return true; + #else diff --git a/devel/electron6/files/patch-chrome_browser_sync_chrome__sync__client.cc b/devel/electron6/files/patch-chrome_browser_sync_chrome__sync__client.cc new file mode 100644 index 000000000000..948f7a5c5e42 --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_sync_chrome__sync__client.cc @@ -0,0 +1,20 @@ +--- chrome/browser/sync/chrome_sync_client.cc.orig	2019-09-10 11:13:43 UTC ++++ chrome/browser/sync/chrome_sync_client.cc +@@ -372,7 +372,7 @@ ChromeSyncClient::CreateDataTypeControllers(syncer::Sy +           dump_stack)); + #endif  // BUILDFLAG(ENABLE_APP_LIST) +  +-#if defined(OS_LINUX) || defined(OS_WIN) ++#if defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD) +   // Dictionary sync is enabled by default. +   if (!disabled_types.Has(syncer::DICTIONARY)) { +     controllers.push_back( +@@ -382,7 +382,7 @@ ChromeSyncClient::CreateDataTypeControllers(syncer::Sy +                            base::Unretained(this), syncer::DICTIONARY), +             dump_stack)); +   } +-#endif  // defined(OS_LINUX) || defined(OS_WIN) ++#endif  // defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD) +  + #if defined(OS_CHROMEOS) +   if (arc::IsArcAllowedForProfile(profile_) && diff --git a/devel/electron6/files/patch-chrome_browser_task__manager_sampling_task__group.cc b/devel/electron6/files/patch-chrome_browser_task__manager_sampling_task__group.cc new file mode 100644 index 000000000000..2549ba58e92e --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_task__manager_sampling_task__group.cc @@ -0,0 +1,56 @@ +--- chrome/browser/task_manager/sampling/task_group.cc.orig	2019-09-10 11:13:43 UTC ++++ chrome/browser/task_manager/sampling/task_group.cc +@@ -33,9 +33,9 @@ const int kBackgroundRefreshTypesMask = + #if defined(OS_WIN) +     REFRESH_TYPE_START_TIME | REFRESH_TYPE_CPU_TIME | + #endif  // defined(OS_WIN) +-#if defined(OS_LINUX) || defined(OS_MACOSX) ++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) +     REFRESH_TYPE_FD_COUNT | +-#endif  // defined(OS_LINUX) || defined(OS_MACOSX) ++#endif  // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) + #if BUILDFLAG(ENABLE_NACL) +     REFRESH_TYPE_NACL | + #endif  // BUILDFLAG(ENABLE_NACL) +@@ -114,9 +114,9 @@ TaskGroup::TaskGroup( + #if BUILDFLAG(ENABLE_NACL) +       nacl_debug_stub_port_(nacl::kGdbDebugStubPortUnknown), + #endif  // BUILDFLAG(ENABLE_NACL) +-#if defined(OS_LINUX) || defined(OS_MACOSX) ++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) +       open_fd_count_(-1), +-#endif  // defined(OS_LINUX) || defined(OS_MACOSX) ++#endif  // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) +       idle_wakeups_per_second_(-1), +       gpu_memory_has_duplicates_(false), +       is_backgrounded_(false), +@@ -130,10 +130,10 @@ TaskGroup::TaskGroup( +                    weak_ptr_factory_.GetWeakPtr()), +         base::Bind(&TaskGroup::OnIdleWakeupsRefreshDone, +                    weak_ptr_factory_.GetWeakPtr()), +-#if defined(OS_LINUX) || defined(OS_MACOSX) ++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) +         base::Bind(&TaskGroup::OnOpenFdCountRefreshDone, +                    weak_ptr_factory_.GetWeakPtr()), +-#endif  // defined(OS_LINUX) || defined(OS_MACOSX) ++#endif  // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) +         base::Bind(&TaskGroup::OnProcessPriorityDone, +                    weak_ptr_factory_.GetWeakPtr())); +  +@@ -301,14 +301,14 @@ void TaskGroup::OnRefreshNaClDebugStubPortDone(int nac + } + #endif  // BUILDFLAG(ENABLE_NACL) +  +-#if defined(OS_LINUX) || defined(OS_MACOSX) ++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) + void TaskGroup::OnOpenFdCountRefreshDone(int open_fd_count) { +   DCHECK_CURRENTLY_ON(content::BrowserThread::UI); +  +   open_fd_count_ = open_fd_count; +   OnBackgroundRefreshTypeFinished(REFRESH_TYPE_FD_COUNT); + } +-#endif  // defined(OS_LINUX) || defined(OS_MACOSX) ++#endif  // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) +  + void TaskGroup::OnCpuRefreshDone(double cpu_usage) { +   DCHECK_CURRENTLY_ON(content::BrowserThread::UI); diff --git a/devel/electron6/files/patch-chrome_browser_task__manager_sampling_task__group.h b/devel/electron6/files/patch-chrome_browser_task__manager_sampling_task__group.h new file mode 100644 index 000000000000..1a29f1d67f58 --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_task__manager_sampling_task__group.h @@ -0,0 +1,48 @@ +--- chrome/browser/task_manager/sampling/task_group.h.orig	2019-09-10 11:13:43 UTC ++++ chrome/browser/task_manager/sampling/task_group.h +@@ -36,7 +36,7 @@ constexpr int kUnsupportedVMRefreshFlags = +     REFRESH_TYPE_WEBCACHE_STATS | REFRESH_TYPE_NETWORK_USAGE | +     REFRESH_TYPE_NACL | REFRESH_TYPE_IDLE_WAKEUPS | REFRESH_TYPE_HANDLES | +     REFRESH_TYPE_START_TIME | REFRESH_TYPE_CPU_TIME | REFRESH_TYPE_PRIORITY | +-#if defined(OS_LINUX) || defined(OS_MACOSX) ++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) +     REFRESH_TYPE_FD_COUNT | + #endif +     REFRESH_TYPE_HARD_FAULTS; +@@ -119,9 +119,9 @@ class TaskGroup { +   int nacl_debug_stub_port() const { return nacl_debug_stub_port_; } + #endif  // BUILDFLAG(ENABLE_NACL) +  +-#if defined(OS_LINUX) || defined(OS_MACOSX) ++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) +   int open_fd_count() const { return open_fd_count_; } +-#endif  // defined(OS_LINUX) || defined(OS_MACOSX) ++#endif  // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) +  +   int idle_wakeups_per_second() const { return idle_wakeups_per_second_; } +  +@@ -135,9 +135,9 @@ class TaskGroup { +   void RefreshNaClDebugStubPort(int child_process_unique_id); +   void OnRefreshNaClDebugStubPortDone(int port); + #endif +-#if defined(OS_LINUX) || defined(OS_MACOSX) ++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) +   void OnOpenFdCountRefreshDone(int open_fd_count); +-#endif  // defined(OS_LINUX) || defined(OS_MACOSX) ++#endif  // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) +  +   void OnCpuRefreshDone(double cpu_usage); +   void OnSwappedMemRefreshDone(int64_t swapped_mem_bytes); +@@ -206,10 +206,10 @@ class TaskGroup { + #if BUILDFLAG(ENABLE_NACL) +   int nacl_debug_stub_port_; + #endif  // BUILDFLAG(ENABLE_NACL) +-#if defined(OS_LINUX) || defined(OS_MACOSX) ++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) +   // The number of file descriptors currently open by the process. +   int open_fd_count_; +-#endif  // defined(OS_LINUX) || defined(OS_MACOSX) ++#endif  // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) +   int idle_wakeups_per_second_; +   bool gpu_memory_has_duplicates_; +   bool is_backgrounded_; diff --git a/devel/electron6/files/patch-chrome_browser_task__manager_sampling_task__group__sampler.cc b/devel/electron6/files/patch-chrome_browser_task__manager_sampling_task__group__sampler.cc new file mode 100644 index 000000000000..cee676d9b408 --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_task__manager_sampling_task__group__sampler.cc @@ -0,0 +1,72 @@ +--- chrome/browser/task_manager/sampling/task_group_sampler.cc.orig	2019-09-10 11:13:43 UTC ++++ chrome/browser/task_manager/sampling/task_group_sampler.cc +@@ -43,9 +43,9 @@ TaskGroupSampler::TaskGroupSampler( +     const OnCpuRefreshCallback& on_cpu_refresh, +     const OnSwappedMemRefreshCallback& on_swapped_mem_refresh, +     const OnIdleWakeupsCallback& on_idle_wakeups, +-#if defined(OS_LINUX) || defined(OS_MACOSX) ++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) +     const OnOpenFdCountCallback& on_open_fd_count, +-#endif  // defined(OS_LINUX) || defined(OS_MACOSX) ++#endif  // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) +     const OnProcessPriorityCallback& on_process_priority) +     : process_(std::move(process)), +       process_metrics_(CreateProcessMetrics(process_.Handle())), +@@ -53,9 +53,9 @@ TaskGroupSampler::TaskGroupSampler( +       on_cpu_refresh_callback_(on_cpu_refresh), +       on_swapped_mem_refresh_callback_(on_swapped_mem_refresh), +       on_idle_wakeups_callback_(on_idle_wakeups), +-#if defined(OS_LINUX) || defined(OS_MACOSX) ++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) +       on_open_fd_count_callback_(on_open_fd_count), +-#endif  // defined(OS_LINUX) || defined(OS_MACOSX) ++#endif  // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) +       on_process_priority_callback_(on_process_priority) { +   DCHECK(blocking_pool_runner.get()); +  +@@ -86,7 +86,7 @@ void TaskGroupSampler::Refresh(int64_t refresh_flags)  +         on_swapped_mem_refresh_callback_); +   } +  +-#if defined(OS_MACOSX) || defined(OS_LINUX) ++#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) +   if (TaskManagerObserver::IsResourceRefreshEnabled(REFRESH_TYPE_IDLE_WAKEUPS, +                                                     refresh_flags)) { +     base::PostTaskAndReplyWithResult( +@@ -95,9 +95,9 @@ void TaskGroupSampler::Refresh(int64_t refresh_flags)  +         base::Bind(&TaskGroupSampler::RefreshIdleWakeupsPerSecond, this), +         on_idle_wakeups_callback_); +   } +-#endif  // defined(OS_MACOSX) || defined(OS_LINUX) ++#endif  // defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) +  +-#if defined(OS_LINUX) || defined(OS_MACOSX) ++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) +   if (TaskManagerObserver::IsResourceRefreshEnabled(REFRESH_TYPE_FD_COUNT, +                                                     refresh_flags)) { +     base::PostTaskAndReplyWithResult( +@@ -106,7 +106,7 @@ void TaskGroupSampler::Refresh(int64_t refresh_flags)  +         base::Bind(&TaskGroupSampler::RefreshOpenFdCount, this), +         on_open_fd_count_callback_); +   } +-#endif  // defined(OS_LINUX) || defined(OS_MACOSX) ++#endif  // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) +  +   if (TaskManagerObserver::IsResourceRefreshEnabled(REFRESH_TYPE_PRIORITY, +                                                     refresh_flags)) { +@@ -151,13 +151,13 @@ int TaskGroupSampler::RefreshIdleWakeupsPerSecond() { +   return process_metrics_->GetIdleWakeupsPerSecond(); + } +  +-#if defined(OS_LINUX) || defined(OS_MACOSX) ++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) + int TaskGroupSampler::RefreshOpenFdCount() { +   DCHECK(worker_pool_sequenced_checker_.CalledOnValidSequence()); +  +   return process_metrics_->GetOpenFdCount(); + } +-#endif  // defined(OS_LINUX) || defined(OS_MACOSX) ++#endif  // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) +  + bool TaskGroupSampler::RefreshProcessPriority() { +   DCHECK(worker_pool_sequenced_checker_.CalledOnValidSequence()); diff --git a/devel/electron6/files/patch-chrome_browser_task__manager_sampling_task__group__sampler.h b/devel/electron6/files/patch-chrome_browser_task__manager_sampling_task__group__sampler.h new file mode 100644 index 000000000000..10dabafa003a --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_task__manager_sampling_task__group__sampler.h @@ -0,0 +1,50 @@ +--- chrome/browser/task_manager/sampling/task_group_sampler.h.orig	2019-09-10 10:42:30 UTC ++++ chrome/browser/task_manager/sampling/task_group_sampler.h +@@ -32,9 +32,9 @@ class TaskGroupSampler : public base::RefCountedThread +   using OnCpuRefreshCallback = base::Callback<void(double)>; +   using OnSwappedMemRefreshCallback = base::Callback<void(int64_t)>; +   using OnIdleWakeupsCallback = base::Callback<void(int)>; +-#if defined(OS_LINUX) || defined(OS_MACOSX) ++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) +   using OnOpenFdCountCallback = base::Callback<void(int)>; +-#endif  // defined(OS_LINUX) || defined(OS_MACOSX) ++#endif  // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) +   using OnProcessPriorityCallback = base::Callback<void(bool)>; +  +   TaskGroupSampler( +@@ -43,9 +43,9 @@ class TaskGroupSampler : public base::RefCountedThread +       const OnCpuRefreshCallback& on_cpu_refresh, +       const OnSwappedMemRefreshCallback& on_memory_refresh, +       const OnIdleWakeupsCallback& on_idle_wakeups, +-#if defined(OS_LINUX) || defined(OS_MACOSX) ++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) +       const OnOpenFdCountCallback& on_open_fd_count, +-#endif  // defined(OS_LINUX) || defined(OS_MACOSX) ++#endif  // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) +       const OnProcessPriorityCallback& on_process_priority); +  +   // Refreshes the expensive process' stats (CPU usage, memory usage, and idle +@@ -60,9 +60,9 @@ class TaskGroupSampler : public base::RefCountedThread +   double RefreshCpuUsage(); +   int64_t RefreshSwappedMem(); +   int RefreshIdleWakeupsPerSecond(); +-#if defined(OS_LINUX) || defined(OS_MACOSX) ++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) +   int RefreshOpenFdCount(); +-#endif  // defined(OS_LINUX) || defined(OS_MACOSX) ++#endif  // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) +   bool RefreshProcessPriority(); +  +   // The process that holds the handle that we own so that we can use it for +@@ -84,9 +84,9 @@ class TaskGroupSampler : public base::RefCountedThread +   const OnCpuRefreshCallback on_cpu_refresh_callback_; +   const OnSwappedMemRefreshCallback on_swapped_mem_refresh_callback_; +   const OnIdleWakeupsCallback on_idle_wakeups_callback_; +-#if defined(OS_LINUX) || defined(OS_MACOSX) ++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) +   const OnOpenFdCountCallback on_open_fd_count_callback_; +-#endif  // defined(OS_LINUX) || defined(OS_MACOSX) ++#endif  // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) +   const OnProcessPriorityCallback on_process_priority_callback_; +  +   // To assert we're running on the correct thread. diff --git a/devel/electron6/files/patch-chrome_browser_task__manager_sampling_task__manager__impl.cc b/devel/electron6/files/patch-chrome_browser_task__manager_sampling_task__manager__impl.cc new file mode 100644 index 000000000000..2baf596031da --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_task__manager_sampling_task__manager__impl.cc @@ -0,0 +1,16 @@ +--- chrome/browser/task_manager/sampling/task_manager_impl.cc.orig	2019-09-10 11:13:43 UTC ++++ chrome/browser/task_manager/sampling/task_manager_impl.cc +@@ -210,11 +210,11 @@ void TaskManagerImpl::GetUSERHandles(TaskId task_id, + } +  + int TaskManagerImpl::GetOpenFdCount(TaskId task_id) const { +-#if defined(OS_LINUX) || defined(OS_MACOSX) ++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) +   return GetTaskGroupByTaskId(task_id)->open_fd_count(); + #else +   return -1; +-#endif  // defined(OS_LINUX) || defined(OS_MACOSX) ++#endif  // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) + } +  + bool TaskManagerImpl::IsTaskOnBackgroundedProcess(TaskId task_id) const { diff --git a/devel/electron6/files/patch-chrome_browser_task__manager_task__manager__observer.h b/devel/electron6/files/patch-chrome_browser_task__manager_task__manager__observer.h new file mode 100644 index 000000000000..6af6b1489594 --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_task__manager_task__manager__observer.h @@ -0,0 +1,16 @@ +--- chrome/browser/task_manager/task_manager_observer.h.orig	2019-09-10 10:42:30 UTC ++++ chrome/browser/task_manager/task_manager_observer.h +@@ -43,11 +43,11 @@ enum RefreshType { +   // or backgrounded. +   REFRESH_TYPE_PRIORITY = 1 << 13, +  +-#if defined(OS_LINUX) || defined(OS_MACOSX) ++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) +   // For observers interested in getting the number of open file descriptors of +   // processes. +   REFRESH_TYPE_FD_COUNT = 1 << 14, +-#endif  // defined(OS_LINUX) || defined(OS_MACOSX) ++#endif  // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) +  +   REFRESH_TYPE_KEEPALIVE_COUNT = 1 << 15, +   REFRESH_TYPE_MEMORY_FOOTPRINT = 1 << 16, diff --git a/devel/electron6/files/patch-chrome_browser_tracing_crash__service__uploader.cc b/devel/electron6/files/patch-chrome_browser_tracing_crash__service__uploader.cc new file mode 100644 index 000000000000..5dae904c84de --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_tracing_crash__service__uploader.cc @@ -0,0 +1,11 @@ +--- chrome/browser/tracing/crash_service_uploader.cc.orig	2019-09-10 11:13:43 UTC ++++ chrome/browser/tracing/crash_service_uploader.cc +@@ -162,6 +162,8 @@ void TraceCrashServiceUploader::DoCompressOnBackground +   const char product[] = "Chrome_Linux"; + #elif defined(OS_ANDROID) +   const char product[] = "Chrome_Android"; ++#elif defined(OS_FREEBSD) ++  const char product[] = "Chrome_FreeBSD"; + #else + #error Platform not supported. + #endif diff --git a/devel/electron6/files/patch-chrome_browser_ui_browser__command__controller.cc b/devel/electron6/files/patch-chrome_browser_ui_browser__command__controller.cc new file mode 100644 index 000000000000..7fef540bcfc7 --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_ui_browser__command__controller.cc @@ -0,0 +1,38 @@ +--- chrome/browser/ui/browser_command_controller.cc.orig	2019-09-10 11:13:43 UTC ++++ chrome/browser/ui/browser_command_controller.cc +@@ -81,7 +81,7 @@ + #include "chrome/browser/ui/browser_commands_chromeos.h" + #endif +  +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS) + #include "ui/base/ime/linux/text_edit_key_bindings_delegate_auralinux.h" + #endif +  +@@ -251,7 +251,7 @@ bool BrowserCommandController::IsReservedCommandOrKey( + #endif +   } +  +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS) +   // If this key was registered by the user as a content editing hotkey, then +   // it is not reserved. +   ui::TextEditKeyBindingsDelegateAuraLinux* delegate = +@@ -461,7 +461,7 @@ bool BrowserCommandController::ExecuteCommandWithDispo +       break; + #endif +  +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS) +     case IDC_MINIMIZE_WINDOW: +       browser_->window()->Minimize(); +       break; +@@ -911,7 +911,7 @@ void BrowserCommandController::InitCommandState() { +   command_updater_.UpdateCommandEnabled(IDC_VISIT_DESKTOP_OF_LRU_USER_2, true); +   command_updater_.UpdateCommandEnabled(IDC_VISIT_DESKTOP_OF_LRU_USER_3, true); + #endif +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS) +   command_updater_.UpdateCommandEnabled(IDC_MINIMIZE_WINDOW, true); +   command_updater_.UpdateCommandEnabled(IDC_MAXIMIZE_WINDOW, true); +   command_updater_.UpdateCommandEnabled(IDC_RESTORE_WINDOW, true); diff --git a/devel/electron6/files/patch-chrome_browser_ui_browser__view__prefs.cc b/devel/electron6/files/patch-chrome_browser_ui_browser__view__prefs.cc new file mode 100644 index 000000000000..662bc0244e87 --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_ui_browser__view__prefs.cc @@ -0,0 +1,20 @@ +--- chrome/browser/ui/browser_view_prefs.cc.orig	2019-09-10 10:42:30 UTC ++++ chrome/browser/ui/browser_view_prefs.cc +@@ -34,7 +34,7 @@ void RegisterBrowserViewLocalPrefs(PrefRegistrySimple* +  + void RegisterBrowserViewProfilePrefs( +     user_prefs::PrefRegistrySyncable* registry) { +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) +   bool custom_frame_pref_default = false; + #if defined(USE_X11) +   custom_frame_pref_default = ui::GetCustomFramePrefDefault(); +@@ -45,7 +45,7 @@ void RegisterBrowserViewProfilePrefs( + #endif +   registry->RegisterBooleanPref(prefs::kUseCustomChromeFrame, +                                 custom_frame_pref_default); +-#endif  // OS_LINUX && !OS_CHROMEOS ++#endif  // (OS_LINUX && !OS_CHROMEOS) || defined(OS_BSD) + } +  + void MigrateBrowserTabStripPrefs(PrefService* prefs) { diff --git a/devel/electron6/files/patch-chrome_browser_ui_browser__window.h b/devel/electron6/files/patch-chrome_browser_ui_browser__window.h new file mode 100644 index 000000000000..5d4fa3f0f891 --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_ui_browser__window.h @@ -0,0 +1,11 @@ +--- chrome/browser/ui/browser_window.h.orig	2019-09-10 11:13:43 UTC ++++ chrome/browser/ui/browser_window.h +@@ -448,7 +448,7 @@ class BrowserWindow : public ui::BaseWindow { +       bool is_source_keyboard) = 0; +  + #if defined(OS_CHROMEOS) || defined(OS_MACOSX) || defined(OS_WIN) || \ +-    defined(OS_LINUX) ++    defined(OS_LINUX) || defined(OS_BSD) +   virtual void ShowHatsBubbleFromAppMenuButton() = 0; + #endif +  diff --git a/devel/electron6/files/patch-chrome_browser_ui_exclusive__access_exclusive__access__bubble.cc b/devel/electron6/files/patch-chrome_browser_ui_exclusive__access_exclusive__access__bubble.cc new file mode 100644 index 000000000000..ae97a01055ef --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_ui_exclusive__access_exclusive__access__bubble.cc @@ -0,0 +1,11 @@ +--- chrome/browser/ui/exclusive_access/exclusive_access_bubble.cc.orig	2019-09-10 10:42:30 UTC ++++ chrome/browser/ui/exclusive_access/exclusive_access_bubble.cc +@@ -16,7 +16,7 @@ +  + // NOTE(koz): Linux doesn't use the thick shadowed border, so we add padding + // here. +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + const int ExclusiveAccessBubble::kPaddingPx = 8; + #else + const int ExclusiveAccessBubble::kPaddingPx = 15; diff --git a/devel/electron6/files/patch-chrome_browser_ui_input__method_input__method__engine__base.cc b/devel/electron6/files/patch-chrome_browser_ui_input__method_input__method__engine__base.cc new file mode 100644 index 000000000000..3a712c6f0eb6 --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_ui_input__method_input__method__engine__base.cc @@ -0,0 +1,11 @@ +--- chrome/browser/ui/input_method/input_method_engine_base.cc.orig	2019-09-10 11:13:43 UTC ++++ chrome/browser/ui/input_method/input_method_engine_base.cc +@@ -30,7 +30,7 @@ + #include "ui/base/ime/chromeos/ime_keymap.h" + #elif defined(OS_WIN) + #include "ui/events/keycodes/keyboard_codes_win.h" +-#elif defined(OS_LINUX) ++#elif defined(OS_LINUX) || defined(OS_BSD) + #include "ui/events/keycodes/keyboard_codes_posix.h" + #endif +  diff --git a/devel/electron6/files/patch-chrome_browser_ui_libgtkui_print__dialog__gtk.cc b/devel/electron6/files/patch-chrome_browser_ui_libgtkui_print__dialog__gtk.cc new file mode 100644 index 000000000000..3f90d355f9f8 --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_ui_libgtkui_print__dialog__gtk.cc @@ -0,0 +1,10 @@ +--- chrome/browser/ui/libgtkui/print_dialog_gtk.cc.orig	2019-09-10 11:13:43 UTC ++++ chrome/browser/ui/libgtkui/print_dialog_gtk.cc +@@ -333,6 +333,7 @@ void PrintDialogGtk::ShowDialog( +   // Since we only generate PDF, only show printers that support PDF. +   // TODO(thestig) Add more capabilities to support? +   GtkPrintCapabilities cap = static_cast<GtkPrintCapabilities>( ++      GTK_PRINT_CAPABILITY_GENERATE_PS | +       GTK_PRINT_CAPABILITY_GENERATE_PDF | +       GTK_PRINT_CAPABILITY_PAGE_SET | +       GTK_PRINT_CAPABILITY_COPIES | diff --git a/devel/electron6/files/patch-chrome_browser_ui_sad__tab.cc b/devel/electron6/files/patch-chrome_browser_ui_sad__tab.cc new file mode 100644 index 000000000000..c854cf547faf --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_ui_sad__tab.cc @@ -0,0 +1,11 @@ +--- chrome/browser/ui/sad_tab.cc.orig	2019-09-10 11:13:43 UTC ++++ chrome/browser/ui/sad_tab.cc +@@ -180,7 +180,7 @@ std::vector<int> SadTab::GetSubMessages() { +       // Only show incognito suggestion if not already in Incognito mode. +       if (!web_contents_->GetBrowserContext()->IsOffTheRecord()) +         message_ids.insert(message_ids.begin(), IDS_SAD_TAB_RELOAD_INCOGNITO); +-#if defined(OS_MACOSX) || defined(OS_LINUX) ++#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) +       // Note: on macOS, Linux and ChromeOS, the first bullet is either one of +       // IDS_SAD_TAB_RELOAD_CLOSE_TABS or IDS_SAD_TAB_RELOAD_CLOSE_NOTABS +       // followed by one of the above suggestions. diff --git a/devel/electron6/files/patch-chrome_browser_ui_startup_bad__flags__prompt.cc b/devel/electron6/files/patch-chrome_browser_ui_startup_bad__flags__prompt.cc new file mode 100644 index 000000000000..486260ec53b0 --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_ui_startup_bad__flags__prompt.cc @@ -0,0 +1,11 @@ +--- chrome/browser/ui/startup/bad_flags_prompt.cc.orig	2019-09-10 11:13:43 UTC ++++ chrome/browser/ui/startup/bad_flags_prompt.cc +@@ -88,7 +88,7 @@ static const char* kBadFlags[] = { +     extensions::switches::kExtensionsOnChromeURLs, + #endif +  +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS) +     // Speech dispatcher is buggy, it can crash and it can make Chrome freeze. +     // http://crbug.com/327295 +     switches::kEnableSpeechDispatcher, diff --git a/devel/electron6/files/patch-chrome_browser_ui_startup_startup__browser__creator.cc b/devel/electron6/files/patch-chrome_browser_ui_startup_startup__browser__creator.cc new file mode 100644 index 000000000000..a04b15d16e3b --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_ui_startup_startup__browser__creator.cc @@ -0,0 +1,22 @@ +--- chrome/browser/ui/startup/startup_browser_creator.cc.orig	2019-09-10 11:13:43 UTC ++++ chrome/browser/ui/startup/startup_browser_creator.cc +@@ -82,7 +82,7 @@ + #include "chrome/browser/ui/user_manager.h" + #endif +  +-#if defined(TOOLKIT_VIEWS) && defined(OS_LINUX) ++#if defined(TOOLKIT_VIEWS) && (defined(OS_LINUX) || defined(OS_BSD)) + #include "ui/events/devices/x11/touch_factory_x11.h"  // nogncheck + #endif +  +@@ -663,8 +663,10 @@ bool StartupBrowserCreator::ProcessCmdLineImpl( +   } + #endif  // OS_CHROMEOS +  ++#if 0 /* XXX */ + #if defined(TOOLKIT_VIEWS) && defined(USE_X11) +   ui::TouchFactory::SetTouchDeviceListFromCommandLine(); ++#endif + #endif +  + #if defined(OS_MACOSX) diff --git a/devel/electron6/files/patch-chrome_browser_ui_tab__helpers.cc b/devel/electron6/files/patch-chrome_browser_ui_tab__helpers.cc new file mode 100644 index 000000000000..d6b26a736d65 --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_ui_tab__helpers.cc @@ -0,0 +1,25 @@ +--- chrome/browser/ui/tab_helpers.cc.orig	2019-09-10 11:13:43 UTC ++++ chrome/browser/ui/tab_helpers.cc +@@ -119,7 +119,7 @@ + #include "components/zoom/zoom_controller.h" + #endif  // defined(OS_ANDROID) +  +-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) ++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) + #include "chrome/browser/ui/blocked_content/framebust_block_tab_helper.h" + #include "chrome/browser/ui/hats/hats_helper.h" + #endif +@@ -307,11 +307,11 @@ void TabHelpers::AttachTabHelpers(WebContents* web_con + #endif +  + #if defined(OS_WIN) || defined(OS_MACOSX) || \ +-    (defined(OS_LINUX) && !defined(OS_CHROMEOS)) ++    (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) +   metrics::DesktopSessionDurationObserver::CreateForWebContents(web_contents); + #endif +  +-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) ++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) +   if (base::FeatureList::IsEnabled( +           features::kHappinessTrackingSurveysForDesktop)) { +     HatsHelper::CreateForWebContents(web_contents); diff --git a/devel/electron6/files/patch-chrome_browser_ui_task__manager_task__manager__columns.cc b/devel/electron6/files/patch-chrome_browser_ui_task__manager_task__manager__columns.cc new file mode 100644 index 000000000000..a574d6c70a1c --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_ui_task__manager_task__manager__columns.cc @@ -0,0 +1,15 @@ +--- chrome/browser/ui/task_manager/task_manager_columns.cc.orig	2019-09-10 10:42:31 UTC ++++ chrome/browser/ui/task_manager/task_manager_columns.cc +@@ -93,10 +93,10 @@ const TableColumnData kColumns[] = { +      base::size("100000") * kCharWidth, -1, true, false, false}, + #endif +  +-#if defined(OS_LINUX) || defined(OS_MACOSX) ++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) +     {IDS_TASK_MANAGER_OPEN_FD_COUNT_COLUMN, ui::TableColumn::RIGHT, -1, 0, +      base::size("999") * kCharWidth, -1, true, false, false}, +-#endif  // defined(OS_LINUX) || defined(OS_MACOSX) ++#endif  // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) +     {IDS_TASK_MANAGER_PROCESS_PRIORITY_COLUMN, ui::TableColumn::LEFT, -1, 0, +      base::size("background") * kCharWidth, -1, true, true, false}, +     {IDS_TASK_MANAGER_KEEPALIVE_COUNT_COLUMN, ui::TableColumn::RIGHT, -1, 0, diff --git a/devel/electron6/files/patch-chrome_browser_ui_task__manager_task__manager__table__model.cc b/devel/electron6/files/patch-chrome_browser_ui_task__manager_task__manager__table__model.cc new file mode 100644 index 000000000000..4c4a1fd013c2 --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_ui_task__manager_task__manager__table__model.cc @@ -0,0 +1,50 @@ +--- chrome/browser/ui/task_manager/task_manager_table_model.cc.orig	2019-09-10 10:42:31 UTC ++++ chrome/browser/ui/task_manager/task_manager_table_model.cc +@@ -451,13 +451,13 @@ base::string16 TaskManagerTableModel::GetText(int row, +           ? stringifier_->backgrounded_string() +           : stringifier_->foregrounded_string(); +  +-#if defined(OS_LINUX) || defined(OS_MACOSX) ++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) +     case IDS_TASK_MANAGER_OPEN_FD_COUNT_COLUMN: { +       const int fd_count = observed_task_manager()->GetOpenFdCount(tasks_[row]); +       return fd_count >= 0 ? base::FormatNumber(fd_count) +                            : stringifier_->n_a_string(); +     } +-#endif  // defined(OS_LINUX) || defined(OS_MACOSX) ++#endif  // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) +  +     case IDS_TASK_MANAGER_KEEPALIVE_COUNT_COLUMN: { +       return stringifier_->GetKeepaliveCountText( +@@ -617,7 +617,7 @@ int TaskManagerTableModel::CompareValues(int row1, +       return BooleanCompare(is_proc1_bg, is_proc2_bg); +     } +  +-#if defined(OS_LINUX) || defined(OS_MACOSX) ++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) +     case IDS_TASK_MANAGER_OPEN_FD_COUNT_COLUMN: { +       const int proc1_fd_count = +           observed_task_manager()->GetOpenFdCount(tasks_[row1]); +@@ -625,7 +625,7 @@ int TaskManagerTableModel::CompareValues(int row1, +           observed_task_manager()->GetOpenFdCount(tasks_[row2]); +       return ValueCompare(proc1_fd_count, proc2_fd_count); +     } +-#endif  // defined(OS_LINUX) || defined(OS_MACOSX) ++#endif  // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) +  +     default: +       NOTREACHED(); +@@ -791,11 +791,11 @@ void TaskManagerTableModel::UpdateRefreshTypes(int col +       type = REFRESH_TYPE_KEEPALIVE_COUNT; +       break; +  +-#if defined(OS_LINUX) || defined(OS_MACOSX) ++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) +     case IDS_TASK_MANAGER_OPEN_FD_COUNT_COLUMN: +       type = REFRESH_TYPE_FD_COUNT; +       break; +-#endif  // defined(OS_LINUX) || defined(OS_MACOSX) ++#endif  // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) +  +     default: +       NOTREACHED(); diff --git a/devel/electron6/files/patch-chrome_browser_ui_toolbar_app__menu__model.cc b/devel/electron6/files/patch-chrome_browser_ui_toolbar_app__menu__model.cc new file mode 100644 index 000000000000..baa7c460cec5 --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_ui_toolbar_app__menu__model.cc @@ -0,0 +1,11 @@ +--- chrome/browser/ui/toolbar/app_menu_model.cc.orig	2019-09-10 11:13:43 UTC ++++ chrome/browser/ui/toolbar/app_menu_model.cc +@@ -671,7 +671,7 @@ bool AppMenuModel::IsCommandIdVisible(int command_id)  +       return app_menu_icon_controller_->GetTypeAndSeverity().type == +              AppMenuIconController::IconType::UPGRADE_NOTIFICATION; +     } +-#if !defined(OS_LINUX) || defined(USE_AURA) ++#if (!defined(OS_LINUX) && !defined(OS_BSD)) || defined(USE_AURA) +     case IDC_BOOKMARK_PAGE: +       return !chrome::ShouldRemoveBookmarkThisPageUI(browser_->profile()); +     case IDC_BOOKMARK_ALL_TABS: diff --git a/devel/electron6/files/patch-chrome_browser_ui_views_accelerator__table.cc b/devel/electron6/files/patch-chrome_browser_ui_views_accelerator__table.cc new file mode 100644 index 000000000000..76a1d927fa1b --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_ui_views_accelerator__table.cc @@ -0,0 +1,46 @@ +--- chrome/browser/ui/views/accelerator_table.cc.orig	2019-09-10 11:13:43 UTC ++++ chrome/browser/ui/views/accelerator_table.cc +@@ -50,7 +50,7 @@ const AcceleratorMapping kAcceleratorMap[] = { +     {ui::VKEY_S, ui::EF_PLATFORM_ACCELERATOR, IDC_SAVE_PAGE}, +     {ui::VKEY_9, ui::EF_PLATFORM_ACCELERATOR, IDC_SELECT_LAST_TAB}, +     {ui::VKEY_NUMPAD9, ui::EF_PLATFORM_ACCELERATOR, IDC_SELECT_LAST_TAB}, +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS) +     {ui::VKEY_9, ui::EF_ALT_DOWN, IDC_SELECT_LAST_TAB}, +     {ui::VKEY_NUMPAD9, ui::EF_ALT_DOWN, IDC_SELECT_LAST_TAB}, +     {ui::VKEY_NEXT, ui::EF_CONTROL_DOWN | ui::EF_SHIFT_DOWN, IDC_MOVE_TAB_NEXT}, +@@ -80,7 +80,7 @@ const AcceleratorMapping kAcceleratorMap[] = { +     {ui::VKEY_NUMPAD7, ui::EF_PLATFORM_ACCELERATOR, IDC_SELECT_TAB_6}, +     {ui::VKEY_8, ui::EF_PLATFORM_ACCELERATOR, IDC_SELECT_TAB_7}, +     {ui::VKEY_NUMPAD8, ui::EF_PLATFORM_ACCELERATOR, IDC_SELECT_TAB_7}, +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS) +     {ui::VKEY_1, ui::EF_ALT_DOWN, IDC_SELECT_TAB_0}, +     {ui::VKEY_NUMPAD1, ui::EF_ALT_DOWN, IDC_SELECT_TAB_0}, +     {ui::VKEY_2, ui::EF_ALT_DOWN, IDC_SELECT_TAB_1}, +@@ -98,7 +98,7 @@ const AcceleratorMapping kAcceleratorMap[] = { +     {ui::VKEY_8, ui::EF_ALT_DOWN, IDC_SELECT_TAB_7}, +     {ui::VKEY_NUMPAD8, ui::EF_ALT_DOWN, IDC_SELECT_TAB_7}, +     {ui::VKEY_BROWSER_FAVORITES, ui::EF_NONE, IDC_SHOW_BOOKMARK_BAR}, +-#endif  // OS_LINUX && !OS_CHROMEOS ++#endif  // (OS_LINUX || OS_BSD) && !OS_CHROMEOS +     {ui::VKEY_B, ui::EF_SHIFT_DOWN | ui::EF_PLATFORM_ACCELERATOR, +      IDC_SHOW_BOOKMARK_BAR}, +     {ui::VKEY_OEM_MINUS, ui::EF_PLATFORM_ACCELERATOR, IDC_ZOOM_MINUS}, +@@ -124,14 +124,14 @@ const AcceleratorMapping kAcceleratorMap[] = { +      IDC_SHOW_AVATAR_MENU}, +  +   // Platform-specific key maps. +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +     {ui::VKEY_BROWSER_BACK, ui::EF_NONE, IDC_BACK}, +     {ui::VKEY_BROWSER_FORWARD, ui::EF_NONE, IDC_FORWARD}, +     {ui::VKEY_BROWSER_HOME, ui::EF_NONE, IDC_HOME}, +     {ui::VKEY_BROWSER_REFRESH, ui::EF_NONE, IDC_RELOAD}, +     {ui::VKEY_BROWSER_REFRESH, ui::EF_CONTROL_DOWN, IDC_RELOAD_BYPASSING_CACHE}, +     {ui::VKEY_BROWSER_REFRESH, ui::EF_SHIFT_DOWN, IDC_RELOAD_BYPASSING_CACHE}, +-#endif  // defined(OS_LINUX) ++#endif  // defined(OS_LINUX) || defined(OS_BSD) +  + #if defined(OS_CHROMEOS) +     // On Chrome OS, VKEY_BROWSER_SEARCH is handled in Ash. diff --git a/devel/electron6/files/patch-chrome_browser_ui_views_chrome__browser__main__extra__parts__views.cc b/devel/electron6/files/patch-chrome_browser_ui_views_chrome__browser__main__extra__parts__views.cc new file mode 100644 index 000000000000..04715a9d4f83 --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_ui_views_chrome__browser__main__extra__parts__views.cc @@ -0,0 +1,38 @@ +--- chrome/browser/ui/views/chrome_browser_main_extra_parts_views.cc.orig	2019-09-10 11:13:44 UTC ++++ chrome/browser/ui/views/chrome_browser_main_extra_parts_views.cc +@@ -32,7 +32,7 @@ + #include "ui/wm/core/wm_state.h" + #endif  // defined(USE_AURA) +  +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS) + #include <sys/stat.h> + #include <sys/types.h> + #include <unistd.h> +@@ -42,7 +42,7 @@ + #include "chrome/grit/generated_resources.h" + #include "content/public/common/content_switches.h" + #include "ui/base/l10n/l10n_util.h" +-#endif  // defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#endif  // (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS) +  + ChromeBrowserMainExtraPartsViews::ChromeBrowserMainExtraPartsViews() {} +  +@@ -87,7 +87,7 @@ void ChromeBrowserMainExtraPartsViews::PreProfileInit( +         g_browser_process->system_network_context_manager()->GetContext()); +   } +  +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS) +   // On the Linux desktop, we want to prevent the user from logging in as root, +   // so that we don't destroy the profile. Now that we have some minimal ui +   // initialized, check to see if we're running as root and bail if we are. +@@ -118,7 +118,7 @@ void ChromeBrowserMainExtraPartsViews::PreProfileInit( +   base::RunLoop().RunUntilIdle(); +  +   exit(EXIT_FAILURE); +-#endif  // defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#endif  // (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS) + } +  + void ChromeBrowserMainExtraPartsViews::PostBrowserStart() { diff --git a/devel/electron6/files/patch-chrome_browser_ui_views_chrome__views__delegate.h b/devel/electron6/files/patch-chrome_browser_ui_views_chrome__views__delegate.h new file mode 100644 index 000000000000..f10c381e65f5 --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_ui_views_chrome__views__delegate.h @@ -0,0 +1,11 @@ +--- chrome/browser/ui/views/chrome_views_delegate.h.orig	2019-09-10 10:42:31 UTC ++++ chrome/browser/ui/views/chrome_views_delegate.h +@@ -44,7 +44,7 @@ class ChromeViewsDelegate : public views::ViewsDelegat +   HICON GetSmallWindowIcon() const override; +   int GetAppbarAutohideEdges(HMONITOR monitor, +                              base::OnceClosure callback) override; +-#elif defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#elif (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) +   gfx::ImageSkia* GetDefaultWindowIcon() const override; +   bool WindowManagerProvidesTitleBar(bool maximized) override; + #endif diff --git a/devel/electron6/files/patch-chrome_browser_ui_views_first__run__dialog.cc b/devel/electron6/files/patch-chrome_browser_ui_views_first__run__dialog.cc new file mode 100644 index 000000000000..524e710df24d --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_ui_views_first__run__dialog.cc @@ -0,0 +1,24 @@ +--- chrome/browser/ui/views/first_run_dialog.cc.orig	2019-09-10 11:13:44 UTC ++++ chrome/browser/ui/views/first_run_dialog.cc +@@ -37,8 +37,10 @@ + namespace { +  + void InitCrashReporterIfEnabled(bool enabled) { ++#if !defined(OS_BSD) +   if (enabled) +     breakpad::InitCrashReporter(std::string()); ++#endif + } +  + }  // namespace +@@ -111,8 +113,10 @@ views::View* FirstRunDialog::CreateExtraView() { + bool FirstRunDialog::Accept() { +   GetWidget()->Hide(); +  ++#if !defined(OS_BSD) +   ChangeMetricsReportingStateWithReply(report_crashes_->GetChecked(), +                                        base::Bind(&InitCrashReporterIfEnabled)); ++#endif +  +   if (make_default_->GetChecked()) +     shell_integration::SetAsDefaultBrowser(); diff --git a/devel/electron6/files/patch-chrome_browser_ui_views_frame_browser__frame.cc b/devel/electron6/files/patch-chrome_browser_ui_views_frame_browser__frame.cc new file mode 100644 index 000000000000..de0479f602e3 --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_ui_views_frame_browser__frame.cc @@ -0,0 +1,29 @@ +--- chrome/browser/ui/views/frame/browser_frame.cc.orig	2019-09-10 11:13:44 UTC ++++ chrome/browser/ui/views/frame/browser_frame.cc +@@ -39,7 +39,7 @@ + #include "components/user_manager/user_manager.h" + #endif +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + #include "chrome/browser/ui/views/frame/browser_command_handler_linux.h" + #endif +  +@@ -50,7 +50,7 @@ + namespace { +  + bool IsUsingGtkTheme(Profile* profile) { +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) +   return ThemeServiceFactory::GetForProfile(profile)->UsingSystemTheme(); + #else +   return false; +@@ -111,7 +111,7 @@ void BrowserFrame::InitBrowserFrame() { +     non_client_view()->set_context_menu_controller(this); +   } +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   browser_command_handler_.reset(new BrowserCommandHandlerLinux(browser_view_)); + #endif + } diff --git a/devel/electron6/files/patch-chrome_browser_ui_views_frame_browser__non__client__frame__view__factory__views.cc b/devel/electron6/files/patch-chrome_browser_ui_views_frame_browser__non__client__frame__view__factory__views.cc new file mode 100644 index 000000000000..b2553ed67db0 --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_ui_views_frame_browser__non__client__frame__view__factory__views.cc @@ -0,0 +1,20 @@ +--- chrome/browser/ui/views/frame/browser_non_client_frame_view_factory_views.cc.orig	2019-09-10 10:42:31 UTC ++++ chrome/browser/ui/views/frame/browser_non_client_frame_view_factory_views.cc +@@ -13,7 +13,7 @@ + #include "chrome/browser/ui/views/frame/glass_browser_frame_view.h" + #endif +  +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS) + #include "ui/views/linux_ui/linux_ui.h" + #endif +  +@@ -32,7 +32,7 @@ OpaqueBrowserFrameView* CreateOpaqueBrowserFrameView( +     BrowserView* browser_view) { + #if BUILDFLAG(ENABLE_NATIVE_WINDOW_NAV_BUTTONS) +   std::unique_ptr<views::NavButtonProvider> nav_button_provider; +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) +   if (ThemeServiceFactory::GetForProfile(browser_view->browser()->profile()) +           ->UsingSystemTheme() && +       views::LinuxUI::instance()) { diff --git a/devel/electron6/files/patch-chrome_browser_ui_views_frame_browser__view.cc b/devel/electron6/files/patch-chrome_browser_ui_views_frame_browser__view.cc new file mode 100644 index 000000000000..6f4ce648bd81 --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_ui_views_frame_browser__view.cc @@ -0,0 +1,11 @@ +--- chrome/browser/ui/views/frame/browser_view.cc.orig	2019-09-10 11:13:44 UTC ++++ chrome/browser/ui/views/frame/browser_view.cc +@@ -1557,7 +1557,7 @@ void BrowserView::UserChangedTheme(BrowserThemeChangeT +   const bool should_use_native_frame = frame_->ShouldUseNativeFrame(); +  +   bool must_regenerate_frame; +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) +   // GTK and user theme changes can both change frame buttons, so the frame +   // always needs to be regenerated on Linux. +   must_regenerate_frame = true; diff --git a/devel/electron6/files/patch-chrome_browser_ui_views_frame_opaque__browser__frame__view.cc b/devel/electron6/files/patch-chrome_browser_ui_views_frame_opaque__browser__frame__view.cc new file mode 100644 index 000000000000..d024ba59ec01 --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_ui_views_frame_opaque__browser__frame__view.cc @@ -0,0 +1,29 @@ +--- chrome/browser/ui/views/frame/opaque_browser_frame_view.cc.orig	2019-09-10 11:13:44 UTC ++++ chrome/browser/ui/views/frame/opaque_browser_frame_view.cc +@@ -47,7 +47,7 @@ + #include "ui/views/window/vector_icons/vector_icons.h" + #include "ui/views/window/window_shape.h" +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + #include "ui/views/controls/menu/menu_runner.h" + #endif +  +@@ -353,7 +353,7 @@ void OpaqueBrowserFrameView::ButtonPressed(views::Butt + void OpaqueBrowserFrameView::OnMenuButtonClicked(views::Button* source, +                                                  const gfx::Point& point, +                                                  const ui::Event* event) { +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   views::MenuRunner menu_runner(frame()->GetSystemMenuModel(), +                                 views::MenuRunner::HAS_MNEMONICS); +   menu_runner.RunMenuAt( +@@ -479,7 +479,7 @@ bool OpaqueBrowserFrameView::EverHasVisibleBackgroundT +  + OpaqueBrowserFrameView::FrameButtonStyle + OpaqueBrowserFrameView::GetFrameButtonStyle() const { +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) +   return FrameButtonStyle::kMdButton; + #else +   return FrameButtonStyle::kImageButton; diff --git a/devel/electron6/files/patch-chrome_browser_ui_views_frame_opaque__browser__frame__view__platform__specific.cc b/devel/electron6/files/patch-chrome_browser_ui_views_frame_opaque__browser__frame__view__platform__specific.cc new file mode 100644 index 000000000000..5878f6c74be5 --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_ui_views_frame_opaque__browser__frame__view__platform__specific.cc @@ -0,0 +1,11 @@ +--- chrome/browser/ui/views/frame/opaque_browser_frame_view_platform_specific.cc.orig	2019-09-10 10:42:31 UTC ++++ chrome/browser/ui/views/frame/opaque_browser_frame_view_platform_specific.cc +@@ -6,7 +6,7 @@ +  + #include "build/build_config.h" +  +-#if !defined(OS_LINUX) ++#if !defined(OS_LINUX) && !defined(OS_FREEBSD) +  + // static + std::unique_ptr<OpaqueBrowserFrameViewPlatformSpecific> diff --git a/devel/electron6/files/patch-chrome_browser_ui_views_frame_system__menu__model__builder.cc b/devel/electron6/files/patch-chrome_browser_ui_views_frame_system__menu__model__builder.cc new file mode 100644 index 000000000000..1735ae7cd330 --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_ui_views_frame_system__menu__model__builder.cc @@ -0,0 +1,29 @@ +--- chrome/browser/ui/views/frame/system_menu_model_builder.cc.orig	2019-09-10 11:13:44 UTC ++++ chrome/browser/ui/views/frame/system_menu_model_builder.cc +@@ -79,7 +79,7 @@ void SystemMenuModelBuilder::BuildMenu(ui::SimpleMenuM +  + void SystemMenuModelBuilder::BuildSystemMenuForBrowserWindow( +     ui::SimpleMenuModel* model) { +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) +   model->AddItemWithStringId(IDC_MINIMIZE_WINDOW, IDS_MINIMIZE_WINDOW_MENU); +   model->AddItemWithStringId(IDC_MAXIMIZE_WINDOW, IDS_MAXIMIZE_WINDOW_MENU); +   model->AddItemWithStringId(IDC_RESTORE_WINDOW, IDS_RESTORE_WINDOW_MENU); +@@ -91,7 +91,7 @@ void SystemMenuModelBuilder::BuildSystemMenuForBrowser +     model->AddSeparator(ui::NORMAL_SEPARATOR); +     model->AddItemWithStringId(IDC_TASK_MANAGER, IDS_TASK_MANAGER); +   } +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS) +   model->AddSeparator(ui::NORMAL_SEPARATOR); +   model->AddCheckItemWithStringId(IDC_USE_SYSTEM_TITLE_BAR, +                                   IDS_SHOW_WINDOW_DECORATIONS_MENU); +@@ -127,7 +127,7 @@ void SystemMenuModelBuilder::BuildSystemMenuForAppOrPo +     model->AddSeparator(ui::NORMAL_SEPARATOR); +     model->AddItemWithStringId(IDC_TASK_MANAGER, IDS_TASK_MANAGER); +   } +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS) +   model->AddSeparator(ui::NORMAL_SEPARATOR); +   model->AddItemWithStringId(IDC_CLOSE_WINDOW, IDS_CLOSE); + #endif diff --git a/devel/electron6/files/patch-chrome_browser_ui_views_frame_system__menu__model__delegate.cc b/devel/electron6/files/patch-chrome_browser_ui_views_frame_system__menu__model__delegate.cc new file mode 100644 index 000000000000..791e697dadf9 --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_ui_views_frame_system__menu__model__delegate.cc @@ -0,0 +1,29 @@ +--- chrome/browser/ui/views/frame/system_menu_model_delegate.cc.orig	2019-09-10 10:42:31 UTC ++++ chrome/browser/ui/views/frame/system_menu_model_delegate.cc +@@ -15,7 +15,7 @@ + #include "components/sessions/core/tab_restore_service.h" + #include "ui/base/l10n/l10n_util.h" +  +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS) + #include "chrome/common/pref_names.h" + #include "components/prefs/pref_service.h" + #endif +@@ -30,7 +30,7 @@ SystemMenuModelDelegate::SystemMenuModelDelegate( + SystemMenuModelDelegate::~SystemMenuModelDelegate() {} +  + bool SystemMenuModelDelegate::IsCommandIdChecked(int command_id) const { +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS) +   if (command_id == IDC_USE_SYSTEM_TITLE_BAR) { +     PrefService* prefs = browser_->profile()->GetPrefs(); +     return !prefs->GetBoolean(prefs::kUseCustomChromeFrame); +@@ -44,7 +44,7 @@ bool SystemMenuModelDelegate::IsCommandIdEnabled(int c + } +  + bool SystemMenuModelDelegate::IsCommandIdVisible(int command_id) const { +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) +   bool is_maximized = browser_->window()->IsMaximized(); +   switch (command_id) { +     case IDC_MAXIMIZE_WINDOW: diff --git a/devel/electron6/files/patch-chrome_browser_ui_views_hung__renderer__view.cc b/devel/electron6/files/patch-chrome_browser_ui_views_hung__renderer__view.cc new file mode 100644 index 000000000000..ddd7cdd9fa51 --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_ui_views_hung__renderer__view.cc @@ -0,0 +1,11 @@ +--- chrome/browser/ui/views/hung_renderer_view.cc.orig	2019-09-10 11:13:44 UTC ++++ chrome/browser/ui/views/hung_renderer_view.cc +@@ -390,7 +390,7 @@ bool HungRendererDialogView::Cancel() { +   content::RenderProcessHost* rph = +       hung_pages_table_model_->GetRenderWidgetHost()->GetProcess(); +   if (rph) { +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +     // A generic |CrashDumpHungChildProcess()| is not implemented for Linux. +     // Instead we send an explicit IPC to crash on the renderer's IO thread. +     rph->ForceCrash(); diff --git a/devel/electron6/files/patch-chrome_browser_ui_views_tabs_new__tab__button.cc b/devel/electron6/files/patch-chrome_browser_ui_views_tabs_new__tab__button.cc new file mode 100644 index 000000000000..5139da57a524 --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_ui_views_tabs_new__tab__button.cc @@ -0,0 +1,11 @@ +--- chrome/browser/ui/views/tabs/new_tab_button.cc.orig	2019-09-10 11:13:44 UTC ++++ chrome/browser/ui/views/tabs/new_tab_button.cc +@@ -69,7 +69,7 @@ const gfx::Size NewTabButton::kButtonSize{28, 28}; + NewTabButton::NewTabButton(TabStrip* tab_strip, views::ButtonListener* listener) +     : views::ImageButton(listener), tab_strip_(tab_strip) { +   set_animate_on_state_change(true); +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS) +   set_triggerable_event_flags(triggerable_event_flags() | +                               ui::EF_MIDDLE_MOUSE_BUTTON); + #endif diff --git a/devel/electron6/files/patch-chrome_browser_ui_views_tabs_tab.cc b/devel/electron6/files/patch-chrome_browser_ui_views_tabs_tab.cc new file mode 100644 index 000000000000..3f2baf888361 --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_ui_views_tabs_tab.cc @@ -0,0 +1,20 @@ +--- chrome/browser/ui/views/tabs/tab.cc.orig	2019-09-10 11:13:44 UTC ++++ chrome/browser/ui/views/tabs/tab.cc +@@ -525,7 +525,7 @@ void Tab::OnMouseCaptureLost() { + void Tab::OnMouseMoved(const ui::MouseEvent& event) { +   tab_style_->SetHoverLocation(event.location()); +   controller_->OnMouseEventInTab(this, event); +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   MaybeUpdateHoverStatus(event); + #endif + } +@@ -535,7 +535,7 @@ void Tab::OnMouseEntered(const ui::MouseEvent& event)  + } +  + void Tab::MaybeUpdateHoverStatus(const ui::MouseEvent& event) { +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   // Move the hit test area for hovering up so that it is not overlapped by tab +   // hover cards when they are shown. +   // TODO(crbug/978134): Once Linux/CrOS widget transparency is solved, remove diff --git a/devel/electron6/files/patch-chrome_browser_ui_views_tabs_tab__drag__controller.cc b/devel/electron6/files/patch-chrome_browser_ui_views_tabs_tab__drag__controller.cc new file mode 100644 index 000000000000..18a89332a8b5 --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_ui_views_tabs_tab__drag__controller.cc @@ -0,0 +1,29 @@ +--- chrome/browser/ui/views/tabs/tab_drag_controller.cc.orig	2019-09-10 11:13:44 UTC ++++ chrome/browser/ui/views/tabs/tab_drag_controller.cc +@@ -444,7 +444,7 @@ void TabDragController::Init(TabDragContext* source_co +   //     synchronous on desktop Linux, so use that. +   // - Chrome OS +   //     Releasing capture on Ash cancels gestures so avoid it. +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   can_release_capture_ = false; + #endif +   start_point_in_screen_ = gfx::Point(source_tab_offset, mouse_offset.y()); +@@ -872,7 +872,7 @@ TabDragController::DragBrowserToNewTabStrip(TabDragCon +     else +       SetCapture(target_context); +  +-#if !defined(OS_LINUX) || defined(OS_CHROMEOS) ++#if (!defined(OS_LINUX) || defined(OS_CHROMEOS)) && !defined(OS_BSD) +     // EndMoveLoop is going to snap the window back to its original location. +     // Hide it so users don't see this. Hiding a window in Linux aura causes +     // it to lose capture so skip it. +@@ -2023,7 +2023,7 @@ TabDragController::Liveness TabDragController::GetLoca +       exclude.insert(dragged_window); +     } +   } +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) +   // Exclude windows which are pending deletion via Browser::TabStripEmpty(). +   // These windows can be returned in the Linux Aura port because the browser +   // window which was used for dragging is not hidden once all of its tabs are diff --git a/devel/electron6/files/patch-chrome_browser_ui_webui_about__ui.cc b/devel/electron6/files/patch-chrome_browser_ui_webui_about__ui.cc new file mode 100644 index 000000000000..c7a9dc5e48bc --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_ui_webui_about__ui.cc @@ -0,0 +1,20 @@ +--- chrome/browser/ui/webui/about_ui.cc.orig	2019-09-10 11:13:44 UTC ++++ chrome/browser/ui/webui/about_ui.cc +@@ -552,7 +552,7 @@ std::string ChromeURLs() { +   return html; + } +  +-#if defined(OS_LINUX) || defined(OS_OPENBSD) ++#if defined(OS_LINUX) || defined(OS_BSD) + std::string AboutLinuxProxyConfig() { +   std::string data; +   AppendHeader(&data, 0, +@@ -607,7 +607,7 @@ void AboutUIHTMLSource::StartDataRequest( +                      .GetRawDataResource(idr) +                      .as_string(); +     } +-#if defined(OS_LINUX) || defined(OS_OPENBSD) ++#if defined(OS_LINUX) || defined(OS_BSD) +   } else if (source_name_ == chrome::kChromeUILinuxProxyConfigHost) { +     response = AboutLinuxProxyConfig(); + #endif diff --git a/devel/electron6/files/patch-chrome_browser_ui_webui_chrome__web__ui__controller__factory.cc b/devel/electron6/files/patch-chrome_browser_ui_webui_chrome__web__ui__controller__factory.cc new file mode 100644 index 000000000000..75c0f6272ca5 --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_ui_webui_chrome__web__ui__controller__factory.cc @@ -0,0 +1,55 @@ +--- chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc.orig	2019-09-10 11:13:44 UTC ++++ chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc +@@ -205,11 +205,11 @@ + #include "chrome/browser/ui/webui/welcome/welcome_win10_ui.h" + #endif +  +-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) ++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) + #include "chrome/browser/ui/webui/discards/discards_ui.h" + #endif +  +-#if defined(OS_LINUX) || defined(OS_ANDROID) ++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD) + #include "chrome/browser/ui/webui/sandbox_internals_ui.h" + #endif +  +@@ -325,7 +325,7 @@ bool IsAboutUI(const GURL& url) { + #if !defined(OS_ANDROID) +           || url.host_piece() == chrome::kChromeUITermsHost + #endif +-#if defined(OS_LINUX) || defined(OS_OPENBSD) ++#if defined(OS_LINUX) || defined(OS_BSD) +           || url.host_piece() == chrome::kChromeUILinuxProxyConfigHost + #endif + #if defined(OS_CHROMEOS) +@@ -627,7 +627,7 @@ WebUIFactoryFunction GetWebUIFactoryFunction(WebUI* we +   if (url.host_piece() == chrome::kChromeUINaClHost) +     return &NewWebUI<NaClUI>; + #endif +-#if (defined(OS_LINUX) && defined(TOOLKIT_VIEWS)) || defined(USE_AURA) ++#if (defined(OS_LINUX) && defined(TOOLKIT_VIEWS)) || defined(USE_AURA) || defined(OS_BSD) +   if (url.host_piece() == chrome::kChromeUITabModalConfirmDialogHost) +     return &NewWebUI<ConstrainedWebDialogUI>; + #endif +@@ -672,17 +672,17 @@ WebUIFactoryFunction GetWebUIFactoryFunction(WebUI* we +     return &NewWebUI<CastUI>; +   } + #endif +-#if defined(OS_LINUX) || defined(OS_ANDROID) ++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD) +   if (url.host_piece() == chrome::kChromeUISandboxHost) { +     return &NewWebUI<SandboxInternalsUI>; +   } + #endif +-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) ++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) +   if (url.host_piece() == chrome::kChromeUIDiscardsHost) +     return &NewWebUI<DiscardsUI>; + #endif + #if defined(OS_WIN) || defined(OS_MACOSX) || \ +-    (defined(OS_LINUX) && !defined(OS_CHROMEOS)) ++    (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) +   if (url.host_piece() == chrome::kChromeUIBrowserSwitchHost) +     return &NewWebUI<BrowserSwitchUI>; + #endif diff --git a/devel/electron6/files/patch-chrome_browser_ui_webui_settings_appearance__handler.cc b/devel/electron6/files/patch-chrome_browser_ui_webui_settings_appearance__handler.cc new file mode 100644 index 000000000000..99d4f241ed68 --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_ui_webui_settings_appearance__handler.cc @@ -0,0 +1,20 @@ +--- chrome/browser/ui/webui/settings/appearance_handler.cc.orig	2019-09-10 11:13:44 UTC ++++ chrome/browser/ui/webui/settings/appearance_handler.cc +@@ -31,7 +31,7 @@ void AppearanceHandler::RegisterMessages() { +       "useDefaultTheme", +       base::BindRepeating(&AppearanceHandler::HandleUseDefaultTheme, +                           base::Unretained(this))); +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if defined(OS_LINUX) || defined(OS_BSD) && !defined(OS_CHROMEOS) +   web_ui()->RegisterMessageCallback( +       "useSystemTheme", +       base::BindRepeating(&AppearanceHandler::HandleUseSystemTheme, +@@ -59,7 +59,7 @@ void AppearanceHandler::HandleUseDefaultTheme(const ba +   ThemeServiceFactory::GetForProfile(profile_)->UseDefaultTheme(); + } +  +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if defined(OS_LINUX) || defined(OS_BSD) && !defined(OS_CHROMEOS) + void AppearanceHandler::HandleUseSystemTheme(const base::ListValue* args) { +   if (profile_->IsSupervised()) +     NOTREACHED(); diff --git a/devel/electron6/files/patch-chrome_browser_ui_webui_settings_appearance__handler.h b/devel/electron6/files/patch-chrome_browser_ui_webui_settings_appearance__handler.h new file mode 100644 index 000000000000..9907cecd4ff2 --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_ui_webui_settings_appearance__handler.h @@ -0,0 +1,11 @@ +--- chrome/browser/ui/webui/settings/appearance_handler.h.orig	2019-09-10 11:13:44 UTC ++++ chrome/browser/ui/webui/settings/appearance_handler.h +@@ -36,7 +36,7 @@ class AppearanceHandler : public SettingsPageUIHandler +   // Changes the UI theme of the browser to the default theme. +   void HandleUseDefaultTheme(const base::ListValue* args); +  +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS) +   // Changes the UI theme of the browser to the system (GTK+) theme. +   void HandleUseSystemTheme(const base::ListValue* args); + #endif diff --git a/devel/electron6/files/patch-chrome_browser_ui_webui_settings_settings__localized__strings__provider.cc b/devel/electron6/files/patch-chrome_browser_ui_webui_settings_settings__localized__strings__provider.cc new file mode 100644 index 000000000000..4be265ebfb00 --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_ui_webui_settings_settings__localized__strings__provider.cc @@ -0,0 +1,20 @@ +--- chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc.orig	2019-09-10 11:13:44 UTC ++++ chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc +@@ -585,7 +585,7 @@ void AddAppearanceStrings(content::WebUIDataSource* ht +     {"enterCustomWebAddress", IDS_SETTINGS_ENTER_CUSTOM_WEB_ADDRESS}, +     {"homeButtonDisabled", IDS_SETTINGS_HOME_BUTTON_DISABLED}, +     {"themes", IDS_SETTINGS_THEMES}, +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) +     {"systemTheme", IDS_SETTINGS_SYSTEM_THEME}, +     {"useSystemTheme", IDS_SETTINGS_USE_SYSTEM_THEME}, +     {"classicTheme", IDS_SETTINGS_CLASSIC_THEME}, +@@ -605,7 +605,7 @@ void AddAppearanceStrings(content::WebUIDataSource* ht +     {"openWallpaperApp", IDS_OS_SETTINGS_OPEN_WALLPAPER_APP}, +     {"setWallpaper", IDS_OS_SETTINGS_SET_WALLPAPER}, + #endif +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) +     {"showWindowDecorations", IDS_SHOW_WINDOW_DECORATIONS}, + #endif + #if defined(OS_MACOSX) diff --git a/devel/electron6/files/patch-chrome_browser_web__applications_extensions_web__app__extension__shortcut.cc b/devel/electron6/files/patch-chrome_browser_web__applications_extensions_web__app__extension__shortcut.cc new file mode 100644 index 000000000000..670f103ae9bc --- /dev/null +++ b/devel/electron6/files/patch-chrome_browser_web__applications_extensions_web__app__extension__shortcut.cc @@ -0,0 +1,11 @@ +--- chrome/browser/web_applications/extensions/web_app_extension_shortcut.cc.orig	2019-09-10 11:13:44 UTC ++++ chrome/browser/web_applications/extensions/web_app_extension_shortcut.cc +@@ -50,7 +50,7 @@ namespace { + #if defined(OS_MACOSX) + const int kDesiredSizes[] = {16, 32, 128, 256, 512}; + const size_t kNumDesiredSizes = base::size(kDesiredSizes); +-#elif defined(OS_LINUX) ++#elif defined(OS_LINUX) || defined(OS_BSD) + // Linux supports icons of any size. FreeDesktop Icon Theme Specification states + // that "Minimally you should install a 48x48 icon in the hicolor theme." + const int kDesiredSizes[] = {16, 32, 48, 128, 256, 512}; diff --git a/devel/electron6/files/patch-chrome_common_BUILD.gn b/devel/electron6/files/patch-chrome_common_BUILD.gn new file mode 100644 index 000000000000..0da1bb32eaf4 --- /dev/null +++ b/devel/electron6/files/patch-chrome_common_BUILD.gn @@ -0,0 +1,13 @@ +--- chrome/common/BUILD.gn.orig	2019-09-10 11:13:45 UTC ++++ chrome/common/BUILD.gn +@@ -298,6 +298,10 @@ static_library("common") { +     public_deps += [ "//ppapi/shared_impl" ] +   } +  ++  if (is_bsd) { ++    sources -= [ "component_flash_hint_file_linux.cc" ] ++  } ++ +   if (enable_extensions) { +     sources += [ +       "cast_messages.cc", diff --git a/devel/electron6/files/patch-chrome_common_chrome__features.cc b/devel/electron6/files/patch-chrome_common_chrome__features.cc new file mode 100644 index 000000000000..6e912c525ff9 --- /dev/null +++ b/devel/electron6/files/patch-chrome_common_chrome__features.cc @@ -0,0 +1,27 @@ +--- chrome/common/chrome_features.cc.orig	2019-09-10 11:13:45 UTC ++++ chrome/common/chrome_features.cc +@@ -98,13 +98,13 @@ const base::Feature kAutoFetchOnNetErrorPage{"AutoFetc +                                              base::FEATURE_DISABLED_BY_DEFAULT}; + #endif  // defined(OS_ANDROID) +  +-#if defined(OS_WIN) || defined(OS_LINUX) ++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD) + // Enables the Restart background mode optimization. When all Chrome UI is + // closed and it goes in the background, allows to restart the browser to + // discard memory. + const base::Feature kBackgroundModeAllowRestart{ +     "BackgroundModeAllowRestart", base::FEATURE_DISABLED_BY_DEFAULT}; +-#endif  // defined(OS_WIN) || defined(OS_LINUX) ++#endif  // defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD) +  + // Enables or disables whether permission prompts are automatically blocked + // after the user has explicitly dismissed them too many times. +@@ -150,7 +150,7 @@ const base::Feature kThirdPartyModulesBlocking{ +     "ThirdPartyModulesBlocking", base::FEATURE_DISABLED_BY_DEFAULT}; + #endif +  +-#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_MACOSX) ++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_MACOSX) || defined(OS_BSD) + // Enables the dual certificate verification trial feature. + // https://crbug.com/649026 + const base::Feature kCertDualVerificationTrialFeature{ diff --git a/devel/electron6/files/patch-chrome_common_chrome__features.h b/devel/electron6/files/patch-chrome_common_chrome__features.h new file mode 100644 index 000000000000..749954954f4c --- /dev/null +++ b/devel/electron6/files/patch-chrome_common_chrome__features.h @@ -0,0 +1,24 @@ +--- chrome/common/chrome_features.h.orig	2019-09-10 11:13:45 UTC ++++ chrome/common/chrome_features.h +@@ -65,10 +65,10 @@ COMPONENT_EXPORT(CHROME_FEATURES) + extern const base::Feature kAutoFetchOnNetErrorPage; + #endif +  +-#if defined(OS_WIN) || defined(OS_LINUX) ++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD) + COMPONENT_EXPORT(CHROME_FEATURES) + extern const base::Feature kBackgroundModeAllowRestart; +-#endif  // defined(OS_WIN) || defined(OS_LINUX) ++#endif  // defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD) +  + COMPONENT_EXPORT(CHROME_FEATURES) + extern const base::Feature kBlockPromptsIfDismissedOften; +@@ -84,7 +84,7 @@ extern const base::Feature kBrowserHangFixesExperiment + COMPONENT_EXPORT(CHROME_FEATURES) + extern const base::Feature kBundledConnectionHelpFeature; +  +-#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_MACOSX) ++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_MACOSX) || defined(OS_BSD) + COMPONENT_EXPORT(CHROME_FEATURES) + extern const base::Feature kCertDualVerificationTrialFeature; + #endif diff --git a/devel/electron6/files/patch-chrome_common_chrome__paths.cc b/devel/electron6/files/patch-chrome_common_chrome__paths.cc new file mode 100644 index 000000000000..1061b9d4b9be --- /dev/null +++ b/devel/electron6/files/patch-chrome_common_chrome__paths.cc @@ -0,0 +1,113 @@ +--- chrome/common/chrome_paths.cc.orig	2019-09-10 11:13:45 UTC ++++ chrome/common/chrome_paths.cc +@@ -52,21 +52,21 @@ const base::FilePath::CharType kPepperFlashSystemBaseD +     FILE_PATH_LITERAL("Internet Plug-Ins/PepperFlashPlayer"); + #endif +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + // The path to the external extension <id>.json files. + // /usr/share seems like a good choice, see: http://www.pathname.com/fhs/ + const base::FilePath::CharType kFilepathSinglePrefExtensions[] = + #if defined(GOOGLE_CHROME_BUILD) +     FILE_PATH_LITERAL("/usr/share/google-chrome/extensions"); + #else +-    FILE_PATH_LITERAL("/usr/share/chromium/extensions"); ++    FILE_PATH_LITERAL("/usr/local/share/chromium/extensions"); + #endif  // defined(GOOGLE_CHROME_BUILD) +  + // The path to the hint file that tells the pepper plugin loader + // where it can find the latest component updated flash. + const base::FilePath::CharType kComponentUpdatedFlashHint[] = +     FILE_PATH_LITERAL("latest-component-updated-flash"); +-#endif  // defined(OS_LINUX) ++#endif  // defined(OS_LINUX) || defined(OS_BSD) +  + #if defined(OS_CHROMEOS) + const base::FilePath::CharType kChromeOSComponentFlash[] = FILE_PATH_LITERAL( +@@ -197,7 +197,7 @@ bool PathProvider(int key, base::FilePath* result) { +         return false; +       break; +     case chrome::DIR_DEFAULT_DOWNLOADS_SAFE: +-#if defined(OS_WIN) || defined(OS_LINUX) ++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD) +       if (!GetUserDownloadsDirectorySafe(&cur)) +         return false; +       break; +@@ -459,17 +459,19 @@ bool PathProvider(int key, base::FilePath* result) { +       if (!base::PathExists(cur))  // We don't want to create this +         return false; +       break; +-#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_OPENBSD) ++#if defined(OS_POSIX) && !defined(OS_MACOSX) +     case chrome::DIR_POLICY_FILES: { + #if defined(GOOGLE_CHROME_BUILD) +       cur = base::FilePath(FILE_PATH_LITERAL("/etc/opt/chrome/policies")); ++#elif defined(OS_BSD) ++      cur = base::FilePath(FILE_PATH_LITERAL("/usr/local/etc/chrome/policies")); + #else +       cur = base::FilePath(FILE_PATH_LITERAL("/etc/chromium/policies")); + #endif +       break; +     } + #endif +-#if defined(OS_CHROMEOS) || (defined(OS_LINUX) && defined(CHROMIUM_BUILD)) || \ ++#if defined(OS_CHROMEOS) || (defined(OS_LINUX) && defined(CHROMIUM_BUILD)) || defined(OS_BSD) || \ +     defined(OS_MACOSX) +     case chrome::DIR_USER_EXTERNAL_EXTENSIONS: { +       if (!base::PathService::Get(chrome::DIR_USER_DATA, &cur)) +@@ -478,7 +480,7 @@ bool PathProvider(int key, base::FilePath* result) { +       break; +     } + #endif +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +     case chrome::DIR_STANDALONE_EXTERNAL_EXTENSIONS: { +       cur = base::FilePath(kFilepathSinglePrefExtensions); +       break; +@@ -513,7 +515,7 @@ bool PathProvider(int key, base::FilePath* result) { + #endif +       break; +  +-#if defined(OS_LINUX) || defined(OS_MACOSX) ++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) +     case chrome::DIR_NATIVE_MESSAGING: + #if defined(OS_MACOSX) + #if defined(GOOGLE_CHROME_BUILD) +@@ -527,6 +529,9 @@ bool PathProvider(int key, base::FilePath* result) { + #if defined(GOOGLE_CHROME_BUILD) +       cur = base::FilePath(FILE_PATH_LITERAL( +           "/etc/opt/chrome/native-messaging-hosts")); ++#elif defined(OS_BSD) ++      cur = base::FilePath(FILE_PATH_LITERAL( ++          "/usr/local/etc/chrome/native-messaging-hosts")); + #else +       cur = base::FilePath(FILE_PATH_LITERAL( +           "/etc/chromium/native-messaging-hosts")); +@@ -539,7 +544,7 @@ bool PathProvider(int key, base::FilePath* result) { +         return false; +       cur = cur.Append(FILE_PATH_LITERAL("NativeMessagingHosts")); +       break; +-#endif  // defined(OS_LINUX) || defined(OS_MACOSX) ++#endif  // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) + #if !defined(OS_ANDROID) +     case chrome::DIR_GLOBAL_GCM_STORE: +       if (!base::PathService::Get(chrome::DIR_USER_DATA, &cur)) +@@ -547,7 +552,7 @@ bool PathProvider(int key, base::FilePath* result) { +       cur = cur.Append(kGCMStoreDirname); +       break; + #endif  // !defined(OS_ANDROID) +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +     case chrome::FILE_COMPONENT_FLASH_HINT: +       if (!base::PathService::Get( +               chrome::DIR_COMPONENT_UPDATED_PEPPER_FLASH_PLUGIN, &cur)) { +@@ -555,7 +560,7 @@ bool PathProvider(int key, base::FilePath* result) { +       } +       cur = cur.Append(kComponentUpdatedFlashHint); +       break; +-#endif  // defined(OS_LINUX) ++#endif  // defined(OS_LINUX) || defined(OS_BSD) + #if defined(OS_CHROMEOS) +     case chrome::FILE_CHROME_OS_COMPONENT_FLASH: +       cur = base::FilePath(kChromeOSComponentFlash); diff --git a/devel/electron6/files/patch-chrome_common_chrome__paths.h b/devel/electron6/files/patch-chrome_common_chrome__paths.h new file mode 100644 index 000000000000..0b16bf9d1ae7 --- /dev/null +++ b/devel/electron6/files/patch-chrome_common_chrome__paths.h @@ -0,0 +1,42 @@ +--- chrome/common/chrome_paths.h.orig	2019-09-10 11:13:45 UTC ++++ chrome/common/chrome_paths.h +@@ -51,7 +51,7 @@ enum { +                                 // to set policies for chrome. This directory +                                 // contains subdirectories. + #endif +-#if defined(OS_CHROMEOS) || (defined(OS_LINUX) && defined(CHROMIUM_BUILD)) || \ ++#if defined(OS_CHROMEOS) || ((defined(OS_LINUX) || defined(OS_BSD)) && defined(CHROMIUM_BUILD)) || \ +     defined(OS_MACOSX) +   DIR_USER_EXTERNAL_EXTENSIONS,  // Directory for per-user external extensions +                                  // on Chrome Mac and Chromium Linux. +@@ -60,7 +60,7 @@ enum { +                                  // create it. + #endif +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   DIR_STANDALONE_EXTERNAL_EXTENSIONS,  // Directory for 'per-extension' +                                        // definition manifest files that +                                        // describe extensions which are to be +@@ -107,7 +107,7 @@ enum { +   DIR_SUPERVISED_USER_INSTALLED_WHITELISTS,  // Directory where sanitized +                                              // supervised user whitelists are +                                              // installed. +-#if defined(OS_LINUX) || defined(OS_MACOSX) ++#if defined(OS_LINUX) || defined(OS_BSD) || defined(OS_MACOSX) +   DIR_NATIVE_MESSAGING,         // System directory where native messaging host +                                 // manifest files are stored. +   DIR_USER_NATIVE_MESSAGING,    // Directory with Native Messaging Hosts +@@ -122,10 +122,10 @@ enum { +   DIR_GEN_TEST_DATA,            // Directory where generated test data resides. +   DIR_TEST_DATA,                // Directory where unit test data resides. +   DIR_TEST_TOOLS,               // Directory where unit test tools reside. +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   FILE_COMPONENT_FLASH_HINT,    // A file in a known location that points to +                                 // the component updated flash plugin. +-#endif  // defined(OS_LINUX) ++#endif  // defined(OS_LINUX) || defined(OS_BSD) + #if defined(OS_CHROMEOS) +   FILE_CHROME_OS_COMPONENT_FLASH,  // The location of component updated Flash on +                                    // Chrome OS. diff --git a/devel/electron6/files/patch-chrome_common_chrome__paths__internal.h b/devel/electron6/files/patch-chrome_common_chrome__paths__internal.h new file mode 100644 index 000000000000..02afef4a6c29 --- /dev/null +++ b/devel/electron6/files/patch-chrome_common_chrome__paths__internal.h @@ -0,0 +1,11 @@ +--- chrome/common/chrome_paths_internal.h.orig	2019-09-10 10:42:31 UTC ++++ chrome/common/chrome_paths_internal.h +@@ -45,7 +45,7 @@ void GetUserCacheDirectory(const base::FilePath& profi + // Get the path to the user's documents directory. + bool GetUserDocumentsDirectory(base::FilePath* result); +  +-#if defined(OS_WIN) || defined(OS_LINUX) ++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD) + // Gets the path to a safe default download directory for a user. + bool GetUserDownloadsDirectorySafe(base::FilePath* result); + #endif diff --git a/devel/electron6/files/patch-chrome_common_chrome__switches.cc b/devel/electron6/files/patch-chrome_common_chrome__switches.cc new file mode 100644 index 000000000000..a60ab2d47923 --- /dev/null +++ b/devel/electron6/files/patch-chrome_common_chrome__switches.cc @@ -0,0 +1,11 @@ +--- chrome/common/chrome_switches.cc.orig	2019-09-10 11:13:45 UTC ++++ chrome/common/chrome_switches.cc +@@ -853,7 +853,7 @@ const char kAllowNaClFileHandleAPI[]        = "allow-n + const char kAllowNaClSocketAPI[]            = "allow-nacl-socket-api"; + #endif +  +-#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) ++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_BSD) + const char kEnableNewAppMenuIcon[] = "enable-new-app-menu-icon"; + #endif +  diff --git a/devel/electron6/files/patch-chrome_common_chrome__switches.h b/devel/electron6/files/patch-chrome_common_chrome__switches.h new file mode 100644 index 000000000000..5ff4d96cad3d --- /dev/null +++ b/devel/electron6/files/patch-chrome_common_chrome__switches.h @@ -0,0 +1,11 @@ +--- chrome/common/chrome_switches.h.orig	2019-09-10 11:13:45 UTC ++++ chrome/common/chrome_switches.h +@@ -265,7 +265,7 @@ extern const char kAllowNaClFileHandleAPI[]; + extern const char kAllowNaClSocketAPI[]; + #endif +  +-#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) ++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_BSD) + extern const char kEnableNewAppMenuIcon[]; + #endif +  diff --git a/devel/electron6/files/patch-chrome_common_extensions_api_api__sources.gni b/devel/electron6/files/patch-chrome_common_extensions_api_api__sources.gni new file mode 100644 index 000000000000..3d4bd49179b9 --- /dev/null +++ b/devel/electron6/files/patch-chrome_common_extensions_api_api__sources.gni @@ -0,0 +1,11 @@ +--- chrome/common/extensions/api/api_sources.gni.orig	2019-09-10 11:13:45 UTC ++++ chrome/common/extensions/api/api_sources.gni +@@ -106,7 +106,7 @@ if (is_chromeos) { +     "wallpaper.json", +     "wallpaper_private.json", +   ] +-} else if (is_linux || is_win) { ++} else if (is_linux || is_bsd || is_win) { +   schema_sources_ += [ "input_ime.json" ] + } +  diff --git a/devel/electron6/files/patch-chrome_common_extensions_command.cc b/devel/electron6/files/patch-chrome_common_extensions_command.cc new file mode 100644 index 000000000000..5ded7faa8cff --- /dev/null +++ b/devel/electron6/files/patch-chrome_common_extensions_command.cc @@ -0,0 +1,11 @@ +--- chrome/common/extensions/command.cc.orig	2019-09-10 10:42:31 UTC ++++ chrome/common/extensions/command.cc +@@ -300,7 +300,7 @@ std::string Command::CommandPlatform() { +   return values::kKeybindingPlatformMac; + #elif defined(OS_CHROMEOS) +   return values::kKeybindingPlatformChromeOs; +-#elif defined(OS_LINUX) ++#elif defined(OS_LINUX) || defined(OS_BSD) +   return values::kKeybindingPlatformLinux; + #else +   return ""; diff --git a/devel/electron6/files/patch-chrome_common_features.gni b/devel/electron6/files/patch-chrome_common_features.gni new file mode 100644 index 000000000000..86098f230f74 --- /dev/null +++ b/devel/electron6/files/patch-chrome_common_features.gni @@ -0,0 +1,14 @@ +--- chrome/common/features.gni.orig	2019-09-10 11:13:46 UTC ++++ chrome/common/features.gni +@@ -41,9 +41,9 @@ declare_args() { +                                 (is_desktop_linux && use_dbus) || is_chromeos +  +   enable_one_click_signin = +-      is_win || is_mac || (is_linux && !is_chromeos && !is_chromecast) ++      is_win || is_mac || is_bsd || (is_linux && !is_chromeos && !is_chromecast) +  +-  enable_service_discovery = (enable_mdns && !is_android) || is_mac ++  enable_service_discovery = (enable_mdns && !is_android) || is_mac || is_bsd +  +   # Enables use of the session service, which is enabled by default. +   # Android stores them separately on the Java side. diff --git a/devel/electron6/files/patch-chrome_common_pref__names.cc b/devel/electron6/files/patch-chrome_common_pref__names.cc new file mode 100644 index 000000000000..107fbe7f3b5b --- /dev/null +++ b/devel/electron6/files/patch-chrome_common_pref__names.cc @@ -0,0 +1,44 @@ +--- chrome/common/pref_names.cc.orig	2019-09-10 11:13:46 UTC ++++ chrome/common/pref_names.cc +@@ -982,7 +982,7 @@ const char kForceYouTubeRestrict[] = "settings.force_y + // only using an account that belongs to one of the domains from this pref. + const char kAllowedDomainsForApps[] = "settings.allowed_domains_for_apps"; +  +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS) + // Linux specific preference on whether we should match the system theme. + const char kUsesSystemTheme[] = "extensions.theme.use_system"; + #endif +@@ -1076,7 +1076,7 @@ const char kShowUpdatePromotionInfoBar[] = +     "browser.show_update_promotion_info_bar"; + #endif +  +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS) + // Boolean that is false if we should show window manager decorations.  If + // true, we draw a custom chrome frame (thicker title bar and blue border). + const char kUseCustomChromeFrame[] = "browser.custom_chrome_frame"; +@@ -1468,7 +1468,7 @@ const char kDownloadDefaultDirectory[] = "download.def + // upgrade a unsafe location to a safe location. + const char kDownloadDirUpgraded[] = "download.directory_upgrade"; +  +-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) ++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) + const char kOpenPdfDownloadInSystemReader[] = +     "download.open_pdf_in_system_reader"; + #endif +@@ -1730,12 +1730,12 @@ const char kAuthAndroidNegotiateAccountType[] = + // domain sub-content requests. + const char kAllowCrossOriginAuthPrompt[] = "auth.allow_cross_origin_prompt"; +  +-#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_CHROMEOS) ++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_CHROMEOS) || defined(OS_BSD) + // Boolean that specifies whether OK-AS-DELEGATE flag from KDC is respected + // along with kAuthNegotiateDelegateWhitelist. + const char kAuthNegotiateDelegateByKdcPolicy[] = +     "auth.negotiate_delegate_by_kdc_policy"; +-#endif  // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_CHROMEOS) ++#endif  // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_CHROMEOS) || defined(OS_BSD) +  + #if defined(OS_POSIX) + // Boolean that specifies whether NTLMv2 is enabled. diff --git a/devel/electron6/files/patch-chrome_common_pref__names.h b/devel/electron6/files/patch-chrome_common_pref__names.h new file mode 100644 index 000000000000..920035029f8b --- /dev/null +++ b/devel/electron6/files/patch-chrome_common_pref__names.h @@ -0,0 +1,41 @@ +--- chrome/common/pref_names.h.orig	2019-09-10 11:13:46 UTC ++++ chrome/common/pref_names.h +@@ -309,7 +309,7 @@ extern const char kHistoryMenuPromoShown[]; + extern const char kForceGoogleSafeSearch[]; + extern const char kForceYouTubeRestrict[]; + extern const char kAllowedDomainsForApps[]; +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS) + extern const char kUsesSystemTheme[]; + #endif + extern const char kCurrentThemePackFilename[]; +@@ -339,7 +339,7 @@ extern const char kDefaultBrowserSettingEnabled[]; + #if defined(OS_MACOSX) + extern const char kShowUpdatePromotionInfoBar[]; + #endif +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS) + extern const char kUseCustomChromeFrame[]; + #endif + #if BUILDFLAG(ENABLE_PLUGINS) +@@ -496,7 +496,7 @@ extern const char kAppWindowPlacement[]; + extern const char kDownloadDefaultDirectory[]; + extern const char kDownloadExtensionsToOpen[]; + extern const char kDownloadDirUpgraded[]; +-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) ++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) + extern const char kOpenPdfDownloadInSystemReader[]; + #endif + #if defined(OS_ANDROID) +@@ -696,9 +696,9 @@ extern const char kGSSAPILibraryName[]; + extern const char kAuthAndroidNegotiateAccountType[]; + extern const char kAllowCrossOriginAuthPrompt[]; +  +-#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_CHROMEOS) ++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_CHROMEOS) || defined(OS_BSD) + extern const char kAuthNegotiateDelegateByKdcPolicy[]; +-#endif  // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_CHROMEOS) ++#endif  // defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_CHROMEOS) || defined(OS_BSD) +  + #if defined(OS_POSIX) + extern const char kNtlmV2Enabled[]; diff --git a/devel/electron6/files/patch-chrome_common_webui__url__constants.cc b/devel/electron6/files/patch-chrome_common_webui__url__constants.cc new file mode 100644 index 000000000000..63324304eb65 --- /dev/null +++ b/devel/electron6/files/patch-chrome_common_webui__url__constants.cc @@ -0,0 +1,48 @@ +--- chrome/common/webui_url_constants.cc.orig	2019-09-10 11:13:46 UTC ++++ chrome/common/webui_url_constants.cc +@@ -299,7 +299,7 @@ const char kChromeUIMetroFlowURL[] = "chrome://make-me + const char kChromeUICastHost[] = "cast"; + #endif +  +-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) ++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) + const char kChromeUIDiscardsHost[] = "discards"; + const char kChromeUIDiscardsURL[] = "chrome://discards/"; + const char kChromeUIHatsHost[] = "hats"; +@@ -310,17 +310,17 @@ const char kChromeUIHatsURL[] = "chrome://hats/"; + const char kChromeUILinuxProxyConfigHost[] = "linux-proxy-config"; + #endif +  +-#if defined(OS_LINUX) || defined(OS_ANDROID) ++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD) + const char kChromeUISandboxHost[] = "sandbox"; + #endif +  + #if defined(OS_WIN) || defined(OS_MACOSX) || \ +-    (defined(OS_LINUX) && !defined(OS_CHROMEOS)) ++    (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) + const char kChromeUIBrowserSwitchHost[] = "browser-switch"; + const char kChromeUIBrowserSwitchURL[] = "chrome://browser-switch/"; + #endif +  +-#if (defined(OS_LINUX) && defined(TOOLKIT_VIEWS)) || defined(USE_AURA) ++#if ((defined(OS_BSD) || defined(OS_LINUX)) && defined(TOOLKIT_VIEWS)) || defined(USE_AURA) + const char kChromeUITabModalConfirmDialogHost[] = "tab-modal-confirm-dialog"; + #endif +  +@@ -525,13 +525,13 @@ const char* const kChromeHostURLs[] = { +     kChromeUIInternetDetailDialogHost, +     kChromeUIAssistantOptInHost, + #endif +-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) ++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) +     kChromeUIDiscardsHost, + #endif + #if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_ANDROID) +     kChromeUILinuxProxyConfigHost, + #endif +-#if defined(OS_LINUX) || defined(OS_ANDROID) ++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD) +     kChromeUISandboxHost, + #endif + #if defined(OS_WIN) diff --git a/devel/electron6/files/patch-chrome_common_webui__url__constants.h b/devel/electron6/files/patch-chrome_common_webui__url__constants.h new file mode 100644 index 000000000000..bce6dced691e --- /dev/null +++ b/devel/electron6/files/patch-chrome_common_webui__url__constants.h @@ -0,0 +1,32 @@ +--- chrome/common/webui_url_constants.h.orig	2019-09-10 11:13:46 UTC ++++ chrome/common/webui_url_constants.h +@@ -262,7 +262,7 @@ extern const char kChromeUIMetroFlowURL[]; + extern const char kChromeUICastHost[]; + #endif +  +-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) ++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) + extern const char kChromeUIDiscardsHost[]; + extern const char kChromeUIDiscardsURL[]; + extern const char kChromeUIHatsHost[]; +@@ -274,17 +274,17 @@ extern const char kChromeUIHatsURL[]; + extern const char kChromeUILinuxProxyConfigHost[]; + #endif +  +-#if defined(OS_LINUX) || defined(OS_ANDROID) ++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD) + extern const char kChromeUISandboxHost[]; + #endif +  + #if defined(OS_WIN) || defined(OS_MACOSX) || \ +-    (defined(OS_LINUX) && !defined(OS_CHROMEOS)) ++    (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) + extern const char kChromeUIBrowserSwitchHost[]; + extern const char kChromeUIBrowserSwitchURL[]; + #endif +  +-#if (defined(OS_LINUX) && defined(TOOLKIT_VIEWS)) || defined(USE_AURA) ++#if ((defined(OS_BSD) || defined(OS_LINUX)) && defined(TOOLKIT_VIEWS)) || defined(USE_AURA) + extern const char kChromeUITabModalConfirmDialogHost[]; + #endif +  diff --git a/devel/electron6/files/patch-chrome_renderer_chrome__content__renderer__client.cc b/devel/electron6/files/patch-chrome_renderer_chrome__content__renderer__client.cc new file mode 100644 index 000000000000..8256c6e80159 --- /dev/null +++ b/devel/electron6/files/patch-chrome_renderer_chrome__content__renderer__client.cc @@ -0,0 +1,11 @@ +--- chrome/renderer/chrome_content_renderer_client.cc.orig	2019-09-10 11:13:46 UTC ++++ chrome/renderer/chrome_content_renderer_client.cc +@@ -1011,7 +1011,7 @@ WebPlugin* ChromeContentRendererClient::CreatePlugin( +       } +  +       case chrome::mojom::PluginStatus::kRestartRequired: { +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +         placeholder = create_blocked_plugin( +             IDR_BLOCKED_PLUGIN_HTML, +             l10n_util::GetStringFUTF16(IDS_PLUGIN_RESTART_REQUIRED, diff --git a/devel/electron6/files/patch-chrome_renderer_pepper_pepper__flash__font__file__host.cc b/devel/electron6/files/patch-chrome_renderer_pepper_pepper__flash__font__file__host.cc new file mode 100644 index 000000000000..1b33e38d44f9 --- /dev/null +++ b/devel/electron6/files/patch-chrome_renderer_pepper_pepper__flash__font__file__host.cc @@ -0,0 +1,29 @@ +--- chrome/renderer/pepper/pepper_flash_font_file_host.cc.orig	2019-09-10 10:42:32 UTC ++++ chrome/renderer/pepper/pepper_flash_font_file_host.cc +@@ -15,7 +15,7 @@ + #include "ppapi/proxy/ppapi_messages.h" + #include "ppapi/proxy/serialized_structs.h" +  +-#if defined(OS_LINUX) || defined(OS_OPENBSD) ++#if defined(OS_LINUX) || defined(OS_BSD) + #include "components/services/font/public/cpp/font_loader.h" + #include "content/public/common/common_sandbox_support_linux.h" + #elif defined(OS_WIN) +@@ -29,7 +29,7 @@ PepperFlashFontFileHost::PepperFlashFontFileHost( +     const ppapi::proxy::SerializedFontDescription& description, +     PP_PrivateFontCharset charset) +     : ResourceHost(host->GetPpapiHost(), instance, resource) { +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   // The global SkFontConfigInterface is configured and initialized with a +   // SkFontconfigInterface compatible font_service::FontLoader in +   // RendererBlinkPlatformImpl (called from RenderThreadImpl::Init) at startup +@@ -74,7 +74,7 @@ bool PepperFlashFontFileHost::GetFontData(uint32_t tab +                                           void* buffer, +                                           size_t* length) { +   bool result = false; +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   if (font_file_.IsValid()) { +     result = content::GetFontTable(font_file_.GetPlatformFile(), table, +                                    0 /* offset */, diff --git a/devel/electron6/files/patch-chrome_renderer_pepper_pepper__flash__font__file__host.h b/devel/electron6/files/patch-chrome_renderer_pepper_pepper__flash__font__file__host.h new file mode 100644 index 000000000000..5d6a842f6e79 --- /dev/null +++ b/devel/electron6/files/patch-chrome_renderer_pepper_pepper__flash__font__file__host.h @@ -0,0 +1,20 @@ +--- chrome/renderer/pepper/pepper_flash_font_file_host.h.orig	2019-09-10 10:42:32 UTC ++++ chrome/renderer/pepper/pepper_flash_font_file_host.h +@@ -14,7 +14,7 @@ + #include "ppapi/c/private/pp_private_font_charset.h" + #include "ppapi/host/resource_host.h" +  +-#if defined(OS_LINUX) || defined(OS_OPENBSD) ++#if defined(OS_LINUX) || defined(OS_BSD) + #include "base/files/file.h" + #elif defined(OS_WIN) + #include "third_party/skia/include/core/SkRefCnt.h" +@@ -50,7 +50,7 @@ class PepperFlashFontFileHost : public ppapi::host::Re +                          uint32_t table); +   bool GetFontData(uint32_t table, void* buffer, size_t* length); +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   base::File font_file_; + #elif defined(OS_WIN) +   sk_sp<SkTypeface> typeface_; diff --git a/devel/electron6/files/patch-chrome_service_cloud__print_print__system.cc b/devel/electron6/files/patch-chrome_service_cloud__print_print__system.cc new file mode 100644 index 000000000000..c733bf90aea1 --- /dev/null +++ b/devel/electron6/files/patch-chrome_service_cloud__print_print__system.cc @@ -0,0 +1,11 @@ +--- chrome/service/cloud_print/print_system.cc.orig	2019-09-10 10:42:32 UTC ++++ chrome/service/cloud_print/print_system.cc +@@ -36,7 +36,7 @@ std::string PrintSystem::GenerateProxyId() { +   return base::GenerateGUID(); + } +  +-#if defined(OS_LINUX) && !defined(USE_CUPS) ++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(USE_CUPS) + scoped_refptr<PrintSystem> PrintSystem::CreateInstance( +     const base::DictionaryValue*) { +   return nullptr; diff --git a/devel/electron6/files/patch-chrome_test_BUILD.gn b/devel/electron6/files/patch-chrome_test_BUILD.gn new file mode 100644 index 000000000000..4366d0dae98a --- /dev/null +++ b/devel/electron6/files/patch-chrome_test_BUILD.gn @@ -0,0 +1,11 @@ +--- chrome/test/BUILD.gn.orig	2019-09-10 11:13:47 UTC ++++ chrome/test/BUILD.gn +@@ -5475,7 +5475,7 @@ test("chrome_app_unittests") { +     "//components/crash/core/common", +     "//components/flags_ui:switches", +   ] +-  if (!is_fuchsia) { ++  if (!is_fuchsia && !is_bsd) { +     # TODO(crbug.com/753619): Enable crash reporting on Fuchsia. +     deps += [ "//third_party/breakpad:client" ] +   } diff --git a/devel/electron6/files/patch-chrome_test_base_in__process__browser__test.cc b/devel/electron6/files/patch-chrome_test_base_in__process__browser__test.cc new file mode 100644 index 000000000000..eb143501adbe --- /dev/null +++ b/devel/electron6/files/patch-chrome_test_base_in__process__browser__test.cc @@ -0,0 +1,22 @@ +--- chrome/test/base/in_process_browser_test.cc.orig	2019-09-10 11:13:47 UTC ++++ chrome/test/base/in_process_browser_test.cc +@@ -75,6 +75,10 @@ + #include "chrome/test/base/scoped_bundle_swizzler_mac.h" + #endif +  ++#if defined(OS_FREEBSD) ++#include <signal.h> ++#endif ++ + #if defined(OS_WIN) + #include "base/win/scoped_com_initializer.h" + #include "base/win/windows_version.h" +@@ -101,7 +105,7 @@ + #include "ui/events/test/event_generator.h" + #endif  // defined(OS_CHROMEOS) +  +-#if !defined(OS_CHROMEOS) && defined(OS_LINUX) ++#if !defined(OS_CHROMEOS) && (defined(OS_LINUX) || defined(OS_BSD)) + #include "ui/views/test/test_desktop_screen_x11.h" + #endif +  diff --git a/devel/electron6/files/patch-chrome_test_base_testing__browser__process.h b/devel/electron6/files/patch-chrome_test_base_testing__browser__process.h new file mode 100644 index 000000000000..69df67671045 --- /dev/null +++ b/devel/electron6/files/patch-chrome_test_base_testing__browser__process.h @@ -0,0 +1,13 @@ +--- chrome/test/base/testing_browser_process.h.orig	2019-09-10 11:13:47 UTC ++++ chrome/test/base/testing_browser_process.h +@@ -120,8 +120,8 @@ class TestingBrowserProcess : public BrowserProcess { +   DownloadRequestLimiter* download_request_limiter() override; +   StartupData* startup_data() override; +  +-#if (defined(OS_WIN) || defined(OS_LINUX)) && !defined(OS_CHROMEOS) +-  void StartAutoupdateTimer() override {} ++#if (defined(OS_WIN) || defined(OS_LINUX) || defined(OS_FREEBSD)) && !defined(OS_CHROMEOS) ++  void StartAutoupdateTimer() /*override*/ {} + #endif +  +   net_log::ChromeNetLog* net_log() override; diff --git a/devel/electron6/files/patch-chrome_test_chromedriver_chrome__launcher.cc b/devel/electron6/files/patch-chrome_test_chromedriver_chrome__launcher.cc new file mode 100644 index 000000000000..ff94b0563919 --- /dev/null +++ b/devel/electron6/files/patch-chrome_test_chromedriver_chrome__launcher.cc @@ -0,0 +1,13 @@ +--- chrome/test/chromedriver/chrome_launcher.cc.orig	2019-09-10 11:13:47 UTC ++++ chrome/test/chromedriver/chrome_launcher.cc +@@ -66,6 +66,10 @@ + #include "chrome/test/chromedriver/keycode_text_conversion.h" + #endif +  ++#if defined(OS_BSD) ++#include <sys/wait.h> ++#endif ++ + namespace { +  + // TODO(eseckler): Remove --ignore-certificate-errors for newer Chrome versions diff --git a/devel/electron6/files/patch-chrome_test_chromedriver_chrome_chrome__finder.cc b/devel/electron6/files/patch-chrome_test_chromedriver_chrome_chrome__finder.cc new file mode 100644 index 000000000000..d61ebc6a4334 --- /dev/null +++ b/devel/electron6/files/patch-chrome_test_chromedriver_chrome_chrome__finder.cc @@ -0,0 +1,20 @@ +--- chrome/test/chromedriver/chrome/chrome_finder.cc.orig	2019-09-10 10:42:32 UTC ++++ chrome/test/chromedriver/chrome/chrome_finder.cc +@@ -48,7 +48,7 @@ void GetApplicationDirs(std::vector<base::FilePath>* l +         installation_locations[i].Append(L"Chromium\\Application")); +   } + } +-#elif defined(OS_LINUX) ++#elif defined(OS_LINUX) || defined(OS_BSD) + void GetApplicationDirs(std::vector<base::FilePath>* locations) { +   // TODO: Respect users' PATH variables. +   // Until then, we use an approximation of the most common defaults. +@@ -135,7 +135,7 @@ bool FindChrome(base::FilePath* browser_exe) { + #elif defined(OS_MACOSX) +       base::FilePath("Google Chrome.app/Contents/MacOS/Google Chrome"), +       base::FilePath("Chromium.app/Contents/MacOS/Chromium") +-#elif defined(OS_LINUX) ++#elif defined(OS_LINUX) || defined(OS_BSD) +       base::FilePath("google-chrome"), +       base::FilePath("chrome"), +       base::FilePath("chromium"), diff --git a/devel/electron6/files/patch-chromecast_browser_cast__browser__main__parts.cc b/devel/electron6/files/patch-chromecast_browser_cast__browser__main__parts.cc new file mode 100644 index 000000000000..b8fc92112102 --- /dev/null +++ b/devel/electron6/files/patch-chromecast_browser_cast__browser__main__parts.cc @@ -0,0 +1,38 @@ +--- chromecast/browser/cast_browser_main_parts.cc.orig	2019-09-10 11:13:48 UTC ++++ chromecast/browser/cast_browser_main_parts.cc +@@ -68,7 +68,7 @@ + #include "ui/base/ui_base_switches.h" + #include "ui/gl/gl_switches.h" +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + #include <fontconfig/fontconfig.h> + #include <signal.h> + #include <sys/prctl.h> +@@ -280,7 +280,7 @@ const DefaultCommandLineSwitch kDefaultSwitches[] = { +     {cc::switches::kDisableThreadedAnimation, ""}, + #endif  // defined(OS_ANDROID) + #endif  // BUILDFLAG(IS_CAST_AUDIO_ONLY) +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + #if defined(ARCH_CPU_X86_FAMILY) +     // This is needed for now to enable the x11 Ozone platform to work with +     // current Linux/NVidia OpenGL drivers. +@@ -290,7 +290,7 @@ const DefaultCommandLineSwitch kDefaultSwitches[] = { +     {switches::kEnableHardwareOverlays, "cast"}, + #endif + #endif +-#endif  // defined(OS_LINUX) ++#endif  // defined(OS_LINUX) || defined(OS_BSD) +     // It's better to start GPU process on demand. For example, for TV platforms +     // cast starts in background and can't render until TV switches to cast +     // input. +@@ -435,7 +435,7 @@ void CastBrowserMainParts::ToolkitInitialized() { +     views_delegate_ = std::make_unique<CastViewsDelegate>(); + #endif  // defined(USE_AURA) +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   // Without this call, the FontConfig library gets implicitly initialized +   // on the first call to FontConfig. Since it's not safe to initialize it +   // concurrently from multiple threads, we explicitly initialize it here diff --git a/devel/electron6/files/patch-chromecast_browser_cast__content__browser__client.cc b/devel/electron6/files/patch-chromecast_browser_cast__content__browser__client.cc new file mode 100644 index 000000000000..1ce039cf8e7c --- /dev/null +++ b/devel/electron6/files/patch-chromecast_browser_cast__content__browser__client.cc @@ -0,0 +1,11 @@ +--- chromecast/browser/cast_content_browser_client.cc.orig	2019-09-10 11:13:48 UTC ++++ chromecast/browser/cast_content_browser_client.cc +@@ -576,7 +576,7 @@ void CastContentBrowserClient::AppendExtraCommandLineS +                                           switches::kAudioOutputChannels)); +     } +   } else if (process_type == switches::kGpuProcess) { +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   // Necessary for accelerated 2d canvas.  By default on Linux, Chromium assumes +   // GLES2 contexts can be lost to a power-save mode, which breaks GPU canvas +   // apps. diff --git a/devel/electron6/files/patch-chromecast_browser_metrics_BUILD.gn b/devel/electron6/files/patch-chromecast_browser_metrics_BUILD.gn new file mode 100644 index 000000000000..962a895f5829 --- /dev/null +++ b/devel/electron6/files/patch-chromecast_browser_metrics_BUILD.gn @@ -0,0 +1,11 @@ +--- chromecast/browser/metrics/BUILD.gn.orig	2019-09-10 10:42:34 UTC ++++ chromecast/browser/metrics/BUILD.gn +@@ -32,7 +32,7 @@ cast_source_set("metrics") { +     "//third_party/metrics_proto", +   ] +  +-  if (is_linux) { ++  if (is_linux || is_bsd) { +     sources += [ +       "external_metrics.cc", +       "external_metrics.h", diff --git a/devel/electron6/files/patch-chromecast_browser_tts_tts__controller__impl.cc b/devel/electron6/files/patch-chromecast_browser_tts_tts__controller__impl.cc new file mode 100644 index 000000000000..d80dfe7cca5b --- /dev/null +++ b/devel/electron6/files/patch-chromecast_browser_tts_tts__controller__impl.cc @@ -0,0 +1,14 @@ +--- chromecast/browser/tts/tts_controller_impl.cc.orig	2019-09-10 11:13:48 UTC ++++ chromecast/browser/tts/tts_controller_impl.cc +@@ -390,7 +390,11 @@ int TtsControllerImpl::QueueSize() { + } +  + TtsPlatformImpl* TtsControllerImpl::GetPlatformImpl() { ++#if defined(OS_BSD) ++  return NULL; ++#else +   return platform_impl_.get(); ++#endif // defined(OS_BSD) + } +  + std::string TtsControllerImpl::GetApplicationLocale() const { diff --git a/devel/electron6/files/patch-chromecast_media_cma_backend_media__pipeline__backend__for__mixer.cc b/devel/electron6/files/patch-chromecast_media_cma_backend_media__pipeline__backend__for__mixer.cc new file mode 100644 index 000000000000..9da2af310b78 --- /dev/null +++ b/devel/electron6/files/patch-chromecast_media_cma_backend_media__pipeline__backend__for__mixer.cc @@ -0,0 +1,23 @@ +--- chromecast/media/cma/backend/media_pipeline_backend_for_mixer.cc.orig	2019-09-10 11:13:49 UTC ++++ chromecast/media/cma/backend/media_pipeline_backend_for_mixer.cc +@@ -16,9 +16,9 @@ + #include "chromecast/media/cma/backend/av_sync.h" + #include "chromecast/media/cma/backend/video_decoder_for_mixer.h" +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + #include "chromecast/media/cma/backend/audio_buildflags.h" +-#endif  // defined(OS_LINUX) ++#endif  // defined(OS_LINUX) || defined(OS_BSD) +  + #if defined(OS_FUCHSIA) + #include <zircon/syscalls.h> +@@ -239,7 +239,7 @@ MediaPipelineBackendForMixer::GetTaskRunner() const { +   return static_cast<TaskRunnerImpl*>(params_.task_runner)->runner(); + } +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + int64_t MediaPipelineBackendForMixer::MonotonicClockNow() const { +   timespec now = {0, 0}; + #if BUILDFLAG(MEDIA_CLOCK_MONOTONIC_RAW) diff --git a/devel/electron6/files/patch-components_autofill_content_renderer_password__form__conversion__utils.cc b/devel/electron6/files/patch-components_autofill_content_renderer_password__form__conversion__utils.cc new file mode 100644 index 000000000000..04054a1be166 --- /dev/null +++ b/devel/electron6/files/patch-components_autofill_content_renderer_password__form__conversion__utils.cc @@ -0,0 +1,14 @@ +--- components/autofill/content/renderer/password_form_conversion_utils.cc.orig	2019-09-10 11:13:49 UTC ++++ components/autofill/content/renderer/password_form_conversion_utils.cc +@@ -36,7 +36,11 @@ + #include "third_party/blink/public/web/web_form_control_element.h" + #include "third_party/blink/public/web/web_input_element.h" + #include "third_party/blink/public/web/web_local_frame.h" ++#if defined(OS_BSD) ++#include <re2/re2.h> ++#else + #include "third_party/re2/src/re2/re2.h" ++#endif + #include "url/gurl.h" +  + using blink::WebFormControlElement; diff --git a/devel/electron6/files/patch-components_autofill_core_browser_autofill__experiments.cc b/devel/electron6/files/patch-components_autofill_core_browser_autofill__experiments.cc new file mode 100644 index 000000000000..b0064cb6b072 --- /dev/null +++ b/devel/electron6/files/patch-components_autofill_core_browser_autofill__experiments.cc @@ -0,0 +1,11 @@ +--- components/autofill/core/browser/autofill_experiments.cc.orig	2019-09-10 11:13:49 UTC ++++ components/autofill/core/browser/autofill_experiments.cc +@@ -215,7 +215,7 @@ bool IsAutofillNoLocalSaveOnUploadSuccessExperimentEna + } +  + bool OfferStoreUnmaskedCards(bool is_off_the_record) { +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) +   // The checkbox can be forced on with a flag, but by default we don't store +   // on Linux due to lack of system keychain integration. See crbug.com/162735 +   return base::CommandLine::ForCurrentProcess()->HasSwitch( diff --git a/devel/electron6/files/patch-components_autofill_core_browser_personal__data__manager.cc b/devel/electron6/files/patch-components_autofill_core_browser_personal__data__manager.cc new file mode 100644 index 000000000000..2abb59c985d3 --- /dev/null +++ b/devel/electron6/files/patch-components_autofill_core_browser_personal__data__manager.cc @@ -0,0 +1,15 @@ +--- components/autofill/core/browser/personal_data_manager.cc.orig	2019-09-10 11:13:50 UTC ++++ components/autofill/core/browser/personal_data_manager.cc +@@ -1940,10 +1940,10 @@ bool PersonalDataManager::IsServerCard(const CreditCar +  + bool PersonalDataManager::ShouldShowCardsFromAccountOption() const { + // The feature is only for Linux, Windows and Mac. +-#if (!defined(OS_LINUX) && !defined(OS_WIN) && !defined(OS_MACOSX)) || \ ++#if (!defined(OS_LINUX) && !defined(OS_WIN) && !defined(OS_MACOSX) && !defined(OS_BSD)) || \ +     defined(OS_CHROMEOS) +   return false; +-#endif  // (!defined(OS_LINUX) && !defined(OS_WIN) && !defined(OS_MACOSX)) || ++#endif  // (!defined(OS_LINUX) && !defined(OS_WIN) && !defined(OS_MACOSX) && !defined(OS_BSD)) || +         // defined(OS_CHROMEOS) +  +   // This option should only be shown for users that have not enabled the Sync diff --git a/devel/electron6/files/patch-components_autofill_core_common_autofill__util.cc b/devel/electron6/files/patch-components_autofill_core_common_autofill__util.cc new file mode 100644 index 000000000000..2ff0fc28d15d --- /dev/null +++ b/devel/electron6/files/patch-components_autofill_core_common_autofill__util.cc @@ -0,0 +1,11 @@ +--- components/autofill/core/common/autofill_util.cc.orig	2019-09-10 11:13:50 UTC ++++ components/autofill/core/common/autofill_util.cc +@@ -203,7 +203,7 @@ bool SanitizedFieldIsEmpty(const base::string16& value + } +  + bool ShouldAutoselectFirstSuggestionOnArrowDown() { +-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) ++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) +   return true; + #else +   return false; diff --git a/devel/electron6/files/patch-components_content__settings_core_browser_website__settings__registry.cc b/devel/electron6/files/patch-components_content__settings_core_browser_website__settings__registry.cc new file mode 100644 index 000000000000..5e1f8b9fdf49 --- /dev/null +++ b/devel/electron6/files/patch-components_content__settings_core_browser_website__settings__registry.cc @@ -0,0 +1,11 @@ +--- components/content_settings/core/browser/website_settings_registry.cc.orig	2019-09-10 10:42:34 UTC ++++ components/content_settings/core/browser/website_settings_registry.cc +@@ -66,7 +66,7 @@ const WebsiteSettingsInfo* WebsiteSettingsRegistry::Re + #if defined(OS_WIN) +   if (!(platform & PLATFORM_WINDOWS)) +     return nullptr; +-#elif defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#elif (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS) +   if (!(platform & PLATFORM_LINUX)) +     return nullptr; + #elif defined(OS_MACOSX) && !defined(OS_IOS) diff --git a/devel/electron6/files/patch-components_cookie__config_cookie__store__util.cc b/devel/electron6/files/patch-components_cookie__config_cookie__store__util.cc new file mode 100644 index 000000000000..5aad97e04e3e --- /dev/null +++ b/devel/electron6/files/patch-components_cookie__config_cookie__store__util.cc @@ -0,0 +1,24 @@ +--- components/cookie_config/cookie_store_util.cc.orig	2019-09-10 10:42:34 UTC ++++ components/cookie_config/cookie_store_util.cc +@@ -11,7 +11,7 @@ +  + namespace cookie_config { +  +-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) ++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) + namespace { +  + // Use the operating system's mechanisms to encrypt cookies before writing +@@ -63,10 +63,10 @@ base::LazyInstance<CookieOSCryptoDelegate>::Destructor + net::CookieCryptoDelegate* GetCookieCryptoDelegate() { +   return g_cookie_crypto_delegate.Pointer(); + } +-#else   // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) ++#else   // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) + net::CookieCryptoDelegate* GetCookieCryptoDelegate() { +   return NULL; + } +-#endif  // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) ++#endif  // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) +  + }  // namespace cookie_config diff --git a/devel/electron6/files/patch-components_crash_content_app_BUILD.gn b/devel/electron6/files/patch-components_crash_content_app_BUILD.gn new file mode 100644 index 000000000000..3b320f5f240c --- /dev/null +++ b/devel/electron6/files/patch-components_crash_content_app_BUILD.gn @@ -0,0 +1,20 @@ +--- components/crash/content/app/BUILD.gn.orig	2019-09-10 11:13:50 UTC ++++ components/crash/content/app/BUILD.gn +@@ -37,7 +37,7 @@ static_library("app") { +     sources += [ "crashpad.cc" ] +   } +  +-  if (is_linux) { ++  if (is_linux && !is_bsd) { +     sources += [ +       "breakpad_linux.cc", +       "breakpad_linux.h", +@@ -78,7 +78,7 @@ static_library("app") { +       "//sandbox", +     ] +  +-    if (is_linux) { ++    if (is_linux && !is_bsd) { +       deps += [ "//third_party/breakpad:client" ] +     } +   } diff --git a/devel/electron6/files/patch-components_crash_content_app_crashpad.cc b/devel/electron6/files/patch-components_crash_content_app_crashpad.cc new file mode 100644 index 000000000000..ba0b46182002 --- /dev/null +++ b/devel/electron6/files/patch-components_crash_content_app_crashpad.cc @@ -0,0 +1,43 @@ +--- components/crash/content/app/crashpad.cc.orig	2019-09-10 10:42:34 UTC ++++ components/crash/content/app/crashpad.cc +@@ -104,6 +104,12 @@ void InitializeCrashpadImpl(bool initial_client, +                             const base::FilePath& exe_path, +                             const std::vector<std::string>& initial_arguments, +                             bool embedded_handler) { ++ ++#if defined(OS_BSD) ++  NOTIMPLEMENTED(); ++  return; ++#endif ++ +   static bool initialized = false; +   DCHECK(!initialized); +   initialized = true; +@@ -124,7 +130,7 @@ void InitializeCrashpadImpl(bool initial_client, +     DCHECK(browser_process || process_type == "Chrome Installer" || +            process_type == "notification-helper" || +            process_type == "GCPW Installer" || process_type == "GCPW DLL"); +-#elif defined(OS_LINUX) || defined(OS_ANDROID) ++#elif defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD) +     DCHECK(browser_process); + #else + #error Port. +@@ -192,7 +198,7 @@ void InitializeCrashpadImpl(bool initial_client, +   // other "main, first process" to initialize things. There is no "relauncher" +   // on Windows, so this is synonymous with initial_client. +   const bool should_initialize_database_and_set_upload_policy = initial_client; +-#elif defined(OS_LINUX) || defined(OS_ANDROID) ++#elif defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD) +   const bool should_initialize_database_and_set_upload_policy = browser_process; + #endif +   if (should_initialize_database_and_set_upload_policy) { +@@ -272,7 +278,9 @@ bool GetUploadsEnabled() { +  + #if !defined(OS_ANDROID) + void DumpWithoutCrashing() { ++#if !defined(OS_BSD) +   CRASHPAD_SIMULATE_CRASH(); ++#endif + } + #endif +  diff --git a/devel/electron6/files/patch-components_crash_content_browser_BUILD.gn b/devel/electron6/files/patch-components_crash_content_browser_BUILD.gn new file mode 100644 index 000000000000..d951d6ad4fec --- /dev/null +++ b/devel/electron6/files/patch-components_crash_content_browser_BUILD.gn @@ -0,0 +1,27 @@ +--- components/crash/content/browser/BUILD.gn.orig	2019-09-10 10:42:34 UTC ++++ components/crash/content/browser/BUILD.gn +@@ -28,7 +28,7 @@ source_set("browser") { +     "//content/public/common", +   ] +  +-  if (is_linux || is_android) { ++  if ((is_linux && !is_bsd) || is_android) { +     set_sources_assignment_filter([]) +  +     # Want this file on both Linux and Android. +@@ -42,13 +42,13 @@ source_set("browser") { +     deps += [ "//third_party/crashpad/crashpad/client" ] +   } +  +-  if (!is_android) { ++  if (!is_android && !is_bsd) { +     deps += [ "//third_party/breakpad:client" ] +   } +  +   # This is not in the GYP build but this target includes breakpad client +   # headers, so add the dependency here. +-  if ((is_posix && !is_ios) || is_fuchsia) { ++  if ((is_posix && !is_ios && !is_bsd) || is_fuchsia) { +     configs += [ "//third_party/breakpad:client_config" ] +     public_configs = [ "//third_party/breakpad:client_config" ] +   } diff --git a/devel/electron6/files/patch-components_crash_core_common_BUILD.gn b/devel/electron6/files/patch-components_crash_core_common_BUILD.gn new file mode 100644 index 000000000000..8cc3451c5a3e --- /dev/null +++ b/devel/electron6/files/patch-components_crash_core_common_BUILD.gn @@ -0,0 +1,28 @@ +--- components/crash/core/common/BUILD.gn.orig	2019-09-10 11:13:50 UTC ++++ components/crash/core/common/BUILD.gn +@@ -7,7 +7,7 @@ import("//components/gwp_asan/buildflags/buildflags.gn +  + declare_args() { +   # If set to true, this will stub out and disable the entire crash key system. +-  use_crash_key_stubs = is_fuchsia ++  use_crash_key_stubs = is_fuchsia || is_bsd + } +  + group("common") { +@@ -93,7 +93,6 @@ target(crash_key_target_type, "crash_key") { +       ] +     } +  +-    deps += [ "//third_party/breakpad:client" ] +   } + } +  +@@ -153,7 +152,7 @@ source_set("unit_tests") { +     sources += [ "objc_zombie_unittest.mm" ] +   } +  +-  if (!is_mac && !is_win && !is_fuchsia && !is_android) { ++  if (!is_mac && !is_win && !is_fuchsia && !is_android && !is_bsd) { +     include_dirs = [ "//third_party/breakpad/breakpad/src/" ] +     sources += [ "crash_key_breakpad_unittest.cc" ] +   } diff --git a/devel/electron6/files/patch-components_discardable__memory_service_discardable__shared__memory__manager.cc b/devel/electron6/files/patch-components_discardable__memory_service_discardable__shared__memory__manager.cc new file mode 100644 index 000000000000..c65e1dcad327 --- /dev/null +++ b/devel/electron6/files/patch-components_discardable__memory_service_discardable__shared__memory__manager.cc @@ -0,0 +1,20 @@ +--- components/discardable_memory/service/discardable_shared_memory_manager.cc.orig	2019-09-10 11:13:51 UTC ++++ components/discardable_memory/service/discardable_shared_memory_manager.cc +@@ -32,7 +32,7 @@ + #include "components/discardable_memory/common/discardable_shared_memory_heap.h" + #include "mojo/public/cpp/bindings/strong_binding.h" +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + #include "base/files/file_path.h" + #include "base/files/file_util.h" + #include "base/metrics/histogram_macros.h" +@@ -170,7 +170,7 @@ int64_t GetDefaultMemoryLimit() { +     max_default_memory_limit /= 8; + #endif +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   base::FilePath shmem_dir; +   if (base::GetShmemTempDir(false, &shmem_dir)) { +     int64_t shmem_dir_amount_of_free_space = diff --git a/devel/electron6/files/patch-components_download_internal_common_base__file.cc b/devel/electron6/files/patch-components_download_internal_common_base__file.cc new file mode 100644 index 000000000000..24b0d89c8dfe --- /dev/null +++ b/devel/electron6/files/patch-components_download_internal_common_base__file.cc @@ -0,0 +1,20 @@ +--- components/download/internal/common/base_file.cc.orig	2019-09-10 11:13:51 UTC ++++ components/download/internal/common/base_file.cc +@@ -516,7 +516,7 @@ DownloadInterruptReason BaseFile::PublishDownload() { + } + #endif  // defined(OS_ANDROID) +  +-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) ++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) +  + namespace { +  +@@ -600,7 +600,7 @@ DownloadInterruptReason BaseFile::AnnotateWithSourceIn +   } +   return DOWNLOAD_INTERRUPT_REASON_FILE_FAILED; + } +-#else  // !OS_WIN && !OS_MACOSX && !OS_LINUX ++#else  // !OS_WIN && !OS_MACOSX && !OS_LINUX && !OS_BSD + DownloadInterruptReason BaseFile::AnnotateWithSourceInformation( +     const std::string& client_guid, +     const GURL& source_url, diff --git a/devel/electron6/files/patch-components_feature__engagement_public_event__constants.cc b/devel/electron6/files/patch-components_feature__engagement_public_event__constants.cc new file mode 100644 index 000000000000..d2d3b25ac32b --- /dev/null +++ b/devel/electron6/files/patch-components_feature__engagement_public_event__constants.cc @@ -0,0 +1,14 @@ +--- components/feature_engagement/public/event_constants.cc.orig	2019-09-10 11:13:51 UTC ++++ components/feature_engagement/public/event_constants.cc +@@ -29,9 +29,9 @@ const char kFocusModeOpened[] = "focus_mode_opened"; + const char kFocusModeConditionsMet[] = "focus_mode_conditions_met"; + #endif  // BUILDFLAG(ENABLE_DESKTOP_IN_PRODUCT_HELP) +  +-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_IOS) ++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_IOS) || defined(OS_BSD) + const char kNewTabOpened[] = "new_tab_opened"; +-#endif  // defined(OS_WIN) || defined(OS_LINUX) || defined(OS_IOS) ++#endif  // defined(OS_WIN) || defined(OS_LINUX) || defined(OS_IOS) || defined(OS_BSD) +  + #if defined(OS_IOS) + const char kChromeOpened[] = "chrome_opened"; diff --git a/devel/electron6/files/patch-components_feature__engagement_public_event__constants.h b/devel/electron6/files/patch-components_feature__engagement_public_event__constants.h new file mode 100644 index 000000000000..6a8f8bc0de41 --- /dev/null +++ b/devel/electron6/files/patch-components_feature__engagement_public_event__constants.h @@ -0,0 +1,20 @@ +--- components/feature_engagement/public/event_constants.h.orig	2019-09-10 11:13:51 UTC ++++ components/feature_engagement/public/event_constants.h +@@ -57,7 +57,7 @@ extern const char kFocusModeOpened[]; + extern const char kFocusModeConditionsMet[]; + #endif  // BUILDFLAG(ENABLE_DESKTOP_IN_PRODUCT_HELP) +  +-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_IOS) ++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_IOS) || defined(OS_BSD) + // This event is included in the deferred onboarding events for the New Tab + // described above, but it is also used on iOS, so it must be compiled + // separately. +@@ -65,7 +65,7 @@ extern const char kFocusModeConditionsMet[]; + // The user has explicitly opened a new tab via an entry point from inside of + // Chrome. + extern const char kNewTabOpened[]; +-#endif  // defined(OS_WIN) || defined(OS_LINUX) || defined(OS_IOS) ++#endif  // defined(OS_WIN) || defined(OS_LINUX) || defined(OS_IOS) || defined(OS_BSD) +  + #if defined(OS_IOS) + // The user has opened Chrome (cold start or from background). diff --git a/devel/electron6/files/patch-components_feedback_anonymizer__tool.cc b/devel/electron6/files/patch-components_feedback_anonymizer__tool.cc new file mode 100644 index 000000000000..28c9d6bf5e3f --- /dev/null +++ b/devel/electron6/files/patch-components_feedback_anonymizer__tool.cc @@ -0,0 +1,14 @@ +--- components/feedback/anonymizer_tool.cc.orig	2019-09-10 11:13:51 UTC ++++ components/feedback/anonymizer_tool.cc +@@ -13,7 +13,11 @@ + #include "base/strings/stringprintf.h" + #include "content/public/browser/browser_thread.h" + #include "net/base/ip_address.h" ++#if defined(OS_BSD) ++#include <re2/re2.h> ++#else + #include "third_party/re2/src/re2/re2.h" ++#endif +  + using re2::RE2; +  diff --git a/devel/electron6/files/patch-components_flags__ui_flags__state.cc b/devel/electron6/files/patch-components_flags__ui_flags__state.cc new file mode 100644 index 000000000000..9314cfe80ddd --- /dev/null +++ b/devel/electron6/files/patch-components_flags__ui_flags__state.cc @@ -0,0 +1,11 @@ +--- components/flags_ui/flags_state.cc.orig	2019-09-10 11:13:52 UTC ++++ components/flags_ui/flags_state.cc +@@ -616,7 +616,7 @@ int FlagsState::GetCurrentPlatform() { +   return kOsWin; + #elif defined(OS_CHROMEOS)  // Needs to be before the OS_LINUX check. +   return kOsCrOS; +-#elif defined(OS_LINUX) || defined(OS_OPENBSD) ++#elif defined(OS_LINUX) || defined(OS_OPENBSD) || defined(OS_FREEBSD) +   return kOsLinux; + #elif defined(OS_ANDROID) +   return kOsAndroid; diff --git a/devel/electron6/files/patch-components_gcm__driver_gcm__client.h b/devel/electron6/files/patch-components_gcm__driver_gcm__client.h new file mode 100644 index 000000000000..6fb13d1031b1 --- /dev/null +++ b/devel/electron6/files/patch-components_gcm__driver_gcm__client.h @@ -0,0 +1,10 @@ +--- components/gcm_driver/gcm_client.h.orig	2019-09-10 11:13:52 UTC ++++ components/gcm_driver/gcm_client.h +@@ -85,6 +85,7 @@ class GCMClient { +     PLATFORM_CROS, +     PLATFORM_IOS, +     PLATFORM_ANDROID, ++    PLATFORM_BSD, +     PLATFORM_UNSPECIFIED +   }; +  diff --git a/devel/electron6/files/patch-components_gcm__driver_gcm__client__impl.cc b/devel/electron6/files/patch-components_gcm__driver_gcm__client__impl.cc new file mode 100644 index 000000000000..236c2f05ab98 --- /dev/null +++ b/devel/electron6/files/patch-components_gcm__driver_gcm__client__impl.cc @@ -0,0 +1,12 @@ +--- components/gcm_driver/gcm_client_impl.cc.orig	2019-09-10 11:13:52 UTC ++++ components/gcm_driver/gcm_client_impl.cc +@@ -149,6 +149,9 @@ void ToCheckinProtoVersion( +     case GCMClient::PLATFORM_CROS: +       platform = checkin_proto::ChromeBuildProto_Platform_PLATFORM_CROS; +       break; ++    case GCMClient::PLATFORM_BSD: ++      platform = checkin_proto::ChromeBuildProto_Platform_PLATFORM_LINUX; ++      break; +     case GCMClient::PLATFORM_UNSPECIFIED: +       // For unknown platform, return as LINUX. +       platform = checkin_proto::ChromeBuildProto_Platform_PLATFORM_LINUX; diff --git a/devel/electron6/files/patch-components_keyed__service_core_dependency__graph__unittest.cc b/devel/electron6/files/patch-components_keyed__service_core_dependency__graph__unittest.cc new file mode 100644 index 000000000000..6598619bec1a --- /dev/null +++ b/devel/electron6/files/patch-components_keyed__service_core_dependency__graph__unittest.cc @@ -0,0 +1,14 @@ +--- components/keyed_service/core/dependency_graph_unittest.cc.orig	2019-09-10 10:42:35 UTC ++++ components/keyed_service/core/dependency_graph_unittest.cc +@@ -9,7 +9,11 @@ + #include "components/keyed_service/core/dependency_graph.h" + #include "components/keyed_service/core/dependency_node.h" + #include "testing/gtest/include/gtest/gtest.h" ++#if defined(OS_BSD) ++#include <re2/re2.h> ++#else + #include "third_party/re2/src/re2/re2.h" ++#endif +  + namespace { +  diff --git a/devel/electron6/files/patch-components_metrics_BUILD.gn b/devel/electron6/files/patch-components_metrics_BUILD.gn new file mode 100644 index 000000000000..c10759e3cec3 --- /dev/null +++ b/devel/electron6/files/patch-components_metrics_BUILD.gn @@ -0,0 +1,14 @@ +--- components/metrics/BUILD.gn.orig	2019-09-10 11:13:53 UTC ++++ components/metrics/BUILD.gn +@@ -146,6 +146,11 @@ jumbo_static_library("metrics") { +   if (is_fuchsia) { +     sources += [ "drive_metrics_provider_fuchsia.cc" ] +   } ++   ++  if (is_bsd) { ++    sources -= [ "system_memory_stats_recorder_linux.cc" ] ++  } ++ + } +  + # The component metrics provider is a separate target because it depends upon diff --git a/devel/electron6/files/patch-components_metrics_drive__metrics__provider__linux.cc b/devel/electron6/files/patch-components_metrics_drive__metrics__provider__linux.cc new file mode 100644 index 000000000000..c2088a908602 --- /dev/null +++ b/devel/electron6/files/patch-components_metrics_drive__metrics__provider__linux.cc @@ -0,0 +1,16 @@ +--- components/metrics/drive_metrics_provider_linux.cc.orig	2019-09-10 10:42:35 UTC ++++ components/metrics/drive_metrics_provider_linux.cc +@@ -4,7 +4,13 @@ +  + #include "components/metrics/drive_metrics_provider.h" +  ++#if defined(OS_BSD) ++#include <sys/types.h> ++#define MAJOR(dev) major(dev) ++#define MINOR(dev) minor(dev) ++#else + #include <linux/kdev_t.h>  // For MAJOR()/MINOR(). ++#endif + #include <sys/stat.h> + #include <string> +  diff --git a/devel/electron6/files/patch-components_metrics_metrics__log.cc b/devel/electron6/files/patch-components_metrics_metrics__log.cc new file mode 100644 index 000000000000..b17cb8179e36 --- /dev/null +++ b/devel/electron6/files/patch-components_metrics_metrics__log.cc @@ -0,0 +1,11 @@ +--- components/metrics/metrics_log.cc.orig	2019-09-10 11:13:53 UTC ++++ components/metrics/metrics_log.cc +@@ -210,7 +210,7 @@ void MetricsLog::RecordCoreSystemProfile( + // OperatingSystemVersion refers to the ChromeOS release version. + #if defined(OS_CHROMEOS) +   os->set_kernel_version(base::SysInfo::KernelVersion()); +-#elif defined(OS_LINUX) ++#elif defined(OS_LINUX) || defined(OS_BSD) +   // Linux operating system version is copied over into kernel version to be +   // consistent. +   os->set_kernel_version(base::SysInfo::OperatingSystemVersion()); diff --git a/devel/electron6/files/patch-components_metrics_system__memory__stats__recorder__linux.cc b/devel/electron6/files/patch-components_metrics_system__memory__stats__recorder__linux.cc new file mode 100644 index 000000000000..61acf3813328 --- /dev/null +++ b/devel/electron6/files/patch-components_metrics_system__memory__stats__recorder__linux.cc @@ -0,0 +1,18 @@ +--- components/metrics/system_memory_stats_recorder_linux.cc.orig	2019-09-10 11:13:53 UTC ++++ components/metrics/system_memory_stats_recorder_linux.cc +@@ -30,6 +30,7 @@ namespace metrics { +   UMA_HISTOGRAM_LINEAR(name, sample, 2500, 50) +  + void RecordMemoryStats(RecordMemoryStatsType type) { ++#if !defined(OS_FREEBSD) +   base::SystemMemoryInfoKB memory; +   if (!base::GetSystemMemoryInfo(&memory)) +     return; +@@ -93,6 +94,7 @@ void RecordMemoryStats(RecordMemoryStatsType type) { +       break; +     } +   } ++#endif // !defined(OS_FREEBSD) + } +  + }  // namespace metrics diff --git a/devel/electron6/files/patch-components_neterror_resources_neterror.js b/devel/electron6/files/patch-components_neterror_resources_neterror.js new file mode 100644 index 000000000000..f04c714a1ae2 --- /dev/null +++ b/devel/electron6/files/patch-components_neterror_resources_neterror.js @@ -0,0 +1,11 @@ +--- components/neterror/resources/neterror.js.orig	2019-09-10 11:13:53 UTC ++++ components/neterror/resources/neterror.js +@@ -160,7 +160,7 @@ function setUpCachedButton(buttonStrings) { + } +  + var primaryControlOnLeft = true; +-// <if expr="is_macosx or is_ios or is_linux or is_android"> ++// <if expr="is_macosx or is_ios or is_linux or is_android or is_bsd"> + primaryControlOnLeft = false; + // </if> +  diff --git a/devel/electron6/files/patch-components_network__session__configurator_browser_network__session__configurator.cc b/devel/electron6/files/patch-components_network__session__configurator_browser_network__session__configurator.cc new file mode 100644 index 000000000000..ece4d2c922ea --- /dev/null +++ b/devel/electron6/files/patch-components_network__session__configurator_browser_network__session__configurator.cc @@ -0,0 +1,11 @@ +--- components/network_session_configurator/browser/network_session_configurator.cc.orig	2019-09-10 11:13:53 UTC ++++ components/network_session_configurator/browser/network_session_configurator.cc +@@ -716,7 +716,7 @@ net::URLRequestContextBuilder::HttpCacheParams::Type C +   } + #endif  // #if !defined(OS_ANDROID) +  +-#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS) ++#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD) +   return net::URLRequestContextBuilder::HttpCacheParams::DISK_SIMPLE; + #else +   return net::URLRequestContextBuilder::HttpCacheParams::DISK_BLOCKFILE; diff --git a/devel/electron6/files/patch-components_new__or__sad__tab__strings.grdp b/devel/electron6/files/patch-components_new__or__sad__tab__strings.grdp new file mode 100644 index 000000000000..7a50f367a8fb --- /dev/null +++ b/devel/electron6/files/patch-components_new__or__sad__tab__strings.grdp @@ -0,0 +1,38 @@ +--- components/new_or_sad_tab_strings.grdp.orig	2019-09-10 11:13:53 UTC ++++ components/new_or_sad_tab_strings.grdp +@@ -51,7 +51,7 @@ +           Open page in a new Incognito window (⇧⌘N) +         </message> +       </if> +-      <if expr="is_win or is_linux or chromeos"> ++      <if expr="is_win or is_posix or chromeos"> +         <message name="IDS_SAD_TAB_RELOAD_INCOGNITO" desc="One of the bullet points displayed on the web page if a reload failed to fix the issue, advising the user to open the web page in Chrome's Incognito mode."> +           Open page in a new Incognito window (Ctrl-Shift-N) +         </message> +@@ -69,7 +69,7 @@ +           Close other tabs or apps +         </message> +       </if> +-      <if expr="is_linux and not chromeos"> ++      <if expr="is_posix and not chromeos"> +         <message name="IDS_SAD_TAB_RELOAD_CLOSE_TABS" desc="One of the bullet points displayed on the web page if a reload failed to fix the issue, advising the user to close other Chrome tabs or programs running on their computer."> +           Close other tabs or programs +         </message> +@@ -79,7 +79,7 @@ +           Close other apps +         </message> +       </if> +-      <if expr="is_linux and not chromeos"> ++      <if expr="is_posix and not chromeos"> +         <message name="IDS_SAD_TAB_RELOAD_CLOSE_NOTABS" desc="One of the bullet points displayed on the web page if a reload failed to fix the issue, advising the user to close other programs running on their computer (Linux)."> +           Close other programs +         </message> +@@ -94,7 +94,7 @@ +           Restart Chromium +         </message> +       </if> +-      <if expr="is_win or is_linux or is_macosx or chromeos"> ++      <if expr="is_win or is_posix or is_macosx or chromeos"> +         <message name="IDS_SAD_TAB_RELOAD_RESTART_DEVICE" desc="One of the bullet points displayed on the web page if a reload failed to fix the issue, advising the user to restart their computer."> +           Restart your computer +         </message> diff --git a/devel/electron6/files/patch-components_os__crypt_os__crypt.h b/devel/electron6/files/patch-components_os__crypt_os__crypt.h new file mode 100644 index 000000000000..5943afa1aa2e --- /dev/null +++ b/devel/electron6/files/patch-components_os__crypt_os__crypt.h @@ -0,0 +1,48 @@ +--- components/os_crypt/os_crypt.h.orig	2019-09-10 10:42:35 UTC ++++ components/os_crypt/os_crypt.h +@@ -15,9 +15,9 @@ + #include "base/strings/string16.h" + #include "build/build_config.h" +  +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) + class KeyStorageLinux; +-#endif  // defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#endif  // (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) +  + #if defined(OS_MACOSX) && !defined(OS_IOS) + class PrefRegistrySimple; +@@ -34,13 +34,13 @@ struct Config; + // true for Linux, if a password management tool is available. + class OSCrypt { +  public: +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) +   // Set the configuration of OSCrypt. +   static COMPONENT_EXPORT(OS_CRYPT) void SetConfig( +       std::unique_ptr<os_crypt::Config> config); +-#endif  // defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#endif  // (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) +  +-#if defined(OS_MACOSX) || (defined(OS_LINUX) && !defined(OS_CHROMEOS)) ++#if defined(OS_MACOSX) || (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) +   // On Linux returns true iff the real secret key (not hardcoded one) is +   // available. On MacOS returns true if Keychain is available (for mock +   // Keychain it returns true if not using locked Keychain, false if using +@@ -112,7 +112,7 @@ class OSCrypt { +   DISALLOW_IMPLICIT_CONSTRUCTORS(OSCrypt); + }; +  +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) + // For unit testing purposes, inject methods to be used. + // |get_key_storage_mock| provides the desired |KeyStorage| implementation. + // If the provider returns |nullptr|, a hardcoded password will be used. +@@ -127,6 +127,6 @@ void UseMockKeyStorageForTesting( + // Clears any caching and most lazy initialisations performed by the production + // code. Should be used after any test which required a password. + COMPONENT_EXPORT(OS_CRYPT) void ClearCacheForTesting(); +-#endif  // defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#endif  // (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) +  + #endif  // COMPONENTS_OS_CRYPT_OS_CRYPT_H_ diff --git a/devel/electron6/files/patch-components_os__crypt_os__crypt__unittest.cc b/devel/electron6/files/patch-components_os__crypt_os__crypt__unittest.cc new file mode 100644 index 000000000000..32727982e130 --- /dev/null +++ b/devel/electron6/files/patch-components_os__crypt_os__crypt__unittest.cc @@ -0,0 +1,11 @@ +--- components/os_crypt/os_crypt_unittest.cc.orig	2019-09-10 10:42:35 UTC ++++ components/os_crypt/os_crypt_unittest.cc +@@ -18,7 +18,7 @@ + #include "components/os_crypt/os_crypt_mocker.h" + #include "testing/gtest/include/gtest/gtest.h" +  +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS) + #include "components/os_crypt/os_crypt_mocker_linux.h" + #endif +  diff --git a/devel/electron6/files/patch-components_plugins_renderer_plugin__placeholder.cc b/devel/electron6/files/patch-components_plugins_renderer_plugin__placeholder.cc new file mode 100644 index 000000000000..c1993bfe7acf --- /dev/null +++ b/devel/electron6/files/patch-components_plugins_renderer_plugin__placeholder.cc @@ -0,0 +1,14 @@ +--- components/plugins/renderer/plugin_placeholder.cc.orig	2019-09-10 10:42:35 UTC ++++ components/plugins/renderer/plugin_placeholder.cc +@@ -17,7 +17,11 @@ + #include "third_party/blink/public/web/web_plugin_container.h" + #include "third_party/blink/public/web/web_script_source.h" + #include "third_party/blink/public/web/web_serialized_script_value.h" ++#if defined(OS_BSD) ++#include <re2/re2.h> ++#else + #include "third_party/re2/src/re2/re2.h" ++#endif // defined(OS_BSD) +  + namespace plugins { +  diff --git a/devel/electron6/files/patch-components_policy_core_common_cloud_cloud__policy__util.cc b/devel/electron6/files/patch-components_policy_core_common_cloud_cloud__policy__util.cc new file mode 100644 index 000000000000..192efaa7aa3f --- /dev/null +++ b/devel/electron6/files/patch-components_policy_core_common_cloud_cloud__policy__util.cc @@ -0,0 +1,73 @@ +--- components/policy/core/common/cloud/cloud_policy_util.cc.orig	2019-09-10 10:42:35 UTC ++++ components/policy/core/common/cloud/cloud_policy_util.cc +@@ -16,7 +16,7 @@ + #include <wincred.h> + #endif +  +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) || defined(OS_MACOSX) ++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_MACOSX) || defined(OS_BSD) + #include <pwd.h> + #include <sys/types.h> + #include <unistd.h> +@@ -28,7 +28,7 @@ + #include <sys/sysctl.h> + #endif +  +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) + #include <limits.h>  // For HOST_NAME_MAX + #endif +  +@@ -52,7 +52,7 @@ + #include "base/system/sys_info.h" + #endif +  +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) + #include "base/system/sys_info.h" + #endif +  +@@ -61,11 +61,24 @@ namespace policy { + namespace em = enterprise_management; +  + std::string GetMachineName() { +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) +   char hostname[HOST_NAME_MAX]; +   if (gethostname(hostname, HOST_NAME_MAX) == 0)  // Success. +     return hostname; +   return std::string(); ++#elif defined(OS_BSD) ++  long host_name_max = sysconf(_SC_HOST_NAME_MAX); ++  if (host_name_max != -1) { ++    char *hostname = new char[host_name_max + 1](); ++    std::string hostname_r; ++ ++    if (gethostname(hostname, host_name_max) == 0) ++      hostname_r = hostname; ++ ++    delete[] hostname; ++    return hostname_r; ++  } ++  return std::string(); + #elif defined(OS_MACOSX) +   // Do not use NSHost currentHost, as it's very slow. http://crbug.com/138570 +   SCDynamicStoreContext context = {0, NULL, NULL, NULL}; +@@ -111,7 +124,7 @@ std::string GetMachineName() { + } +  + std::string GetOSVersion() { +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) || defined(OS_MACOSX) ++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_MACOSX) || defined(OS_BSD) +   return base::SysInfo::OperatingSystemVersion(); + #elif defined(OS_WIN) +   base::win::OSInfo::VersionNumber version_number = +@@ -134,7 +147,7 @@ std::string GetOSArchitecture() { + } +  + std::string GetOSUsername() { +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) || defined(OS_MACOSX) ++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_MACOSX) || defined(OS_BSD) +   struct passwd* creds = getpwuid(getuid()); +   if (!creds || !creds->pw_name) +     return std::string(); diff --git a/devel/electron6/files/patch-components_policy_core_common_schema.cc b/devel/electron6/files/patch-components_policy_core_common_schema.cc new file mode 100644 index 000000000000..8fd3460a00da --- /dev/null +++ b/devel/electron6/files/patch-components_policy_core_common_schema.cc @@ -0,0 +1,14 @@ +--- components/policy/core/common/schema.cc.orig	2019-09-10 11:13:54 UTC ++++ components/policy/core/common/schema.cc +@@ -23,7 +23,11 @@ + #include "base/strings/stringprintf.h" + #include "components/policy/core/common/json_schema_constants.h" + #include "components/policy/core/common/schema_internal.h" ++#if defined(OS_FREEBSD) ++#include <re2/re2.h> ++#else + #include "third_party/re2/src/re2/re2.h" ++#endif +  + namespace schema = json_schema_constants; +  diff --git a/devel/electron6/files/patch-components_policy_resources_policy__templates.json b/devel/electron6/files/patch-components_policy_resources_policy__templates.json new file mode 100644 index 000000000000..bf87e5b6586c --- /dev/null +++ b/devel/electron6/files/patch-components_policy_resources_policy__templates.json @@ -0,0 +1,83 @@ +--- components/policy/resources/policy_templates.json.orig	2019-09-10 11:13:54 UTC ++++ components/policy/resources/policy_templates.json +@@ -1019,7 +1019,7 @@ +       'name': 'HomepageLocation', +       'type': 'string', +       'schema': { 'type': 'string' }, +-      'supported_on': ['chrome.*:8-', 'chrome_os:11-'], ++      'supported_on': ['chrome.*:8-', 'chrome_os:11-', 'chrome.freebsd:9-'], +       'features': { +         'can_be_recommended': True, +         'dynamic_refresh': True, +@@ -1048,7 +1048,7 @@ +       'name': 'HomepageIsNewTabPage', +       'type': 'main', +       'schema': { 'type': 'boolean' }, +-      'supported_on': ['chrome.*:8-', 'chrome_os:11-'], ++      'supported_on': ['chrome.*:8-', 'chrome_os:11-', 'chrome.freebsd:9-'], +       'features': { +         'can_be_recommended': True, +         'dynamic_refresh': True, +@@ -1074,7 +1074,7 @@ +       'name': 'NewTabPageLocation', +       'type': 'string', +       'schema': { 'type': 'string' }, +-      'supported_on': ['chrome.*:58-', 'chrome_os:58-'], ++      'supported_on': ['chrome.*:58-', 'chrome_os:58-', 'chrome.freebsd:9-'], +       'features': { +         'can_be_recommended': True, +         'dynamic_refresh': True, +@@ -1767,7 +1767,7 @@ +       'name': 'RemoteAccessHostMatchUsername', +       'type': 'main', +       'schema': { 'type': 'boolean' }, +-      'supported_on': ['chrome.linux:25-', 'chrome.mac:25-', 'chrome_os:42-'], ++      'supported_on': ['chrome.linux:25-', 'chrome.mac:25-', 'chrome_os:42-', 'chrome.freebsd:25-'], +       'features': { +         'dynamic_refresh': True, +         'per_profile': False, +@@ -3399,7 +3399,7 @@ +       'name': 'GSSAPILibraryName', +       'type': 'string', +       'schema': { 'type': 'string' }, +-      'supported_on': ['chrome.linux:9-'], ++      'supported_on': ['chrome.linux:9-', 'chrome.freebsd:9-'], +       'features': { +         'dynamic_refresh': False, +         'per_profile': False, +@@ -3450,7 +3450,7 @@ +       'name': 'NtlmV2Enabled', +       'type': 'main', +       'schema': { 'type': 'boolean' }, +-      'supported_on': ['chrome.linux:63-','chrome.mac:63-','chrome_os:63-','android:63-','webview_android:63-'], ++      'supported_on': ['chrome.linux:63-','chrome.mac:63-','chrome_os:63-','android:63-','webview_android:63-', 'chrome.freebsd:63-'], +       'features': { +         'dynamic_refresh': True, +         'per_profile': False, +@@ -6637,7 +6637,7 @@ +       'name': 'RequireOnlineRevocationChecksForLocalAnchors', +       'type': 'main', +       'schema': { 'type': 'boolean' }, +-      'supported_on': ['chrome_os:30-', 'chrome.linux:30-', 'chrome.win:30-'], ++      'supported_on': ['chrome_os:30-', 'chrome.linux:30-', 'chrome.win:30-', 'chrome.freebsd:30-'], +       'features': { +         'dynamic_refresh': True, +         'per_profile': False, +@@ -7761,7 +7761,7 @@ +       'name': 'BackgroundModeEnabled', +       'type': 'main', +       'schema': { 'type': 'boolean' }, +-      'supported_on': ['chrome.win:19-', 'chrome.linux:19-'], ++      'supported_on': ['chrome.win:19-', 'chrome.linux:19-', 'chrome.freebsd:19-'], +       'features': { +         'can_be_recommended': True, +         'dynamic_refresh': True, +@@ -8277,7 +8277,7 @@ +       'name': 'FullscreenAllowed', +       'type': 'main', +       'schema': { 'type': 'boolean' }, +-      'supported_on': ['chrome.win:31-', 'chrome.linux:31-', 'chrome_os:31-'], ++      'supported_on': ['chrome.win:31-', 'chrome.linux:31-', 'chrome_os:31-', 'chrome.freebsd:31-'], +       'features': { +         'dynamic_refresh': True, +         'per_profile': True, diff --git a/devel/electron6/files/patch-components_policy_tools_generate__policy__source.py b/devel/electron6/files/patch-components_policy_tools_generate__policy__source.py new file mode 100644 index 000000000000..a403f5414fac --- /dev/null +++ b/devel/electron6/files/patch-components_policy_tools_generate__policy__source.py @@ -0,0 +1,20 @@ +--- components/policy/tools/generate_policy_source.py.orig	2019-09-10 11:13:57 UTC ++++ components/policy/tools/generate_policy_source.py +@@ -86,7 +86,7 @@ class PolicyDetails: +       if platform not in [ +           'chrome_frame', 'chrome_os', 'android', 'webview_android', +           'chrome.win', 'chrome.linux', 'chrome.mac', 'chrome.fuchsia', +-          'chrome.*' ++          'chrome.freebsd', 'chrome.*' +       ]: +         raise RuntimeError('Platform "%s" is not supported' % platform) +  +@@ -105,7 +105,7 @@ class PolicyDetails: +       if platform.startswith('chrome.'): +         platform_sub = platform[7:] +         if platform_sub == '*': +-          self.platforms.extend(['win', 'mac', 'linux', 'fuchsia']) ++          self.platforms.extend(['win', 'mac', 'linux', 'fuchsia', 'freebsd']) +         else: +           self.platforms.append(platform_sub) +       else: diff --git a/devel/electron6/files/patch-components_previews_core_previews__features.cc b/devel/electron6/files/patch-components_previews_core_previews__features.cc new file mode 100644 index 000000000000..04d099c9483b --- /dev/null +++ b/devel/electron6/files/patch-components_previews_core_previews__features.cc @@ -0,0 +1,18 @@ +--- components/previews/core/previews_features.cc.orig	2019-09-10 11:13:57 UTC ++++ components/previews/core/previews_features.cc +@@ -14,12 +14,12 @@ namespace features { + // are enabled are controlled by other features. + const base::Feature kPreviews { +   "Previews", +-#if defined(OS_ANDROID) || defined(OS_LINUX) ++#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_BSD) +       // Previews allowed for Android (but also allow on Linux for dev/debug). +       base::FEATURE_ENABLED_BY_DEFAULT +-#else   // !defined(OS_ANDROID) || defined(OS_LINUX) ++#else   // !defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_BSD) +       base::FEATURE_DISABLED_BY_DEFAULT +-#endif  // defined(OS_ANDROID) || defined(OS_LINUX) ++#endif  // defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_BSD) + }; +  + // Enables the Offline previews on android slow connections. diff --git a/devel/electron6/files/patch-components_services_filesystem_file__system__app.cc b/devel/electron6/files/patch-components_services_filesystem_file__system__app.cc new file mode 100644 index 000000000000..917b4203e281 --- /dev/null +++ b/devel/electron6/files/patch-components_services_filesystem_file__system__app.cc @@ -0,0 +1,20 @@ +--- components/services/filesystem/file_system_app.cc.orig	2019-09-10 11:13:58 UTC ++++ components/services/filesystem/file_system_app.cc +@@ -19,7 +19,7 @@ + #elif defined(OS_ANDROID) + #include "base/base_paths_android.h" + #include "base/path_service.h" +-#elif defined(OS_LINUX) ++#elif defined(OS_LINUX) || defined(OS_BSD) + #include "base/environment.h" + #include "base/nix/xdg_util.h" + #elif defined(OS_MACOSX) +@@ -68,7 +68,7 @@ base::FilePath FileSystemApp::GetUserDataDir() { +     CHECK(base::PathService::Get(base::DIR_APP_DATA, &path)); + #elif defined(OS_ANDROID) +     CHECK(base::PathService::Get(base::DIR_ANDROID_APP_DATA, &path)); +-#elif defined(OS_LINUX) ++#elif defined(OS_LINUX) || defined(OS_BSD) +     std::unique_ptr<base::Environment> env(base::Environment::Create()); +     path = base::nix::GetXDGDirectory( +         env.get(), base::nix::kXdgConfigHomeEnvVar, base::nix::kDotConfigDir); diff --git a/devel/electron6/files/patch-components_startup__metric__utils_browser_startup__metric__utils.cc b/devel/electron6/files/patch-components_startup__metric__utils_browser_startup__metric__utils.cc new file mode 100644 index 000000000000..ffa1cfaac029 --- /dev/null +++ b/devel/electron6/files/patch-components_startup__metric__utils_browser_startup__metric__utils.cc @@ -0,0 +1,20 @@ +--- components/startup_metric_utils/browser/startup_metric_utils.cc.orig	2019-09-10 11:13:58 UTC ++++ components/startup_metric_utils/browser/startup_metric_utils.cc +@@ -456,7 +456,7 @@ void AddStartupEventsForTelemetry() + // RecordBrowserMainMessageLoopStart, the time since last startup is also logged + // to a histogram suffixed with the startup temperature. + void RecordTimeSinceLastStartup(PrefService* pref_service) { +-#if defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_LINUX) ++#if defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD) +   DCHECK(pref_service); +  +   // Get the timestamp of the current startup. +@@ -485,7 +485,7 @@ void RecordTimeSinceLastStartup(PrefService* pref_serv +   // Write the timestamp of the current startup in |pref_service|. +   pref_service->SetInt64(prefs::kLastStartupTimestamp, +                          process_start_time.ToInternalValue()); +-#endif  // defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_LINUX) ++#endif  // defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD) + } +  + // Logs the Startup.SameVersionStartupCount histogram. Relies on |pref_service| diff --git a/devel/electron6/files/patch-components_storage__monitor_BUILD.gn b/devel/electron6/files/patch-components_storage__monitor_BUILD.gn new file mode 100644 index 000000000000..6116b1e39b93 --- /dev/null +++ b/devel/electron6/files/patch-components_storage__monitor_BUILD.gn @@ -0,0 +1,20 @@ +--- components/storage_monitor/BUILD.gn.orig	2019-09-10 11:13:58 UTC ++++ components/storage_monitor/BUILD.gn +@@ -65,6 +65,17 @@ static_library("storage_monitor") { +     ] +   } +  ++  if (is_bsd) { ++    sources -= [ ++      "mtab_watcher_linux.cc", ++      "mtab_watcher_linux.h", ++    ] ++    sources += [ ++      "storage_monitor_freebsd.cc", ++      "storage_monitor_freebsd.h", ++    ] ++  } ++ +   if (use_udev) { +     deps += [ "//device/udev_linux" ] +   } else if (is_linux) { diff --git a/devel/electron6/files/patch-components_storage__monitor_removable__device__constants.cc b/devel/electron6/files/patch-components_storage__monitor_removable__device__constants.cc new file mode 100644 index 000000000000..936c2438ee2a --- /dev/null +++ b/devel/electron6/files/patch-components_storage__monitor_removable__device__constants.cc @@ -0,0 +1,11 @@ +--- components/storage_monitor/removable_device_constants.cc.orig	2019-09-10 10:42:35 UTC ++++ components/storage_monitor/removable_device_constants.cc +@@ -10,7 +10,7 @@ namespace storage_monitor { + const char kFSUniqueIdPrefix[] = "UUID:"; + const char kVendorModelSerialPrefix[] = "VendorModelSerial:"; +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + const char kVendorModelVolumeStoragePrefix[] = "VendorModelVolumeStorage:"; + #endif +  diff --git a/devel/electron6/files/patch-components_storage__monitor_removable__device__constants.h b/devel/electron6/files/patch-components_storage__monitor_removable__device__constants.h new file mode 100644 index 000000000000..443b37cce6c4 --- /dev/null +++ b/devel/electron6/files/patch-components_storage__monitor_removable__device__constants.h @@ -0,0 +1,11 @@ +--- components/storage_monitor/removable_device_constants.h.orig	2019-09-10 10:42:35 UTC ++++ components/storage_monitor/removable_device_constants.h +@@ -15,7 +15,7 @@ namespace storage_monitor { + extern const char kFSUniqueIdPrefix[]; + extern const char kVendorModelSerialPrefix[]; +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + extern const char kVendorModelVolumeStoragePrefix[]; + #endif +  diff --git a/devel/electron6/files/patch-components_storage__monitor_storage__monitor__freebsd.cc b/devel/electron6/files/patch-components_storage__monitor_storage__monitor__freebsd.cc new file mode 100644 index 000000000000..eb27a2b1ea57 --- /dev/null +++ b/devel/electron6/files/patch-components_storage__monitor_storage__monitor__freebsd.cc @@ -0,0 +1,57 @@ +--- components/storage_monitor/storage_monitor_freebsd.cc.orig	2019-09-16 09:25:13 UTC ++++ components/storage_monitor/storage_monitor_freebsd.cc +@@ -0,0 +1,54 @@ ++// Copyright 2014 The Chromium Authors. All rights reserved. ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++ ++// StorageMonitorFreeBSD implementation. ++ ++#include "components/storage_monitor/storage_monitor_freebsd.h" ++ ++#include <stdio.h> ++ ++#include <list> ++ ++#include "base/bind.h" ++#include "base/metrics/histogram.h" ++#include "base/process/kill.h" ++#include "base/process/launch.h" ++#include "base/stl_util.h" ++#include "base/strings/string_number_conversions.h" ++#include "base/strings/string_util.h" ++#include "base/strings/utf_string_conversions.h" ++#include "components/storage_monitor/media_storage_util.h" ++#include "components/storage_monitor/removable_device_constants.h" ++#include "components/storage_monitor/storage_info.h" ++ ++using content::BrowserThread; ++ ++namespace storage_monitor { ++ ++namespace { ++ ++}  // namespace ++ ++StorageMonitorFreeBSD::StorageMonitorFreeBSD() { ++  DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); ++} ++ ++StorageMonitorFreeBSD::~StorageMonitorFreeBSD() { ++  DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); ++} ++ ++void StorageMonitorFreeBSD::Init() { ++} ++ ++bool StorageMonitorFreeBSD::GetStorageInfoForPath( ++    const base::FilePath& path, ++    StorageInfo* device_info) const { ++  return false; // TODO ++} ++ ++StorageMonitor* StorageMonitor::CreateInternal() { ++  return new StorageMonitorFreeBSD(); ++} ++ ++} // namespace storage_monitor diff --git a/devel/electron6/files/patch-components_storage__monitor_storage__monitor__freebsd.h b/devel/electron6/files/patch-components_storage__monitor_storage__monitor__freebsd.h new file mode 100644 index 000000000000..48695cbf80c8 --- /dev/null +++ b/devel/electron6/files/patch-components_storage__monitor_storage__monitor__freebsd.h @@ -0,0 +1,48 @@ +--- components/storage_monitor/storage_monitor_freebsd.h.orig	2019-09-16 09:25:13 UTC ++++ components/storage_monitor/storage_monitor_freebsd.h +@@ -0,0 +1,45 @@ ++// Copyright 2014 The Chromium Authors. All rights reserved. ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++ ++// StorageMonitorFreeBSD processes mount point change events, notifies listeners ++// about the addition and deletion of media devices, and answers queries about ++// mounted devices. ++// StorageMonitorFreeBSD lives on the UI thread, and uses ??? ++// the FILE thread to get mount point change events. ++ ++#ifndef COMPONENTS_STORAGE_MONITOR_STORAGE_MONITOR_FREEBSD_H_ ++#define COMPONENTS_STORAGE_MONITOR_STORAGE_MONITOR_FREEBSD_H_ ++ ++#include <map> ++#include <string> ++ ++#include "base/compiler_specific.h" ++#include "base/files/file_path.h" ++#include "base/files/file_path_watcher.h" ++#include "base/memory/weak_ptr.h" ++#include "components/storage_monitor/storage_monitor.h" ++#include "content/public/browser/browser_thread.h" ++ ++namespace storage_monitor { ++ ++class StorageMonitorFreeBSD : public StorageMonitor { ++ public: ++  // Should only be called by browser start up code. ++  // Use StorageMonitor::GetInstance() instead. ++  explicit StorageMonitorFreeBSD(); ++  virtual ~StorageMonitorFreeBSD(); ++ ++  // Must be called for StorageMonitorFreeBSD to work. ++  virtual void Init() override; ++ private: ++  // StorageMonitor implementation. ++  virtual bool GetStorageInfoForPath(const base::FilePath& path, ++                                     StorageInfo* device_info) const override; ++ ++  DISALLOW_COPY_AND_ASSIGN(StorageMonitorFreeBSD); ++}; ++ ++} // namespace storage_monitor ++ ++#endif  // COMPONENTS_STORAGE_MONITOR_STORAGE_MONITOR_FREEBSD_H_ diff --git a/devel/electron6/files/patch-components_sync__device__info_local__device__info__util__linux.cc b/devel/electron6/files/patch-components_sync__device__info_local__device__info__util__linux.cc new file mode 100644 index 000000000000..b6464c2b46c3 --- /dev/null +++ b/devel/electron6/files/patch-components_sync__device__info_local__device__info__util__linux.cc @@ -0,0 +1,26 @@ +--- components/sync_device_info/local_device_info_util_linux.cc.orig	2019-09-10 10:42:36 UTC ++++ components/sync_device_info/local_device_info_util_linux.cc +@@ -30,6 +30,23 @@ std::string GetSessionNameInternal() { +       break; +   } +   return "Chromebook"; ++#elif defined(OS_BSD) ++  long len = sysconf(_SC_HOST_NAME_MAX); ++   ++  if (len == -1) ++    return "FreeBSD"; ++   ++  char *hostname = new (std::nothrow) char[len](); ++ ++  if ((hostname == nullptr) || (gethostname(hostname, len) == -1)) { ++    delete[](hostname); ++    return "FreeBSD"; ++  } ++   ++  std::string res{hostname}; ++ ++  delete[](hostname); ++  return res; + #else +   char hostname[HOST_NAME_MAX]; +   if (gethostname(hostname, HOST_NAME_MAX) == 0)  // Success. diff --git a/devel/electron6/files/patch-components_update__client_update__query__params.cc b/devel/electron6/files/patch-components_update__client_update__query__params.cc new file mode 100644 index 000000000000..65c957a2c660 --- /dev/null +++ b/devel/electron6/files/patch-components_update__client_update__query__params.cc @@ -0,0 +1,11 @@ +--- components/update_client/update_query_params.cc.orig	2019-09-10 11:14:00 UTC ++++ components/update_client/update_query_params.cc +@@ -38,6 +38,8 @@ const char kOs[] = +     "fuchsia"; + #elif defined(OS_OPENBSD) +     "openbsd"; ++#elif defined(OS_FREEBSD) ++    "freebsd"; + #else + #error "unknown os" + #endif diff --git a/devel/electron6/files/patch-components_url__matcher_regex__set__matcher.cc b/devel/electron6/files/patch-components_url__matcher_regex__set__matcher.cc new file mode 100644 index 000000000000..c579a6b2dce6 --- /dev/null +++ b/devel/electron6/files/patch-components_url__matcher_regex__set__matcher.cc @@ -0,0 +1,16 @@ +--- components/url_matcher/regex_set_matcher.cc.orig	2019-09-10 10:42:36 UTC ++++ components/url_matcher/regex_set_matcher.cc +@@ -11,8 +11,13 @@ + #include "base/logging.h" + #include "base/strings/string_util.h" + #include "components/url_matcher/substring_set_matcher.h" ++#if defined(OS_BSD) ++#include <re2/filtered_re2.h> ++#include <re2/re2.h> ++#else + #include "third_party/re2/src/re2/filtered_re2.h" + #include "third_party/re2/src/re2/re2.h" ++#endif +  + namespace url_matcher { +  diff --git a/devel/electron6/files/patch-components_url__matcher_url__matcher__factory.cc b/devel/electron6/files/patch-components_url__matcher_url__matcher__factory.cc new file mode 100644 index 000000000000..6750e9c91e60 --- /dev/null +++ b/devel/electron6/files/patch-components_url__matcher_url__matcher__factory.cc @@ -0,0 +1,14 @@ +--- components/url_matcher/url_matcher_factory.cc.orig	2019-09-10 10:42:36 UTC ++++ components/url_matcher/url_matcher_factory.cc +@@ -16,7 +16,11 @@ + #include "base/values.h" + #include "components/url_matcher/url_matcher_constants.h" + #include "components/url_matcher/url_matcher_helpers.h" ++#if defined(OS_BSD) ++#include <re2/re2.h> ++#else + #include "third_party/re2/src/re2/re2.h" ++#endif +  + namespace url_matcher { +  diff --git a/devel/electron6/files/patch-components_webcrypto_algorithms_test__helpers.cc b/devel/electron6/files/patch-components_webcrypto_algorithms_test__helpers.cc new file mode 100644 index 000000000000..611dba399766 --- /dev/null +++ b/devel/electron6/files/patch-components_webcrypto_algorithms_test__helpers.cc @@ -0,0 +1,14 @@ +--- components/webcrypto/algorithms/test_helpers.cc.orig	2019-09-10 10:42:36 UTC ++++ components/webcrypto/algorithms/test_helpers.cc +@@ -25,7 +25,11 @@ + #include "components/webcrypto/status.h" + #include "third_party/blink/public/platform/web_crypto_algorithm_params.h" + #include "third_party/blink/public/platform/web_crypto_key_algorithm.h" ++#if defined(OS_BSD) ++#include <re2/re2.h> ++#else + #include "third_party/re2/src/re2/re2.h" ++#endif +  + namespace webcrypto { +  diff --git a/devel/electron6/files/patch-content_app_content__main__runner__impl.cc b/devel/electron6/files/patch-content_app_content__main__runner__impl.cc new file mode 100644 index 000000000000..c698fb2ca1c9 --- /dev/null +++ b/devel/electron6/files/patch-content_app_content__main__runner__impl.cc @@ -0,0 +1,73 @@ +--- content/app/content_main_runner_impl.cc.orig	2019-09-16 09:24:25 UTC ++++ content/app/content_main_runner_impl.cc +@@ -99,17 +99,17 @@ + #include "base/posix/global_descriptors.h" + #include "content/public/common/content_descriptors.h" +  +-#if !defined(OS_MACOSX) ++#if !defined(OS_MACOSX) && !defined(OS_BSD) + #include "services/service_manager/zygote/common/zygote_fork_delegate_linux.h" + #endif +-#if !defined(OS_MACOSX) && !defined(OS_ANDROID) ++#if !defined(OS_MACOSX) && !defined(OS_ANDROID) && !defined(OS_BSD) + #include "sandbox/linux/services/libc_interceptor.h" + #include "services/service_manager/zygote/zygote_main.h" + #endif +  + #endif  // OS_POSIX || OS_FUCHSIA +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + #include "base/native_library.h" + #include "base/rand_util.h" + #include "services/service_manager/zygote/common/common_sandbox_support_linux.h" +@@ -130,7 +130,7 @@ + #include "content/public/common/content_client.h" + #endif +  +-#endif  // OS_LINUX ++#endif  // OS_LINUX || defined(OS_BSD) +  + #if !defined(CHROME_MULTIPLE_DLL_BROWSER) + #include "content/child/field_trial.h" +@@ -322,7 +322,7 @@ void InitializeZygoteSandboxForBrowserProcess( + } + #endif  // BUILDFLAG(USE_ZYGOTE_HANDLE) +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +  + #if BUILDFLAG(ENABLE_PLUGINS) + // Loads the (native) libraries but does not initialize them (i.e., does not +@@ -419,7 +419,7 @@ void PreSandboxInit() { + } + #endif  // BUILDFLAG(USE_ZYGOTE_HANDLE) +  +-#endif  // OS_LINUX ++#endif  // OS_LINUX || OS_BSD +  + }  // namespace +  +@@ -477,7 +477,7 @@ int RunZygote(ContentMainDelegate* delegate) { +   delegate->ZygoteStarting(&zygote_fork_delegates); +   media::InitializeMediaLibrary(); +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   PreSandboxInit(); + #endif +  +@@ -642,11 +642,11 @@ int ContentMainRunnerImpl::Initialize(const ContentMai +                    base::GlobalDescriptors::kBaseDescriptor); + #endif  // !OS_ANDROID +  +-#if defined(OS_LINUX) || defined(OS_OPENBSD) ++#if defined(OS_LINUX) +     g_fds->Set(service_manager::kCrashDumpSignal, +                service_manager::kCrashDumpSignal + +                    base::GlobalDescriptors::kBaseDescriptor); +-#endif  // OS_LINUX || OS_OPENBSD ++#endif  // OS_LINUX +  + #endif  // !OS_WIN +  diff --git a/devel/electron6/files/patch-content_browser_BUILD.gn b/devel/electron6/files/patch-content_browser_BUILD.gn new file mode 100644 index 000000000000..45b023cbf458 --- /dev/null +++ b/devel/electron6/files/patch-content_browser_BUILD.gn @@ -0,0 +1,11 @@ +--- content/browser/BUILD.gn.orig	2019-09-10 11:14:00 UTC ++++ content/browser/BUILD.gn +@@ -2058,7 +2058,7 @@ jumbo_source_set("browser") { +       "//chromeos/resources", +       "//components/chromeos_camera:mojo_mjpeg_decode_accelerator", +     ] +-  } else { ++  } else if (!is_bsd) { +     sources += [ +       "memory/memory_monitor_linux.cc", +       "memory/memory_monitor_linux.h", diff --git a/devel/electron6/files/patch-content_browser_browser__main__loop.cc b/devel/electron6/files/patch-content_browser_browser__main__loop.cc new file mode 100644 index 000000000000..67f1c88327c0 --- /dev/null +++ b/devel/electron6/files/patch-content_browser_browser__main__loop.cc @@ -0,0 +1,46 @@ +--- content/browser/browser_main_loop.cc.orig	2019-09-16 09:24:25 UTC ++++ content/browser/browser_main_loop.cc +@@ -251,6 +251,13 @@ + #include "mojo/public/cpp/bindings/lib/test_random_mojo_delays.h" + #endif +  ++#if defined(OS_BSD) ++#include "content/browser/sandbox_host_linux.h" ++#include "services/service_manager/zygote/common/common_sandbox_support_linux.h" ++#include "content/public/common/common_sandbox_support_linux.h" ++#include "services/service_manager/sandbox/sandbox.h" ++#endif ++ + // One of the linux specific headers defines this as a macro. + #ifdef DestroyAll + #undef DestroyAll +@@ -576,6 +583,11 @@ int BrowserMainLoop::EarlyInitialization() { +   // by now since a thread to start the ServiceManager has been created +   // before the browser main loop starts. +   DCHECK(SandboxHostLinux::GetInstance()->IsInitialized()); ++#elif defined(OS_BSD) ++  SandboxHostLinux::GetInstance()->Init(); ++  base::FileHandleMappingVector fds_to_map; ++  const int sfd = SandboxHostLinux::GetInstance()->GetChildSocket(); ++  fds_to_map.push_back(std::make_pair(sfd, service_manager::GetSandboxFD())); + #endif +  + #if defined(USE_X11) +@@ -619,7 +631,7 @@ int BrowserMainLoop::EarlyInitialization() { +   } + #endif  // defined(OS_ANDROID) || defined(OS_CHROMEOS) +  +-#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_CHROMEOS) || \ ++#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD) || \ +     defined(OS_ANDROID) +   // We use quite a few file descriptors for our IPC as well as disk the disk +   // cache,and the default limit on the Mac is low (256), so bump it up. +@@ -629,7 +641,7 @@ int BrowserMainLoop::EarlyInitialization() { +   // users can easily hit this limit with many open tabs. Bump up the limit to +   // an arbitrarily high number. See https://crbug.com/539567 +   base::IncreaseFdLimitTo(8192); +-#endif  // defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_CHROMEOS) || ++#endif  // defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD) || +         // defined(OS_ANDROID) +  + #if defined(OS_WIN) diff --git a/devel/electron6/files/patch-content_browser_builtin__service__manifests.cc b/devel/electron6/files/patch-content_browser_builtin__service__manifests.cc new file mode 100644 index 000000000000..3f653b2b55be --- /dev/null +++ b/devel/electron6/files/patch-content_browser_builtin__service__manifests.cc @@ -0,0 +1,20 @@ +--- content/browser/builtin_service_manifests.cc.orig	2019-09-10 11:14:00 UTC ++++ content/browser/builtin_service_manifests.cc +@@ -33,7 +33,7 @@ + #include "services/video_capture/public/cpp/manifest.h" + #include "services/viz/public/cpp/manifest.h" +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + #include "components/services/font/public/cpp/manifest.h"  // nogncheck + #endif +  +@@ -99,7 +99,7 @@ const std::vector<service_manager::Manifest>& GetBuilt +                   : service_manager::Manifest::ExecutionMode:: +                         kInProcessBuiltin), +           viz::GetManifest(), +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +           font_service::GetManifest(), + #endif + #if defined(OS_CHROMEOS) diff --git a/devel/electron6/files/patch-content_browser_child__process__launcher__helper__linux.cc b/devel/electron6/files/patch-content_browser_child__process__launcher__helper__linux.cc new file mode 100644 index 000000000000..e29d44d41d26 --- /dev/null +++ b/devel/electron6/files/patch-content_browser_child__process__launcher__helper__linux.cc @@ -0,0 +1,92 @@ +--- content/browser/child_process_launcher_helper_linux.cc.orig	2019-11-13 10:42:36 UTC ++++ content/browser/child_process_launcher_helper_linux.cc +@@ -17,7 +17,9 @@ + #include "content/public/common/sandboxed_process_launcher_delegate.h" + #include "services/service_manager/sandbox/linux/sandbox_linux.h" + #include "services/service_manager/zygote/common/common_sandbox_support_linux.h" ++#if !defined(OS_BSD) + #include "services/service_manager/zygote/common/zygote_handle.h" ++#endif + #include "services/service_manager/zygote/host/zygote_communication_linux.h" + #include "services/service_manager/zygote/host/zygote_host_impl_linux.h" +  +@@ -55,6 +57,7 @@ bool ChildProcessLauncherHelper::BeforeLaunchOnLaunche +     options->fds_to_remap.push_back( +         std::make_pair(sandbox_fd, service_manager::GetSandboxFD())); +  ++#if !defined(OS_BSD) +     // (For Electron), if we're launching without zygote, that means we're +     // launching an unsandboxed process (since all sandboxed processes are +     // forked from the zygote). Relax the allow_new_privs option to permit +@@ -66,6 +69,7 @@ bool ChildProcessLauncherHelper::BeforeLaunchOnLaunche +     if (!zygote_handle) { +       options->allow_new_privs = true; +     } ++#endif +   } +  +   options->environment = delegate_->GetEnvironment(); +@@ -81,6 +85,7 @@ ChildProcessLauncherHelper::LaunchProcessOnLauncherThr +     int* launch_result) { +   *is_synchronous_launch = true; +  ++#if !defined(OS_BSD) +   service_manager::ZygoteHandle zygote_handle = +       base::CommandLine::ForCurrentProcess()->HasSwitch(switches::kNoZygote) +           ? nullptr +@@ -94,7 +99,6 @@ ChildProcessLauncherHelper::LaunchProcessOnLauncherThr +         GetProcessType()); +     *launch_result = LAUNCH_RESULT_SUCCESS; +  +-#if !defined(OS_OPENBSD) +     if (handle) { +       // This is just a starting score for a renderer or extension (the +       // only types of processes that will be started this way).  It will +@@ -105,13 +109,13 @@ ChildProcessLauncherHelper::LaunchProcessOnLauncherThr +       service_manager::ZygoteHostImpl::GetInstance()->AdjustRendererOOMScore( +           handle, kLowestRendererOomScore); +     } +-#endif +  +     Process process; +     process.process = base::Process(handle); +     process.zygote = zygote_handle; +     return process; +   } ++#endif +  +   Process process; +   process.process = base::LaunchProcess(*command_line(), options); +@@ -129,10 +133,14 @@ ChildProcessTerminationInfo ChildProcessLauncherHelper +     const ChildProcessLauncherHelper::Process& process, +     bool known_dead) { +   ChildProcessTerminationInfo info; ++#if !defined(OS_BSD) +   if (process.zygote) { +     info.status = process.zygote->GetTerminationStatus( +         process.process.Handle(), known_dead, &info.exit_code); +   } else if (known_dead) { ++#else ++  if (known_dead) { ++#endif +     info.status = base::GetKnownDeadTerminationStatus(process.process.Handle(), +                                                       &info.exit_code); +   } else { +@@ -156,13 +164,17 @@ void ChildProcessLauncherHelper::ForceNormalProcessTer +   DCHECK(CurrentlyOnProcessLauncherTaskRunner()); +   process.process.Terminate(service_manager::RESULT_CODE_NORMAL_EXIT, false); +   // On POSIX, we must additionally reap the child. ++#if !defined(OS_BSD) +   if (process.zygote) { +     // If the renderer was created via a zygote, we have to proxy the reaping +     // through the zygote process. +     process.zygote->EnsureProcessTerminated(process.process.Handle()); +   } else { ++#endif +     base::EnsureProcessTerminated(std::move(process.process)); ++#if !defined(OS_BSD) +   } ++#endif + } +  + void ChildProcessLauncherHelper::SetProcessPriorityOnLauncherThread( diff --git a/devel/electron6/files/patch-content_browser_devtools_protocol_system__info__handler.cc b/devel/electron6/files/patch-content_browser_devtools_protocol_system__info__handler.cc new file mode 100644 index 000000000000..1a9127567830 --- /dev/null +++ b/devel/electron6/files/patch-content_browser_devtools_protocol_system__info__handler.cc @@ -0,0 +1,11 @@ +--- content/browser/devtools/protocol/system_info_handler.cc.orig	2019-09-10 11:14:00 UTC ++++ content/browser/devtools/protocol/system_info_handler.cc +@@ -40,7 +40,7 @@ using GetInfoCallback = SystemInfo::Backend::GetInfoCa + // Give the GPU process a few seconds to provide GPU info. + // Linux Debug builds need more time -- see Issue 796437. + // Windows builds need more time -- see Issue 873112. +-#if (defined(OS_LINUX) && !defined(NDEBUG)) || defined(OS_WIN) ++#if ((defined(OS_LINUX) || defined(OS_BSD)) && !defined(NDEBUG)) || defined(OS_WIN) + const int kGPUInfoWatchdogTimeoutMs = 20000; + #else + const int kGPUInfoWatchdogTimeoutMs = 5000; diff --git a/devel/electron6/files/patch-content_browser_gpu_gpu__process__host.cc b/devel/electron6/files/patch-content_browser_gpu_gpu__process__host.cc new file mode 100644 index 000000000000..3ff05a3d82a0 --- /dev/null +++ b/devel/electron6/files/patch-content_browser_gpu_gpu__process__host.cc @@ -0,0 +1,11 @@ +--- content/browser/gpu/gpu_process_host.cc.orig	2019-09-16 09:24:25 UTC ++++ content/browser/gpu/gpu_process_host.cc +@@ -1063,7 +1063,7 @@ bool GpuProcessHost::LaunchGpuProcess() { +   std::unique_ptr<base::CommandLine> cmd_line = +       std::make_unique<base::CommandLine>(base::CommandLine::NO_PROGRAM); + #else +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   int child_flags = gpu_launcher.empty() ? ChildProcessHost::CHILD_ALLOW_SELF +                                          : ChildProcessHost::CHILD_NORMAL; + #elif defined(OS_MACOSX) diff --git a/devel/electron6/files/patch-content_browser_media_media__internals.cc b/devel/electron6/files/patch-content_browser_media_media__internals.cc new file mode 100644 index 000000000000..58180dfe6dbb --- /dev/null +++ b/devel/electron6/files/patch-content_browser_media_media__internals.cc @@ -0,0 +1,11 @@ +--- content/browser/media/media_internals.cc.orig	2019-09-10 11:14:02 UTC ++++ content/browser/media/media_internals.cc +@@ -785,7 +785,7 @@ void MediaInternals::UpdateVideoCaptureDeviceCapabilit +     device_dict->SetString("id", descriptor.device_id); +     device_dict->SetString("name", descriptor.GetNameAndModel()); +     device_dict->Set("formats", std::move(format_list)); +-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || \ ++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) || \ +     defined(OS_ANDROID) +     device_dict->SetString("captureApi", descriptor.GetCaptureApiTypeString()); + #endif diff --git a/devel/electron6/files/patch-content_browser_memory_memory__monitor.cc b/devel/electron6/files/patch-content_browser_memory_memory__monitor.cc new file mode 100644 index 000000000000..75e460e6df82 --- /dev/null +++ b/devel/electron6/files/patch-content_browser_memory_memory__monitor.cc @@ -0,0 +1,11 @@ +--- content/browser/memory/memory_monitor.cc.orig	2019-09-10 11:14:02 UTC ++++ content/browser/memory/memory_monitor.cc +@@ -22,7 +22,7 @@ void MemoryMonitorDelegate::GetSystemMemoryInfo( +   base::GetSystemMemoryInfo(mem_info); + } +  +-#if defined(OS_MACOSX) ++#if defined(OS_MACOSX) || defined(OS_BSD) + // TODO(bashi,bcwhite): Remove when memory monitor for mac is available. + std::unique_ptr<MemoryMonitor> CreateMemoryMonitor() { +   NOTREACHED(); diff --git a/devel/electron6/files/patch-content_browser_memory_swap__metrics__driver__impl__linux.cc b/devel/electron6/files/patch-content_browser_memory_swap__metrics__driver__impl__linux.cc new file mode 100644 index 000000000000..629490440f40 --- /dev/null +++ b/devel/electron6/files/patch-content_browser_memory_swap__metrics__driver__impl__linux.cc @@ -0,0 +1,27 @@ +--- content/browser/memory/swap_metrics_driver_impl_linux.cc.orig	2019-09-10 10:42:36 UTC ++++ content/browser/memory/swap_metrics_driver_impl_linux.cc +@@ -43,6 +43,7 @@ SwapMetricsDriverImplLinux::~SwapMetricsDriverImplLinu +  + SwapMetricsDriver::SwapMetricsUpdateResult + SwapMetricsDriverImplLinux::UpdateMetricsInternal(base::TimeDelta interval) { ++#if !defined(OS_BSD) +   base::VmStatInfo vmstat; +   if (!base::GetVmStatInfo(&vmstat)) { +     return SwapMetricsDriver::SwapMetricsUpdateResult::kSwapMetricsUpdateFailed; +@@ -55,12 +56,15 @@ SwapMetricsDriverImplLinux::UpdateMetricsInternal(base +  +   if (interval.is_zero()) +     return SwapMetricsDriver::SwapMetricsUpdateResult:: +-        kSwapMetricsUpdateSuccess; ++    kSwapMetricsUpdateSuccess; +  +   delegate_->OnSwapInCount(in_counts, interval); +   delegate_->OnSwapOutCount(out_counts, interval); +  +   return SwapMetricsDriver::SwapMetricsUpdateResult::kSwapMetricsUpdateSuccess; ++#else ++  return SwapMetricsDriver::SwapMetricsUpdateResult::kSwapMetricsUpdateFailed; ++#endif + } +  + }  // namespace content diff --git a/devel/electron6/files/patch-content_browser_ppapi__plugin__process__host.cc b/devel/electron6/files/patch-content_browser_ppapi__plugin__process__host.cc new file mode 100644 index 000000000000..99e6fd7f2fe5 --- /dev/null +++ b/devel/electron6/files/patch-content_browser_ppapi__plugin__process__host.cc @@ -0,0 +1,11 @@ +--- content/browser/ppapi_plugin_process_host.cc.orig	2019-09-16 09:24:25 UTC ++++ content/browser/ppapi_plugin_process_host.cc +@@ -364,7 +364,7 @@ bool PpapiPluginProcessHost::Init(const PepperPluginIn +   base::CommandLine::StringType plugin_launcher = +       browser_command_line.GetSwitchValueNative(switches::kPpapiPluginLauncher); +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   int flags = plugin_launcher.empty() ? ChildProcessHost::CHILD_ALLOW_SELF : +                                         ChildProcessHost::CHILD_NORMAL; + #elif defined(OS_MACOSX) diff --git a/devel/electron6/files/patch-content_browser_renderer__host_input_input__device__change__observer.cc b/devel/electron6/files/patch-content_browser_renderer__host_input_input__device__change__observer.cc new file mode 100644 index 000000000000..03cb506da0ef --- /dev/null +++ b/devel/electron6/files/patch-content_browser_renderer__host_input_input__device__change__observer.cc @@ -0,0 +1,29 @@ +--- content/browser/renderer_host/input/input_device_change_observer.cc.orig	2019-09-10 11:14:02 UTC ++++ content/browser/renderer_host/input/input_device_change_observer.cc +@@ -10,7 +10,7 @@ +  + #if defined(OS_WIN) + #include "ui/events/devices/input_device_observer_win.h" +-#elif defined(OS_LINUX) ++#elif defined(OS_LINUX) || defined(OS_BSD) + #include "ui/events/devices/input_device_manager.h" + #elif defined(OS_ANDROID) + #include "ui/events/devices/input_device_observer_android.h" +@@ -22,7 +22,7 @@ InputDeviceChangeObserver::InputDeviceChangeObserver(R +   render_view_host_impl_ = rvhi; + #if defined(OS_WIN) +   ui::InputDeviceObserverWin::GetInstance()->AddObserver(this); +-#elif defined(OS_LINUX) ++#elif defined(OS_LINUX) || defined(OS_BSD) +   ui::InputDeviceManager::GetInstance()->AddObserver(this); + #elif defined(OS_ANDROID) +   ui::InputDeviceObserverAndroid::GetInstance()->AddObserver(this); +@@ -32,7 +32,7 @@ InputDeviceChangeObserver::InputDeviceChangeObserver(R + InputDeviceChangeObserver::~InputDeviceChangeObserver() { + #if defined(OS_WIN) +   ui::InputDeviceObserverWin::GetInstance()->RemoveObserver(this); +-#elif defined(OS_LINUX) ++#elif defined(OS_LINUX) || defined(OS_BSD) +   ui::InputDeviceManager::GetInstance()->RemoveObserver(this); + #elif defined(OS_ANDROID) +   ui::InputDeviceObserverAndroid::GetInstance()->RemoveObserver(this); diff --git a/devel/electron6/files/patch-content_browser_renderer__host_pepper_pepper__file__io__host.cc b/devel/electron6/files/patch-content_browser_renderer__host_pepper_pepper__file__io__host.cc new file mode 100644 index 000000000000..4bfcd19e4682 --- /dev/null +++ b/devel/electron6/files/patch-content_browser_renderer__host_pepper_pepper__file__io__host.cc @@ -0,0 +1,20 @@ +--- content/browser/renderer_host/pepper/pepper_file_io_host.cc.orig	2019-09-10 11:14:02 UTC ++++ content/browser/renderer_host/pepper/pepper_file_io_host.cc +@@ -432,7 +432,7 @@ void PepperFileIOHost::OnLocalFileOpened( +     ppapi::host::ReplyMessageContext reply_context, +     const base::FilePath& path, +     base::File::Error error_code) { +-#if defined(OS_WIN) || defined(OS_LINUX) ++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD) +   // Quarantining a file before its contents are available is only supported on +   // Windows and Linux. +   if (!FileOpenForWrite(open_flags_) || error_code != base::File::FILE_OK) { +@@ -452,7 +452,7 @@ void PepperFileIOHost::OnLocalFileOpened( + #endif + } +  +-#if defined(OS_WIN) || defined(OS_LINUX) ++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD) + void PepperFileIOHost::OnLocalFileQuarantined( +     ppapi::host::ReplyMessageContext reply_context, +     const base::FilePath& path, diff --git a/devel/electron6/files/patch-content_browser_renderer__host_render__message__filter.cc b/devel/electron6/files/patch-content_browser_renderer__host_render__message__filter.cc new file mode 100644 index 000000000000..eb21458f13d7 --- /dev/null +++ b/devel/electron6/files/patch-content_browser_renderer__host_render__message__filter.cc @@ -0,0 +1,29 @@ +--- content/browser/renderer_host/render_message_filter.cc.orig	2019-09-10 11:14:02 UTC ++++ content/browser/renderer_host/render_message_filter.cc +@@ -71,7 +71,7 @@ + #if defined(OS_MACOSX) + #include "ui/accelerated_widget_mac/window_resize_helper_mac.h" + #endif +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + #include "base/linux_util.h" + #include "base/threading/platform_thread.h" + #endif +@@ -151,7 +151,7 @@ void RenderMessageFilter::CreateFullscreenWidget( +   std::move(callback).Run(route_id); + } +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + void RenderMessageFilter::SetThreadPriorityOnFileThread( +     base::PlatformThreadId ns_tid, +     base::ThreadPriority priority) { +@@ -172,7 +172,7 @@ void RenderMessageFilter::SetThreadPriorityOnFileThrea + } + #endif +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + void RenderMessageFilter::SetThreadPriority(int32_t ns_tid, +                                             base::ThreadPriority priority) { +   constexpr base::TaskTraits kTraits = { diff --git a/devel/electron6/files/patch-content_browser_renderer__host_render__message__filter.h b/devel/electron6/files/patch-content_browser_renderer__host_render__message__filter.h new file mode 100644 index 000000000000..8110f9d8ac25 --- /dev/null +++ b/devel/electron6/files/patch-content_browser_renderer__host_render__message__filter.h @@ -0,0 +1,19 @@ +--- content/browser/renderer_host/render_message_filter.h.orig	2019-09-10 11:14:02 UTC ++++ content/browser/renderer_host/render_message_filter.h +@@ -87,14 +87,14 @@ class CONTENT_EXPORT RenderMessageFilter +                               mojom::WidgetPtr widget, +                               CreateFullscreenWidgetCallback callback) override; +   void HasGpuProcess(HasGpuProcessCallback callback) override; +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   void SetThreadPriority(int32_t ns_tid, +                          base::ThreadPriority priority) override; + #endif +  +   void OnResolveProxy(const GURL& url, IPC::Message* reply_msg); +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   void SetThreadPriorityOnFileThread(base::PlatformThreadId ns_tid, +                                      base::ThreadPriority priority); + #endif diff --git a/devel/electron6/files/patch-content_browser_renderer__host_render__process__host__impl.cc b/devel/electron6/files/patch-content_browser_renderer__host_render__process__host__impl.cc new file mode 100644 index 000000000000..21636af7644a --- /dev/null +++ b/devel/electron6/files/patch-content_browser_renderer__host_render__process__host__impl.cc @@ -0,0 +1,38 @@ +--- content/browser/renderer_host/render_process_host_impl.cc.orig	2019-09-16 09:24:25 UTC ++++ content/browser/renderer_host/render_process_host_impl.cc +@@ -230,7 +230,7 @@ + #include "content/browser/compositor/image_transport_factory.h" + #endif +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + #include <sys/resource.h> + #include <sys/time.h> + #endif +@@ -1244,7 +1244,7 @@ static constexpr size_t kUnknownPlatformProcessLimit = + // to indicate failure and std::numeric_limits<size_t>::max() to indicate + // unlimited. + size_t GetPlatformProcessLimit() { +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   struct rlimit limit; +   if (getrlimit(RLIMIT_NPROC, &limit) != 0) +     return kUnknownPlatformProcessLimit; +@@ -1255,7 +1255,7 @@ size_t GetPlatformProcessLimit() { + #else +   // TODO(https://crbug.com/104689): Implement on other platforms. +   return kUnknownPlatformProcessLimit; +-#endif  // defined(OS_LINUX) ++#endif  // defined(OS_LINUX) || defined(OS_BSD) + } + #endif  // !defined(OS_ANDROID) && !defined(OS_CHROMEOS) +  +@@ -1667,7 +1667,7 @@ bool RenderProcessHostImpl::Init() { +   renderer_prefix = +       browser_command_line.GetSwitchValueNative(switches::kRendererCmdPrefix); +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   int flags = renderer_prefix.empty() ? ChildProcessHost::CHILD_ALLOW_SELF +                                       : ChildProcessHost::CHILD_NORMAL; + #elif defined(OS_MACOSX) diff --git a/devel/electron6/files/patch-content_browser_renderer__host_render__process__host__impl.h b/devel/electron6/files/patch-content_browser_renderer__host_render__process__host__impl.h new file mode 100644 index 000000000000..c29b191fa106 --- /dev/null +++ b/devel/electron6/files/patch-content_browser_renderer__host_render__process__host__impl.h @@ -0,0 +1,15 @@ +--- content/browser/renderer_host/render_process_host_impl.h.orig	2019-09-10 11:14:02 UTC ++++ content/browser/renderer_host/render_process_host_impl.h +@@ -400,10 +400,10 @@ class CONTENT_EXPORT RenderProcessHostImpl +     is_for_guests_only_ = is_for_guests_only; +   } +  +-#if defined(OS_POSIX) && !defined(OS_ANDROID) && !defined(OS_MACOSX) ++#if defined(OS_POSIX) && !defined(OS_ANDROID) && !defined(OS_MACOSX) && !defined(OS_BSD) +   // Launch the zygote early in the browser startup. +   static void EarlyZygoteLaunch(); +-#endif  // defined(OS_POSIX) && !defined(OS_ANDROID) && !defined(OS_MACOSX) ++#endif  // defined(OS_POSIX) && !defined(OS_ANDROID) && !defined(OS_MACOSX) && !defined(OS_BSD) +  +   RendererAudioOutputStreamFactoryContext* +   GetRendererAudioOutputStreamFactoryContext() override; diff --git a/devel/electron6/files/patch-content_browser_renderer__host_render__view__host__impl.cc b/devel/electron6/files/patch-content_browser_renderer__host_render__view__host__impl.cc new file mode 100644 index 000000000000..195ee10b67ed --- /dev/null +++ b/devel/electron6/files/patch-content_browser_renderer__host_render__view__host__impl.cc @@ -0,0 +1,11 @@ +--- content/browser/renderer_host/render_view_host_impl.cc.orig	2019-09-10 11:14:02 UTC ++++ content/browser/renderer_host/render_view_host_impl.cc +@@ -163,7 +163,7 @@ void GetPlatformSpecificPrefs(blink::mojom::RendererPr +       display::win::ScreenWin::GetSystemMetricsInDIP(SM_CYVSCROLL); +   prefs->arrow_bitmap_width_horizontal_scroll_bar_in_dips = +       display::win::ScreenWin::GetSystemMetricsInDIP(SM_CXHSCROLL); +-#elif defined(OS_LINUX) ++#elif defined(OS_LINUX) || defined(OS_BSD) +   prefs->system_font_family_name = gfx::Font().GetFontName(); + #endif + } diff --git a/devel/electron6/files/patch-content_browser_renderer__host_render__widget__host__view__aura.cc b/devel/electron6/files/patch-content_browser_renderer__host_render__widget__host__view__aura.cc new file mode 100644 index 000000000000..08aff83170ac --- /dev/null +++ b/devel/electron6/files/patch-content_browser_renderer__host_render__widget__host__view__aura.cc @@ -0,0 +1,29 @@ +--- content/browser/renderer_host/render_widget_host_view_aura.cc.orig	2019-09-10 11:14:02 UTC ++++ content/browser/renderer_host/render_widget_host_view_aura.cc +@@ -117,7 +117,7 @@ + #include "content/browser/accessibility/browser_accessibility_auralinux.h" + #endif +  +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS) + #include "ui/base/ime/linux/text_edit_command_auralinux.h" + #include "ui/base/ime/linux/text_edit_key_bindings_delegate_auralinux.h" + #endif +@@ -2200,7 +2200,7 @@ bool RenderWidgetHostViewAura::NeedsInputGrab() { + } +  + bool RenderWidgetHostViewAura::NeedsMouseCapture() { +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS) +   return NeedsInputGrab(); + #endif +   return false; +@@ -2397,7 +2397,7 @@ void RenderWidgetHostViewAura::ForwardKeyboardEventWit +   if (!target_host) +     return; +  +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS) +   ui::TextEditKeyBindingsDelegateAuraLinux* keybinding_delegate = +       ui::GetTextEditKeyBindingsDelegate(); +   std::vector<ui::TextEditCommandAuraLinux> commands; diff --git a/devel/electron6/files/patch-content_browser_renderer__host_render__widget__host__view__event__handler.cc b/devel/electron6/files/patch-content_browser_renderer__host_render__widget__host__view__event__handler.cc new file mode 100644 index 000000000000..6bc1b3e108d7 --- /dev/null +++ b/devel/electron6/files/patch-content_browser_renderer__host_render__widget__host__view__event__handler.cc @@ -0,0 +1,11 @@ +--- content/browser/renderer_host/render_widget_host_view_event_handler.cc.orig	2019-09-10 11:14:02 UTC ++++ content/browser/renderer_host/render_widget_host_view_event_handler.cc +@@ -609,7 +609,7 @@ bool RenderWidgetHostViewEventHandler::CanRendererHand +   if (event->type() == ui::ET_MOUSE_EXITED) { +     if (mouse_locked || selection_popup) +       return false; +-#if defined(OS_WIN) || defined(OS_LINUX) ++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD) +     // Don't forward the mouse leave message which is received when the context +     // menu is displayed by the page. This confuses the page and causes state +     // changes. diff --git a/devel/electron6/files/patch-content_browser_scheduler_responsiveness_native__event__observer.cc b/devel/electron6/files/patch-content_browser_scheduler_responsiveness_native__event__observer.cc new file mode 100644 index 000000000000..70c43b3f6a63 --- /dev/null +++ b/devel/electron6/files/patch-content_browser_scheduler_responsiveness_native__event__observer.cc @@ -0,0 +1,29 @@ +--- content/browser/scheduler/responsiveness/native_event_observer.cc.orig	2019-09-10 10:42:36 UTC ++++ content/browser/scheduler/responsiveness/native_event_observer.cc +@@ -15,7 +15,7 @@ +  + #include "ui/events/platform/platform_event_source.h" +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + #include "ui/aura/env.h" + #include "ui/events/event.h" + #endif +@@ -39,7 +39,7 @@ NativeEventObserver::~NativeEventObserver() { +   DeregisterObserver(); + } +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + void NativeEventObserver::RegisterObserver() { +   aura::Env::GetInstance()->AddWindowEventDispatcherObserver(this); + } +@@ -61,7 +61,7 @@ void NativeEventObserver::OnWindowEventDispatcherFinis +   did_run_event_callback_.Run(info.unique_id); +   events_being_processed_.pop_back(); + } +-#endif  // defined(OS_LINUX) ++#endif  // defined(OS_LINUX) || defined(OS_BSD) +  + #if defined(OS_WIN) + void NativeEventObserver::RegisterObserver() { diff --git a/devel/electron6/files/patch-content_browser_scheduler_responsiveness_native__event__observer.h b/devel/electron6/files/patch-content_browser_scheduler_responsiveness_native__event__observer.h new file mode 100644 index 000000000000..0c136526733d --- /dev/null +++ b/devel/electron6/files/patch-content_browser_scheduler_responsiveness_native__event__observer.h @@ -0,0 +1,47 @@ +--- content/browser/scheduler/responsiveness/native_event_observer.h.orig	2019-09-10 10:42:36 UTC ++++ content/browser/scheduler/responsiveness/native_event_observer.h +@@ -14,7 +14,7 @@ + #include "content/public/browser/native_event_processor_observer_mac.h" + #endif +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + #include "ui/aura/window_event_dispatcher_observer.h" + #endif +  +@@ -39,7 +39,7 @@ namespace responsiveness { + class CONTENT_EXPORT NativeEventObserver + #if defined(OS_MACOSX) +     : public NativeEventProcessorObserver +-#elif defined(OS_LINUX) ++#elif defined(OS_LINUX) || defined(OS_BSD) +     : public aura::WindowEventDispatcherObserver + #elif defined(OS_WIN) +     : public base::MessagePumpForUI::Observer +@@ -56,7 +56,7 @@ class CONTENT_EXPORT NativeEventObserver +   NativeEventObserver(WillRunEventCallback will_run_event_callback, +                       DidRunEventCallback did_run_event_callback); +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   ~NativeEventObserver() override; + #else +   virtual ~NativeEventObserver(); +@@ -68,7 +68,7 @@ class CONTENT_EXPORT NativeEventObserver +   // Exposed for tests. +   void WillRunNativeEvent(const void* opaque_identifier) override; +   void DidRunNativeEvent(const void* opaque_identifier) override; +-#elif defined(OS_LINUX) ++#elif defined(OS_LINUX) || defined(OS_BSD) +   // aura::WindowEventDispatcherObserver overrides: +   void OnWindowEventDispatcherStartedProcessing( +       aura::WindowEventDispatcher* dispatcher, +@@ -85,7 +85,7 @@ class CONTENT_EXPORT NativeEventObserver +   void RegisterObserver(); +   void DeregisterObserver(); +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   struct EventInfo { +     const void* unique_id; +   }; diff --git a/devel/electron6/files/patch-content_browser_service__manager_service__manager__context.cc b/devel/electron6/files/patch-content_browser_service__manager_service__manager__context.cc new file mode 100644 index 000000000000..582d4aed8497 --- /dev/null +++ b/devel/electron6/files/patch-content_browser_service__manager_service__manager__context.cc @@ -0,0 +1,35 @@ +--- content/browser/service_manager/service_manager_context.cc.orig	2019-09-10 11:14:02 UTC ++++ content/browser/service_manager/service_manager_context.cc +@@ -98,7 +98,7 @@ + #include "jni/ContentNfcDelegate_jni.h" + #endif +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + #include "components/services/font/font_service_app.h" + #include "components/services/font/public/interfaces/constants.mojom.h"  // nogncheck + #endif +@@ -342,12 +342,12 @@ void CreateInProcessAudioService( +                      BrowserMainLoop::GetAudioManager(), std::move(request))); + } +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + std::unique_ptr<service_manager::Service> CreateFontService( +     service_manager::mojom::ServiceRequest request) { +   return std::make_unique<font_service::FontServiceApp>(std::move(request)); + } +-#endif  // defined(OS_LINUX) ++#endif  // defined(OS_LINUX) || defined(OS_BSD) +  + std::unique_ptr<service_manager::Service> CreateResourceCoordinatorService( +     service_manager::mojom::ServiceRequest request) { +@@ -665,7 +665,7 @@ ServiceManagerContext::ServiceManagerContext( +         base::BindRepeating(&CreateVideoCaptureService)); +   } +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   RegisterInProcessService( +       font_service::mojom::kServiceName, +       base::CreateSequencedTaskRunnerWithTraits( diff --git a/devel/electron6/files/patch-content_browser_utility__process__host.cc b/devel/electron6/files/patch-content_browser_utility__process__host.cc new file mode 100644 index 000000000000..845b84926054 --- /dev/null +++ b/devel/electron6/files/patch-content_browser_utility__process__host.cc @@ -0,0 +1,11 @@ +--- content/browser/utility_process_host.cc.orig	2019-09-10 11:14:02 UTC ++++ content/browser/utility_process_host.cc +@@ -213,7 +213,7 @@ UtilityProcessHost::UtilityProcessHost( +     : client_(client), +       client_task_runner_(client_task_runner), +       sandbox_type_(service_manager::SANDBOX_TYPE_UTILITY), +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +       child_flags_(ChildProcessHost::CHILD_ALLOW_SELF), + #else +       child_flags_(ChildProcessHost::CHILD_NORMAL), diff --git a/devel/electron6/files/patch-content_browser_webui_shared__resources__data__source.cc b/devel/electron6/files/patch-content_browser_webui_shared__resources__data__source.cc new file mode 100644 index 000000000000..ef5e37d8ba5c --- /dev/null +++ b/devel/electron6/files/patch-content_browser_webui_shared__resources__data__source.cc @@ -0,0 +1,17 @@ +--- content/browser/webui/shared_resources_data_source.cc.orig	2019-09-10 11:14:02 UTC ++++ content/browser/webui/shared_resources_data_source.cc +@@ -119,12 +119,12 @@ const std::map<int, std::string> CreateMojoResourceIdT +          "mojo/mojo/public/mojom/base/string16.mojom.html"}, +         {IDR_MOJO_STRING16_MOJOM_LITE_JS, +          "mojo/mojo/public/mojom/base/string16.mojom-lite.js"}, +-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) ++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) +         {IDR_MOJO_TIME_MOJOM_HTML, +          "mojo/mojo/public/mojom/base/time.mojom.html"}, +         {IDR_MOJO_TIME_MOJOM_LITE_JS, +          "mojo/mojo/public/mojom/base/time.mojom-lite.js"}, +-#endif  // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) ++#endif  // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) +   }; + } +  diff --git a/devel/electron6/files/patch-content_common_BUILD.gn b/devel/electron6/files/patch-content_common_BUILD.gn new file mode 100644 index 000000000000..40fe9c147aa8 --- /dev/null +++ b/devel/electron6/files/patch-content_common_BUILD.gn @@ -0,0 +1,15 @@ +--- content/common/BUILD.gn.orig	2019-09-10 11:14:02 UTC ++++ content/common/BUILD.gn +@@ -381,6 +381,12 @@ source_set("common") { +     libs += [ "android" ] +   } +  ++  if (is_bsd) { ++    sources -= [ ++      "sandbox_init_linux.cc", ++    ] ++  } ++ +   if (is_debug && !is_component_build && enable_plugins) { +     # Content depends on the PPAPI message logging stuff; if this isn't here, +     # some unit test binaries won't compile. This only worked in release mode diff --git a/devel/electron6/files/patch-content_common_common__sandbox__support__linux.cc b/devel/electron6/files/patch-content_common_common__sandbox__support__linux.cc new file mode 100644 index 000000000000..4dc909737019 --- /dev/null +++ b/devel/electron6/files/patch-content_common_common__sandbox__support__linux.cc @@ -0,0 +1,10 @@ +--- content/common/common_sandbox_support_linux.cc.orig	2019-09-10 10:42:37 UTC ++++ content/common/common_sandbox_support_linux.cc +@@ -5,6 +5,7 @@ + #include "content/public/common/common_sandbox_support_linux.h" +  + #include <sys/stat.h> ++#include <unistd.h> +  + #include <limits> + #include <memory> diff --git a/devel/electron6/files/patch-content_common_user__agent.cc b/devel/electron6/files/patch-content_common_user__agent.cc new file mode 100644 index 000000000000..ab6ed6986369 --- /dev/null +++ b/devel/electron6/files/patch-content_common_user__agent.cc @@ -0,0 +1,17 @@ +--- content/common/user_agent.cc.orig	2019-09-10 11:14:02 UTC ++++ content/common/user_agent.cc +@@ -131,6 +131,14 @@ std::string BuildOSCpuInfo(bool include_android_build_ + #endif +   );  // NOLINT +  ++#if defined(OS_BSD) ++#if defined(__x86_64__) ++  base::StringAppendF(&os_cpu, "; Linux x86_64"); ++#else ++  base::StringAppendF(&os_cpu, "; Linux i686"); ++#endif ++#endif ++ +   return os_cpu; + } +  diff --git a/devel/electron6/files/patch-content_gpu_BUILD.gn b/devel/electron6/files/patch-content_gpu_BUILD.gn new file mode 100644 index 000000000000..c2b2607165ae --- /dev/null +++ b/devel/electron6/files/patch-content_gpu_BUILD.gn @@ -0,0 +1,11 @@ +--- content/gpu/BUILD.gn.orig	2019-09-10 11:14:02 UTC ++++ content/gpu/BUILD.gn +@@ -124,7 +124,7 @@ target(link_target_type, "gpu_sources") { +  +   # Use DRI on desktop Linux builds. +   if (current_cpu != "s390x" && current_cpu != "ppc64" && is_desktop_linux && +-      (!is_chromecast || is_cast_desktop_build)) { ++      (!is_chromecast || is_cast_desktop_build) && !is_bsd) { +     configs += [ "//build/config/linux/dri" ] +   } + } diff --git a/devel/electron6/files/patch-content_gpu_gpu__main.cc b/devel/electron6/files/patch-content_gpu_gpu__main.cc new file mode 100644 index 000000000000..db081e0ad9e9 --- /dev/null +++ b/devel/electron6/files/patch-content_gpu_gpu__main.cc @@ -0,0 +1,47 @@ +--- content/gpu/gpu_main.cc.orig	2019-09-16 09:24:25 UTC ++++ content/gpu/gpu_main.cc +@@ -79,7 +79,7 @@ + #include "ui/gfx/x/x11_switches.h"    // nogncheck + #endif +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + #include "content/gpu/gpu_sandbox_hook_linux.h" + #include "content/public/common/sandbox_init.h" + #include "services/service_manager/sandbox/linux/sandbox_linux.h" +@@ -112,7 +112,7 @@ namespace content { +  + namespace { +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) && !defined(OS_BSD) + bool StartSandboxLinux(gpu::GpuWatchdogThread*, +                        const gpu::GPUInfo*, +                        const gpu::GpuPreferences&); +@@ -173,7 +173,7 @@ class ContentSandboxHelper : public gpu::GpuSandboxHel +   bool EnsureSandboxInitialized(gpu::GpuWatchdogThread* watchdog_thread, +                                 const gpu::GPUInfo* gpu_info, +                                 const gpu::GpuPreferences& gpu_prefs) override { +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) && !defined(OS_BSD) +     return StartSandboxLinux(watchdog_thread, gpu_info, gpu_prefs); + #elif defined(OS_WIN) +     return StartSandboxWindows(sandbox_info_); +@@ -374,7 +374,7 @@ int GpuMain(const MainFunctionParams& parameters) { +  + namespace { +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) && !defined(OS_BSD) + bool StartSandboxLinux(gpu::GpuWatchdogThread* watchdog_thread, +                        const gpu::GPUInfo* gpu_info, +                        const gpu::GpuPreferences& gpu_prefs) { +@@ -409,7 +409,7 @@ bool StartSandboxLinux(gpu::GpuWatchdogThread* watchdo +  +   return res; + } +-#endif  // defined(OS_LINUX) ++#endif  // defined(OS_LINUX) && !defined(OS_BSD) +  + #if defined(OS_WIN) + bool StartSandboxWindows(const sandbox::SandboxInterfaceInfo* sandbox_info) { diff --git a/devel/electron6/files/patch-content_gpu_gpu__sandbox__hook__linux.cc b/devel/electron6/files/patch-content_gpu_gpu__sandbox__hook__linux.cc new file mode 100644 index 000000000000..598ad0c43a17 --- /dev/null +++ b/devel/electron6/files/patch-content_gpu_gpu__sandbox__hook__linux.cc @@ -0,0 +1,58 @@ +--- content/gpu/gpu_sandbox_hook_linux.cc.orig	2019-09-10 11:14:02 UTC ++++ content/gpu/gpu_sandbox_hook_linux.cc +@@ -95,8 +95,9 @@ static const char kLibV4lEncPluginPath[] = +     "/usr/lib/libv4l/plugins/libv4l-encplugin.so"; + #endif +  +-constexpr int dlopen_flag = RTLD_NOW | RTLD_GLOBAL | RTLD_NODELETE; ++constexpr int dlopen_flag = RTLD_NOW | RTLD_GLOBAL; +  ++#if !defined(OS_BSD) + void AddV4L2GpuWhitelist( +     std::vector<BrokerFilePermission>* permissions, +     const service_manager::SandboxSeccompBPF::Options& options) { +@@ -287,8 +288,10 @@ std::vector<BrokerFilePermission> FilePermissionsForGp +   AddStandardGpuWhiteList(&permissions); +   return permissions; + } ++#endif +  + void LoadArmGpuLibraries() { ++#if !defined(OS_BSD) +   // Preload the Mali library. +   if (UseChromecastSandboxWhitelist()) { +     for (const char* path : kWhitelistedChromecastPaths) { +@@ -303,6 +306,7 @@ void LoadArmGpuLibraries() { +     // Preload the Tegra V4L2 (video decode acceleration) library. +     dlopen(kLibTegraPath, dlopen_flag); +   } ++#endif + } +  + bool LoadAmdGpuLibraries() { +@@ -358,6 +362,7 @@ bool LoadLibrariesForGpu( +   return true; + } +  ++#if !defined(OS_BSD) + sandbox::syscall_broker::BrokerCommandSet CommandSetForGPU( +     const service_manager::SandboxLinux::Options& options) { +   sandbox::syscall_broker::BrokerCommandSet command_set; +@@ -378,13 +383,17 @@ bool BrokerProcessPreSandboxHook( +   service_manager::SetProcessTitleFromCommandLine(nullptr); +   return true; + } ++#endif +  + }  // namespace +  + bool GpuProcessPreSandboxHook(service_manager::SandboxLinux::Options options) { ++  NOTIMPLEMENTED(); ++#if !defined(OS_BSD) +   service_manager::SandboxLinux::GetInstance()->StartBrokerProcess( +       CommandSetForGPU(options), FilePermissionsForGpu(options), +       base::BindOnce(BrokerProcessPreSandboxHook), options); ++#endif +  +   if (!LoadLibrariesForGpu(options)) +     return false; diff --git a/devel/electron6/files/patch-content_ppapi__plugin_ppapi__blink__platform__impl.cc b/devel/electron6/files/patch-content_ppapi__plugin_ppapi__blink__platform__impl.cc new file mode 100644 index 000000000000..81db41535b00 --- /dev/null +++ b/devel/electron6/files/patch-content_ppapi__plugin_ppapi__blink__platform__impl.cc @@ -0,0 +1,38 @@ +--- content/ppapi_plugin/ppapi_blink_platform_impl.cc.orig	2019-09-10 11:14:02 UTC ++++ content/ppapi_plugin/ppapi_blink_platform_impl.cc +@@ -20,7 +20,7 @@ +  + #if defined(OS_MACOSX) + #include "content/child/child_process_sandbox_support_impl_mac.h" +-#elif defined(OS_LINUX) ++#elif defined(OS_LINUX) || defined(OS_BSD) + #include "content/child/child_process_sandbox_support_impl_linux.h" + #endif +  +@@ -34,7 +34,7 @@ typedef struct CGFont* CGFontRef; + namespace content { +  + PpapiBlinkPlatformImpl::PpapiBlinkPlatformImpl() { +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   font_loader_ = +       sk_make_sp<font_service::FontLoader>(ChildThread::Get()->GetConnector()); +   SkFontConfigInterface::SetGlobal(font_loader_); +@@ -49,7 +49,7 @@ PpapiBlinkPlatformImpl::~PpapiBlinkPlatformImpl() { + } +  + void PpapiBlinkPlatformImpl::Shutdown() { +-#if defined(OS_LINUX) || defined(OS_MACOSX) ++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) +   // SandboxSupport contains a map of OutOfProcessFont objects, which hold +   // WebStrings and WebVectors, which become invalidated when blink is shut +   // down. Hence, we need to clear that map now, just before blink::shutdown() +@@ -59,7 +59,7 @@ void PpapiBlinkPlatformImpl::Shutdown() { + } +  + blink::WebSandboxSupport* PpapiBlinkPlatformImpl::GetSandboxSupport() { +-#if defined(OS_LINUX) || defined(OS_MACOSX) ++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) +   return sandbox_support_.get(); + #else +   return nullptr; diff --git a/devel/electron6/files/patch-content_ppapi__plugin_ppapi__blink__platform__impl.h b/devel/electron6/files/patch-content_ppapi__plugin_ppapi__blink__platform__impl.h new file mode 100644 index 000000000000..a23b18276861 --- /dev/null +++ b/devel/electron6/files/patch-content_ppapi__plugin_ppapi__blink__platform__impl.h @@ -0,0 +1,25 @@ +--- content/ppapi_plugin/ppapi_blink_platform_impl.h.orig	2019-09-10 11:14:02 UTC ++++ content/ppapi_plugin/ppapi_blink_platform_impl.h +@@ -13,7 +13,7 @@ + #include "build/build_config.h" + #include "content/child/blink_platform_impl.h" +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + #include "components/services/font/public/cpp/font_loader.h" + #include "third_party/skia/include/core/SkRefCnt.h" + #endif +@@ -41,11 +41,11 @@ class PpapiBlinkPlatformImpl : public BlinkPlatformImp +                          bool sync_dir) override; +  +  private: +-#if defined(OS_LINUX) || defined(OS_MACOSX) ++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) +   std::unique_ptr<blink::WebSandboxSupport> sandbox_support_; + #endif +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   sk_sp<font_service::FontLoader> font_loader_; + #endif +  diff --git a/devel/electron6/files/patch-content_public_app_v8__snapshot__overlay__manifest.cc b/devel/electron6/files/patch-content_public_app_v8__snapshot__overlay__manifest.cc new file mode 100644 index 000000000000..efcbdbbaeb83 --- /dev/null +++ b/devel/electron6/files/patch-content_public_app_v8__snapshot__overlay__manifest.cc @@ -0,0 +1,11 @@ +--- content/public/app/v8_snapshot_overlay_manifest.cc.orig	2019-09-10 11:14:02 UTC ++++ content/public/app/v8_snapshot_overlay_manifest.cc +@@ -15,7 +15,7 @@ namespace content { + const service_manager::Manifest& GetV8SnapshotOverlayManifest() { +   static base::NoDestructor<service_manager::Manifest> manifest { +     service_manager::ManifestBuilder() +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +         .PreloadFile(kV8NativesDataDescriptor, +                      base::FilePath(FILE_PATH_LITERAL("natives_blob.bin"))) + #if defined(USE_V8_CONTEXT_SNAPSHOT) diff --git a/devel/electron6/files/patch-content_public_common_child__process__host.h b/devel/electron6/files/patch-content_public_common_child__process__host.h new file mode 100644 index 000000000000..9d280913ec74 --- /dev/null +++ b/devel/electron6/files/patch-content_public_common_child__process__host.h @@ -0,0 +1,11 @@ +--- content/public/common/child_process_host.h.orig	2019-09-10 11:14:02 UTC ++++ content/public/common/child_process_host.h +@@ -51,7 +51,7 @@ class CONTENT_EXPORT ChildProcessHost : public IPC::Se +     // No special behavior requested. +     CHILD_NORMAL = 0, +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +     // Indicates that the child execed after forking may be execced from +     // /proc/self/exe rather than using the "real" app path. This prevents +     // autoupdate from confusing us if it changes the file out from under us. diff --git a/devel/electron6/files/patch-content_public_common_common__param__traits__macros.h b/devel/electron6/files/patch-content_public_common_common__param__traits__macros.h new file mode 100644 index 000000000000..5c231d8344f1 --- /dev/null +++ b/devel/electron6/files/patch-content_public_common_common__param__traits__macros.h @@ -0,0 +1,11 @@ +--- content/public/common/common_param_traits_macros.h.orig	2019-09-10 11:14:02 UTC ++++ content/public/common/common_param_traits_macros.h +@@ -329,7 +329,7 @@ IPC_STRUCT_TRAITS_BEGIN(blink::mojom::RendererPreferen +   IPC_STRUCT_TRAITS_MEMBER(disable_client_blocked_error_page) +   IPC_STRUCT_TRAITS_MEMBER(plugin_fullscreen_allowed) +   IPC_STRUCT_TRAITS_MEMBER(network_contry_iso) +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   IPC_STRUCT_TRAITS_MEMBER(system_font_family_name) + #endif + #if defined(OS_WIN) diff --git a/devel/electron6/files/patch-content_public_common_content__features.cc b/devel/electron6/files/patch-content_public_common_content__features.cc new file mode 100644 index 000000000000..ee5c8285b479 --- /dev/null +++ b/devel/electron6/files/patch-content_public_common_content__features.cc @@ -0,0 +1,20 @@ +--- content/public/common/content_features.cc.orig	2019-09-10 11:14:02 UTC ++++ content/public/common/content_features.cc +@@ -577,7 +577,7 @@ const base::Feature kWebAssemblyThreads { + }; +  + // Enable WebAssembly trap handler. +-#if (defined(OS_LINUX) || defined(OS_WIN) || defined(OS_MACOSX)) && \ ++#if (defined(OS_BSD) || defined(OS_LINUX) || defined(OS_WIN) || defined(OS_MACOSX)) && \ +     defined(ARCH_CPU_X86_64) + const base::Feature kWebAssemblyTrapHandler{"WebAssemblyTrapHandler", +                                             base::FEATURE_ENABLED_BY_DEFAULT}; +@@ -612,7 +612,7 @@ const base::Feature kWebAuthBle{"WebAuthenticationBle" + // https://w3c.github.io/webauthn + const base::Feature kWebAuthCable { +   "WebAuthenticationCable", +-#if !defined(OS_CHROMEOS) && defined(OS_LINUX) ++#if (!defined(OS_CHROMEOS) && defined(OS_LINUX)) || defined(OS_BSD) +       base::FEATURE_DISABLED_BY_DEFAULT + #else +       base::FEATURE_ENABLED_BY_DEFAULT diff --git a/devel/electron6/files/patch-content_public_common_content__switches.cc b/devel/electron6/files/patch-content_public_common_content__switches.cc new file mode 100644 index 000000000000..ab4fbfb6ce59 --- /dev/null +++ b/devel/electron6/files/patch-content_public_common_content__switches.cc @@ -0,0 +1,11 @@ +--- content/public/common/content_switches.cc.orig	2019-09-10 11:14:02 UTC ++++ content/public/common/content_switches.cc +@@ -949,7 +949,7 @@ const char kEnableAutomation[] = "enable-automation"; + const char kDisablePanelFitting[]           = "disable-panel-fitting"; + #endif +  +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_FREEBSD) + // Allows sending text-to-speech requests to speech-dispatcher, a common + // Linux speech service. Because it's buggy, the user must explicitly + // enable it so that visiting a random webpage can't cause instability. diff --git a/devel/electron6/files/patch-content_public_common_content__switches.h b/devel/electron6/files/patch-content_public_common_content__switches.h new file mode 100644 index 000000000000..48badac3cf24 --- /dev/null +++ b/devel/electron6/files/patch-content_public_common_content__switches.h @@ -0,0 +1,11 @@ +--- content/public/common/content_switches.h.orig	2019-09-10 11:14:02 UTC ++++ content/public/common/content_switches.h +@@ -268,7 +268,7 @@ CONTENT_EXPORT extern const char kRendererWaitForJavaD + CONTENT_EXPORT extern const char kDisablePanelFitting[]; + #endif +  +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_FREEBSD) + CONTENT_EXPORT extern const char kEnableSpeechDispatcher[]; + #endif +  diff --git a/devel/electron6/files/patch-content_public_common_use__zoom__for__dsf__policy.cc b/devel/electron6/files/patch-content_public_common_use__zoom__for__dsf__policy.cc new file mode 100644 index 000000000000..d04357175d12 --- /dev/null +++ b/devel/electron6/files/patch-content_public_common_use__zoom__for__dsf__policy.cc @@ -0,0 +1,11 @@ +--- content/public/common/use_zoom_for_dsf_policy.cc.orig	2019-09-10 10:42:37 UTC ++++ content/public/common/use_zoom_for_dsf_policy.cc +@@ -25,7 +25,7 @@ const base::Feature kUseZoomForDsfEnabledByDefault{ + #endif +  + bool IsUseZoomForDSFEnabledByDefault() { +-#if defined(OS_LINUX) || defined(OS_FUCHSIA) ++#if defined(OS_LINUX) || defined(OS_FUCHSIA) || defined(OS_BSD) +   return true; + #elif defined(OS_WIN) || defined(OS_ANDROID) +   return base::FeatureList::IsEnabled(kUseZoomForDsfEnabledByDefault); diff --git a/devel/electron6/files/patch-content_public_test_browser__test__base.cc b/devel/electron6/files/patch-content_public_test_browser__test__base.cc new file mode 100644 index 000000000000..9da10c001714 --- /dev/null +++ b/devel/electron6/files/patch-content_public_test_browser__test__base.cc @@ -0,0 +1,13 @@ +--- content/public/test/browser_test_base.cc.orig	2019-09-10 11:14:02 UTC ++++ content/public/test/browser_test_base.cc +@@ -75,6 +75,10 @@ + #include "ui/views/test/event_generator_delegate_mac.h" + #endif +  ++#if defined(OS_FREEBSD) ++#include <sys/signal.h> ++#endif ++ + #if defined(OS_POSIX) + #include "base/process/process_handle.h" + #endif diff --git a/devel/electron6/files/patch-content_public_test_mock__render__thread.cc b/devel/electron6/files/patch-content_public_test_mock__render__thread.cc new file mode 100644 index 000000000000..38b23cfb5045 --- /dev/null +++ b/devel/electron6/files/patch-content_public_test_mock__render__thread.cc @@ -0,0 +1,11 @@ +--- content/public/test/mock_render_thread.cc.orig	2019-09-10 11:14:02 UTC ++++ content/public/test/mock_render_thread.cc +@@ -74,7 +74,7 @@ class MockRenderMessageFilterImpl : public mojom::Rend +     std::move(callback).Run(false); +   } +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   void SetThreadPriority(int32_t platform_thread_id, +                          base::ThreadPriority thread_priority) override {} + #endif diff --git a/devel/electron6/files/patch-content_renderer_media_audio_audio__device__factory.cc b/devel/electron6/files/patch-content_renderer_media_audio_audio__device__factory.cc new file mode 100644 index 000000000000..5f0dbdc83610 --- /dev/null +++ b/devel/electron6/files/patch-content_renderer_media_audio_audio__device__factory.cc @@ -0,0 +1,11 @@ +--- content/renderer/media/audio/audio_device_factory.cc.orig	2019-09-10 11:14:02 UTC ++++ content/renderer/media/audio/audio_device_factory.cc +@@ -35,7 +35,7 @@ AudioDeviceFactory* AudioDeviceFactory::factory_ = nul + namespace { +  + #if defined(OS_WIN) || defined(OS_MACOSX) || \ +-    (defined(OS_LINUX) && !defined(OS_CHROMEOS)) ++    (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) + // Due to driver deadlock issues on Windows (http://crbug/422522) there is a + // chance device authorization response is never received from the browser side. + // In this case we will time out, to avoid renderer hang forever waiting for diff --git a/devel/electron6/files/patch-content_renderer_media_stream_processed__local__audio__source.cc b/devel/electron6/files/patch-content_renderer_media_stream_processed__local__audio__source.cc new file mode 100644 index 000000000000..29bd870cdfd2 --- /dev/null +++ b/devel/electron6/files/patch-content_renderer_media_stream_processed__local__audio__source.cc @@ -0,0 +1,20 @@ +--- content/renderer/media/stream/processed_local_audio_source.cc.orig	2019-09-10 11:14:03 UTC ++++ content/renderer/media/stream/processed_local_audio_source.cc +@@ -80,7 +80,7 @@ void LogAudioProcesingProperties( + }  // namespace +  + bool IsApmInAudioServiceEnabled() { +-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) ++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) +   return base::FeatureList::IsEnabled(features::kWebRtcApmInAudioService); + #else +   return false; +@@ -406,7 +406,7 @@ void ProcessedLocalAudioSource::CaptureUsingProcessor( +     bool key_pressed) { + #if defined(OS_WIN) || defined(OS_MACOSX) +   DCHECK_LE(volume, 1.0); +-#elif (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_OPENBSD) ++#elif (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) +   // We have a special situation on Linux where the microphone volume can be +   // "higher than maximum". The input volume slider in the sound preference +   // allows the user to set a scaling that is higher than 100%. It means that diff --git a/devel/electron6/files/patch-content_renderer_media_webrtc_webrtc__audio__renderer__unittest.cc b/devel/electron6/files/patch-content_renderer_media_webrtc_webrtc__audio__renderer__unittest.cc new file mode 100644 index 000000000000..24d24a010049 --- /dev/null +++ b/devel/electron6/files/patch-content_renderer_media_webrtc_webrtc__audio__renderer__unittest.cc @@ -0,0 +1,11 @@ +--- content/renderer/media/webrtc/webrtc_audio_renderer_unittest.cc.orig	2019-09-10 11:14:03 UTC ++++ content/renderer/media/webrtc/webrtc_audio_renderer_unittest.cc +@@ -204,7 +204,7 @@ TEST_F(WebRtcAudioRendererTest, MultipleRenderers) { + TEST_F(WebRtcAudioRendererTest, VerifySinkParameters) { +   SetupRenderer(kDefaultOutputDeviceId); +   renderer_proxy_->Start(); +-#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_FUCHSIA) ++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_FUCHSIA) || defined(OS_BSD) +   static const int kExpectedBufferSize = kHardwareSampleRate / 100; + #elif defined(OS_ANDROID) +   static const int kExpectedBufferSize = 2 * kHardwareSampleRate / 100; diff --git a/devel/electron6/files/patch-content_renderer_render__process__impl.cc b/devel/electron6/files/patch-content_renderer_render__process__impl.cc new file mode 100644 index 000000000000..15abfa6a8793 --- /dev/null +++ b/devel/electron6/files/patch-content_renderer_render__process__impl.cc @@ -0,0 +1,11 @@ +--- content/renderer/render_process_impl.cc.orig	2019-09-10 11:14:03 UTC ++++ content/renderer/render_process_impl.cc +@@ -157,7 +157,7 @@ RenderProcessImpl::RenderProcessImpl() +  +   SetV8FlagIfNotFeature(features::kWebAssemblyTrapHandler, +                         "--no-wasm-trap-handler"); +-#if defined(OS_LINUX) && defined(ARCH_CPU_X86_64) ++#if (defined(OS_LINUX) || defined(OS_BSD)) && defined(ARCH_CPU_X86_64) +   if (base::FeatureList::IsEnabled(features::kWebAssemblyTrapHandler)) { +     base::CommandLine* command_line = base::CommandLine::ForCurrentProcess(); +     if (!command_line->HasSwitch( diff --git a/devel/electron6/files/patch-content_renderer_render__thread__impl.cc b/devel/electron6/files/patch-content_renderer_render__thread__impl.cc new file mode 100644 index 000000000000..8db6c3daf4bd --- /dev/null +++ b/devel/electron6/files/patch-content_renderer_render__thread__impl.cc @@ -0,0 +1,51 @@ +--- content/renderer/render_thread_impl.cc.orig	2019-09-16 09:24:24 UTC ++++ content/renderer/render_thread_impl.cc +@@ -187,12 +187,21 @@ + #include "mojo/public/cpp/bindings/message_dumper.h" + #endif +  ++#if !defined(OS_BSD) + #if defined(OS_MACOSX) + #include <malloc/malloc.h> + #else + #include <malloc.h> + #endif ++#endif +  ++#if defined(OS_BSD) ++#include <stddef.h> ++#include <stdint.h> ++#include <sys/param.h> ++#include <sys/sysctl.h> ++#endif ++ + using base::ThreadRestrictions; + using blink::WebDocument; + using blink::WebFrame; +@@ -907,7 +916,7 @@ void RenderThreadImpl::Init() { +   DCHECK(parsed_num_raster_threads) << string_value; +   DCHECK_GT(num_raster_threads, 0); +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   categorized_worker_pool_->SetBackgroundingCallback( +       main_thread_scheduler_->DefaultTaskRunner(), +       base::BindOnce( +@@ -939,7 +948,7 @@ void RenderThreadImpl::Init() { +   GetConnector()->BindInterface(mojom::kBrowserServiceName, +                                 mojo::MakeRequest(&storage_partition_service_)); +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   render_message_filter()->SetThreadPriority( +       ChildProcess::current()->io_thread_id(), base::ThreadPriority::DISPLAY); + #endif +@@ -1321,7 +1330,7 @@ media::GpuVideoAcceleratorFactories* RenderThreadImpl: +       !cmd_line->HasSwitch(switches::kDisableGpuMemoryBufferVideoFrames); + #else +       cmd_line->HasSwitch(switches::kEnableGpuMemoryBufferVideoFrames); +-#endif  // defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_WIN) ++#endif  // defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD) +   const bool enable_media_stream_gpu_memory_buffers = +       enable_gpu_memory_buffers && +       base::FeatureList::IsEnabled( diff --git a/devel/electron6/files/patch-content_renderer_renderer__blink__platform__impl.cc b/devel/electron6/files/patch-content_renderer_renderer__blink__platform__impl.cc new file mode 100644 index 000000000000..4c6b9b805a20 --- /dev/null +++ b/devel/electron6/files/patch-content_renderer_renderer__blink__platform__impl.cc @@ -0,0 +1,56 @@ +--- content/renderer/renderer_blink_platform_impl.cc.orig	2019-09-16 09:24:24 UTC ++++ content/renderer/renderer_blink_platform_impl.cc +@@ -108,7 +108,7 @@ +  + #if defined(OS_MACOSX) + #include "content/child/child_process_sandbox_support_impl_mac.h" +-#elif defined(OS_LINUX) ++#elif defined(OS_LINUX) || defined(OS_BSD) + #include "content/child/child_process_sandbox_support_impl_linux.h" + #endif +  +@@ -199,7 +199,7 @@ RendererBlinkPlatformImpl::RendererBlinkPlatformImpl( +                      ->Clone(); +     thread_safe_sender_ = RenderThreadImpl::current()->thread_safe_sender(); +     blob_registry_.reset(new WebBlobRegistryImpl(thread_safe_sender_.get())); +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +     font_loader_ = sk_make_sp<font_service::FontLoader>(connector_.get()); +     SkFontConfigInterface::SetGlobal(font_loader_); + #endif +@@ -208,7 +208,7 @@ RendererBlinkPlatformImpl::RendererBlinkPlatformImpl( +     connector_ = service_manager::Connector::Create(&request); +   } +  +-#if defined(OS_LINUX) || defined(OS_MACOSX) ++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) +   if (g_sandbox_enabled && sandboxEnabled()) { + #if defined(OS_MACOSX) +     sandbox_support_.reset(new WebSandboxSupportMac(connector_.get())); +@@ -236,7 +236,7 @@ RendererBlinkPlatformImpl::~RendererBlinkPlatformImpl( + } +  + void RendererBlinkPlatformImpl::Shutdown() { +-#if defined(OS_LINUX) || defined(OS_MACOSX) ++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) +   // SandboxSupport contains a map of OutOfProcessFont objects, which hold +   // WebStrings and WebVectors, which become invalidated when blink is shut +   // down. Hence, we need to clear that map now, just before blink::shutdown() +@@ -311,7 +311,7 @@ RendererBlinkPlatformImpl::CreateNetworkURLLoaderFacto +  + void RendererBlinkPlatformImpl::SetDisplayThreadPriority( +     base::PlatformThreadId thread_id) { +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   if (RenderThreadImpl* render_thread = RenderThreadImpl::current()) { +     render_thread->render_message_filter()->SetThreadPriority( +         thread_id, base::ThreadPriority::DISPLAY); +@@ -324,7 +324,7 @@ blink::BlameContext* RendererBlinkPlatformImpl::GetTop + } +  + blink::WebSandboxSupport* RendererBlinkPlatformImpl::GetSandboxSupport() { +-#if defined(OS_LINUX) || defined(OS_MACOSX) ++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) +   return sandbox_support_.get(); + #else +   // These platforms do not require sandbox support. diff --git a/devel/electron6/files/patch-content_renderer_renderer__blink__platform__impl.h b/devel/electron6/files/patch-content_renderer_renderer__blink__platform__impl.h new file mode 100644 index 000000000000..cbd8752fe67f --- /dev/null +++ b/devel/electron6/files/patch-content_renderer_renderer__blink__platform__impl.h @@ -0,0 +1,29 @@ +--- content/renderer/renderer_blink_platform_impl.h.orig	2019-09-16 09:24:24 UTC ++++ content/renderer/renderer_blink_platform_impl.h +@@ -30,7 +30,7 @@ + #include "third_party/blink/public/mojom/loader/code_cache.mojom.h" + #include "third_party/blink/public/mojom/webdatabase/web_database.mojom.h" +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + #include "components/services/font/public/cpp/font_loader.h"  // nogncheck + #include "third_party/skia/include/core/SkRefCnt.h"           // nogncheck + #endif +@@ -259,7 +259,7 @@ class CONTENT_EXPORT RendererBlinkPlatformImpl : publi +   std::unique_ptr<service_manager::Connector> connector_; +   scoped_refptr<base::SingleThreadTaskRunner> io_runner_; +  +-#if defined(OS_LINUX) || defined(OS_MACOSX) ++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) +   std::unique_ptr<blink::WebSandboxSupport> sandbox_support_; + #endif +  +@@ -297,7 +297,7 @@ class CONTENT_EXPORT RendererBlinkPlatformImpl : publi +   std::unique_ptr<blink::WebTransmissionEncodingInfoHandler> +       web_transmission_encoding_info_handler_; +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   sk_sp<font_service::FontLoader> font_loader_; + #endif +  diff --git a/devel/electron6/files/patch-content_renderer_renderer__main__platform__delegate__linux.cc b/devel/electron6/files/patch-content_renderer_renderer__main__platform__delegate__linux.cc new file mode 100644 index 000000000000..63558a880f4d --- /dev/null +++ b/devel/electron6/files/patch-content_renderer_renderer__main__platform__delegate__linux.cc @@ -0,0 +1,19 @@ +--- content/renderer/renderer_main_platform_delegate_linux.cc.orig	2019-09-10 10:42:37 UTC ++++ content/renderer/renderer_main_platform_delegate_linux.cc +@@ -30,6 +30,7 @@ void RendererMainPlatformDelegate::PlatformUninitializ + } +  + bool RendererMainPlatformDelegate::EnableSandbox() { ++#if !defined(OS_BSD) +   // The setuid sandbox is started in the zygote process: zygote_main_linux.cc +   // https://chromium.googlesource.com/chromium/src/+/master/docs/linux_suid_sandbox.md +   // +@@ -65,7 +66,7 @@ bool RendererMainPlatformDelegate::EnableSandbox() { +     CHECK_EQ(errno, EPERM); +   } + #endif  // __x86_64__ +- ++#endif  // ! OS_BSD +   return true; + } +  diff --git a/devel/electron6/files/patch-content_shell_BUILD.gn b/devel/electron6/files/patch-content_shell_BUILD.gn new file mode 100644 index 000000000000..f1c4fb629328 --- /dev/null +++ b/devel/electron6/files/patch-content_shell_BUILD.gn @@ -0,0 +1,11 @@ +--- content/shell/BUILD.gn.orig	2019-09-10 11:14:03 UTC ++++ content/shell/BUILD.gn +@@ -961,7 +961,7 @@ group("content_shell_crash_test") { +   if (is_win) { +     data_deps += [ "//build/win:copy_cdb_to_output" ] +   } +-  if (is_posix) { ++  if (is_posix && !is_bsd) { +     data_deps += [ +       "//third_party/breakpad:dump_syms", +       "//third_party/breakpad:minidump_stackwalk", diff --git a/devel/electron6/files/patch-content_shell_app_shell__main__delegate.cc b/devel/electron6/files/patch-content_shell_app_shell__main__delegate.cc new file mode 100644 index 000000000000..c25ca57b4a98 --- /dev/null +++ b/devel/electron6/files/patch-content_shell_app_shell__main__delegate.cc @@ -0,0 +1,20 @@ +--- content/shell/app/shell_main_delegate.cc.orig	2019-09-10 11:14:03 UTC ++++ content/shell/app/shell_main_delegate.cc +@@ -170,7 +170,7 @@ bool ShellMainDelegate::BasicStartupComplete(int* exit +  +   v8_crashpad_support::SetUp(); + #endif +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   breakpad::SetFirstChanceExceptionHandler(v8::TryHandleWebAssemblyTrapPosix); + #endif + #if defined(OS_MACOSX) +@@ -314,7 +314,7 @@ bool ShellMainDelegate::BasicStartupComplete(int* exit + } +  + void ShellMainDelegate::PreSandboxStartup() { +-#if defined(ARCH_CPU_ARM_FAMILY) && (defined(OS_ANDROID) || defined(OS_LINUX)) ++#if defined(ARCH_CPU_ARM_FAMILY) && (defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_BSD)) +   // Create an instance of the CPU class to parse /proc/cpuinfo and cache +   // cpu_brand info. +   base::CPU cpu_info; diff --git a/devel/electron6/files/patch-content_shell_browser_shell__browser__context.cc b/devel/electron6/files/patch-content_shell_browser_shell__browser__context.cc new file mode 100644 index 000000000000..0672c8cd4988 --- /dev/null +++ b/devel/electron6/files/patch-content_shell_browser_shell__browser__context.cc @@ -0,0 +1,20 @@ +--- content/shell/browser/shell_browser_context.cc.orig	2019-09-10 11:14:03 UTC ++++ content/shell/browser/shell_browser_context.cc +@@ -32,7 +32,7 @@ +  + #if defined(OS_WIN) + #include "base/base_paths_win.h" +-#elif defined(OS_LINUX) ++#elif defined(OS_LINUX) || defined(OS_BSD) + #include "base/nix/xdg_util.h" + #elif defined(OS_MACOSX) + #include "base/base_paths_mac.h" +@@ -115,7 +115,7 @@ void ShellBrowserContext::InitWhileIOAllowed() { + #if defined(OS_WIN) +   CHECK(base::PathService::Get(base::DIR_LOCAL_APP_DATA, &path_)); +   path_ = path_.Append(std::wstring(L"content_shell")); +-#elif defined(OS_LINUX) ++#elif defined(OS_LINUX) || defined(OS_BSD) +   std::unique_ptr<base::Environment> env(base::Environment::Create()); +   base::FilePath config_dir( +       base::nix::GetXDGDirectory(env.get(), diff --git a/devel/electron6/files/patch-content_shell_browser_shell__browser__main__parts.cc b/devel/electron6/files/patch-content_shell_browser_shell__browser__main__parts.cc new file mode 100644 index 000000000000..b1eee7379aba --- /dev/null +++ b/devel/electron6/files/patch-content_shell_browser_shell__browser__main__parts.cc @@ -0,0 +1,20 @@ +--- content/shell/browser/shell_browser_main_parts.cc.orig	2019-09-10 11:14:03 UTC ++++ content/shell/browser/shell_browser_main_parts.cc +@@ -48,7 +48,7 @@ + #if defined(USE_AURA) && defined(USE_X11) + #include "ui/events/devices/x11/touch_factory_x11.h"  // nogncheck + #endif +-#if !defined(OS_CHROMEOS) && defined(USE_AURA) && defined(OS_LINUX) ++#if !defined(OS_CHROMEOS) && defined(USE_AURA) && (defined(OS_LINUX) || defined(OS_BSD)) + #include "ui/base/ime/init/input_method_initializer.h" + #endif + #if defined(OS_CHROMEOS) +@@ -126,7 +126,7 @@ int ShellBrowserMainParts::PreEarlyInitialization() { + #if defined(USE_X11) +   ui::SetDefaultX11ErrorHandlers(); + #endif +-#if !defined(OS_CHROMEOS) && defined(USE_AURA) && defined(OS_LINUX) ++#if !defined(OS_CHROMEOS) && defined(USE_AURA) && (defined(OS_BSD) || defined(OS_LINUX)) +   ui::InitializeInputMethodForTesting(); + #endif + #if defined(OS_ANDROID) diff --git a/devel/electron6/files/patch-content_shell_browser_web__test_web__test__browser__context.cc b/devel/electron6/files/patch-content_shell_browser_web__test_web__test__browser__context.cc new file mode 100644 index 000000000000..f988a15f7aee --- /dev/null +++ b/devel/electron6/files/patch-content_shell_browser_web__test_web__test__browser__context.cc @@ -0,0 +1,11 @@ +--- content/shell/browser/web_test/web_test_browser_context.cc.orig	2019-09-10 11:14:03 UTC ++++ content/shell/browser/web_test/web_test_browser_context.cc +@@ -27,7 +27,7 @@ +  + #if defined(OS_WIN) + #include "base/base_paths_win.h" +-#elif defined(OS_LINUX) ++#elif defined(OS_LINUX) || defined(OS_BSD) + #include "base/nix/xdg_util.h" + #elif defined(OS_MACOSX) + #include "base/base_paths_mac.h" diff --git a/devel/electron6/files/patch-content_shell_browser_web__test_web__test__browser__main__parts.cc b/devel/electron6/files/patch-content_shell_browser_web__test_web__test__browser__main__parts.cc new file mode 100644 index 000000000000..773a827ec24f --- /dev/null +++ b/devel/electron6/files/patch-content_shell_browser_web__test_web__test__browser__main__parts.cc @@ -0,0 +1,11 @@ +--- content/shell/browser/web_test/web_test_browser_main_parts.cc.orig	2019-09-10 11:14:03 UTC ++++ content/shell/browser/web_test/web_test_browser_main_parts.cc +@@ -37,7 +37,7 @@ + #if defined(USE_AURA) && defined(USE_X11) + #include "ui/events/devices/x11/touch_factory_x11.h"  // nogncheck + #endif +-#if !defined(OS_CHROMEOS) && defined(USE_AURA) && defined(OS_LINUX) ++#if !defined(OS_CHROMEOS) && defined(USE_AURA) && (defined(OS_LINUX) || defined(OS_BSD)) + #include "ui/base/ime/init/input_method_initializer.h" + #endif +  diff --git a/devel/electron6/files/patch-content_shell_test__runner_test__runner.cc b/devel/electron6/files/patch-content_shell_test__runner_test__runner.cc new file mode 100644 index 000000000000..097c838a63eb --- /dev/null +++ b/devel/electron6/files/patch-content_shell_test__runner_test__runner.cc @@ -0,0 +1,29 @@ +--- content/shell/test_runner/test_runner.cc.orig	2019-09-10 11:14:03 UTC ++++ content/shell/test_runner/test_runner.cc +@@ -66,7 +66,7 @@ + #include "ui/gfx/geometry/size.h" + #include "ui/gfx/skia_util.h" +  +-#if defined(OS_LINUX) || defined(OS_FUCHSIA) ++#if defined(OS_LINUX) || defined(OS_FUCHSIA) || defined(OS_BSD) + #include "third_party/blink/public/platform/web_font_render_style.h" + #endif +  +@@ -1538,7 +1538,7 @@ void TestRunner::Reset() { +   drag_image_.reset(); +  +   blink::WebSecurityPolicy::ClearOriginAccessList(); +-#if defined(OS_LINUX) || defined(OS_FUCHSIA) ++#if defined(OS_LINUX) || defined(OS_FUCHSIA) || defined(OS_BSD) +   blink::WebFontRenderStyle::SetSubpixelPositioning(false); + #endif +  +@@ -2065,7 +2065,7 @@ void TestRunner::AddOriginAccessAllowListEntry( + } +  + void TestRunner::SetTextSubpixelPositioning(bool value) { +-#if defined(OS_LINUX) || defined(OS_FUCHSIA) ++#if defined(OS_LINUX) || defined(OS_FUCHSIA) || defined(OS_BSD) +   // Since FontConfig doesn't provide a variable to control subpixel +   // positioning, we'll fall back to setting it globally for all fonts. +   blink::WebFontRenderStyle::SetSubpixelPositioning(value); diff --git a/devel/electron6/files/patch-content_test_content__test__suite.cc b/devel/electron6/files/patch-content_test_content__test__suite.cc new file mode 100644 index 000000000000..c964c5f83822 --- /dev/null +++ b/devel/electron6/files/patch-content_test_content__test__suite.cc @@ -0,0 +1,18 @@ +--- content/test/content_test_suite.cc.orig	2019-09-10 10:42:37 UTC ++++ content/test/content_test_suite.cc +@@ -81,6 +81,7 @@ void ContentTestSuite::Initialize() { +   // to initialize GL, so don't do it here. +   base::CommandLine* command_line = base::CommandLine::ForCurrentProcess(); +   bool is_child_process = command_line->HasSwitch(switches::kTestChildProcess); ++#if !defined(OS_BSD) +   if (!is_child_process) { +     gl::GLSurfaceTestSupport::InitializeNoExtensionsOneOff(); +     auto* gpu_feature_info = gpu::GetTestGpuThreadHolder()->GetGpuFeatureInfo(); +@@ -88,6 +89,7 @@ void ContentTestSuite::Initialize() { +         gpu_feature_info->disabled_extensions); +     gl::init::InitializeExtensionSettingsOneOffPlatform(); +   } ++#endif +   testing::TestEventListeners& listeners = +       testing::UnitTest::GetInstance()->listeners(); +   listeners.Append(new TestInitializationListener); diff --git a/devel/electron6/files/patch-content_utility_utility__blink__platform__with__sandbox__support__impl.cc b/devel/electron6/files/patch-content_utility_utility__blink__platform__with__sandbox__support__impl.cc new file mode 100644 index 000000000000..58d2bd64c284 --- /dev/null +++ b/devel/electron6/files/patch-content_utility_utility__blink__platform__with__sandbox__support__impl.cc @@ -0,0 +1,29 @@ +--- content/utility/utility_blink_platform_with_sandbox_support_impl.cc.orig	2019-09-10 11:14:03 UTC ++++ content/utility/utility_blink_platform_with_sandbox_support_impl.cc +@@ -8,7 +8,7 @@ +  + #if defined(OS_MACOSX) + #include "content/child/child_process_sandbox_support_impl_mac.h" +-#elif defined(OS_LINUX) ++#elif defined(OS_LINUX) || defined(OS_BSD) + #include "content/child/child_process_sandbox_support_impl_linux.h" + #endif +  +@@ -17,7 +17,7 @@ namespace content { + UtilityBlinkPlatformWithSandboxSupportImpl:: +     UtilityBlinkPlatformWithSandboxSupportImpl( +         service_manager::Connector* connector) { +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   font_loader_ = sk_make_sp<font_service::FontLoader>(connector); +   SkFontConfigInterface::SetGlobal(font_loader_); +   sandbox_support_ = std::make_unique<WebSandboxSupportLinux>(font_loader_); +@@ -31,7 +31,7 @@ UtilityBlinkPlatformWithSandboxSupportImpl:: +  + blink::WebSandboxSupport* + UtilityBlinkPlatformWithSandboxSupportImpl::GetSandboxSupport() { +-#if defined(OS_LINUX) || defined(OS_MACOSX) ++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) +   return sandbox_support_.get(); + #else +   return nullptr; diff --git a/devel/electron6/files/patch-content_utility_utility__blink__platform__with__sandbox__support__impl.h b/devel/electron6/files/patch-content_utility_utility__blink__platform__with__sandbox__support__impl.h new file mode 100644 index 000000000000..9c80a85b3294 --- /dev/null +++ b/devel/electron6/files/patch-content_utility_utility__blink__platform__with__sandbox__support__impl.h @@ -0,0 +1,24 @@ +--- content/utility/utility_blink_platform_with_sandbox_support_impl.h.orig	2019-09-10 10:42:37 UTC ++++ content/utility/utility_blink_platform_with_sandbox_support_impl.h +@@ -11,7 +11,7 @@ + #include "build/build_config.h" + #include "third_party/blink/public/platform/platform.h" +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + #include "components/services/font/public/cpp/font_loader.h"  // nogncheck + #include "third_party/skia/include/core/SkRefCnt.h"           // nogncheck + #endif +@@ -39,10 +39,10 @@ class UtilityBlinkPlatformWithSandboxSupportImpl : pub +   blink::WebSandboxSupport* GetSandboxSupport() override; +  +  private: +-#if defined(OS_LINUX) || defined(OS_MACOSX) ++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) +   std::unique_ptr<blink::WebSandboxSupport> sandbox_support_; + #endif +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   sk_sp<font_service::FontLoader> font_loader_; + #endif +  diff --git a/devel/electron6/files/patch-device_bluetooth_BUILD.gn b/devel/electron6/files/patch-device_bluetooth_BUILD.gn new file mode 100644 index 000000000000..0f528e130c23 --- /dev/null +++ b/devel/electron6/files/patch-device_bluetooth_BUILD.gn @@ -0,0 +1,11 @@ +--- device/bluetooth/BUILD.gn.orig	2019-09-10 11:14:03 UTC ++++ device/bluetooth/BUILD.gn +@@ -274,7 +274,7 @@ component("bluetooth") { +     ] +   } +  +-  if (is_chromeos || is_linux) { ++  if (is_chromeos || (is_linux && !is_bsd)) { +     if (use_dbus) { +       sources += [ +         "bluez/bluetooth_adapter_bluez.cc", diff --git a/devel/electron6/files/patch-device_gamepad_gamepad__provider.cc b/devel/electron6/files/patch-device_gamepad_gamepad__provider.cc new file mode 100644 index 000000000000..afcce8fa7c36 --- /dev/null +++ b/devel/electron6/files/patch-device_gamepad_gamepad__provider.cc @@ -0,0 +1,11 @@ +--- device/gamepad/gamepad_provider.cc.orig	2019-09-10 11:14:04 UTC ++++ device/gamepad/gamepad_provider.cc +@@ -167,7 +167,7 @@ void GamepadProvider::Initialize(std::unique_ptr<Gamep +  +   if (!polling_thread_) +     polling_thread_.reset(new base::Thread("Gamepad polling thread")); +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   // On Linux, the data fetcher needs to watch file descriptors, so the message +   // loop needs to be a libevent loop. +   const base::MessageLoop::Type kMessageLoopType = base::MessageLoop::TYPE_IO; diff --git a/devel/electron6/files/patch-electron_BUILD.gn b/devel/electron6/files/patch-electron_BUILD.gn new file mode 100644 index 000000000000..b128040b6ab8 --- /dev/null +++ b/devel/electron6/files/patch-electron_BUILD.gn @@ -0,0 +1,53 @@ +--- electron/BUILD.gn.orig	2019-11-05 00:13:02 UTC ++++ electron/BUILD.gn +@@ -535,6 +535,15 @@ static_library("electron_lib") { +   sources = filenames.lib_sources +   set_sources_assignment_filter(sources_assignment_filter) +  ++  if (is_bsd) { ++    sources -= [ ++      "atom/common/crash_reporter/crash_reporter_linux.cc", ++      "atom/common/crash_reporter/crash_reporter_linux.h", ++      "atom/common/crash_reporter/linux/crash_dump_handler.cc", ++      "atom/common/crash_reporter/linux/crash_dump_handler.h", ++    ] ++  } ++ +   if (is_component_build) { +     defines += [ "NODE_SHARED_MODE" ] +   } +@@ -601,6 +610,12 @@ static_library("electron_lib") { +  +     sources += filenames.lib_sources_nss +   } ++  if (is_bsd) { ++    deps -= [ ++      "//third_party/breakpad:client", ++    ] ++    include_dirs -= [ "//third_party/breakpad" ] ++  } +   if (is_win) { +     libs += [ "dwmapi.lib" ] +     deps += [ +@@ -622,6 +637,12 @@ static_library("electron_lib") { +     ] +     deps += [ "//third_party/crashpad/crashpad/client" ] +   } ++  if (is_bsd) { ++    deps += [ ++      "//ui/views/controls/webview", ++      "//ui/wm", ++    ] ++  } +  +   if (enable_pdf) { +     deps += [ "//pdf" ] +@@ -1320,7 +1341,7 @@ dist_zip("electron_dist_zip") { +     ":licenses", +     ":electron_version", +   ] +-  if (is_linux) { ++  if (is_linux && !is_bsd) { +     data_deps += [ "//sandbox/linux:chrome_sandbox" ] +   } +   outputs = [ diff --git a/devel/electron6/files/patch-electron_atom_app_atom__main.cc b/devel/electron6/files/patch-electron_atom_app_atom__main.cc new file mode 100644 index 000000000000..b14434d20224 --- /dev/null +++ b/devel/electron6/files/patch-electron_atom_app_atom__main.cc @@ -0,0 +1,35 @@ +--- electron/atom/app/atom_main.cc.orig	2019-09-11 17:30:11 UTC ++++ electron/atom/app/atom_main.cc +@@ -26,12 +26,12 @@ + #include "base/win/windows_version.h" + #include "content/public/app/sandbox_helper_win.h" + #include "sandbox/win/src/sandbox_types.h" +-#elif defined(OS_LINUX)  // defined(OS_WIN) ++#elif defined(OS_LINUX) || defined(OS_BSD)  // defined(OS_WIN) + #include <unistd.h> + #include <cstdio> + #include "atom/app/atom_main_delegate.h"  // NOLINT + #include "content/public/app/content_main.h" +-#else  // defined(OS_LINUX) ++#else  // defined(OS_LINUX) || defined(OS_BSD) + #include <mach-o/dyld.h> + #include <unistd.h> + #include <cstdio> +@@ -168,7 +168,7 @@ int APIENTRY wWinMain(HINSTANCE instance, HINSTANCE, w +   return content::ContentMain(params); + } +  +-#elif defined(OS_LINUX)  // defined(OS_WIN) ++#elif defined(OS_LINUX) || defined(OS_BSD) // defined(OS_WIN) +  + int main(int argc, char* argv[]) { +   FixStdioStreams(); +@@ -189,7 +189,7 @@ int main(int argc, char* argv[]) { +   return content::ContentMain(params); + } +  +-#else  // defined(OS_LINUX) ++#else  // defined(OS_LINUX) || defined(OS_BSD) +  + int main(int argc, char* argv[]) { +   FixStdioStreams(); diff --git a/devel/electron6/files/patch-electron_atom_app_atom__main__delegate.cc b/devel/electron6/files/patch-electron_atom_app_atom__main__delegate.cc new file mode 100644 index 000000000000..d4785efedf83 --- /dev/null +++ b/devel/electron6/files/patch-electron_atom_app_atom__main__delegate.cc @@ -0,0 +1,29 @@ +--- electron/atom/app/atom_main_delegate.cc.orig	2019-12-17 00:40:10 UTC ++++ electron/atom/app/atom_main_delegate.cc +@@ -8,7 +8,7 @@ + #include <memory> + #include <string> +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + #include <glib.h>  // for g_setenv() + #endif +  +@@ -204,7 +204,7 @@ bool AtomMainDelegate::BasicStartupComplete(int* exit_ +     base::win::PinUser32(); + #endif +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   // Check for --no-sandbox parameter when running as root. +   if (getuid() == 0 && IsSandboxEnabled(command_line)) +     LOG(FATAL) << "Running as root without --" +@@ -229,7 +229,7 @@ void AtomMainDelegate::PostEarlyInitialization(bool is +         ui::ResourceBundle::GetSharedInstance().GetLocaleFilePath(locale, true); +     if (!locale_file_path.empty()) { +       custom_locale = locale; +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +       /* When built with USE_GLIB, libcc's GetApplicationLocaleInternal() uses +        * glib's g_get_language_names(), which keys off of getenv("LC_ALL") */ +       g_setenv("LC_ALL", custom_locale.c_str(), TRUE); diff --git a/devel/electron6/files/patch-electron_atom_browser_api_atom__api__app.cc b/devel/electron6/files/patch-electron_atom_browser_api_atom__api__app.cc new file mode 100644 index 000000000000..6a3c8be1cf43 --- /dev/null +++ b/devel/electron6/files/patch-electron_atom_browser_api_atom__api__app.cc @@ -0,0 +1,38 @@ +--- electron/atom/browser/api/atom_api_app.cc.orig	2019-09-11 17:30:11 UTC ++++ electron/atom/browser/api/atom_api_app.cc +@@ -608,7 +608,7 @@ void App::OnWillFinishLaunching() { + } +  + void App::OnFinishLaunching(const base::DictionaryValue& launch_info) { +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   // Set the application name for audio streams shown in external +   // applications. Only affects pulseaudio currently. +   media::AudioManager::SetGlobalAppName(Browser::Get()->GetName()); +@@ -890,7 +890,7 @@ void App::SetPath(mate::Arguments* args, + } +  + void App::SetDesktopName(const std::string& desktop_name) { +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   std::unique_ptr<base::Environment> env(base::Environment::Create()); +   env->SetVar("CHROME_DESKTOP", desktop_name); + #endif +@@ -1400,7 +1400,7 @@ void App::BuildPrototype(v8::Isolate* isolate, +       .SetMethod("moveToApplicationsFolder", &App::MoveToApplicationsFolder) +       .SetMethod("isInApplicationsFolder", &App::IsInApplicationsFolder) + #endif +-#if defined(OS_MACOSX) || defined(OS_LINUX) ++#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) +       .SetMethod("setAboutPanelOptions", +                  base::Bind(&Browser::SetAboutPanelOptions, browser)) +       .SetMethod("showAboutPanel", +@@ -1418,7 +1418,7 @@ void App::BuildPrototype(v8::Isolate* isolate, +       .SetMethod("getJumpListSettings", &App::GetJumpListSettings) +       .SetMethod("setJumpList", &App::SetJumpList) + #endif +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +       .SetMethod("isUnityRunning", +                  base::Bind(&Browser::IsUnityRunning, browser)) + #endif diff --git a/devel/electron6/files/patch-electron_atom_browser_api_atom__api__web__contents.cc b/devel/electron6/files/patch-electron_atom_browser_api_atom__api__web__contents.cc new file mode 100644 index 000000000000..47d0a7cb3777 --- /dev/null +++ b/devel/electron6/files/patch-electron_atom_browser_api_atom__api__web__contents.cc @@ -0,0 +1,34 @@ +--- electron/atom/browser/api/atom_api_web_contents.cc.orig	2019-12-17 00:40:10 UTC ++++ electron/atom/browser/api/atom_api_web_contents.cc +@@ -104,11 +104,11 @@ + #include "ui/base/cocoa/defaults_utils.h" + #endif +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + #include "ui/views/linux_ui/linux_ui.h" + #endif +  +-#if defined(OS_LINUX) || defined(OS_WIN) ++#if defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD) + #include "third_party/blink/public/mojom/renderer_preferences.mojom.h" + #include "ui/gfx/font_render_params.h" + #endif +@@ -421,7 +421,7 @@ void WebContents::InitWithSessionAndOptions( +   auto* prefs = web_contents()->GetMutableRendererPrefs(); +   prefs->accept_languages = g_browser_process->GetApplicationLocale(); +  +-#if defined(OS_LINUX) || defined(OS_WIN) ++#if defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD) +   // Update font settings. +   static const base::NoDestructor<gfx::FontRenderParams> params( +       gfx::GetFontRenderParams(gfx::FontRenderParamsQuery(), nullptr)); +@@ -438,7 +438,7 @@ void WebContents::InitWithSessionAndOptions( +   base::TimeDelta interval; +   if (ui::TextInsertionCaretBlinkPeriod(&interval)) +     prefs->caret_blink_interval = interval; +-#elif defined(OS_LINUX) ++#elif defined(OS_LINUX) || defined(OS_BSD) +   views::LinuxUI* linux_ui = views::LinuxUI::instance(); +   if (linux_ui) +     prefs->caret_blink_interval = linux_ui->GetCursorBlinkInterval(); diff --git a/devel/electron6/files/patch-electron_atom_browser_atom__browser__main__parts.cc b/devel/electron6/files/patch-electron_atom_browser_atom__browser__main__parts.cc new file mode 100644 index 000000000000..e1e251c38488 --- /dev/null +++ b/devel/electron6/files/patch-electron_atom_browser_atom__browser__main__parts.cc @@ -0,0 +1,11 @@ +--- electron/atom/browser/atom_browser_main_parts.cc.orig	2019-12-20 06:04:31 UTC ++++ electron/atom/browser/atom_browser_main_parts.cc +@@ -6,7 +6,7 @@ +  + #include <utility> +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + #include <glib.h>  // for g_setenv() + #endif +  diff --git a/devel/electron6/files/patch-electron_atom_browser_atom__browser__main__parts__posix.cc b/devel/electron6/files/patch-electron_atom_browser_atom__browser__main__parts__posix.cc new file mode 100644 index 000000000000..c9129161ffa1 --- /dev/null +++ b/devel/electron6/files/patch-electron_atom_browser_atom__browser__main__parts__posix.cc @@ -0,0 +1,20 @@ +--- electron/atom/browser/atom_browser_main_parts_posix.cc.orig	2019-09-11 17:30:11 UTC ++++ electron/atom/browser/atom_browser_main_parts_posix.cc +@@ -182,6 +182,9 @@ void AtomBrowserMainParts::HandleShutdownSignals() { +     g_pipe_pid = getpid(); +     g_shutdown_pipe_read_fd = pipefd[0]; +     g_shutdown_pipe_write_fd = pipefd[1]; ++#if defined(OS_BSD) ++    const size_t kShutdownDetectorThreadStackSize = 0; ++#else + #if !defined(ADDRESS_SANITIZER) && !defined(KEEP_SHADOW_STACKS) +     const size_t kShutdownDetectorThreadStackSize = PTHREAD_STACK_MIN * 2; + #else +@@ -189,6 +192,7 @@ void AtomBrowserMainParts::HandleShutdownSignals() { +     // shadow stacks) bloat the stack frames, so we need to increase the stack +     // size to avoid hitting the guard page. +     const size_t kShutdownDetectorThreadStackSize = PTHREAD_STACK_MIN * 4; ++#endif + #endif +     // TODO(viettrungluu,willchan): crbug.com/29675 - This currently leaks, so +     // if you change this, you'll probably need to change the suppression. diff --git a/devel/electron6/files/patch-electron_atom_browser_atom__paths.h b/devel/electron6/files/patch-electron_atom_browser_atom__paths.h new file mode 100644 index 000000000000..33d2b2bd68ef --- /dev/null +++ b/devel/electron6/files/patch-electron_atom_browser_atom__paths.h @@ -0,0 +1,11 @@ +--- electron/atom/browser/atom_paths.h.orig	2019-09-11 17:30:11 UTC ++++ electron/atom/browser/atom_paths.h +@@ -26,7 +26,7 @@ enum { +   DIR_USER_CACHE,              // Directory where user cache can be written. +   DIR_APP_LOGS,                // Directory where app logs live +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   DIR_APP_DATA,  // Application Data directory under the user profile. + #else +   DIR_APP_DATA = base::DIR_APP_DATA, diff --git a/devel/electron6/files/patch-electron_atom_browser_browser.h b/devel/electron6/files/patch-electron_atom_browser_browser.h new file mode 100644 index 000000000000..9ac8e78ded88 --- /dev/null +++ b/devel/electron6/files/patch-electron_atom_browser_browser.h @@ -0,0 +1,33 @@ +--- electron/atom/browser/browser.h.orig	2019-09-11 17:30:11 UTC ++++ electron/atom/browser/browser.h +@@ -182,7 +182,7 @@ class Browser : public WindowListObserver { +  + #endif  // defined(OS_MACOSX) +  +-#if defined(OS_MACOSX) || defined(OS_LINUX) ++#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) +   void ShowAboutPanel(); +   void SetAboutPanelOptions(const base::DictionaryValue& options); + #endif +@@ -215,10 +215,10 @@ class Browser : public WindowListObserver { +   PCWSTR GetAppUserModelID(); + #endif  // defined(OS_WIN) +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   // Whether Unity launcher is running. +   bool IsUnityRunning(); +-#endif  // defined(OS_LINUX) ++#endif  // defined(OS_LINUX) || defined(OS_BSD) +  +   // Tell the application to open a file. +   bool OpenFile(const std::string& file_path); +@@ -301,7 +301,7 @@ class Browser : public WindowListObserver { +  +   std::unique_ptr<util::Promise> ready_promise_; +  +-#if defined(OS_LINUX) || defined(OS_MACOSX) ++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) +   base::DictionaryValue about_panel_options_; + #endif +  diff --git a/devel/electron6/files/patch-electron_atom_browser_native__window__views.cc b/devel/electron6/files/patch-electron_atom_browser_native__window__views.cc new file mode 100644 index 000000000000..e705447b18d6 --- /dev/null +++ b/devel/electron6/files/patch-electron_atom_browser_native__window__views.cc @@ -0,0 +1,47 @@ +--- electron/atom/browser/native_window_views.cc.orig	2020-02-21 13:27:02 UTC ++++ electron/atom/browser/native_window_views.cc +@@ -304,7 +304,7 @@ NativeWindowViews::NativeWindowViews(const mate::Dicti +     last_window_state_ = ui::SHOW_STATE_NORMAL; + #endif +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   // Listen to move events. +   aura::Window* window = GetNativeWindow(); +   if (window) +@@ -320,7 +320,7 @@ NativeWindowViews::~NativeWindowViews() { +   SetForwardMouseMessages(false); + #endif +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   aura::Window* window = GetNativeWindow(); +   if (window) +     window->RemovePreTargetHandler(this); +@@ -1229,7 +1229,7 @@ void NativeWindowViews::OnWidgetBoundsChanged(views::W + } +  + void NativeWindowViews::OnWidgetDestroying(views::Widget* widget) { +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   aura::Window* window = GetNativeWindow(); +   if (window) +     window->RemovePreTargetHandler(this); +@@ -1322,7 +1322,7 @@ void NativeWindowViews::OnWidgetMove() { + void NativeWindowViews::HandleKeyboardEvent( +     content::WebContents*, +     const content::NativeWebKeyboardEvent& event) { +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   if (event.windows_key_code == ui::VKEY_BROWSER_BACK) +     NotifyWindowExecuteAppCommand(kBrowserBackward); +   else if (event.windows_key_code == ui::VKEY_BROWSER_FORWARD) +@@ -1334,7 +1334,7 @@ void NativeWindowViews::HandleKeyboardEvent( +   root_view_->HandleKeyEvent(event); + } +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + void NativeWindowViews::OnMouseEvent(ui::MouseEvent* event) { +   if (event->type() != ui::ET_MOUSE_PRESSED) +     return; diff --git a/devel/electron6/files/patch-electron_atom_browser_native__window__views.h b/devel/electron6/files/patch-electron_atom_browser_native__window__views.h new file mode 100644 index 000000000000..c9ca3e4f597b --- /dev/null +++ b/devel/electron6/files/patch-electron_atom_browser_native__window__views.h @@ -0,0 +1,11 @@ +--- electron/atom/browser/native_window_views.h.orig	2019-09-11 17:30:11 UTC ++++ electron/atom/browser/native_window_views.h +@@ -206,7 +206,7 @@ class NativeWindowViews : public NativeWindow, +       content::WebContents*, +       const content::NativeWebKeyboardEvent& event) override; +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   // ui::EventHandler: +   void OnMouseEvent(ui::MouseEvent* event) override; + #endif diff --git a/devel/electron6/files/patch-electron_atom_browser_relauncher__linux.cc b/devel/electron6/files/patch-electron_atom_browser_relauncher__linux.cc new file mode 100644 index 000000000000..6827f38083dd --- /dev/null +++ b/devel/electron6/files/patch-electron_atom_browser_relauncher__linux.cc @@ -0,0 +1,32 @@ +--- electron/atom/browser/relauncher_linux.cc.orig	2019-09-11 17:30:11 UTC ++++ electron/atom/browser/relauncher_linux.cc +@@ -6,8 +6,10 @@ +  + #include <fcntl.h> + #include <signal.h> ++#if !defined(__FreeBSD__) + #include <sys/prctl.h> + #include <sys/signalfd.h> ++#endif +  + #include "base/files/file_util.h" + #include "base/files/scoped_file.h" +@@ -26,6 +28,10 @@ void RelauncherSynchronizeWithParent() { +   base::ScopedFD relauncher_sync_fd(kRelauncherSyncFD); +   static const auto signum = SIGUSR2; +  ++#if defined(__FreeBSD__) ++  PLOG(ERROR) << "signalfd & prctl"; ++  fprintf(stderr, "Not Implemented signalfd & prctl in atom/browser/relauncher_linux.cc"); ++#else +   // send signum to current process when parent process ends. +   if (HANDLE_EINTR(prctl(PR_SET_PDEATHSIG, signum)) != 0) { +     PLOG(ERROR) << "prctl"; +@@ -50,6 +56,7 @@ void RelauncherSynchronizeWithParent() { +  +   // Wait for the parent to exit +   parentWaiter.Wait(); ++#endif + } +  + int LaunchProgram(const StringVector& relauncher_args, diff --git a/devel/electron6/files/patch-electron_atom_browser_ui_views_atom__views__delegate.cc b/devel/electron6/files/patch-electron_atom_browser_ui_views_atom__views__delegate.cc new file mode 100644 index 000000000000..c8d29a85b3cc --- /dev/null +++ b/devel/electron6/files/patch-electron_atom_browser_ui_views_atom__views__delegate.cc @@ -0,0 +1,38 @@ +--- electron/atom/browser/ui/views/atom_views_delegate.cc.orig	2019-11-20 23:42:47 UTC ++++ electron/atom/browser/ui/views/atom_views_delegate.cc +@@ -9,7 +9,7 @@ + #include "ui/views/widget/desktop_aura/desktop_native_widget_aura.h" + #include "ui/views/widget/native_widget_aura.h" +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + #include "base/environment.h" + #include "base/nix/xdg_util.h" + #include "ui/views/linux_ui/linux_ui.h" +@@ -17,7 +17,7 @@ +  + namespace { +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + bool IsDesktopEnvironmentUnity() { +   std::unique_ptr<base::Environment> env(base::Environment::Create()); +   base::nix::DesktopEnvironment desktop_env = +@@ -53,7 +53,7 @@ void ViewsDelegate::NotifyMenuItemFocused(const base:: +                                           int item_count, +                                           bool has_submenu) {} +  +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) + gfx::ImageSkia* ViewsDelegate::GetDefaultWindowIcon() const { +   return NULL; + } +@@ -85,7 +85,7 @@ void ViewsDelegate::OnBeforeWidgetInit( + } +  + bool ViewsDelegate::WindowManagerProvidesTitleBar(bool maximized) { +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   // On Ubuntu Unity, the system always provides a title bar for maximized +   // windows. +   if (!maximized) diff --git a/devel/electron6/files/patch-electron_atom_browser_ui_views_atom__views__delegate.h b/devel/electron6/files/patch-electron_atom_browser_ui_views_atom__views__delegate.h new file mode 100644 index 000000000000..b5015d12de1e --- /dev/null +++ b/devel/electron6/files/patch-electron_atom_browser_ui_views_atom__views__delegate.h @@ -0,0 +1,11 @@ +--- electron/atom/browser/ui/views/atom_views_delegate.h.orig	2019-11-20 23:42:47 UTC ++++ electron/atom/browser/ui/views/atom_views_delegate.h +@@ -40,7 +40,7 @@ class ViewsDelegate : public views::ViewsDelegate { +   bool IsWindowInMetro(gfx::NativeWindow window) const override; +   int GetAppbarAutohideEdges(HMONITOR monitor, +                              base::OnceClosure callback) override; +-#elif defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#elif (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) +   gfx::ImageSkia* GetDefaultWindowIcon() const override; + #endif +   views::NonClientFrameView* CreateDefaultNonClientFrameView( diff --git a/devel/electron6/files/patch-electron_atom_browser_ui_views_submenu__button.cc b/devel/electron6/files/patch-electron_atom_browser_ui_views_submenu__button.cc new file mode 100644 index 000000000000..47a74cfd3b84 --- /dev/null +++ b/devel/electron6/files/patch-electron_atom_browser_ui_views_submenu__button.cc @@ -0,0 +1,11 @@ +--- electron/atom/browser/ui/views/submenu_button.cc.orig	2019-09-11 17:30:11 UTC ++++ electron/atom/browser/ui/views/submenu_button.cc +@@ -25,7 +25,7 @@ SubmenuButton::SubmenuButton(const base::string16& tit +     : views::MenuButton(gfx::RemoveAcceleratorChar(title, '&', NULL, NULL), +                         menu_button_listener), +       background_color_(background_color) { +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   // Dont' use native style border. +   SetBorder(CreateDefaultBorder()); + #endif diff --git a/devel/electron6/files/patch-electron_atom_common_api_atom__api__crash__reporter.cc b/devel/electron6/files/patch-electron_atom_common_api_atom__api__crash__reporter.cc new file mode 100644 index 000000000000..a91984f2570a --- /dev/null +++ b/devel/electron6/files/patch-electron_atom_common_api_atom__api__crash__reporter.cc @@ -0,0 +1,42 @@ +--- electron/atom/common/api/atom_api_crash_reporter.cc.orig	2019-09-11 17:30:11 UTC ++++ electron/atom/common/api/atom_api_crash_reporter.cc +@@ -35,15 +35,23 @@ struct Converter<CrashReporter::UploadReportResult> { + namespace { +  + void AddExtraParameter(const std::string& key, const std::string& value) { ++#if !defined(OS_BSD) +   CrashReporter::GetInstance()->AddExtraParameter(key, value); ++#endif + } +  + void RemoveExtraParameter(const std::string& key) { ++#if !defined(OS_BSD) +   CrashReporter::GetInstance()->RemoveExtraParameter(key); ++#endif + } +  + std::map<std::string, std::string> GetParameters() { ++#if !defined(OS_BSD) +   return CrashReporter::GetInstance()->GetParameters(); ++#else ++  return std::map<std::string, std::string>(); ++#endif + } +  + void Initialize(v8::Local<v8::Object> exports, +@@ -51,6 +59,7 @@ void Initialize(v8::Local<v8::Object> exports, +                 v8::Local<v8::Context> context, +                 void* priv) { +   mate::Dictionary dict(context->GetIsolate(), exports); ++#if !defined(OS_BSD) +   auto reporter = base::Unretained(CrashReporter::GetInstance()); +   dict.SetMethod("start", base::Bind(&CrashReporter::Start, reporter)); +   dict.SetMethod("addExtraParameter", &AddExtraParameter); +@@ -62,6 +71,7 @@ void Initialize(v8::Local<v8::Object> exports, +                  base::Bind(&CrashReporter::SetUploadToServer, reporter)); +   dict.SetMethod("getUploadToServer", +                  base::Bind(&CrashReporter::GetUploadToServer, reporter)); ++#endif + } +  + }  // namespace diff --git a/devel/electron6/files/patch-electron_atom_common_api_electron__bindings.cc b/devel/electron6/files/patch-electron_atom_common_api_electron__bindings.cc new file mode 100644 index 000000000000..aa63e211d446 --- /dev/null +++ b/devel/electron6/files/patch-electron_atom_common_api_electron__bindings.cc @@ -0,0 +1,11 @@ +--- electron/atom/common/api/electron_bindings.cc.orig	2019-09-11 17:30:11 UTC ++++ electron/atom/common/api/electron_bindings.cc +@@ -275,7 +275,7 @@ void ElectronBindings::DidReceiveMemoryDump( +     if (base::GetCurrentProcId() == dump.pid()) { +       mate::Dictionary dict = mate::Dictionary::CreateEmpty(isolate); +       const auto& osdump = dump.os_dump(); +-#if defined(OS_LINUX) || defined(OS_WIN) ++#if defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD) +       dict.Set("residentSet", osdump.resident_set_kb); + #endif +       dict.Set("private", osdump.private_footprint_kb); diff --git a/devel/electron6/files/patch-electron_atom_common_atom__command__line.cc b/devel/electron6/files/patch-electron_atom_common_atom__command__line.cc new file mode 100644 index 000000000000..0c8f5e2b86d3 --- /dev/null +++ b/devel/electron6/files/patch-electron_atom_common_atom__command__line.cc @@ -0,0 +1,11 @@ +--- electron/atom/common/atom_command_line.cc.orig	2019-09-11 17:30:11 UTC ++++ electron/atom/common/atom_command_line.cc +@@ -26,7 +26,7 @@ void AtomCommandLine::Init(int argc, base::CommandLine +   argv_.assign(argv, argv + argc); + } +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + // static + void AtomCommandLine::InitializeFromCommandLine() { +   argv_ = base::CommandLine::ForCurrentProcess()->argv(); diff --git a/devel/electron6/files/patch-electron_atom_common_atom__command__line.h b/devel/electron6/files/patch-electron_atom_common_atom__command__line.h new file mode 100644 index 000000000000..94cd2e45806f --- /dev/null +++ b/devel/electron6/files/patch-electron_atom_common_atom__command__line.h @@ -0,0 +1,11 @@ +--- electron/atom/common/atom_command_line.h.orig	2019-09-11 17:30:11 UTC ++++ electron/atom/common/atom_command_line.h +@@ -21,7 +21,7 @@ class AtomCommandLine { +  +   static void Init(int argc, base::CommandLine::CharType** argv); +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   // On Linux the command line has to be read from base::CommandLine since +   // it is using zygote. +   static void InitializeFromCommandLine(); diff --git a/devel/electron6/files/patch-electron_atom_common_crash__reporter_crash__reporter.cc b/devel/electron6/files/patch-electron_atom_common_crash__reporter_crash__reporter.cc new file mode 100644 index 000000000000..1978ae3dd69c --- /dev/null +++ b/devel/electron6/files/patch-electron_atom_common_crash__reporter_crash__reporter.cc @@ -0,0 +1,14 @@ +--- electron/atom/common/crash_reporter/crash_reporter.cc.orig	2019-09-11 17:30:11 UTC ++++ electron/atom/common/crash_reporter/crash_reporter.cc +@@ -127,7 +127,11 @@ CrashReporter* CrashReporter::GetInstance() { + #endif +  + void CrashReporter::StartInstance(const mate::Dictionary& options) { ++#if !defined(OS_BSD) +   auto* reporter = GetInstance(); ++#else ++  CrashReporter *reporter = NULL; ++#endif +   if (!reporter) +     return; +  diff --git a/devel/electron6/files/patch-electron_atom_common_node__bindings.cc b/devel/electron6/files/patch-electron_atom_common_node__bindings.cc new file mode 100644 index 000000000000..295b1acd6404 --- /dev/null +++ b/devel/electron6/files/patch-electron_atom_common_node__bindings.cc @@ -0,0 +1,11 @@ +--- electron/atom/common/node_bindings.cc.orig	2019-11-05 00:13:02 UTC ++++ electron/atom/common/node_bindings.cc +@@ -210,7 +210,7 @@ void NodeBindings::Initialize() { +   node::g_standalone_mode = browser_env_ == BROWSER; +   node::g_upstream_node_mode = false; +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   // Get real command line in renderer process forked by zygote. +   if (browser_env_ != BROWSER) +     AtomCommandLine::InitializeFromCommandLine(); diff --git a/devel/electron6/files/patch-electron_atom_common_node__bindings__linux.cc b/devel/electron6/files/patch-electron_atom_common_node__bindings__linux.cc new file mode 100644 index 000000000000..79e342e4521d --- /dev/null +++ b/devel/electron6/files/patch-electron_atom_common_node__bindings__linux.cc @@ -0,0 +1,69 @@ +--- electron/atom/common/node_bindings_linux.cc.orig	2019-09-11 17:30:11 UTC ++++ electron/atom/common/node_bindings_linux.cc +@@ -4,17 +4,31 @@ +  + #include "atom/common/node_bindings_linux.h" +  ++#if !defined(OS_BSD) + #include <sys/epoll.h> ++#else ++#include <errno.h> ++#include <sys/select.h> ++#include <sys/sysctl.h> ++#include <sys/time.h> ++#include <sys/types.h> ++#endif +  + namespace atom { +  + NodeBindingsLinux::NodeBindingsLinux(BrowserEnvironment browser_env) ++#if !defined(OS_BSD) +     : NodeBindings(browser_env), epoll_(epoll_create(1)) { ++#else ++    : NodeBindings(browser_env) { ++#endif ++#if !defined(OS_BSD) +   int backend_fd = uv_backend_fd(uv_loop_); +   struct epoll_event ev = {0}; +   ev.events = EPOLLIN; +   ev.data.fd = backend_fd; +   epoll_ctl(epoll_, EPOLL_CTL_ADD, backend_fd, &ev); ++#endif + } +  + NodeBindingsLinux::~NodeBindingsLinux() {} +@@ -37,6 +51,7 @@ void NodeBindingsLinux::OnWatcherQueueChanged(uv_loop_ + } +  + void NodeBindingsLinux::PollEvents() { ++#if !defined(OS_BSD) +   int timeout = uv_backend_timeout(uv_loop_); +  +   // Wait for new libuv events. +@@ -45,6 +60,26 @@ void NodeBindingsLinux::PollEvents() { +     struct epoll_event ev; +     r = epoll_wait(epoll_, &ev, 1, timeout); +   } while (r == -1 && errno == EINTR); ++#else ++  struct timeval tv; ++  int timeout = uv_backend_timeout(uv_loop_); ++  if (timeout != -1) { ++    tv.tv_sec = timeout / 1000; ++    tv.tv_usec = (timeout % 1000) * 1000; ++  } ++ ++  fd_set readset; ++  int fd = uv_backend_fd(uv_loop_); ++  FD_ZERO(&readset); ++  FD_SET(fd, &readset); ++ ++  // Wait for new libuv events. ++  int r; ++  do { ++    r = select(fd + 1, &readset, nullptr, nullptr, ++               timeout == -1 ? nullptr : &tv); ++   } while (r == -1 && errno == EINTR); ++#endif + } +  + // static diff --git a/devel/electron6/files/patch-electron_atom_common_platform__util.h b/devel/electron6/files/patch-electron_atom_common_platform__util.h new file mode 100644 index 000000000000..392d2155258c --- /dev/null +++ b/devel/electron6/files/patch-electron_atom_common_platform__util.h @@ -0,0 +1,11 @@ +--- electron/atom/common/platform_util.h.orig	2019-09-11 17:30:11 UTC ++++ electron/atom/common/platform_util.h +@@ -64,7 +64,7 @@ bool GetLoginItemEnabled(); + bool SetLoginItemEnabled(bool enabled); + #endif +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + // Returns a success flag. + // Unlike libgtkui, does *not* use "chromium-browser.desktop" as a fallback. + bool GetDesktopName(std::string* setme); diff --git a/devel/electron6/files/patch-electron_chromium__src_chrome_browser_process__singleton__posix.cc b/devel/electron6/files/patch-electron_chromium__src_chrome_browser_process__singleton__posix.cc new file mode 100644 index 000000000000..47eb447edf27 --- /dev/null +++ b/devel/electron6/files/patch-electron_chromium__src_chrome_browser_process__singleton__posix.cc @@ -0,0 +1,20 @@ +--- electron/chromium_src/chrome/browser/process_singleton_posix.cc.orig	2019-12-17 00:40:10 UTC ++++ electron/chromium_src/chrome/browser/process_singleton_posix.cc +@@ -95,7 +95,7 @@ + #include "net/base/network_interfaces.h" + #include "ui/base/l10n/l10n_util.h" +  +-#if defined(TOOLKIT_VIEWS) && defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if defined(TOOLKIT_VIEWS) && ((defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)) + #include "ui/views/linux_ui/linux_ui.h" + #endif +  +@@ -862,7 +862,7 @@ ProcessSingleton::NotifyResult ProcessSingleton::Notif +     // The other process is shutting down, it's safe to start a new process. +     return PROCESS_NONE; +   } else if (strncmp(buf, kACKToken, base::size(kACKToken) - 1) == 0) { +-#if defined(TOOLKIT_VIEWS) && defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if defined(TOOLKIT_VIEWS) && ((defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD)) +     // Likely NULL in unit tests. +     views::LinuxUI* linux_ui = views::LinuxUI::instance(); +     if (linux_ui) diff --git a/devel/electron6/files/patch-electron_default__app_default__app.ts b/devel/electron6/files/patch-electron_default__app_default__app.ts new file mode 100644 index 000000000000..60fd3019ab7e --- /dev/null +++ b/devel/electron6/files/patch-electron_default__app_default__app.ts @@ -0,0 +1,11 @@ +--- electron/default_app/default_app.ts.orig	2019-09-11 17:30:11 UTC ++++ electron/default_app/default_app.ts +@@ -63,7 +63,7 @@ async function createWindow () { +     show: false +   } +  +-  if (process.platform === 'linux') { ++  if (process.platform === 'linux' || process.platform === 'freebsd') { +     options.icon = path.join(__dirname, 'icon.png') +   } +  diff --git a/devel/electron6/files/patch-electron_lib_browser_api_dialog.js b/devel/electron6/files/patch-electron_lib_browser_api_dialog.js new file mode 100644 index 000000000000..c81502f3649e --- /dev/null +++ b/devel/electron6/files/patch-electron_lib_browser_api_dialog.js @@ -0,0 +1,11 @@ +--- electron/lib/browser/api/dialog.js.orig	2019-09-11 17:30:11 UTC ++++ electron/lib/browser/api/dialog.js +@@ -28,7 +28,7 @@ const normalizeAccessKey = (text) => { +   // existing single underscores with a second underscore, replace double +   // ampersands with a single ampersand, and replace a single ampersand with +   // a single underscore +-  if (process.platform === 'linux') { ++  if (process.platform === 'linux' || process.platform === 'freebsd') { +     return text.replace(/_/g, '__').replace(/&(.?)/g, (match, after) => { +       if (after === '&') return after +       return `_${after}` diff --git a/devel/electron6/files/patch-electron_lib_browser_api_menu-item-roles.js b/devel/electron6/files/patch-electron_lib_browser_api_menu-item-roles.js new file mode 100644 index 000000000000..d35ba80b5fc2 --- /dev/null +++ b/devel/electron6/files/patch-electron_lib_browser_api_menu-item-roles.js @@ -0,0 +1,11 @@ +--- electron/lib/browser/api/menu-item-roles.js.orig	2019-09-11 17:30:11 UTC ++++ electron/lib/browser/api/menu-item-roles.js +@@ -4,7 +4,7 @@ const { app } = require('electron') +  + const isMac = process.platform === 'darwin' + const isWindows = process.platform === 'win32' +-const isLinux = process.platform === 'linux' ++const isLinux = (process.platform === 'linux' || process.platform === 'freebsd') +  + const roles = { +   about: { diff --git a/devel/electron6/files/patch-electron_lib_browser_api_power-monitor.js b/devel/electron6/files/patch-electron_lib_browser_api_power-monitor.js new file mode 100644 index 000000000000..abb42a25d426 --- /dev/null +++ b/devel/electron6/files/patch-electron_lib_browser_api_power-monitor.js @@ -0,0 +1,11 @@ +--- electron/lib/browser/api/power-monitor.js.orig	2019-09-11 17:30:11 UTC ++++ electron/lib/browser/api/power-monitor.js +@@ -9,7 +9,7 @@ Object.setPrototypeOf(PowerMonitor.prototype, EventEmi + EventEmitter.call(powerMonitor) +  + // On Linux we need to call blockShutdown() to subscribe to shutdown event. +-if (process.platform === 'linux') { ++if (process.platform === 'linux' || process.platform === 'freebsd') { +   powerMonitor.on('newListener', (event) => { +     if (event === 'shutdown' && powerMonitor.listenerCount('shutdown') === 0) { +       powerMonitor.blockShutdown() diff --git a/devel/electron6/files/patch-electron_lib_browser_init.ts b/devel/electron6/files/patch-electron_lib_browser_init.ts new file mode 100644 index 000000000000..df480c5941f0 --- /dev/null +++ b/devel/electron6/files/patch-electron_lib_browser_init.ts @@ -0,0 +1,11 @@ +--- electron/lib/browser/init.ts.orig	2019-09-11 17:30:11 UTC ++++ electron/lib/browser/init.ts +@@ -174,7 +174,7 @@ const mainStartupScript = packageJson.main || 'index.j + const KNOWN_XDG_DESKTOP_VALUES = ['Pantheon', 'Unity:Unity7', 'pop:GNOME'] +  + function currentPlatformSupportsAppIndicator () { +-  if (process.platform !== 'linux') return false ++  if (process.platform !== 'linux' && process.platform !== 'freebsd') return false +   const currentDesktop = process.env.XDG_CURRENT_DESKTOP +  +   if (!currentDesktop) return false diff --git a/devel/electron6/files/patch-electron_lib_browser_rpc-server.js b/devel/electron6/files/patch-electron_lib_browser_rpc-server.js new file mode 100644 index 000000000000..9156a71c1539 --- /dev/null +++ b/devel/electron6/files/patch-electron_lib_browser_rpc-server.js @@ -0,0 +1,11 @@ +--- electron/lib/browser/rpc-server.js.orig	2019-12-17 00:40:10 UTC ++++ electron/lib/browser/rpc-server.js +@@ -481,7 +481,7 @@ const allowedClipboardMethods = (() => { +   switch (process.platform) { +     case 'darwin': +       return new Set(['readFindText', 'writeFindText']) +-    case 'linux': ++    case 'linux': case 'freebsd': +       return new Set(Object.keys(clipboard)) +     default: +       return new Set() diff --git a/devel/electron6/files/patch-electron_lib_common_api_clipboard.js b/devel/electron6/files/patch-electron_lib_common_api_clipboard.js new file mode 100644 index 000000000000..6cb8dda7ee40 --- /dev/null +++ b/devel/electron6/files/patch-electron_lib_common_api_clipboard.js @@ -0,0 +1,11 @@ +--- electron/lib/common/api/clipboard.js.orig	2019-09-11 17:30:11 UTC ++++ electron/lib/common/api/clipboard.js +@@ -14,7 +14,7 @@ if (process.type === 'renderer') { +     } +   } +  +-  if (process.platform === 'linux') { ++  if (process.platform === 'linux' || process.platform === 'freebsd') { +     // On Linux we could not access clipboard in renderer process. +     for (const method of Object.keys(clipboard)) { +       clipboard[method] = makeRemoteMethod(method) diff --git a/devel/electron6/files/patch-electron_script_lib_config.py b/devel/electron6/files/patch-electron_script_lib_config.py new file mode 100644 index 000000000000..09e1291e98a2 --- /dev/null +++ b/devel/electron6/files/patch-electron_script_lib_config.py @@ -0,0 +1,12 @@ +--- electron/script/lib/config.py.orig	2019-12-20 06:16:27 UTC ++++ electron/script/lib/config.py +@@ -21,6 +21,9 @@ PLATFORM = { +   'cygwin': 'win32', +   'darwin': 'darwin', +   'linux2': 'linux', ++  'freebsd11': 'freebsd', ++  'freebsd12': 'freebsd', ++  'freebsd13': 'freebsd', +   'win32': 'win32', + }[sys.platform] +  diff --git a/devel/electron6/files/patch-electron_script_lib_utils.js b/devel/electron6/files/patch-electron_script_lib_utils.js new file mode 100644 index 000000000000..ac35e2230d58 --- /dev/null +++ b/devel/electron6/files/patch-electron_script_lib_utils.js @@ -0,0 +1,11 @@ +--- electron/script/lib/utils.js.orig	2019-12-17 00:40:10 UTC ++++ electron/script/lib/utils.js +@@ -14,7 +14,7 @@ function getElectronExec () { +       return `out/${OUT_DIR}/Electron.app/Contents/MacOS/Electron` +     case 'win32': +       return `out/${OUT_DIR}/electron.exe` +-    case 'linux': ++    case 'linux': case 'freebsd': +       return `out/${OUT_DIR}/electron` +     default: +       throw new Error('Unknown platform') diff --git a/devel/electron6/files/patch-electron_script_spec-runner.js b/devel/electron6/files/patch-electron_script_spec-runner.js new file mode 100644 index 000000000000..56662219674a --- /dev/null +++ b/devel/electron6/files/patch-electron_script_spec-runner.js @@ -0,0 +1,11 @@ +--- electron/script/spec-runner.js.orig	2019-12-20 06:08:27 UTC ++++ electron/script/spec-runner.js +@@ -114,7 +114,7 @@ async function runElectronTests () { + async function runRemoteBasedElectronTests () { +   let exe = path.resolve(BASE, utils.getElectronExec()) +   const runnerArgs = ['electron/spec', ...unknownArgs.slice(2)] +-  if (process.platform === 'linux') { ++  if (process.platform === 'linux' || process.platform === 'freebsd') { +     runnerArgs.unshift(path.resolve(__dirname, 'dbus_mock.py'), exe) +     exe = 'python' +   } diff --git a/devel/electron6/files/patch-electron_spec-main_api-app-spec.ts b/devel/electron6/files/patch-electron_spec-main_api-app-spec.ts new file mode 100644 index 000000000000..f2fe356b3ac3 --- /dev/null +++ b/devel/electron6/files/patch-electron_spec-main_api-app-spec.ts @@ -0,0 +1,83 @@ +--- electron/spec-main/api-app-spec.ts.orig	2019-12-17 00:40:10 UTC ++++ electron/spec-main/api-app-spec.ts +@@ -112,7 +112,7 @@ describe('app module', () => { +   describe('app.getLocaleCountryCode()', () => { +     it('should be empty or have length of two', () => { +       let expectedLength = 2 +-      if (isCI && process.platform === 'linux') { ++      if (isCI && (process.platform === 'linux' || process.platform === 'freebsd')) { +         // Linux CI machines have no locale. +         expectedLength = 0 +       } +@@ -172,7 +172,7 @@ describe('app module', () => { +     }) +  +     it('exits gracefully', async function () { +-      if (!['darwin', 'linux'].includes(process.platform)) { ++      if (!['darwin', 'linux', 'freebsd'].includes(process.platform)) { +         this.skip() +         return +       } +@@ -515,7 +515,7 @@ describe('app module', () => { +   describe('app.setBadgeCount', () => { +     const platformIsNotSupported = +         (process.platform === 'win32') || +-        (process.platform === 'linux' && !app.isUnityRunning()) ++        ((process.platform === 'linux' || process.platform === 'freebsd') && !app.isUnityRunning()) +     const platformIsSupported = !platformIsNotSupported +  +     const expectedBadgeCount = 42 +@@ -569,7 +569,7 @@ describe('app module', () => { +     ] +  +     before(function () { +-      if (process.platform === 'linux' || process.mas) this.skip() ++      if (process.platform === 'linux' || process.platform === 'freebsd' || process.mas) this.skip() +     }) +  +     beforeEach(() => { +@@ -645,7 +645,7 @@ describe('app module', () => { +   }) +  +   describe('accessibilitySupportEnabled property', () => { +-    if (process.platform === 'linux') return ++    if (process.platform === 'linux' || process.platform === 'freebsd') return +  +     it('returns whether the Chrome has accessibility APIs enabled', () => { +       expect(app.accessibilitySupportEnabled).to.be.a('boolean') +@@ -716,7 +716,7 @@ describe('app module', () => { +     let w: BrowserWindow +  +     before(function () { +-      if (process.platform === 'linux') { ++      if (process.platform === 'linux' || process.platform === 'freebsd') { +         this.skip() +       } +     }) +@@ -910,7 +910,7 @@ describe('app module', () => { +     // doesn't affect nested `describe`s. +     beforeEach(function () { +       // FIXME Get these specs running on Linux CI +-      if (process.platform === 'linux' && isCI) { ++      if ((process.platform === 'linux' || process.platform === 'freebsd') && isCI) { +         this.skip() +       } +     }) +@@ -1067,7 +1067,7 @@ describe('app module', () => { +  +     it('succeeds with complete GPUInfo', async () => { +       const completeInfo = await getGPUInfo('complete') +-      if (process.platform === 'linux') { ++      if (process.platform === 'linux' || process.platform === 'freebsd') { +         // For linux and macOS complete info is same as basic info +         await verifyBasicGPUInfo(completeInfo) +         const basicInfo = await getGPUInfo('basic') +@@ -1095,7 +1095,7 @@ describe('app module', () => { +     const socketPath = process.platform === 'win32' ? '\\\\.\\pipe\\electron-mixed-sandbox' : '/tmp/electron-mixed-sandbox' +  +     beforeEach(function (done) { +-      if (process.platform === 'linux' && (process.arch === 'arm64' || process.arch === 'arm')) { ++      if ((process.platform === 'linux' || process.platform === 'freebsd') && (process.arch === 'arm64' || process.arch === 'arm')) { +         // Our ARM tests are run on VSTS rather than CircleCI, and the Docker +         // setup on VSTS disallows syscalls that Chrome requires for setting up +         // sandboxing. diff --git a/devel/electron6/files/patch-electron_spec_api-auto-updater-spec.js b/devel/electron6/files/patch-electron_spec_api-auto-updater-spec.js new file mode 100644 index 000000000000..f6c3e595b65e --- /dev/null +++ b/devel/electron6/files/patch-electron_spec_api-auto-updater-spec.js @@ -0,0 +1,11 @@ +--- electron/spec/api-auto-updater-spec.js.orig	2019-09-11 17:30:11 UTC ++++ electron/spec/api-auto-updater-spec.js +@@ -140,7 +140,7 @@ describe('autoUpdater module', function () { +  +   describe('error event', () => { +     it('serializes correctly over the remote module', function (done) { +-      if (process.platform === 'linux') { ++      if (process.platform === 'linux' || process.platform === 'freebsd') { +         // FIXME(alexeykuzmin): Skip the test. +         // this.skip() +         return done() diff --git a/devel/electron6/files/patch-electron_spec_api-browser-window-spec.js b/devel/electron6/files/patch-electron_spec_api-browser-window-spec.js new file mode 100644 index 000000000000..8e9e369723e2 --- /dev/null +++ b/devel/electron6/files/patch-electron_spec_api-browser-window-spec.js @@ -0,0 +1,56 @@ +--- electron/spec/api-browser-window-spec.js.orig	2019-09-11 17:30:11 UTC ++++ electron/spec/api-browser-window-spec.js +@@ -1219,7 +1219,7 @@ describe('BrowserWindow module', () => { +   describe('BrowserWindow.setOpacity(opacity)', () => { +     describe('Windows and Mac', () => { +       before(function () { +-        if (process.platform === 'linux') { ++        if (process.platform === 'linux' || process.platform === 'freebsd') { +           this.skip() +         } +       }) +@@ -1251,7 +1251,7 @@ describe('BrowserWindow module', () => { +  +     describe('Linux', () => { +       before(function () { +-        if (process.platform !== 'linux') { ++        if (process.platform !== 'linux' && process.platform !== 'freebsd') { +           this.skip() +         } +       }) +@@ -1351,7 +1351,7 @@ describe('BrowserWindow module', () => { +  +   describe('enableLargerThanScreen" option', () => { +     before(function () { +-      if (process.platform === 'linux') { ++      if (process.platform === 'linux' || process.platform === 'freebsd') { +         this.skip() +       } +     }) +@@ -2028,7 +2028,7 @@ describe('BrowserWindow module', () => { +           expect(test.version).to.equal(remote.process.version) +           expect(test.versions).to.deep.equal(remote.process.versions) +  +-          if (process.platform === 'linux' && test.osSandbox) { ++          if ((process.platform === 'linux' || process.platform === 'freebsd') && test.osSandbox) { +             expect(test.creationTime).to.be.null() +             expect(test.systemMemoryInfo).to.be.null() +           } else { +@@ -2486,7 +2486,7 @@ describe('BrowserWindow module', () => { +       w.loadFile(path.join(fixtures, 'pages', 'visibilitychange.html')) +     }) +     it('visibilityState changes when window is minimized', function (done) { +-      if (isCI && process.platform === 'linux') { ++      if (isCI && (process.platform === 'linux' || process.platform === 'freebsd')) { +         // FIXME(alexeykuzmin): Skip the test instead of marking it as passed. +         // afterEach hook won't be run if a test is skipped dynamically. +         // If afterEach isn't run current window won't be destroyed +@@ -2915,7 +2915,7 @@ describe('BrowserWindow module', () => { +     // - `.skip()` called in the 'beforeEach' hook prevents 'afterEach' +     //     hook from being called. +     // Not implemented on Linux. +-    if (process.platform === 'linux') { ++    if (process.platform === 'linux' || process.platform === 'freebsd') { +       return +     } +  diff --git a/devel/electron6/files/patch-electron_spec_api-clipboard-spec.js b/devel/electron6/files/patch-electron_spec_api-clipboard-spec.js new file mode 100644 index 000000000000..f747b3d14c16 --- /dev/null +++ b/devel/electron6/files/patch-electron_spec_api-clipboard-spec.js @@ -0,0 +1,38 @@ +--- electron/spec/api-clipboard-spec.js.orig	2019-09-11 17:30:11 UTC ++++ electron/spec/api-clipboard-spec.js +@@ -27,7 +27,7 @@ describe('clipboard module', () => { +   describe('clipboard.readHTML()', () => { +     it('returns markup correctly', () => { +       const text = '<string>Hi</string>' +-      const markup = process.platform === 'darwin' ? "<meta charset='utf-8'><string>Hi</string>" : process.platform === 'linux' ? '<meta http-equiv="content-type" ' + 'content="text/html; charset=utf-8"><string>Hi</string>' : '<string>Hi</string>' ++      const markup = process.platform === 'darwin' ? "<meta charset='utf-8'><string>Hi</string>" : (process.platform === 'linux' || process.platform === 'freebsd') ? '<meta http-equiv="content-type" ' + 'content="text/html; charset=utf-8"><string>Hi</string>' : '<string>Hi</string>' +       clipboard.writeHTML(text) +       expect(clipboard.readHTML()).to.equal(markup) +     }) +@@ -43,7 +43,7 @@ describe('clipboard module', () => { +  +   describe('clipboard.readBookmark', () => { +     before(function () { +-      if (process.platform === 'linux') { ++      if (process.platform === 'linux' || process.platform === 'freebsd') { +         this.skip() +       } +     }) +@@ -69,7 +69,7 @@ describe('clipboard module', () => { +       const rtf = '{\\rtf1\\utf8 text}' +       const p = path.join(fixtures, 'assets', 'logo.png') +       const i = nativeImage.createFromPath(p) +-      const markup = process.platform === 'darwin' ? "<meta charset='utf-8'><b>Hi</b>" : process.platform === 'linux' ? '<meta http-equiv="content-type" ' + 'content="text/html; charset=utf-8"><b>Hi</b>' : '<b>Hi</b>' ++      const markup = process.platform === 'darwin' ? "<meta charset='utf-8'><b>Hi</b>" : (process.platform === 'linux' || process.platform === 'freebsd') ? '<meta http-equiv="content-type" ' + 'content="text/html; charset=utf-8"><b>Hi</b>' : '<b>Hi</b>' +       const bookmark = { title: 'a title', url: 'test' } +       clipboard.write({ +         text: 'test', +@@ -84,7 +84,7 @@ describe('clipboard module', () => { +       expect(clipboard.readRTF()).to.equal(rtf) +       expect(clipboard.readImage().toDataURL()).to.equal(i.toDataURL()) +  +-      if (process.platform !== 'linux') { ++      if (process.platform !== 'linux' && process.platform !== 'freebsd') { +         expect(clipboard.readBookmark()).to.deep.equal(bookmark) +       } +     }) diff --git a/devel/electron6/files/patch-electron_spec_api-content-tracing-spec.js b/devel/electron6/files/patch-electron_spec_api-content-tracing-spec.js new file mode 100644 index 000000000000..821628dbdd35 --- /dev/null +++ b/devel/electron6/files/patch-electron_spec_api-content-tracing-spec.js @@ -0,0 +1,11 @@ +--- electron/spec/api-content-tracing-spec.js.orig	2019-09-11 17:30:11 UTC ++++ electron/spec/api-content-tracing-spec.js +@@ -22,7 +22,7 @@ const getPathInATempFolder = (filename) => { + describe('contentTracing', () => { +   beforeEach(function () { +     // FIXME: The tests are skipped on arm/arm64. +-    if (process.platform === 'linux' && ++    if ((process.platform === 'linux' || process.platform === 'freebsd') && +         ['arm', 'arm64'].includes(process.arch)) { +       this.skip() +     } diff --git a/devel/electron6/files/patch-electron_spec_api-crash-reporter-spec.js b/devel/electron6/files/patch-electron_spec_api-crash-reporter-spec.js new file mode 100644 index 000000000000..869cbd03ed16 --- /dev/null +++ b/devel/electron6/files/patch-electron_spec_api-crash-reporter-spec.js @@ -0,0 +1,92 @@ +--- electron/spec/api-crash-reporter-spec.js.orig	2019-11-05 00:13:02 UTC ++++ electron/spec/api-crash-reporter-spec.js +@@ -16,7 +16,7 @@ describe('crashReporter module', () => { +   if (process.mas || process.env.DISABLE_CRASH_REPORTER_TESTS) return +  +   // TODO(alexeykuzmin): [Ch66] Fails. Fix it and enable back. +-  if (process.platform === 'linux') return ++  if (process.platform === 'linux' || process.platform === 'freebsd') return +  +   let originalTempDirectory = null +   let tempDirectory = null +@@ -86,7 +86,7 @@ describe('crashReporter module', () => { +         let dumpFile +         let crashesDir = crashReporter.getCrashesDirectory() +         const existingDumpFiles = new Set() +-        if (process.platform !== 'linux') { ++        if (process.platform !== 'linux' && process.platform !== 'freebsd') { +           // crashpad puts the dump files in the "completed" subdirectory +           if (process.platform === 'darwin') { +             crashesDir = path.join(crashesDir, 'completed') +@@ -97,7 +97,7 @@ describe('crashReporter module', () => { +         } +         const testDone = (uploaded) => { +           if (uploaded) return done(new Error('Uploaded crash report')) +-          if (process.platform !== 'linux') crashReporter.setUploadToServer(true) ++          if (process.platform !== 'linux' && process.platform !== 'freebsd') crashReporter.setUploadToServer(true) +           assert(fs.existsSync(dumpFile)) +           done() +         } +@@ -263,7 +263,7 @@ describe('crashReporter module', () => { +       assert.throws(() => require('electron').crashReporter.getUploadToServer()) +     }) +     it('returns true when uploadToServer is set to true', function () { +-      if (process.platform === 'linux') { ++      if (process.platform === 'linux' || process.platform === 'freebsd') { +         // FIXME(alexeykuzmin): Skip the test. +         // this.skip() +         return +@@ -277,7 +277,7 @@ describe('crashReporter module', () => { +       assert.strictEqual(crashReporter.getUploadToServer(), true) +     }) +     it('returns false when uploadToServer is set to false', function () { +-      if (process.platform === 'linux') { ++      if (process.platform === 'linux' || process.platform === 'freebsd') { +         // FIXME(alexeykuzmin): Skip the test. +         // this.skip() +         return +@@ -298,7 +298,7 @@ describe('crashReporter module', () => { +       assert.throws(() => require('electron').crashReporter.setUploadToServer('arg')) +     }) +     it('sets uploadToServer false when called with false', function () { +-      if (process.platform === 'linux') { ++      if (process.platform === 'linux' || process.platform === 'freebsd') { +         // FIXME(alexeykuzmin): Skip the test. +         // this.skip() +         return +@@ -313,7 +313,7 @@ describe('crashReporter module', () => { +       assert.strictEqual(crashReporter.getUploadToServer(), false) +     }) +     it('sets uploadToServer true when called with true', function () { +-      if (process.platform === 'linux') { ++      if (process.platform === 'linux' || process.platform === 'freebsd') { +         // FIXME(alexeykuzmin): Skip the test. +         // this.skip() +         return +@@ -340,7 +340,7 @@ describe('crashReporter module', () => { +       assert(typeof parameters === 'object') +     }) +     it('adds a parameter to current parameters', function () { +-      if (process.platform === 'linux') { ++      if (process.platform === 'linux' || process.platform === 'freebsd') { +         // FIXME(alexeykuzmin): Skip the test. +         // this.skip() +         return +@@ -355,7 +355,7 @@ describe('crashReporter module', () => { +       assert('hello' in crashReporter.getParameters()) +     }) +     it('removes a parameter from current parameters', function () { +-      if (process.platform === 'linux') { ++      if (process.platform === 'linux' || process.platform === 'freebsd') { +         // FIXME(alexeykuzmin): Skip the test. +         // this.skip() +         return +@@ -446,7 +446,7 @@ const startServer = ({ callback, processType, done })  +   server.listen(port, '127.0.0.1', () => { +     port = server.address().port +     remote.process.port = port +-    if (process.platform !== 'linux') { ++    if (process.platform !== 'linux' && process.platform !== 'freebsd') { +       crashReporter.start({ +         companyName: 'Umbrella Corporation', +         submitURL: 'http://127.0.0.1:' + port diff --git a/devel/electron6/files/patch-electron_spec_api-net-log-spec.js b/devel/electron6/files/patch-electron_spec_api-net-log-spec.js new file mode 100644 index 000000000000..ad2a9e69b88c --- /dev/null +++ b/devel/electron6/files/patch-electron_spec_api-net-log-spec.js @@ -0,0 +1,29 @@ +--- electron/spec/api-net-log-spec.js.orig	2019-09-11 17:30:11 UTC ++++ electron/spec/api-net-log-spec.js +@@ -127,7 +127,7 @@ describe('netLog module', () => { +   }) +  +   it('should begin and end logging automatically when --log-net-log is passed', done => { +-    if (isCI && process.platform === 'linux') { ++    if (isCI && (process.platform === 'linux' || process.platform === 'freebsd')) { +       done() +       return +     } +@@ -148,7 +148,7 @@ describe('netLog module', () => { +  +   // FIXME(deepak1556): Ch69 follow up. +   it('should begin and end logging automtically when --log-net-log is passed, and behave correctly when .startLogging() and .stopLogging() is called', done => { +-    if (isCI && process.platform === 'linux') { ++    if (isCI && (process.platform === 'linux' || process.platform === 'freebsd')) { +       done() +       return +     } +@@ -171,7 +171,7 @@ describe('netLog module', () => { +   }) +  +   it('should end logging automatically when only .startLogging() is called', done => { +-    if (isCI && process.platform === 'linux') { ++    if (isCI && (process.platform === 'linux' || process.platform === 'freebsd')) { +       done() +       return +     } diff --git a/devel/electron6/files/patch-electron_spec_api-notification-dbus-spec.js b/devel/electron6/files/patch-electron_spec_api-notification-dbus-spec.js new file mode 100644 index 000000000000..b0ad9c1fbb79 --- /dev/null +++ b/devel/electron6/files/patch-electron_spec_api-notification-dbus-spec.js @@ -0,0 +1,11 @@ +--- electron/spec/api-notification-dbus-spec.js.orig	2019-12-17 00:40:10 UTC ++++ electron/spec/api-notification-dbus-spec.js +@@ -13,7 +13,7 @@ const Promise = require('bluebird') + const { remote } = require('electron') + const { app } = remote +  +-const skip = process.platform !== 'linux' || ++const skip = process.platform !== 'linux' || process.platform !== 'freebsd' || +              process.arch === 'ia32' || +              process.arch.indexOf('arm') === 0 || +              !process.env.DBUS_SESSION_BUS_ADDRESS; diff --git a/devel/electron6/files/patch-electron_spec_api-power-monitor-spec.js b/devel/electron6/files/patch-electron_spec_api-power-monitor-spec.js new file mode 100644 index 000000000000..1a18a65aed3d --- /dev/null +++ b/devel/electron6/files/patch-electron_spec_api-power-monitor-spec.js @@ -0,0 +1,11 @@ +--- electron/spec/api-power-monitor-spec.js.orig	2019-09-11 17:30:11 UTC ++++ electron/spec/api-power-monitor-spec.js +@@ -14,7 +14,7 @@ const Promise = require('bluebird') + const { expect } = chai + chai.use(dirtyChai) +  +-const skip = process.platform !== 'linux' || !process.env.DBUS_SYSTEM_BUS_ADDRESS ++const skip = (process.platform !== 'linux' && process.platform !== 'freebsd') || !process.env.DBUS_SYSTEM_BUS_ADDRESS +  + describe('powerMonitor', () => { +   let logindMock, dbusMockPowerMonitor, getCalls, emitSignal, reset diff --git a/devel/electron6/files/patch-electron_spec_api-process-spec.js b/devel/electron6/files/patch-electron_spec_api-process-spec.js new file mode 100644 index 000000000000..79c6a2955e09 --- /dev/null +++ b/devel/electron6/files/patch-electron_spec_api-process-spec.js @@ -0,0 +1,11 @@ +--- electron/spec/api-process-spec.js.orig	2019-09-11 17:30:11 UTC ++++ electron/spec/api-process-spec.js +@@ -42,7 +42,7 @@ describe('process module', () => { +     it('resolves promise successfully with valid data', async () => { +       const memoryInfo = await process.getProcessMemoryInfo() +       expect(memoryInfo).to.be.an('object') +-      if (process.platform === 'linux' || process.platform === 'windows') { ++      if (process.platform === 'linux' || process.platform === 'freebsd' || process.platform === 'windows') { +         expect(memoryInfo.residentSet).to.be.a('number').greaterThan(0) +       } +       expect(memoryInfo.private).to.be.a('number').greaterThan(0) diff --git a/devel/electron6/files/patch-electron_spec_api-screen-spec.js b/devel/electron6/files/patch-electron_spec_api-screen-spec.js new file mode 100644 index 000000000000..6c4979cb0fec --- /dev/null +++ b/devel/electron6/files/patch-electron_spec_api-screen-spec.js @@ -0,0 +1,38 @@ +--- electron/spec/api-screen-spec.js.orig	2019-09-11 17:30:11 UTC ++++ electron/spec/api-screen-spec.js +@@ -17,7 +17,7 @@ describe('screen module', () => { +     }) +  +     it('has the correct non-object properties', function () { +-      if (process.platform === 'linux') this.skip() ++      if (process.platform === 'linux' || process.platform === 'freebsd') this.skip() +       const display = screen.getPrimaryDisplay() +  +       expect(display).to.have.a.property('scaleFactor').that.is.a('number') +@@ -33,7 +33,7 @@ describe('screen module', () => { +     }) +  +     it('has a size object property', function () { +-      if (process.platform === 'linux') this.skip() ++      if (process.platform === 'linux' || process.platform === 'freebsd') this.skip() +       const display = screen.getPrimaryDisplay() +  +       expect(display).to.have.a.property('size').that.is.an('object') +@@ -43,7 +43,7 @@ describe('screen module', () => { +     }) +  +     it('has a workAreaSize object property', function () { +-      if (process.platform === 'linux') this.skip() ++      if (process.platform === 'linux' || process.platform === 'freebsd') this.skip() +       const display = screen.getPrimaryDisplay() +  +       expect(display).to.have.a.property('workAreaSize').that.is.an('object') +@@ -53,7 +53,7 @@ describe('screen module', () => { +     }) +  +     it('has a bounds object property', function () { +-      if (process.platform === 'linux') this.skip() ++      if (process.platform === 'linux' || process.platform === 'freebsd') this.skip() +       const display = screen.getPrimaryDisplay() +  +       expect(display).to.have.a.property('bounds').that.is.an('object') diff --git a/devel/electron6/files/patch-electron_spec_api-shell-spec.js b/devel/electron6/files/patch-electron_spec_api-shell-spec.js new file mode 100644 index 000000000000..cb44d036b138 --- /dev/null +++ b/devel/electron6/files/patch-electron_spec_api-shell-spec.js @@ -0,0 +1,34 @@ +--- electron/spec/api-shell-spec.js.orig	2019-09-11 17:30:11 UTC ++++ electron/spec/api-shell-spec.js +@@ -37,7 +37,7 @@ describe('shell module', () => { +       await closeWindow(w) +       w = null +       // reset env vars to prevent side effects +-      if (process.platform === 'linux') { ++      if (process.platform === 'linux' || process.platform === 'freebsd') { +         process.env.DE = envVars.de +         process.env.BROWSER = envVars.browser +         process.env.DISPLAY = envVars.display +@@ -52,6 +52,11 @@ describe('shell module', () => { +         process.env.DE = 'generic' +         process.env.DISPLAY = '' +         requestReceived = Promise.resolve() ++      } else if (process.platform === 'freebsd') { ++        process.env.BROWSER = '/usr/bin/true' ++        process.env.DE = 'generic' ++        process.env.DISPLAY = '' ++        requestReceived = Promise.resolve() +       } else if (process.platform === 'darwin') { +         // On the Mac CI machines, Safari tries to ask for a password to the +         // code signing keychain we set up to test code signing (see +@@ -79,6 +84,10 @@ describe('shell module', () => { +       if (process.platform === 'linux') { +         process.env.DE = 'generic' +         process.env.DE = '/bin/true' ++        process.env.DISPLAY = '' ++      } else if (process.platform === 'freebsd') { ++        process.env.BROWSER = '/usr/bin/true' ++        process.env.DE = 'generic' +         process.env.DISPLAY = '' +       } +  diff --git a/devel/electron6/files/patch-electron_spec_chromium-spec.js b/devel/electron6/files/patch-electron_spec_chromium-spec.js new file mode 100644 index 000000000000..4fad0d2a9c44 --- /dev/null +++ b/devel/electron6/files/patch-electron_spec_chromium-spec.js @@ -0,0 +1,27 @@ +--- electron/spec/chromium-spec.js.orig	2019-11-20 23:42:47 UTC ++++ electron/spec/chromium-spec.js +@@ -866,7 +866,7 @@ describe('chromium feature', () => { +     }) +  +     it('can be get as context in canvas', () => { +-      if (process.platform === 'linux') { ++      if (process.platform === 'linux' || process.platform === 'freebsd') { +         // FIXME(alexeykuzmin): Skip the test. +         // this.skip() +         return +@@ -1550,12 +1550,13 @@ describe('font fallback', () => { +     expect(fonts[0].familyName).to.equal({ +       'win32': 'Arial', +       'darwin': 'Helvetica', +-      'linux': 'DejaVu Sans' // I think this depends on the distro? We don't specify a default. ++      'linux': 'DejaVu Sans', // I think this depends on the distro? We don't specify a default. ++      'freebsd': 'DejaVu Sans' +     }[process.platform]) +   }) +  +   it('should fall back to Japanese font for sans-serif Japanese script', async function () { +-    if (process.platform === 'linux') { ++    if (process.platform === 'linux' || process.platform === 'freebsd') { +       return this.skip() +     } +     const html = ` diff --git a/devel/electron6/files/patch-electron_spec_fixtures_api_crash-restart.html b/devel/electron6/files/patch-electron_spec_fixtures_api_crash-restart.html new file mode 100644 index 000000000000..f5fa58fca19f --- /dev/null +++ b/devel/electron6/files/patch-electron_spec_fixtures_api_crash-restart.html @@ -0,0 +1,11 @@ +--- electron/spec/fixtures/api/crash-restart.html.orig	2019-12-20 06:13:48 UTC ++++ electron/spec/fixtures/api/crash-restart.html +@@ -19,7 +19,7 @@ crashReporter.start({ + }) +  + setImmediate(() => { +-  if (process.platform !== 'linux') { ++  if (process.platform !== 'linux' && process.platform !== 'freebsd') { +     crashReporter.addExtraParameter('extra2', 'extra2') +     crashReporter.removeExtraParameter('extra3') +   } else { diff --git a/devel/electron6/files/patch-electron_spec_node-spec.js b/devel/electron6/files/patch-electron_spec_node-spec.js new file mode 100644 index 000000000000..d2dba41064db --- /dev/null +++ b/devel/electron6/files/patch-electron_spec_node-spec.js @@ -0,0 +1,11 @@ +--- electron/spec/node-spec.js.orig	2019-09-16 09:55:33 UTC ++++ electron/spec/node-spec.js +@@ -157,7 +157,7 @@ describe('node feature', () => { +     }) +  +     describe('child_process.exec', () => { +-      (process.platform === 'linux' ? it : it.skip)('allows executing a setuid binary from non-sandboxed renderer', () => { ++      (process.platform === 'linux' || process.platform === 'freebsd' ? it : it.skip)('allows executing a setuid binary from non-sandboxed renderer', () => { +         // Chrome uses prctl(2) to set the NO_NEW_PRIVILEGES flag on Linux (see +         // https://github.com/torvalds/linux/blob/40fde647cc/Documentation/userspace-api/no_new_privs.rst). +         // We disable this for unsandboxed processes, which the remote tests diff --git a/devel/electron6/files/patch-electron_spec_version-bump-spec.js b/devel/electron6/files/patch-electron_spec_version-bump-spec.js new file mode 100644 index 000000000000..85c9e268fc5f --- /dev/null +++ b/devel/electron6/files/patch-electron_spec_version-bump-spec.js @@ -0,0 +1,11 @@ +--- electron/spec/version-bump-spec.js.orig	2019-09-11 17:30:11 UTC ++++ electron/spec/version-bump-spec.js +@@ -51,7 +51,7 @@ describeFn('bump-version script', () => { +   const betaPattern = /[0-9.]*(-beta[0-9.]*)/g +  +   before(function () { +-    if (process.platform === 'linux' && process.arch === 'arm') { ++    if ((process.platform === 'linux' || process.platform === 'freebsd') && process.arch === 'arm') { +       this.skip() +     } +   }) diff --git a/devel/electron6/files/patch-extensions_browser_api_declarative__webrequest_webrequest__action.cc b/devel/electron6/files/patch-extensions_browser_api_declarative__webrequest_webrequest__action.cc new file mode 100644 index 000000000000..d74f371a9e87 --- /dev/null +++ b/devel/electron6/files/patch-extensions_browser_api_declarative__webrequest_webrequest__action.cc @@ -0,0 +1,14 @@ +--- extensions/browser/api/declarative_webrequest/webrequest_action.cc.orig	2019-09-10 11:14:04 UTC ++++ extensions/browser/api/declarative_webrequest/webrequest_action.cc +@@ -29,7 +29,11 @@ + #include "extensions/common/extension.h" + #include "net/base/registry_controlled_domains/registry_controlled_domain.h" + #include "net/http/http_util.h" ++#if defined(OS_BSD) ++#include <re2/re2.h> ++#else + #include "third_party/re2/src/re2/re2.h" ++#endif +  + using content::ResourceRequestInfo; + using extension_web_request_api_helpers::EventResponseDelta; diff --git a/devel/electron6/files/patch-extensions_browser_api_messaging_message__service.cc b/devel/electron6/files/patch-extensions_browser_api_messaging_message__service.cc new file mode 100644 index 000000000000..059b8a7f9074 --- /dev/null +++ b/devel/electron6/files/patch-extensions_browser_api_messaging_message__service.cc @@ -0,0 +1,34 @@ +--- extensions/browser/api/messaging/message_service.cc.orig	2019-09-10 11:14:04 UTC ++++ extensions/browser/api/messaging/message_service.cc +@@ -61,7 +61,7 @@ namespace { +  + const char kReceivingEndDoesntExistError[] = +     "Could not establish connection. Receiving end does not exist."; +-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) ++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) + const char kMissingPermissionError[] = +     "Access to native messaging requires nativeMessaging permission."; + const char kProhibitedByPoliciesError[] = +@@ -383,7 +383,7 @@ void MessageService::OpenChannelToNativeApp( +   if (!opener_port->IsValidPort()) +     return; +  +-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) ++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) +   bool has_permission = extension->permissions_data()->HasAPIPermission( +       APIPermission::kNativeMessaging); +   if (!has_permission) { +@@ -433,11 +433,11 @@ void MessageService::OpenChannelToNativeApp( +   channel->opener->IncrementLazyKeepaliveCount(); +  +   AddChannel(std::move(channel), receiver_port_id); +-#else  // !(defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)) ++#else  // !(defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)) +   const char kNativeMessagingNotSupportedError[] = +       "Native Messaging is not supported on this platform."; +   opener_port->DispatchOnDisconnect(kNativeMessagingNotSupportedError); +-#endif  // !(defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX)) ++#endif  // !(defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD)) + } +  + void MessageService::OpenChannelToTab(const ChannelEndpoint& source, diff --git a/devel/electron6/files/patch-extensions_browser_api_networking__private_networking__private__delegate__factory.cc b/devel/electron6/files/patch-extensions_browser_api_networking__private_networking__private__delegate__factory.cc new file mode 100644 index 000000000000..9533cc1a277e --- /dev/null +++ b/devel/electron6/files/patch-extensions_browser_api_networking__private_networking__private__delegate__factory.cc @@ -0,0 +1,20 @@ +--- extensions/browser/api/networking_private/networking_private_delegate_factory.cc.orig	2019-09-10 10:42:38 UTC ++++ extensions/browser/api/networking_private/networking_private_delegate_factory.cc +@@ -11,7 +11,7 @@ +  + #if defined(OS_CHROMEOS) + #include "extensions/browser/api/networking_private/networking_private_chromeos.h" +-#elif defined(OS_LINUX) ++#elif defined(OS_LINUX) || defined(OS_BSD) + #include "extensions/browser/api/networking_private/networking_private_linux.h" + #elif defined(OS_WIN) || defined(OS_MACOSX) + #include "components/wifi/wifi_service.h" +@@ -61,7 +61,7 @@ KeyedService* NetworkingPrivateDelegateFactory::BuildS +   NetworkingPrivateDelegate* delegate; + #if defined(OS_CHROMEOS) +   delegate = new NetworkingPrivateChromeOS(browser_context); +-#elif defined(OS_LINUX) ++#elif defined(OS_LINUX) || defined(OS_BSD) +   delegate = new NetworkingPrivateLinux(); + #elif defined(OS_WIN) || defined(OS_MACOSX) +   std::unique_ptr<wifi::WiFiService> wifi_service(wifi::WiFiService::Create()); diff --git a/devel/electron6/files/patch-extensions_browser_api_web__request_form__data__parser.cc b/devel/electron6/files/patch-extensions_browser_api_web__request_form__data__parser.cc new file mode 100644 index 000000000000..cf2c5fdd52f8 --- /dev/null +++ b/devel/electron6/files/patch-extensions_browser_api_web__request_form__data__parser.cc @@ -0,0 +1,14 @@ +--- extensions/browser/api/web_request/form_data_parser.cc.orig	2019-09-10 11:14:04 UTC ++++ extensions/browser/api/web_request/form_data_parser.cc +@@ -15,7 +15,11 @@ + #include "base/values.h" + #include "net/base/escape.h" + #include "net/http/http_request_headers.h" ++#if defined(OS_BSD) ++#include <re2/re2.h> ++#else + #include "third_party/re2/src/re2/re2.h" ++#endif +  + using base::DictionaryValue; + using base::ListValue; diff --git a/devel/electron6/files/patch-extensions_browser_browser__context__keyed__service__factories.cc b/devel/electron6/files/patch-extensions_browser_browser__context__keyed__service__factories.cc new file mode 100644 index 000000000000..b7f950a21f60 --- /dev/null +++ b/devel/electron6/files/patch-extensions_browser_browser__context__keyed__service__factories.cc @@ -0,0 +1,11 @@ +--- extensions/browser/browser_context_keyed_service_factories.cc.orig	2019-09-10 10:42:38 UTC ++++ extensions/browser/browser_context_keyed_service_factories.cc +@@ -84,7 +84,7 @@ void EnsureBrowserContextKeyedServiceFactoriesBuilt()  + #if defined(OS_CHROMEOS) +   NetworkingConfigServiceFactory::GetInstance(); + #endif +-#if defined(OS_LINUX) || defined(OS_WIN) || defined(OS_MACOSX) ++#if defined(OS_LINUX) || defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_BSD) +   NetworkingPrivateEventRouterFactory::GetInstance(); + #endif +   PowerAPI::GetFactoryInstance(); diff --git a/devel/electron6/files/patch-extensions_common_api___permission__features.json b/devel/electron6/files/patch-extensions_common_api___permission__features.json new file mode 100644 index 000000000000..c5f0c7eaf0be --- /dev/null +++ b/devel/electron6/files/patch-extensions_common_api___permission__features.json @@ -0,0 +1,29 @@ +--- extensions/common/api/_permission_features.json.orig	2019-09-10 11:14:04 UTC ++++ extensions/common/api/_permission_features.json +@@ -135,7 +135,7 @@ +     { +       "channel": "stable", +       "extension_types": ["platform_app"], +-      "platforms": ["chromeos", "win", "mac", "linux"], ++      "platforms": ["chromeos", "win", "mac", "linux", "bsd"], +       "whitelist": [ +         "1C93BD3CF875F4A73C0B2A163BB8FBDA8B8B3D80",  // http://crbug.com/387169 +         "A3BC37E2148AC4E99BE4B16AF9D42DD1E592BBBE",  // http://crbug.com/387169 +@@ -469,7 +469,7 @@ +   }, { +     "channel": "stable", +     "extension_types": ["extension", "legacy_packaged_app", "platform_app"], +-    "platforms": ["chromeos", "mac", "win", "linux"], ++    "platforms": ["chromeos", "mac", "win", "linux", "bsd"], +     "whitelist": [ +       "0DE0F05680A4A056BCEC864ED8DDA84296F82B40",  // http://crbug.com/434651 +       "1C93BD3CF875F4A73C0B2A163BB8FBDA8B8B3D80",  // http://crbug.com/293683 +@@ -500,7 +500,7 @@ +   "networkingPrivate": { +     "channel": "stable", +     "extension_types": ["extension", "legacy_packaged_app", "platform_app"], +-    "platforms": ["chromeos", "mac", "win", "linux"], ++    "platforms": ["chromeos", "mac", "win", "linux", "bsd"], +     "whitelist": [ +       // DO NOT ADD ANY MORE ENTRIES HERE. +       // networkingPrivate is being migrated to networking.onc. diff --git a/devel/electron6/files/patch-extensions_common_api_runtime.json b/devel/electron6/files/patch-extensions_common_api_runtime.json new file mode 100644 index 000000000000..06144fcc2350 --- /dev/null +++ b/devel/electron6/files/patch-extensions_common_api_runtime.json @@ -0,0 +1,11 @@ +--- extensions/common/api/runtime.json.orig	2019-09-10 10:42:38 UTC ++++ extensions/common/api/runtime.json +@@ -67,7 +67,7 @@ +         "id": "PlatformOs", +         "type": "string", +         "description": "The operating system chrome is running on.", +-        "enum": ["mac", "win", "android", "cros", "linux", "openbsd"] ++        "enum": ["mac", "win", "android", "cros", "linux", "freebsd", "openbsd"] +       }, +       { +         "id": "PlatformArch", diff --git a/devel/electron6/files/patch-extensions_common_feature__switch.cc b/devel/electron6/files/patch-extensions_common_feature__switch.cc new file mode 100644 index 000000000000..c7ac2f0611d4 --- /dev/null +++ b/devel/electron6/files/patch-extensions_common_feature__switch.cc @@ -0,0 +1,14 @@ +--- extensions/common/feature_switch.cc.orig	2019-09-10 11:14:04 UTC ++++ extensions/common/feature_switch.cc +@@ -44,11 +44,7 @@ class CommonSwitches { +                          FeatureSwitch::DEFAULT_ENABLED), +         load_media_router_component_extension( +             kLoadMediaRouterComponentExtensionFlag, +-#if defined(GOOGLE_CHROME_BUILD) +             FeatureSwitch::DEFAULT_ENABLED) +-#else +-            FeatureSwitch::DEFAULT_DISABLED) +-#endif  // defined(GOOGLE_CHROME_BUILD) +   { +   } +  diff --git a/devel/electron6/files/patch-extensions_common_features_feature.cc b/devel/electron6/files/patch-extensions_common_features_feature.cc new file mode 100644 index 000000000000..1ad77162cc2e --- /dev/null +++ b/devel/electron6/files/patch-extensions_common_features_feature.cc @@ -0,0 +1,11 @@ +--- extensions/common/features/feature.cc.orig	2019-09-10 10:42:38 UTC ++++ extensions/common/features/feature.cc +@@ -20,7 +20,7 @@ namespace extensions { + Feature::Platform Feature::GetCurrentPlatform() { + #if defined(OS_CHROMEOS) +   return CHROMEOS_PLATFORM; +-#elif defined(OS_LINUX) ++#elif defined(OS_LINUX) || defined(OS_BSD) +   return LINUX_PLATFORM; + #elif defined(OS_MACOSX) +   return MACOSX_PLATFORM; diff --git a/devel/electron6/files/patch-extensions_common_image__util.cc b/devel/electron6/files/patch-extensions_common_image__util.cc new file mode 100644 index 000000000000..e6cf91786183 --- /dev/null +++ b/devel/electron6/files/patch-extensions_common_image__util.cc @@ -0,0 +1,14 @@ +--- extensions/common/image_util.cc.orig	2019-09-10 11:14:04 UTC ++++ extensions/common/image_util.cc +@@ -18,7 +18,11 @@ + #include "base/strings/stringprintf.h" + #include "base/time/time.h" + #include "base/timer/elapsed_timer.h" ++#if defined(OS_BSD) ++#include <re2/re2.h> ++#else + #include "third_party/re2/src/re2/re2.h" ++#endif // defined(OS_BSD) + #include "third_party/skia/include/core/SkBitmap.h" + #include "third_party/skia/include/core/SkCanvas.h" + #include "third_party/skia/include/core/SkColor.h" diff --git a/devel/electron6/files/patch-extensions_common_stack__frame.cc b/devel/electron6/files/patch-extensions_common_stack__frame.cc new file mode 100644 index 000000000000..3244ed918012 --- /dev/null +++ b/devel/electron6/files/patch-extensions_common_stack__frame.cc @@ -0,0 +1,14 @@ +--- extensions/common/stack_frame.cc.orig	2019-09-10 10:42:38 UTC ++++ extensions/common/stack_frame.cc +@@ -7,7 +7,11 @@ + #include <string> +  + #include "base/strings/utf_string_conversions.h" ++#if defined(OS_BSD) ++#include <re2/re2.h> ++#else + #include "third_party/re2/src/re2/re2.h" ++#endif +  + namespace extensions { +  diff --git a/devel/electron6/files/patch-extensions_renderer_bindings_api__binding__util.cc b/devel/electron6/files/patch-extensions_renderer_bindings_api__binding__util.cc new file mode 100644 index 000000000000..3166c6ab2d77 --- /dev/null +++ b/devel/electron6/files/patch-extensions_renderer_bindings_api__binding__util.cc @@ -0,0 +1,11 @@ +--- extensions/renderer/bindings/api_binding_util.cc.orig	2019-09-10 10:42:38 UTC ++++ extensions/renderer/bindings/api_binding_util.cc +@@ -129,6 +129,8 @@ std::string GetPlatformString() { +   return "mac"; + #elif defined(OS_WIN) +   return "win"; ++#elif defined(OS_BSD) ++  return "bsd"; + #else +   NOTREACHED(); +   return std::string(); diff --git a/devel/electron6/files/patch-extensions_shell_app_shell__main__delegate.cc b/devel/electron6/files/patch-extensions_shell_app_shell__main__delegate.cc new file mode 100644 index 000000000000..127e04ef20b8 --- /dev/null +++ b/devel/electron6/files/patch-extensions_shell_app_shell__main__delegate.cc @@ -0,0 +1,29 @@ +--- extensions/shell/app/shell_main_delegate.cc.orig	2019-09-10 11:14:04 UTC ++++ extensions/shell/app/shell_main_delegate.cc +@@ -38,7 +38,7 @@ +  + #if defined(OS_WIN) + #include "base/base_paths_win.h" +-#elif defined(OS_LINUX) ++#elif defined(OS_LINUX) || defined(OS_BSD) + #include "base/nix/xdg_util.h" + #elif defined(OS_MACOSX) + #include "base/base_paths_mac.h" +@@ -52,7 +52,7 @@ +  + namespace { +  +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS) + extensions::ShellCrashReporterClient* GetCrashReporterClient() { +   static base::NoDestructor<extensions::ShellCrashReporterClient> instance; +   return instance.get(); +@@ -70,7 +70,7 @@ base::FilePath GetDataPath() { +     return cmd_line->GetSwitchValuePath(switches::kContentShellDataPath); +  +   base::FilePath data_dir; +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   std::unique_ptr<base::Environment> env(base::Environment::Create()); +   data_dir = base::nix::GetXDGDirectory( +       env.get(), base::nix::kXdgConfigHomeEnvVar, base::nix::kDotConfigDir); diff --git a/devel/electron6/files/patch-extensions_shell_browser_shell__extensions__api__client.cc b/devel/electron6/files/patch-extensions_shell_browser_shell__extensions__api__client.cc new file mode 100644 index 000000000000..5422e85a429d --- /dev/null +++ b/devel/electron6/files/patch-extensions_shell_browser_shell__extensions__api__client.cc @@ -0,0 +1,20 @@ +--- extensions/shell/browser/shell_extensions_api_client.cc.orig	2019-09-10 11:14:04 UTC ++++ extensions/shell/browser/shell_extensions_api_client.cc +@@ -15,7 +15,7 @@ + #include "extensions/shell/browser/shell_virtual_keyboard_delegate.h" + #include "extensions/shell/browser/shell_web_view_guest_delegate.h" +  +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) + #include "extensions/shell/browser/api/file_system/shell_file_system_delegate.h" + #endif +  +@@ -46,7 +46,7 @@ ShellExtensionsAPIClient::CreateVirtualKeyboardDelegat +   return std::make_unique<ShellVirtualKeyboardDelegate>(); + } +  +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) + FileSystemDelegate* ShellExtensionsAPIClient::GetFileSystemDelegate() { +   if (!file_system_delegate_) +     file_system_delegate_ = std::make_unique<ShellFileSystemDelegate>(); diff --git a/devel/electron6/files/patch-extensions_shell_browser_shell__extensions__api__client.h b/devel/electron6/files/patch-extensions_shell_browser_shell__extensions__api__client.h new file mode 100644 index 000000000000..897bf1b3eb84 --- /dev/null +++ b/devel/electron6/files/patch-extensions_shell_browser_shell__extensions__api__client.h @@ -0,0 +1,19 @@ +--- extensions/shell/browser/shell_extensions_api_client.h.orig	2019-09-10 11:14:04 UTC ++++ extensions/shell/browser/shell_extensions_api_client.h +@@ -30,14 +30,14 @@ class ShellExtensionsAPIClient : public ExtensionsAPIC +       WebViewGuest* web_view_guest) const override; +   std::unique_ptr<VirtualKeyboardDelegate> CreateVirtualKeyboardDelegate( +       content::BrowserContext* browser_context) const override; +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) +   FileSystemDelegate* GetFileSystemDelegate() override; + #endif +   MessagingDelegate* GetMessagingDelegate() override; +   FeedbackPrivateDelegate* GetFeedbackPrivateDelegate() override; +  +  private: +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) +   std::unique_ptr<FileSystemDelegate> file_system_delegate_; + #endif +   std::unique_ptr<MessagingDelegate> messaging_delegate_; diff --git a/devel/electron6/files/patch-google__apis_gcm_engine_heartbeat__manager.cc b/devel/electron6/files/patch-google__apis_gcm_engine_heartbeat__manager.cc new file mode 100644 index 000000000000..944a07f48960 --- /dev/null +++ b/devel/electron6/files/patch-google__apis_gcm_engine_heartbeat__manager.cc @@ -0,0 +1,53 @@ +--- google_apis/gcm/engine/heartbeat_manager.cc.orig	2019-09-10 11:14:04 UTC ++++ google_apis/gcm/engine/heartbeat_manager.cc +@@ -32,13 +32,13 @@ const int kMinClientHeartbeatIntervalMs = 1000 * 30;   + // Minimum time spent sleeping before we force a new heartbeat. + const int kMinSuspendTimeMs = 1000 * 10; // 10 seconds. +  +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) + // The period at which to check if the heartbeat time has passed. Used to + // protect against platforms where the timer is delayed by the system being + // suspended.  Only needed on linux because the other OSes provide a standard + // way to be notified of system suspend and resume events. + const int kHeartbeatMissedCheckMs = 1000 * 60 * 5;  // 5 minutes. +-#endif  // defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#endif  // (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) +  + }  // namespace +  +@@ -188,7 +188,7 @@ void HeartbeatManager::RestartTimer() { +                           base::Bind(&HeartbeatManager::OnHeartbeatTriggered, +                                      weak_ptr_factory_.GetWeakPtr())); +  +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) +   // Windows, Mac, Android, iOS, and Chrome OS all provide a way to be notified +   // when the system is suspending or resuming.  The only one that does not is +   // Linux so we need to poll to check for missed heartbeats. +@@ -197,7 +197,7 @@ void HeartbeatManager::RestartTimer() { +       base::BindOnce(&HeartbeatManager::CheckForMissedHeartbeat, +                      weak_ptr_factory_.GetWeakPtr()), +       base::TimeDelta::FromMilliseconds(kHeartbeatMissedCheckMs)); +-#endif  // defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#endif  // (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) + } +  + void HeartbeatManager::CheckForMissedHeartbeat() { +@@ -213,14 +213,14 @@ void HeartbeatManager::CheckForMissedHeartbeat() { +     return; +   } +  +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) +   // Otherwise check again later. +   base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( +       FROM_HERE, +       base::BindOnce(&HeartbeatManager::CheckForMissedHeartbeat, +                      weak_ptr_factory_.GetWeakPtr()), +       base::TimeDelta::FromMilliseconds(kHeartbeatMissedCheckMs)); +-#endif  // defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#endif  // (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) + } +  + void HeartbeatManager::UpdateHeartbeatInterval() { diff --git a/devel/electron6/files/patch-gpu_command__buffer_common_gpu__memory__buffer__support.cc b/devel/electron6/files/patch-gpu_command__buffer_common_gpu__memory__buffer__support.cc new file mode 100644 index 000000000000..d74a59fe236f --- /dev/null +++ b/devel/electron6/files/patch-gpu_command__buffer_common_gpu__memory__buffer__support.cc @@ -0,0 +1,11 @@ +--- gpu/command_buffer/common/gpu_memory_buffer_support.cc.orig	2019-09-10 11:14:05 UTC ++++ gpu/command_buffer/common/gpu_memory_buffer_support.cc +@@ -89,7 +89,7 @@ bool IsImageSizeValidForGpuMemoryBufferFormat(const gf + uint32_t GetPlatformSpecificTextureTarget() { + #if defined(OS_MACOSX) +   return GL_TEXTURE_RECTANGLE_ARB; +-#elif defined(OS_ANDROID) || defined(OS_LINUX) ++#elif defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_BSD) +   return GL_TEXTURE_EXTERNAL_OES; + #elif defined(OS_WIN) || defined(OS_FUCHSIA) +   return GL_TEXTURE_2D; diff --git a/devel/electron6/files/patch-gpu_command__buffer_service_external__vk__image__backing.cc b/devel/electron6/files/patch-gpu_command__buffer_service_external__vk__image__backing.cc new file mode 100644 index 000000000000..c1f8bf94da92 --- /dev/null +++ b/devel/electron6/files/patch-gpu_command__buffer_service_external__vk__image__backing.cc @@ -0,0 +1,29 @@ +--- gpu/command_buffer/service/external_vk_image_backing.cc.orig	2019-09-10 11:14:05 UTC ++++ gpu/command_buffer/service/external_vk_image_backing.cc +@@ -26,7 +26,7 @@ + #include "gpu/vulkan/fuchsia/vulkan_fuchsia_ext.h" + #endif +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + #define GL_HANDLE_TYPE_OPAQUE_FD_EXT 0x9586 + #endif +  +@@ -439,7 +439,7 @@ ExternalVkImageBacking::ProduceGLTexture(SharedImageMa + #if defined(OS_FUCHSIA) +   NOTIMPLEMENTED_LOG_ONCE(); +   return nullptr; +-#elif defined(OS_LINUX) ++#elif defined(OS_LINUX) || defined(OS_BSD) +   if (!texture_) { +     VkMemoryGetFdInfoKHR get_fd_info; +     get_fd_info.sType = VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR; +@@ -502,7 +502,7 @@ ExternalVkImageBacking::ProduceGLTexture(SharedImageMa +   } +   return std::make_unique<ExternalVkImageGlRepresentation>( +       manager, this, tracker, texture_, texture_->service_id()); +-#else  // !defined(OS_LINUX) && !defined(OS_FUCHSIA) ++#else  // !defined(OS_LINUX) && !defined(OS_FUCHSIA) && !defined(OS_BSD) + #error Unsupported OS + #endif + } diff --git a/devel/electron6/files/patch-gpu_command__buffer_service_external__vk__image__gl__representation.cc b/devel/electron6/files/patch-gpu_command__buffer_service_external__vk__image__gl__representation.cc new file mode 100644 index 000000000000..a14388b3e6d7 --- /dev/null +++ b/devel/electron6/files/patch-gpu_command__buffer_service_external__vk__image__gl__representation.cc @@ -0,0 +1,20 @@ +--- gpu/command_buffer/service/external_vk_image_gl_representation.cc.orig	2019-09-10 11:14:05 UTC ++++ gpu/command_buffer/service/external_vk_image_gl_representation.cc +@@ -128,7 +128,7 @@ GLuint ExternalVkImageGlRepresentation::ImportVkSemaph + #if defined(OS_FUCHSIA) +   NOTIMPLEMENTED_LOG_ONCE(); +   return 0; +-#elif defined(OS_LINUX) ++#elif defined(OS_LINUX) || defined(OS_BSD) +   if (handle.vk_handle_type() != +       VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT) { +     DLOG(ERROR) << "Importing semaphore handle of unexpected type:" +@@ -143,7 +143,7 @@ GLuint ExternalVkImageGlRepresentation::ImportVkSemaph +                                 fd.release()); +  +   return gl_semaphore; +-#else  // !defined(OS_FUCHSIA) && !defined(OS_LINUX) ++#else  // !defined(OS_FUCHSIA) && !defined(OS_LINUX) && !defined(OS_BSD) + #error Unsupported OS + #endif + } diff --git a/devel/electron6/files/patch-gpu_command__buffer_service_program__manager.cc b/devel/electron6/files/patch-gpu_command__buffer_service_program__manager.cc new file mode 100644 index 000000000000..e1cfa61ce0de --- /dev/null +++ b/devel/electron6/files/patch-gpu_command__buffer_service_program__manager.cc @@ -0,0 +1,14 @@ +--- gpu/command_buffer/service/program_manager.cc.orig	2019-09-10 11:14:06 UTC ++++ gpu/command_buffer/service/program_manager.cc +@@ -30,7 +30,11 @@ + #include "gpu/command_buffer/service/program_cache.h" + #include "gpu/command_buffer/service/shader_manager.h" + #include "gpu/config/gpu_preferences.h" ++#if defined(OS_BSD) ++#include <re2/re2.h> ++#else + #include "third_party/re2/src/re2/re2.h" ++#endif + #include "ui/gl/gl_version_info.h" + #include "ui/gl/progress_reporter.h" +  diff --git a/devel/electron6/files/patch-gpu_command__buffer_tests_gl__copy__texture__CHROMIUM__unittest.cc b/devel/electron6/files/patch-gpu_command__buffer_tests_gl__copy__texture__CHROMIUM__unittest.cc new file mode 100644 index 000000000000..747f9b9e4809 --- /dev/null +++ b/devel/electron6/files/patch-gpu_command__buffer_tests_gl__copy__texture__CHROMIUM__unittest.cc @@ -0,0 +1,11 @@ +--- gpu/command_buffer/tests/gl_copy_texture_CHROMIUM_unittest.cc.orig	2019-09-10 11:14:06 UTC ++++ gpu/command_buffer/tests/gl_copy_texture_CHROMIUM_unittest.cc +@@ -593,7 +593,7 @@ class GLCopyTextureCHROMIUMES3Test : public GLCopyText +  +   bool ShouldSkipNorm16() const { +     DCHECK(!ShouldSkipTest()); +-#if (defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_LINUX)) && \ ++#if (defined(OS_MACOSX) || defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD)) && \ +     (defined(ARCH_CPU_X86) || defined(ARCH_CPU_X86_64)) +     // Make sure it's tested; it is safe to assume that the flag is always true +     // on desktop. diff --git a/devel/electron6/files/patch-gpu_command__buffer_tests_gl__test__utils.cc b/devel/electron6/files/patch-gpu_command__buffer_tests_gl__test__utils.cc new file mode 100644 index 000000000000..1cd40b28af18 --- /dev/null +++ b/devel/electron6/files/patch-gpu_command__buffer_tests_gl__test__utils.cc @@ -0,0 +1,20 @@ +--- gpu/command_buffer/tests/gl_test_utils.cc.orig	2019-09-10 11:14:06 UTC ++++ gpu/command_buffer/tests/gl_test_utils.cc +@@ -23,7 +23,7 @@ + #include "ui/gl/gl_version_info.h" + #include "ui/gl/init/gl_factory.h" +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + #include "ui/gl/gl_image_native_pixmap.h" + #endif +  +@@ -429,7 +429,7 @@ void GpuCommandBufferTestEGL::RestoreGLDefault() { +   window_system_binding_info_ = gl::GLWindowSystemBindingInfo(); + } +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + scoped_refptr<gl::GLImageNativePixmap> + GpuCommandBufferTestEGL::CreateGLImageNativePixmap(gfx::BufferFormat format, +                                                    gfx::Size size, diff --git a/devel/electron6/files/patch-gpu_command__buffer_tests_gl__test__utils.h b/devel/electron6/files/patch-gpu_command__buffer_tests_gl__test__utils.h new file mode 100644 index 000000000000..c17548bb6f55 --- /dev/null +++ b/devel/electron6/files/patch-gpu_command__buffer_tests_gl__test__utils.h @@ -0,0 +1,11 @@ +--- gpu/command_buffer/tests/gl_test_utils.h.orig	2019-09-10 11:14:06 UTC ++++ gpu/command_buffer/tests/gl_test_utils.h +@@ -112,7 +112,7 @@ class GpuCommandBufferTestEGL { +     return gfx::HasExtension(gl_extensions_, extension); +   } +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   // Create GLImageNativePixmap filled in with the given pixels. +   scoped_refptr<gl::GLImageNativePixmap> CreateGLImageNativePixmap( +       gfx::BufferFormat format, diff --git a/devel/electron6/files/patch-gpu_config_gpu__control__list.cc b/devel/electron6/files/patch-gpu_config_gpu__control__list.cc new file mode 100644 index 000000000000..2a7e59392644 --- /dev/null +++ b/devel/electron6/files/patch-gpu_config_gpu__control__list.cc @@ -0,0 +1,32 @@ +--- gpu/config/gpu_control_list.cc.orig	2019-09-10 11:14:06 UTC ++++ gpu/config/gpu_control_list.cc +@@ -16,7 +16,11 @@ + #include "base/values.h" + #include "build/build_config.h" + #include "gpu/config/gpu_util.h" ++#if defined(OS_BSD) ++#include <re2/re2.h> ++#else + #include "third_party/re2/src/re2/re2.h" ++#endif // defined(OS_BSD) +  + namespace gpu { + namespace { +@@ -213,7 +217,7 @@ bool GpuControlList::More::GLVersionInfoMismatch( + GpuControlList::GLType GpuControlList::More::GetDefaultGLType() { + #if defined(OS_CHROMEOS) +   return kGLTypeGL; +-#elif defined(OS_LINUX) || defined(OS_OPENBSD) ++#elif defined(OS_LINUX) || defined(OS_BSD) +   return kGLTypeGL; + #elif defined(OS_MACOSX) +   return kGLTypeGL; +@@ -700,7 +704,7 @@ GpuControlList::OsType GpuControlList::GetOsType() { +   return kOsAndroid; + #elif defined(OS_FUCHSIA) +   return kOsFuchsia; +-#elif defined(OS_LINUX) || defined(OS_OPENBSD) ++#elif defined(OS_LINUX) || defined(OS_BSD) +   return kOsLinux; + #elif defined(OS_MACOSX) +   return kOsMacosx; diff --git a/devel/electron6/files/patch-gpu_config_gpu__test__config.cc b/devel/electron6/files/patch-gpu_config_gpu__test__config.cc new file mode 100644 index 000000000000..65d20d33d0ef --- /dev/null +++ b/devel/electron6/files/patch-gpu_config_gpu__test__config.cc @@ -0,0 +1,11 @@ +--- gpu/config/gpu_test_config.cc.orig	2019-09-10 11:14:06 UTC ++++ gpu/config/gpu_test_config.cc +@@ -25,7 +25,7 @@ namespace { + GPUTestConfig::OS GetCurrentOS() { + #if defined(OS_CHROMEOS) +   return GPUTestConfig::kOsChromeOS; +-#elif defined(OS_LINUX) || defined(OS_OPENBSD) ++#elif defined(OS_LINUX) || defined(OS_BSD) +   return GPUTestConfig::kOsLinux; + #elif defined(OS_WIN) +   int32_t major_version = 0; diff --git a/devel/electron6/files/patch-gpu_ipc_common_gpu__memory__buffer__support.cc b/devel/electron6/files/patch-gpu_ipc_common_gpu__memory__buffer__support.cc new file mode 100644 index 000000000000..2287551c0ebf --- /dev/null +++ b/devel/electron6/files/patch-gpu_ipc_common_gpu__memory__buffer__support.cc @@ -0,0 +1,56 @@ +--- gpu/ipc/common/gpu_memory_buffer_support.cc.orig	2019-09-10 11:14:06 UTC ++++ gpu/ipc/common/gpu_memory_buffer_support.cc +@@ -12,7 +12,7 @@ + #include "gpu/ipc/common/gpu_memory_buffer_impl_io_surface.h" + #endif +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + #include "ui/gfx/client_native_pixmap_factory.h" + #include "ui/gfx/linux/client_native_pixmap_factory_dmabuf.h" + #endif +@@ -22,7 +22,7 @@ + #include "ui/ozone/public/ozone_platform.h" + #endif +  +-#if defined(USE_OZONE) || defined(OS_LINUX) ++#if defined(USE_OZONE) || defined(OS_LINUX) || defined(OS_BSD) + #include "gpu/ipc/common/gpu_memory_buffer_impl_native_pixmap.h" + #endif +  +@@ -40,7 +40,7 @@ namespace gpu { + GpuMemoryBufferSupport::GpuMemoryBufferSupport() { + #if defined(USE_OZONE) +   client_native_pixmap_factory_ = ui::CreateClientNativePixmapFactoryOzone(); +-#elif defined(OS_LINUX) ++#elif defined(OS_LINUX) || defined(OS_BSD) +   client_native_pixmap_factory_.reset( +       gfx::CreateClientNativePixmapFactoryDmabuf()); + #endif +@@ -54,7 +54,7 @@ GpuMemoryBufferSupport::GetNativeGpuMemoryBufferType() +   return gfx::IO_SURFACE_BUFFER; + #elif defined(OS_ANDROID) +   return gfx::ANDROID_HARDWARE_BUFFER; +-#elif defined(OS_LINUX) || defined(USE_OZONE) ++#elif defined(OS_LINUX) || defined(USE_OZONE) || defined(OS_BSD) +   return gfx::NATIVE_PIXMAP; + #elif defined(OS_WIN) +   return gfx::DXGI_SHARED_HANDLE; +@@ -111,7 +111,7 @@ bool GpuMemoryBufferSupport::IsNativeGpuMemoryBufferCo + #elif defined(USE_OZONE) +   return ui::OzonePlatform::EnsureInstance()->IsNativePixmapConfigSupported( +       format, usage); +-#elif defined(OS_LINUX) ++#elif defined(OS_LINUX) || defined(OS_BSD) +   return false;  // TODO(julian.isorce): Add linux support. + #elif defined(OS_WIN) +   switch (usage) { +@@ -167,7 +167,7 @@ GpuMemoryBufferSupport::CreateGpuMemoryBufferImplFromH +       return GpuMemoryBufferImplIOSurface::CreateFromHandle( +           std::move(handle), size, format, usage, std::move(callback)); + #endif +-#if defined(OS_LINUX) || defined(USE_OZONE) ++#if defined(OS_LINUX) || defined(USE_OZONE) || defined(OS_BSD) +     case gfx::NATIVE_PIXMAP: +       return GpuMemoryBufferImplNativePixmap::CreateFromHandle( +           client_native_pixmap_factory(), std::move(handle), size, format, diff --git a/devel/electron6/files/patch-gpu_ipc_common_gpu__memory__buffer__support.h b/devel/electron6/files/patch-gpu_ipc_common_gpu__memory__buffer__support.h new file mode 100644 index 000000000000..982311c2fb3b --- /dev/null +++ b/devel/electron6/files/patch-gpu_ipc_common_gpu__memory__buffer__support.h @@ -0,0 +1,29 @@ +--- gpu/ipc/common/gpu_memory_buffer_support.h.orig	2019-09-10 10:42:38 UTC ++++ gpu/ipc/common/gpu_memory_buffer_support.h +@@ -16,7 +16,7 @@ + #include "ui/gfx/geometry/size.h" + #include "ui/gfx/gpu_memory_buffer.h" +  +-#if defined(OS_LINUX) || defined(USE_OZONE) ++#if defined(OS_LINUX) || defined(OS_BSD) || defined(USE_OZONE) + namespace gfx { + class ClientNativePixmapFactory; + } +@@ -38,7 +38,7 @@ class GPU_EXPORT GpuMemoryBufferSupport { +   bool IsNativeGpuMemoryBufferConfigurationSupported(gfx::BufferFormat format, +                                                      gfx::BufferUsage usage); +  +-#if defined(OS_LINUX) || defined(USE_OZONE) ++#if defined(OS_LINUX) || defined(OS_BSD) || defined(USE_OZONE) +   gfx::ClientNativePixmapFactory* client_native_pixmap_factory() { +     return client_native_pixmap_factory_.get(); +   } +@@ -61,7 +61,7 @@ class GPU_EXPORT GpuMemoryBufferSupport { +       GpuMemoryBufferImpl::DestructionCallback callback); +  +  private: +-#if defined(OS_LINUX) || defined(USE_OZONE) ++#if defined(OS_LINUX) || defined(OS_BSD) || defined(USE_OZONE) +   std::unique_ptr<gfx::ClientNativePixmapFactory> client_native_pixmap_factory_; + #endif +  diff --git a/devel/electron6/files/patch-gpu_ipc_service_gpu__init.cc b/devel/electron6/files/patch-gpu_ipc_service_gpu__init.cc new file mode 100644 index 000000000000..954597a24d22 --- /dev/null +++ b/devel/electron6/files/patch-gpu_ipc_service_gpu__init.cc @@ -0,0 +1,83 @@ +--- gpu/ipc/service/gpu_init.cc.orig	2019-09-10 11:14:06 UTC ++++ gpu/ipc/service/gpu_init.cc +@@ -107,7 +107,7 @@ void InitializePlatformOverlaySettings(GPUInfo* gpu_in + #endif + } +  +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(IS_CHROMECAST) ++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(IS_CHROMECAST)) || defined(OS_BSD) + bool CanAccessNvidiaDeviceFile() { +   bool res = true; +   base::ScopedBlockingCall scoped_blocking_call(FROM_HERE, +@@ -118,7 +118,7 @@ bool CanAccessNvidiaDeviceFile() { +   } +   return res; + } +-#endif  // OS_LINUX && !OS_CHROMEOS && !IS_CHROMECAST ++#endif  // (OS_LINUX && !OS_CHROMEOS && !IS_CHROMECAST) || OS_BSD +  + }  // namespace +  +@@ -150,7 +150,7 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandL +   // crash during feature collection. +   gpu::SetKeysForCrashLogging(gpu_info_); +  +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) +   if (gpu_info_.gpu.vendor_id == 0x10de &&  // NVIDIA +       gpu_info_.gpu.driver_vendor == "NVIDIA" && !CanAccessNvidiaDeviceFile()) +     return false; +@@ -220,7 +220,7 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandL +   sandbox_helper_->PreSandboxStartup(); +  +   bool attempted_startsandbox = false; +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) && !defined(OS_BSD) +   // On Chrome OS ARM Mali, GPU driver userspace creates threads when +   // initializing a GL context, so start the sandbox early. +   // TODO(zmo): Need to collect OS version before this. +@@ -229,7 +229,7 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandL +         watchdog_thread_.get(), &gpu_info_, gpu_preferences_); +     attempted_startsandbox = true; +   } +-#endif  // defined(OS_LINUX) ++#endif  // defined(OS_LINUX) && !defined(OS_BSD) +  +   base::TimeTicks before_initialize_one_off = base::TimeTicks::Now(); +  +@@ -328,7 +328,7 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandL +  +   InitializePlatformOverlaySettings(&gpu_info_); +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   // Driver may create a compatibility profile context when collect graphics +   // information on Linux platform. Try to collect graphics information +   // based on core profile context after disabling platform extensions. +@@ -350,7 +350,7 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandL +       } +     } +   } +-#endif  // defined(OS_LINUX) ++#endif  // defined(OS_LINUX) || defined(OS_BSD) +  +   if (use_swiftshader) { +     AdjustInfoToSwiftShader(); +@@ -516,7 +516,7 @@ void GpuInit::InitializeInProcess(base::CommandLine* c +  +   InitializePlatformOverlaySettings(&gpu_info_); +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   // Driver may create a compatibility profile context when collect graphics +   // information on Linux platform. Try to collect graphics information +   // based on core profile context after disabling platform extensions. +@@ -536,7 +536,7 @@ void GpuInit::InitializeInProcess(base::CommandLine* c +       } +     } +   } +-#endif  // defined(OS_LINUX) ++#endif  // defined(OS_LINUX) || defined(OS_BSD) +  +   if (use_swiftshader) { +     AdjustInfoToSwiftShader(); diff --git a/devel/electron6/files/patch-gpu_ipc_service_gpu__memory__buffer__factory.cc b/devel/electron6/files/patch-gpu_ipc_service_gpu__memory__buffer__factory.cc new file mode 100644 index 000000000000..574aed1b1bab --- /dev/null +++ b/devel/electron6/files/patch-gpu_ipc_service_gpu__memory__buffer__factory.cc @@ -0,0 +1,20 @@ +--- gpu/ipc/service/gpu_memory_buffer_factory.cc.orig	2019-09-10 11:14:06 UTC ++++ gpu/ipc/service/gpu_memory_buffer_factory.cc +@@ -12,7 +12,7 @@ + #include "gpu/ipc/service/gpu_memory_buffer_factory_io_surface.h" + #endif +  +-#if defined(OS_LINUX) || defined(OS_FUCHSIA) ++#if defined(OS_LINUX) || defined(OS_FUCHSIA) || defined(OS_BSD) + #include "gpu/ipc/service/gpu_memory_buffer_factory_native_pixmap.h" + #endif +  +@@ -34,7 +34,7 @@ GpuMemoryBufferFactory::CreateNativeType( +   return std::make_unique<GpuMemoryBufferFactoryIOSurface>(); + #elif defined(OS_ANDROID) +   return std::make_unique<GpuMemoryBufferFactoryAndroidHardwareBuffer>(); +-#elif defined(OS_LINUX) || defined(OS_FUCHSIA) ++#elif defined(OS_LINUX) || defined(OS_FUCHSIA) || defined(OS_BSD) +   return std::make_unique<GpuMemoryBufferFactoryNativePixmap>( +       vulkan_context_provider); + #elif defined(OS_WIN) diff --git a/devel/electron6/files/patch-gpu_ipc_service_gpu__watchdog__thread.cc b/devel/electron6/files/patch-gpu_ipc_service_gpu__watchdog__thread.cc new file mode 100644 index 000000000000..c6fb5c866db4 --- /dev/null +++ b/devel/electron6/files/patch-gpu_ipc_service_gpu__watchdog__thread.cc @@ -0,0 +1,73 @@ +--- gpu/ipc/service/gpu_watchdog_thread.cc.orig	2019-09-10 11:14:06 UTC ++++ gpu/ipc/service/gpu_watchdog_thread.cc +@@ -55,8 +55,10 @@ const int kGpuTimeout = 10000; + #endif +  + #if defined(USE_X11) ++#if !defined(OS_BSD) + const base::FilePath::CharType kTtyFilePath[] = +     FILE_PATH_LITERAL("/sys/class/tty/tty0/active"); ++#endif + const unsigned char text[20] = "check"; + #endif +  +@@ -79,8 +81,10 @@ GpuWatchdogThread::GpuWatchdogThread() +       display_(nullptr), +       window_(0), +       atom_(x11::None), ++#if !defined(OS_BSD) +       host_tty_(-1), + #endif ++#endif +       weak_factory_(this) { +   base::subtle::NoBarrier_Store(&awaiting_acknowledge_, false); +  +@@ -95,7 +99,9 @@ GpuWatchdogThread::GpuWatchdogThread() + #endif +  + #if defined(USE_X11) ++#if !defined(OS_BSD) +   tty_file_ = base::OpenFile(base::FilePath(kTtyFilePath), "r"); ++#endif +   SetupXServer(); + #endif +   base::MessageLoopCurrent::Get()->AddTaskObserver(&task_observer_); +@@ -231,8 +237,10 @@ GpuWatchdogThread::~GpuWatchdogThread() { +     power_monitor->RemoveObserver(this); +  + #if defined(USE_X11) ++#if !defined(OS_BSD) +   if (tty_file_) +     fclose(tty_file_); ++#endif +   if (display_) { +     DCHECK(window_); +     XDestroyWindow(display_, window_); +@@ -436,7 +444,7 @@ void GpuWatchdogThread::DeliberatelyTerminateToRecover +     return; + #endif +  +-#if defined(USE_X11) ++#if defined(USE_X11) && !defined(OS_BSD) +   // Don't crash if we're not on the TTY of our host X11 server. +   int active_tty = GetActiveTTY(); +   if (host_tty_ != -1 && active_tty != -1 && host_tty_ != active_tty) { +@@ -510,7 +518,9 @@ void GpuWatchdogThread::SetupXServer() { +                       CopyFromParent, InputOutput, CopyFromParent, 0, nullptr); +     atom_ = XInternAtom(display_, "CHECK", x11::False); +   } ++#if !defined(OS_BSD) +   host_tty_ = GetActiveTTY(); ++#endif + } +  + void GpuWatchdogThread::SetupXChangeProp() { +@@ -611,7 +621,7 @@ base::ThreadTicks GpuWatchdogThread::GetWatchedThreadT + } + #endif +  +-#if defined(USE_X11) ++#if defined(USE_X11) && !defined(OS_BSD) + int GpuWatchdogThread::GetActiveTTY() const { +   char tty_string[8] = {0}; +   if (tty_file_ && !fseek(tty_file_, 0, SEEK_SET) && diff --git a/devel/electron6/files/patch-gpu_ipc_service_gpu__watchdog__thread.h b/devel/electron6/files/patch-gpu_ipc_service_gpu__watchdog__thread.h new file mode 100644 index 000000000000..8416d81bacdb --- /dev/null +++ b/devel/electron6/files/patch-gpu_ipc_service_gpu__watchdog__thread.h @@ -0,0 +1,13 @@ +--- gpu/ipc/service/gpu_watchdog_thread.h.orig	2019-09-10 11:14:06 UTC ++++ gpu/ipc/service/gpu_watchdog_thread.h +@@ -191,8 +191,10 @@ class GPU_IPC_SERVICE_EXPORT GpuWatchdogThread : publi +   XDisplay* display_; +   gfx::AcceleratedWidget window_; +   XAtom atom_; ++#if !defined(OS_BSD) +   FILE* tty_file_; +   int host_tty_; ++#endif + #endif +  +   base::RepeatingClosure alternative_terminate_for_testing_; diff --git a/devel/electron6/files/patch-gpu_vulkan_vulkan__function__pointers.cc b/devel/electron6/files/patch-gpu_vulkan_vulkan__function__pointers.cc new file mode 100644 index 000000000000..ee830954c843 --- /dev/null +++ b/devel/electron6/files/patch-gpu_vulkan_vulkan__function__pointers.cc @@ -0,0 +1,20 @@ +--- gpu/vulkan/vulkan_function_pointers.cc.orig	2019-09-10 11:14:06 UTC ++++ gpu/vulkan/vulkan_function_pointers.cc +@@ -352,7 +352,7 @@ bool VulkanFunctionPointers::BindDeviceFunctionPointer +  + #endif +  +-#if defined(OS_LINUX) || defined(OS_ANDROID) ++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD) +  +   vkGetSemaphoreFdKHRFn = reinterpret_cast<PFN_vkGetSemaphoreFdKHR>( +       vkGetDeviceProcAddrFn(vk_device, "vkGetSemaphoreFdKHR")); +@@ -366,7 +366,7 @@ bool VulkanFunctionPointers::BindDeviceFunctionPointer +  + #endif +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +  +   vkGetMemoryFdKHRFn = reinterpret_cast<PFN_vkGetMemoryFdKHR>( +       vkGetDeviceProcAddrFn(vk_device, "vkGetMemoryFdKHR")); diff --git a/devel/electron6/files/patch-gpu_vulkan_vulkan__function__pointers.h b/devel/electron6/files/patch-gpu_vulkan_vulkan__function__pointers.h new file mode 100644 index 000000000000..2b5084028891 --- /dev/null +++ b/devel/electron6/files/patch-gpu_vulkan_vulkan__function__pointers.h @@ -0,0 +1,35 @@ +--- gpu/vulkan/vulkan_function_pointers.h.orig	2019-09-10 11:14:06 UTC ++++ gpu/vulkan/vulkan_function_pointers.h +@@ -145,13 +145,13 @@ struct VulkanFunctionPointers { + #endif +  +   // Device functions shared between Linux and Android. +-#if defined(OS_LINUX) || defined(OS_ANDROID) ++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD) +   PFN_vkGetSemaphoreFdKHR vkGetSemaphoreFdKHRFn = nullptr; +   PFN_vkImportSemaphoreFdKHR vkImportSemaphoreFdKHRFn = nullptr; + #endif +  +   // Linux-only device functions. +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   PFN_vkGetMemoryFdKHR vkGetMemoryFdKHRFn = nullptr; + #endif +  +@@ -313,14 +313,14 @@ struct VulkanFunctionPointers { +       ->vkGetAndroidHardwareBufferPropertiesANDROIDFn + #endif +  +-#if defined(OS_LINUX) || defined(OS_ANDROID) ++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD) + #define vkGetSemaphoreFdKHR \ +   gpu::GetVulkanFunctionPointers()->vkGetSemaphoreFdKHRFn + #define vkImportSemaphoreFdKHR \ +   gpu::GetVulkanFunctionPointers()->vkImportSemaphoreFdKHRFn + #endif +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + #define vkGetMemoryFdKHR gpu::GetVulkanFunctionPointers()->vkGetMemoryFdKHRFn + #endif +  diff --git a/devel/electron6/files/patch-headless_lib_browser_headless__content__browser__client.cc b/devel/electron6/files/patch-headless_lib_browser_headless__content__browser__client.cc new file mode 100644 index 000000000000..1b94a3d60c54 --- /dev/null +++ b/devel/electron6/files/patch-headless_lib_browser_headless__content__browser__client.cc @@ -0,0 +1,20 @@ +--- headless/lib/browser/headless_content_browser_client.cc.orig	2019-09-10 11:14:06 UTC ++++ headless/lib/browser/headless_content_browser_client.cc +@@ -178,7 +178,7 @@ HeadlessContentBrowserClient::GetGeneratedCodeCacheSet +   return content::GeneratedCodeCacheSettings(true, 0, context->GetPath()); + } +  +-#if defined(OS_POSIX) && !defined(OS_MACOSX) ++#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_BSD) + void HeadlessContentBrowserClient::GetAdditionalMappedFilesForChildProcess( +     const base::CommandLine& command_line, +     int child_process_id, +@@ -189,7 +189,7 @@ void HeadlessContentBrowserClient::GetAdditionalMapped +     mappings->Share(service_manager::kCrashDumpSignal, crash_signal_fd); + #endif  // defined(HEADLESS_USE_BREAKPAD) + } +-#endif  // defined(OS_POSIX) && !defined(OS_MACOSX) ++#endif  // defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_BSD) +  + void HeadlessContentBrowserClient::AppendExtraCommandLineSwitches( +     base::CommandLine* command_line, diff --git a/devel/electron6/files/patch-headless_lib_browser_headless__content__browser__client.h b/devel/electron6/files/patch-headless_lib_browser_headless__content__browser__client.h new file mode 100644 index 000000000000..8237c3303ae2 --- /dev/null +++ b/devel/electron6/files/patch-headless_lib_browser_headless__content__browser__client.h @@ -0,0 +1,11 @@ +--- headless/lib/browser/headless_content_browser_client.h.orig	2019-09-10 11:14:06 UTC ++++ headless/lib/browser/headless_content_browser_client.h +@@ -36,7 +36,7 @@ class HeadlessContentBrowserClient : public content::C +       ::storage::OptionalQuotaSettingsCallback callback) override; +   content::GeneratedCodeCacheSettings GetGeneratedCodeCacheSettings( +       content::BrowserContext* context) override; +-#if defined(OS_POSIX) && !defined(OS_MACOSX) ++#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_BSD) +   void GetAdditionalMappedFilesForChildProcess( +       const base::CommandLine& command_line, +       int child_process_id, diff --git a/devel/electron6/files/patch-headless_lib_browser_headless__request__context__manager.cc b/devel/electron6/files/patch-headless_lib_browser_headless__request__context__manager.cc new file mode 100644 index 000000000000..6c3c63d6b4db --- /dev/null +++ b/devel/electron6/files/patch-headless_lib_browser_headless__request__context__manager.cc @@ -0,0 +1,38 @@ +--- headless/lib/browser/headless_request_context_manager.cc.orig	2019-09-10 11:14:06 UTC ++++ headless/lib/browser/headless_request_context_manager.cc +@@ -34,7 +34,7 @@ namespace headless { +  + namespace { +  +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) + static char kProductName[] = "HeadlessChrome"; + #endif +  +@@ -80,7 +80,7 @@ net::NetworkTrafficAnnotationTag GetProxyConfigTraffic +   return traffic_annotation; + } +  +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) + ::network::mojom::CryptConfigPtr BuildCryptConfigOnce( +     const base::FilePath& user_data_path) { +   static bool done_once = false; +@@ -289,7 +289,7 @@ HeadlessRequestContextManager::HeadlessRequestContextM +     proxy_config_monitor_ = +         std::make_unique<HeadlessProxyConfigMonitor>(proxy_monitor_task_runner); +   } +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) +   crypt_config_ = BuildCryptConfigOnce(user_data_path_); +   if (network_service_enabled_ && crypt_config_) +     content::GetNetworkService()->SetCryptConfig(std::move(crypt_config_)); +@@ -365,7 +365,7 @@ void HeadlessRequestContextManager::InitializeOnIO() { +                                   std::move(protocol_handler.second)); +     } +     protocol_handlers_.clear(); +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) +     if (crypt_config_) { +       content::GetNetworkServiceImpl()->SetCryptConfig( +           std::move(crypt_config_)); diff --git a/devel/electron6/files/patch-headless_lib_browser_headless__request__context__manager.h b/devel/electron6/files/patch-headless_lib_browser_headless__request__context__manager.h new file mode 100644 index 000000000000..e4985826afcc --- /dev/null +++ b/devel/electron6/files/patch-headless_lib_browser_headless__request__context__manager.h @@ -0,0 +1,11 @@ +--- headless/lib/browser/headless_request_context_manager.h.orig	2019-09-10 11:14:06 UTC ++++ headless/lib/browser/headless_request_context_manager.h +@@ -69,7 +69,7 @@ class HeadlessRequestContextManager { +   std::unique_ptr<HeadlessProxyConfigMonitor> proxy_config_monitor_; +   bool is_system_context_; +  +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) +   ::network::mojom::CryptConfigPtr crypt_config_; + #endif +  diff --git a/devel/electron6/files/patch-headless_lib_headless__macros.h b/devel/electron6/files/patch-headless_lib_headless__macros.h new file mode 100644 index 000000000000..09f0e4ab692a --- /dev/null +++ b/devel/electron6/files/patch-headless_lib_headless__macros.h @@ -0,0 +1,13 @@ +--- headless/lib/headless_macros.h.orig	2019-09-10 10:42:38 UTC ++++ headless/lib/headless_macros.h +@@ -7,8 +7,8 @@ +  + #include "build/build_config.h" +  +-#if defined(OS_POSIX) && !defined(OS_MACOSX) ++#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_BSD) + #define HEADLESS_USE_BREAKPAD +-#endif  // defined(OS_POSIX) && !defined(OS_MACOSX) ++#endif  // defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_BSD) +  + #endif  // HEADLESS_LIB_HEADLESS_MACROS_H_ diff --git a/devel/electron6/files/patch-ipc_ipc__channel.h b/devel/electron6/files/patch-ipc_ipc__channel.h new file mode 100644 index 000000000000..17587139f79f --- /dev/null +++ b/devel/electron6/files/patch-ipc_ipc__channel.h @@ -0,0 +1,11 @@ +--- ipc/ipc_channel.h.orig	2019-09-10 11:14:07 UTC ++++ ipc/ipc_channel.h +@@ -245,7 +245,7 @@ class COMPONENT_EXPORT(IPC) Channel : public Sender { +   static std::string GenerateUniqueRandomChannelID(); + #endif +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   // Sandboxed processes live in a PID namespace, so when sending the IPC hello +   // message from client to server we need to send the PID from the global +   // PID namespace. diff --git a/devel/electron6/files/patch-ipc_ipc__channel__common.cc b/devel/electron6/files/patch-ipc_ipc__channel__common.cc new file mode 100644 index 000000000000..88b5ae47bcd7 --- /dev/null +++ b/devel/electron6/files/patch-ipc_ipc__channel__common.cc @@ -0,0 +1,20 @@ +--- ipc/ipc_channel_common.cc.orig	2019-09-10 10:42:39 UTC ++++ ipc/ipc_channel_common.cc +@@ -9,7 +9,7 @@ +  + namespace IPC { +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +  + namespace { + int g_global_pid = 0; +@@ -25,7 +25,7 @@ int Channel::GetGlobalPid() { +   return g_global_pid; + } +  +-#endif  // defined(OS_LINUX) ++#endif  // defined(OS_LINUX) || defined(OS_BSD) +  + // static + std::unique_ptr<Channel> Channel::CreateClient( diff --git a/devel/electron6/files/patch-ipc_ipc__channel__mojo.cc b/devel/electron6/files/patch-ipc_ipc__channel__mojo.cc new file mode 100644 index 000000000000..5047f69f2c01 --- /dev/null +++ b/devel/electron6/files/patch-ipc_ipc__channel__mojo.cc @@ -0,0 +1,15 @@ +--- ipc/ipc_channel_mojo.cc.orig	2019-09-10 11:14:07 UTC ++++ ipc/ipc_channel_mojo.cc +@@ -64,10 +64,10 @@ class MojoChannelFactory : public ChannelFactory { + }; +  + base::ProcessId GetSelfPID() { +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   if (int global_pid = Channel::GetGlobalPid()) +     return global_pid; +-#endif  // OS_LINUX ++#endif  // OS_LINUX || OS_BSD + #if defined(OS_NACL) +   return -1; + #else diff --git a/devel/electron6/files/patch-ipc_ipc__message__utils.cc b/devel/electron6/files/patch-ipc_ipc__message__utils.cc new file mode 100644 index 000000000000..dccda04e2203 --- /dev/null +++ b/devel/electron6/files/patch-ipc_ipc__message__utils.cc @@ -0,0 +1,11 @@ +--- ipc/ipc_message_utils.cc.orig	2019-09-10 11:14:07 UTC ++++ ipc/ipc_message_utils.cc +@@ -355,7 +355,7 @@ void ParamTraits<unsigned int>::Log(const param_type&  +   l->append(base::NumberToString(p)); + } +  +-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_FUCHSIA) || \ ++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_FUCHSIA) || defined(OS_BSD) || \ +     (defined(OS_ANDROID) && defined(ARCH_CPU_64_BITS)) + void ParamTraits<long>::Log(const param_type& p, std::string* l) { +   l->append(base::NumberToString(p)); diff --git a/devel/electron6/files/patch-ipc_ipc__message__utils.h b/devel/electron6/files/patch-ipc_ipc__message__utils.h new file mode 100644 index 000000000000..91ba29968db0 --- /dev/null +++ b/devel/electron6/files/patch-ipc_ipc__message__utils.h @@ -0,0 +1,11 @@ +--- ipc/ipc_message_utils.h.orig	2019-09-10 11:14:07 UTC ++++ ipc/ipc_message_utils.h +@@ -205,7 +205,7 @@ struct ParamTraits<unsigned int> { + //   3) Android 64 bit and Fuchsia also have int64_t typedef'd to long. + // Since we want to support Android 32<>64 bit IPC, as long as we don't have + // these traits for 32 bit ARM then that'll catch any errors. +-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_FUCHSIA) || \ ++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_FUCHSIA) || defined(OS_BSD) || \ +     (defined(OS_ANDROID) && defined(ARCH_CPU_64_BITS)) + template <> + struct ParamTraits<long> { diff --git a/devel/electron6/files/patch-media_BUILD.gn b/devel/electron6/files/patch-media_BUILD.gn new file mode 100644 index 000000000000..bffbc2de216b --- /dev/null +++ b/devel/electron6/files/patch-media_BUILD.gn @@ -0,0 +1,12 @@ +--- media/BUILD.gn.orig	2019-09-10 11:14:07 UTC ++++ media/BUILD.gn +@@ -60,6 +60,9 @@ config("media_config") { +       defines += [ "DLOPEN_PULSEAUDIO" ] +     } +   } ++  if (use_sndio) { ++    defines += [ "USE_SNDIO" ] ++  } +   if (use_cras) { +     defines += [ "USE_CRAS" ] +   } diff --git a/devel/electron6/files/patch-media_audio_BUILD.gn b/devel/electron6/files/patch-media_audio_BUILD.gn new file mode 100644 index 000000000000..eadbab1ea2ba --- /dev/null +++ b/devel/electron6/files/patch-media_audio_BUILD.gn @@ -0,0 +1,22 @@ +--- media/audio/BUILD.gn.orig	2019-09-16 09:24:24 UTC ++++ media/audio/BUILD.gn +@@ -242,8 +242,18 @@ source_set("audio") { +     deps += [ "//media/base/android:media_jni_headers" ] +   } +  +-  if (is_linux) { ++  if (is_linux && !use_sndio) { +     sources += [ "linux/audio_manager_linux.cc" ] ++  } ++  if (use_sndio) { ++    libs += [ "sndio" ] ++    sources += [ ++      "openbsd/audio_manager_openbsd.cc", ++      "sndio/sndio_input.cc", ++      "sndio/sndio_input.h", ++      "sndio/sndio_output.cc", ++      "sndio/sndio_output.h" ++    ] +   } +  +   if (use_alsa) { diff --git a/devel/electron6/files/patch-media_audio_alsa_audio__manager__alsa.cc b/devel/electron6/files/patch-media_audio_alsa_audio__manager__alsa.cc new file mode 100644 index 000000000000..ca54de3a7a91 --- /dev/null +++ b/devel/electron6/files/patch-media_audio_alsa_audio__manager__alsa.cc @@ -0,0 +1,54 @@ +--- media/audio/alsa/audio_manager_alsa.cc.orig	2019-09-10 10:42:39 UTC ++++ media/audio/alsa/audio_manager_alsa.cc +@@ -92,7 +92,9 @@ void AudioManagerAlsa::GetAlsaAudioDevices(StreamType  +   int card = -1; +  +   // Loop through the sound cards to get ALSA device hints. ++#if defined(OS_LINUX) +   while (!wrapper_->CardNext(&card) && card >= 0) { ++#endif +     void** hints = NULL; +     int error = wrapper_->DeviceNameHint(card, kPcmInterfaceName, &hints); +     if (!error) { +@@ -104,7 +106,9 @@ void AudioManagerAlsa::GetAlsaAudioDevices(StreamType  +       DLOG(WARNING) << "GetAlsaAudioDevices: unable to get device hints: " +                     << wrapper_->StrError(error); +     } ++#if defined(OS_LINUX) +   } ++#endif + } +  + void AudioManagerAlsa::GetAlsaDevicesInfo(AudioManagerAlsa::StreamType type, +@@ -187,7 +191,11 @@ bool AudioManagerAlsa::IsAlsaDeviceAvailable( +   // goes through software conversion if needed (e.g. incompatible +   // sample rate). +   // TODO(joi): Should we prefer "hw" instead? ++#ifdef OS_LINUX +   static const char kDeviceTypeDesired[] = "plughw"; ++#else ++  static const char kDeviceTypeDesired[] = "plug"; ++#endif +   return strncmp(kDeviceTypeDesired, device_name, +                  base::size(kDeviceTypeDesired) - 1) == 0; + } +@@ -209,7 +217,9 @@ bool AudioManagerAlsa::HasAnyAlsaAudioDevice( +   // Loop through the sound cards. +   // Don't use snd_device_name_hint(-1,..) since there is a access violation +   // inside this ALSA API with libasound.so.2.0.0. ++#if defined(OS_LINUX) +   while (!wrapper_->CardNext(&card) && (card >= 0) && !has_device) { ++#endif +     int error = wrapper_->DeviceNameHint(card, kPcmInterfaceName, &hints); +     if (!error) { +       for (void** hint_iter = hints; *hint_iter != NULL; hint_iter++) { +@@ -233,7 +243,9 @@ bool AudioManagerAlsa::HasAnyAlsaAudioDevice( +       DLOG(WARNING) << "HasAnyAudioDevice: unable to get device hints: " +                     << wrapper_->StrError(error); +     } ++#if defined(OS_LINUX) +   } ++#endif +  +   return has_device; + } diff --git a/devel/electron6/files/patch-media_audio_audio__input__device.cc b/devel/electron6/files/patch-media_audio_audio__input__device.cc new file mode 100644 index 000000000000..09ea602535aa --- /dev/null +++ b/devel/electron6/files/patch-media_audio_audio__input__device.cc @@ -0,0 +1,11 @@ +--- media/audio/audio_input_device.cc.orig	2019-09-10 11:14:07 UTC ++++ media/audio/audio_input_device.cc +@@ -248,7 +248,7 @@ void AudioInputDevice::OnStreamCreated( + // also a risk of false positives if we are suspending when starting the stream + // here. See comments in AliveChecker and PowerObserverHelper for details and + // todos. +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   const bool stop_at_first_alive_notification = true; +   const bool pause_check_during_suspend = false; + #else diff --git a/devel/electron6/files/patch-media_audio_audio__manager.cc b/devel/electron6/files/patch-media_audio_audio__manager.cc new file mode 100644 index 000000000000..a1c3ff9abd7b --- /dev/null +++ b/devel/electron6/files/patch-media_audio_audio__manager.cc @@ -0,0 +1,29 @@ +--- media/audio/audio_manager.cc.orig	2019-09-10 10:42:39 UTC ++++ media/audio/audio_manager.cc +@@ -48,7 +48,7 @@ class AudioManagerHelper { +   } + #endif +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   void set_app_name(const std::string& app_name) { app_name_ = app_name; } +   const std::string& app_name() const { return app_name_; } + #endif +@@ -59,7 +59,7 @@ class AudioManagerHelper { +   std::unique_ptr<base::win::ScopedCOMInitializer> com_initializer_for_testing_; + #endif +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   std::string app_name_; + #endif +  +@@ -128,7 +128,7 @@ std::unique_ptr<AudioManager> AudioManager::CreateForT +   return Create(std::move(audio_thread), GetHelper()->fake_log_factory()); + } +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + // static + void AudioManager::SetGlobalAppName(const std::string& app_name) { +   GetHelper()->set_app_name(app_name); diff --git a/devel/electron6/files/patch-media_audio_audio__manager.h b/devel/electron6/files/patch-media_audio_audio__manager.h new file mode 100644 index 000000000000..39ae6502deaf --- /dev/null +++ b/devel/electron6/files/patch-media_audio_audio__manager.h @@ -0,0 +1,11 @@ +--- media/audio/audio_manager.h.orig	2019-09-10 10:42:39 UTC ++++ media/audio/audio_manager.h +@@ -60,7 +60,7 @@ class MEDIA_EXPORT AudioManager { +   static std::unique_ptr<AudioManager> CreateForTesting( +       std::unique_ptr<AudioThread> audio_thread); +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   // Sets the name of the audio source as seen by external apps. Only actually +   // used with PulseAudio as of this writing. +   static void SetGlobalAppName(const std::string& app_name); diff --git a/devel/electron6/files/patch-media_audio_audio__output__proxy__unittest.cc b/devel/electron6/files/patch-media_audio_audio__output__proxy__unittest.cc new file mode 100644 index 000000000000..68cf84e93d15 --- /dev/null +++ b/devel/electron6/files/patch-media_audio_audio__output__proxy__unittest.cc @@ -0,0 +1,11 @@ +--- media/audio/audio_output_proxy_unittest.cc.orig	2019-09-10 11:14:07 UTC ++++ media/audio/audio_output_proxy_unittest.cc +@@ -412,7 +412,7 @@ class AudioOutputProxyTest : public testing::Test { +     // |stream| is closed at this point. Start() should reopen it again. +     EXPECT_CALL(manager(), MakeAudioOutputStream(_, _, _)) +         .Times(2) +-        .WillRepeatedly(Return(reinterpret_cast<AudioOutputStream*>(NULL))); ++        .WillRepeatedly(Return(static_cast<AudioOutputStream*>(NULL))); +  +     EXPECT_CALL(callback_, OnError()).Times(2); +  diff --git a/devel/electron6/files/patch-media_audio_pulse_pulse.sigs b/devel/electron6/files/patch-media_audio_pulse_pulse.sigs new file mode 100644 index 000000000000..11c6213d55fc --- /dev/null +++ b/devel/electron6/files/patch-media_audio_pulse_pulse.sigs @@ -0,0 +1,46 @@ +--- media/audio/pulse/pulse.sigs.orig	2019-09-10 10:42:39 UTC ++++ media/audio/pulse/pulse.sigs +@@ -24,11 +24,11 @@ pa_operation* pa_context_get_source_info_by_index(pa_c + pa_operation* pa_context_get_source_info_by_name(pa_context* c, const char* name, pa_source_info_cb_t cb, void *userdata); + pa_operation* pa_context_get_source_info_list(pa_context* c, pa_source_info_cb_t cb, void* userdata); + pa_operation* pa_context_get_sink_info_list(pa_context* c, pa_sink_info_cb_t cb, void* userdata); +-pa_context_state_t pa_context_get_state(pa_context* c); ++pa_context_state_t pa_context_get_state(const pa_context *c); + pa_context* pa_context_new(pa_mainloop_api* mainloop, const char* name); + pa_operation* pa_context_set_source_volume_by_index(pa_context* c, uint32_t idx, const pa_cvolume* volume, pa_context_success_cb_t cb, void* userdata); + void pa_context_set_state_callback(pa_context* c, pa_context_notify_cb_t cb, void* userdata); +-pa_operation_state_t pa_operation_get_state(pa_operation* o); ++pa_operation_state_t pa_operation_get_state(const pa_operation* o); + void pa_context_unref(pa_context* c); + void pa_operation_unref(pa_operation* o); + int pa_stream_begin_write(pa_stream* p, void** data, size_t* nbytes); +@@ -38,23 +38,23 @@ pa_operation* pa_stream_cork(pa_stream* s, int b, pa_s + int pa_stream_disconnect(pa_stream* s); + int pa_stream_drop(pa_stream *p); + pa_operation* pa_stream_flush(pa_stream* s, pa_stream_success_cb_t cb, void* userdata); +-uint32_t pa_stream_get_device_index(pa_stream* s); ++uint32_t pa_stream_get_device_index(const pa_stream* s); + int pa_stream_get_latency(pa_stream* s, pa_usec_t* r_usec, int* negative); +-pa_stream_state_t pa_stream_get_state(pa_stream* p); ++pa_stream_state_t pa_stream_get_state(const pa_stream* p); + pa_stream* pa_stream_new(pa_context*  c, const char*  name, const pa_sample_spec*  ss, const pa_channel_map *  map); + pa_stream* pa_stream_new_with_proplist(pa_context* c, const char* name, const pa_sample_spec* ss, const pa_channel_map* map, pa_proplist* p); + pa_proplist* pa_proplist_new(void); +-int pa_proplist_contains(pa_proplist* p, const char* key); ++int pa_proplist_contains(const pa_proplist* p, const char* key); + void pa_proplist_free(pa_proplist* p); +-const char* pa_proplist_gets(pa_proplist* p, const char* key); ++const char* pa_proplist_gets(const pa_proplist* p, const char* key); + int pa_proplist_sets(pa_proplist* p, const char* key, const char* value); +-size_t pa_stream_readable_size(pa_stream *p); ++size_t pa_stream_readable_size(const pa_stream *p); + int pa_stream_peek(pa_stream* p, const void** data, size_t* nbytes); + void pa_stream_set_read_callback(pa_stream* p, pa_stream_request_cb_t cb, void* userdata); + void pa_stream_set_state_callback(pa_stream* s, pa_stream_notify_cb_t cb, void* userdata); + int pa_stream_write(pa_stream* p, const void* data, size_t nbytes, pa_free_cb_t free_cb, int64_t offset, pa_seek_mode_t seek); + void pa_stream_set_write_callback(pa_stream *p, pa_stream_request_cb_t cb, void *userdata); + void pa_stream_unref(pa_stream* s); +-int pa_context_errno(pa_context *c); ++int pa_context_errno(const pa_context *c); + const char* pa_strerror(int error); + pa_cvolume* pa_cvolume_set(pa_cvolume* a, unsigned  channels, pa_volume_t v); diff --git a/devel/electron6/files/patch-media_base_audio__latency.cc b/devel/electron6/files/patch-media_base_audio__latency.cc new file mode 100644 index 000000000000..dd0ffda791c3 --- /dev/null +++ b/devel/electron6/files/patch-media_base_audio__latency.cc @@ -0,0 +1,11 @@ +--- media/base/audio_latency.cc.orig	2019-09-10 10:42:39 UTC ++++ media/base/audio_latency.cc +@@ -106,7 +106,7 @@ int AudioLatency::GetRtcBufferSize(int sample_rate, in +     return frames_per_buffer; +   } +  +-#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_FUCHSIA) ++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_FUCHSIA) || defined(OS_BSD) +   // On Linux, MacOS and Fuchsia, the low level IO implementations on the +   // browser side supports all buffer size the clients want. We use the native +   // peer connection buffer size (10ms) to achieve best possible performance. diff --git a/devel/electron6/files/patch-media_base_scopedfd__helper.h b/devel/electron6/files/patch-media_base_scopedfd__helper.h new file mode 100644 index 000000000000..00afd606a053 --- /dev/null +++ b/devel/electron6/files/patch-media_base_scopedfd__helper.h @@ -0,0 +1,19 @@ +--- media/base/scopedfd_helper.h.orig	2019-09-10 11:14:07 UTC ++++ media/base/scopedfd_helper.h +@@ -14,14 +14,14 @@ namespace media { + // since the only current user is V4L2 we are limiting the scope to OS_LINUX so + // the binary size does not inflate on non-using systems. Feel free to adapt + // this and BUILD.gn as our needs evolve. +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +  + // Return a new vector containing duplicates of |fds|, or an empty vector in + // case of error. + MEDIA_EXPORT std::vector<base::ScopedFD> DuplicateFDs( +     const std::vector<base::ScopedFD>& fds); +  +-#endif  // OS_LINUX ++#endif  // OS_LINUX || OS_BSD +  + }  // namespace media +  diff --git a/devel/electron6/files/patch-media_base_video__frame.cc b/devel/electron6/files/patch-media_base_video__frame.cc new file mode 100644 index 000000000000..939baf50ecc6 --- /dev/null +++ b/devel/electron6/files/patch-media_base_video__frame.cc @@ -0,0 +1,47 @@ +--- media/base/video_frame.cc.orig	2019-09-10 11:14:07 UTC ++++ media/base/video_frame.cc +@@ -53,7 +53,7 @@ static std::string StorageTypeToString( +       return "OWNED_MEMORY"; +     case VideoFrame::STORAGE_SHMEM: +       return "SHMEM"; +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +     case VideoFrame::STORAGE_DMABUFS: +       return "DMABUFS"; + #endif +@@ -68,7 +68,7 @@ static std::string StorageTypeToString( + // static + bool VideoFrame::IsStorageTypeMappable(VideoFrame::StorageType storage_type) { +   return +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +       // This is not strictly needed but makes explicit that, at VideoFrame +       // level, DmaBufs are not mappable from userspace. +       storage_type != VideoFrame::STORAGE_DMABUFS && +@@ -495,7 +495,7 @@ scoped_refptr<VideoFrame> VideoFrame::WrapExternalYuva +   return frame; + } +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + // static + scoped_refptr<VideoFrame> VideoFrame::WrapExternalDmabufs( +     const VideoFrameLayout& layout, +@@ -626,7 +626,7 @@ scoped_refptr<VideoFrame> VideoFrame::WrapVideoFrame( +     } +   } +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   // If there are any |dmabuf_fds_| plugged in, we should duplicate them. +   if (frame.storage_type() == STORAGE_DMABUFS) { +     wrapping_frame->dmabuf_fds_ = DuplicateFDs(frame.dmabuf_fds_); +@@ -950,7 +950,7 @@ size_t VideoFrame::shared_memory_offset() const { +   return shared_memory_offset_; + } +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + const std::vector<base::ScopedFD>& VideoFrame::DmabufFds() const { +   DCHECK_EQ(storage_type_, STORAGE_DMABUFS); +  diff --git a/devel/electron6/files/patch-media_base_video__frame.h b/devel/electron6/files/patch-media_base_video__frame.h new file mode 100644 index 000000000000..7a5160bcc8eb --- /dev/null +++ b/devel/electron6/files/patch-media_base_video__frame.h @@ -0,0 +1,38 @@ +--- media/base/video_frame.h.orig	2019-09-10 11:14:07 UTC ++++ media/base/video_frame.h +@@ -74,7 +74,7 @@ class MEDIA_EXPORT VideoFrame : public base::RefCounte +     STORAGE_UNOWNED_MEMORY = 2,  // External, non owned data pointers. +     STORAGE_OWNED_MEMORY = 3,  // VideoFrame has allocated its own data buffer. +     STORAGE_SHMEM = 4,         // Pixels are backed by Shared Memory. +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +     // TODO(mcasas): Consider turning this type into STORAGE_NATIVE +     // based on the idea of using this same enum value for both DMA +     // buffers on Linux and CVPixelBuffers on Mac (which currently use +@@ -268,7 +268,7 @@ class MEDIA_EXPORT VideoFrame : public base::RefCounte +       uint8_t* a_data, +       base::TimeDelta timestamp); +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   // Wraps provided dmabufs +   // (https://www.kernel.org/doc/html/latest/driver-api/dma-buf.html) with a +   // VideoFrame. The frame will take ownership of |dmabuf_fds|, and will +@@ -464,7 +464,7 @@ class MEDIA_EXPORT VideoFrame : public base::RefCounte +   // Returns the offset into the shared memory where the frame data begins. +   size_t shared_memory_offset() const; +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   // Returns a vector containing the backing DmaBufs for this frame. The number +   // of returned DmaBufs will be equal or less than the number of planes of +   // the frame. If there are less, this means that the last FD contains the +@@ -663,7 +663,7 @@ class MEDIA_EXPORT VideoFrame : public base::RefCounte +   // memory. +   size_t shared_memory_offset_; +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   // Dmabufs for the frame, used when storage is STORAGE_DMABUFS. Size is either +   // equal or less than the number of planes of the frame. If it is less, then +   // the memory area represented by the last FD contains the remaining planes. diff --git a/devel/electron6/files/patch-media_capture_video_create__video__capture__device__factory.cc b/devel/electron6/files/patch-media_capture_video_create__video__capture__device__factory.cc new file mode 100644 index 000000000000..f376c63293a8 --- /dev/null +++ b/devel/electron6/files/patch-media_capture_video_create__video__capture__device__factory.cc @@ -0,0 +1,20 @@ +--- media/capture/video/create_video_capture_device_factory.cc.orig	2019-09-10 11:14:08 UTC ++++ media/capture/video/create_video_capture_device_factory.cc +@@ -10,7 +10,7 @@ + #include "media/capture/video/fake_video_capture_device_factory.h" + #include "media/capture/video/file_video_capture_device_factory.h" +  +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) + #include "media/capture/video/linux/video_capture_device_factory_linux.h" + #elif defined(OS_CHROMEOS) + #include "media/capture/video/chromeos/public/cros_features.h" +@@ -33,7 +33,7 @@ namespace { + std::unique_ptr<VideoCaptureDeviceFactory> + CreatePlatformSpecificVideoCaptureDeviceFactory( +     scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner) { +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) +   return std::make_unique<VideoCaptureDeviceFactoryLinux>(ui_task_runner); + #elif defined(OS_CHROMEOS) +   // On Chrome OS we have to support two use cases: diff --git a/devel/electron6/files/patch-media_capture_video_fake__video__capture__device__factory.cc b/devel/electron6/files/patch-media_capture_video_fake__video__capture__device__factory.cc new file mode 100644 index 000000000000..401cc0a40f7b --- /dev/null +++ b/devel/electron6/files/patch-media_capture_video_fake__video__capture__device__factory.cc @@ -0,0 +1,11 @@ +--- media/capture/video/fake_video_capture_device_factory.cc.orig	2019-09-10 11:14:08 UTC ++++ media/capture/video/fake_video_capture_device_factory.cc +@@ -202,7 +202,7 @@ void FakeVideoCaptureDeviceFactory::GetDeviceDescripto +   for (const auto& entry : devices_config_) { +     device_descriptors->emplace_back( +         base::StringPrintf("fake_device_%d", entry_index), entry.device_id, +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +         VideoCaptureApi::LINUX_V4L2_SINGLE_PLANE + #elif defined(OS_MACOSX) +         VideoCaptureApi::MACOSX_AVFOUNDATION diff --git a/devel/electron6/files/patch-media_capture_video_file__video__capture__device__factory.cc b/devel/electron6/files/patch-media_capture_video_file__video__capture__device__factory.cc new file mode 100644 index 000000000000..f945710bd63a --- /dev/null +++ b/devel/electron6/files/patch-media_capture_video_file__video__capture__device__factory.cc @@ -0,0 +1,11 @@ +--- media/capture/video/file_video_capture_device_factory.cc.orig	2019-09-10 10:42:40 UTC ++++ media/capture/video/file_video_capture_device_factory.cc +@@ -54,7 +54,7 @@ void FileVideoCaptureDeviceFactory::GetDeviceDescripto + #elif defined(OS_MACOSX) +       command_line_file_path.value(), kFileVideoCaptureDeviceName, +       VideoCaptureApi::MACOSX_AVFOUNDATION +-#elif defined(OS_LINUX) ++#elif defined(OS_LINUX) || defined(OS_BSD) +       command_line_file_path.value(), kFileVideoCaptureDeviceName, +       VideoCaptureApi::LINUX_V4L2_SINGLE_PLANE + #else diff --git a/devel/electron6/files/patch-media_capture_video_linux_v4l2__capture__delegate.cc b/devel/electron6/files/patch-media_capture_video_linux_v4l2__capture__delegate.cc new file mode 100644 index 000000000000..10f10b7eda2c --- /dev/null +++ b/devel/electron6/files/patch-media_capture_video_linux_v4l2__capture__delegate.cc @@ -0,0 +1,26 @@ +--- media/capture/video/linux/v4l2_capture_delegate.cc.orig	2019-09-10 11:14:08 UTC ++++ media/capture/video/linux/v4l2_capture_delegate.cc +@@ -4,8 +4,10 @@ +  + #include "media/capture/video/linux/v4l2_capture_delegate.h" +  ++#if !defined(OS_BSD) + #include <linux/version.h> + #include <linux/videodev2.h> ++#endif + #include <poll.h> + #include <sys/fcntl.h> + #include <sys/ioctl.h> +@@ -24,10 +26,10 @@ +  + using media::mojom::MeteringMode; +  +-#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 6, 0) ++// #if LINUX_VERSION_CODE < KERNEL_VERSION(4, 6, 0) + // 16 bit depth, Realsense F200. + #define V4L2_PIX_FMT_Z16 v4l2_fourcc('Z', '1', '6', ' ') +-#endif ++// #endif +  + // TODO(aleksandar.stojiljkovic): Wrap this with kernel version check once the + // format is introduced to kernel. diff --git a/devel/electron6/files/patch-media_capture_video_linux_video__capture__device__factory__linux.cc b/devel/electron6/files/patch-media_capture_video_linux_video__capture__device__factory__linux.cc new file mode 100644 index 000000000000..895a18d2d9e5 --- /dev/null +++ b/devel/electron6/files/patch-media_capture_video_linux_video__capture__device__factory__linux.cc @@ -0,0 +1,32 @@ +--- media/capture/video/linux/video_capture_device_factory_linux.cc.orig	2019-09-10 11:14:08 UTC ++++ media/capture/video/linux/video_capture_device_factory_linux.cc +@@ -259,6 +259,7 @@ bool VideoCaptureDeviceFactoryLinux::HasUsableFormats( +   if (!(capabilities & V4L2_CAP_VIDEO_CAPTURE)) +     return false; +  ++#if !defined(OS_FREEBSD) +   const std::vector<uint32_t>& usable_fourccs = +       VideoCaptureDeviceLinux::GetListOfUsableFourCCs(false); +   v4l2_fmtdesc fmtdesc = {}; +@@ -267,6 +268,7 @@ bool VideoCaptureDeviceFactoryLinux::HasUsableFormats( +     if (base::ContainsValue(usable_fourccs, fmtdesc.pixelformat)) +       return true; +   } ++#endif +  +   DVLOG(1) << "No usable formats found"; +   return false; +@@ -312,9 +314,13 @@ void VideoCaptureDeviceFactoryLinux::GetSupportedForma +   v4l2_format.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; +   for (; DoIoctl(fd, VIDIOC_ENUM_FMT, &v4l2_format) == 0; ++v4l2_format.index) { +     VideoCaptureFormat supported_format; ++#if !defined(OS_FREEBSD) +     supported_format.pixel_format = +         VideoCaptureDeviceLinux::V4l2FourCcToChromiumPixelFormat( +             v4l2_format.pixelformat); ++#else ++    supported_format.pixel_format = PIXEL_FORMAT_UNKNOWN; ++#endif +  +     if (supported_format.pixel_format == PIXEL_FORMAT_UNKNOWN) +       continue; diff --git a/devel/electron6/files/patch-media_capture_video_linux_video__capture__device__linux.cc b/devel/electron6/files/patch-media_capture_video_linux_video__capture__device__linux.cc new file mode 100644 index 000000000000..0009f51fe11b --- /dev/null +++ b/devel/electron6/files/patch-media_capture_video_linux_video__capture__device__linux.cc @@ -0,0 +1,61 @@ +--- media/capture/video/linux/video_capture_device_linux.cc.orig	2019-09-10 10:42:40 UTC ++++ media/capture/video/linux/video_capture_device_linux.cc +@@ -37,6 +37,7 @@ int TranslatePowerLineFrequencyToV4L2(PowerLineFrequen +  + }  // namespace +  ++#if !defined(OS_FREEBSD) + // Translates Video4Linux pixel formats to Chromium pixel formats. + // static + VideoPixelFormat VideoCaptureDeviceLinux::V4l2FourCcToChromiumPixelFormat( +@@ -50,6 +51,7 @@ std::vector<uint32_t> VideoCaptureDeviceLinux::GetList +     bool favour_mjpeg) { +   return V4L2CaptureDelegate::GetListOfUsableFourCcs(favour_mjpeg); + } ++#endif // !defined(OS_FREEBSD) +  + VideoCaptureDeviceLinux::VideoCaptureDeviceLinux( +     scoped_refptr<V4L2CaptureDevice> v4l2, +@@ -71,6 +73,7 @@ void VideoCaptureDeviceLinux::AllocateAndStart( +     const VideoCaptureParams& params, +     std::unique_ptr<VideoCaptureDevice::Client> client) { +   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); ++#if !defined(OS_FREEBSD) +   DCHECK(!capture_impl_); +   if (v4l2_thread_.IsRunning()) +     return;  // Wrong state. +@@ -98,10 +101,12 @@ void VideoCaptureDeviceLinux::AllocateAndStart( +   for (auto& request : photo_requests_queue_) +     v4l2_thread_.task_runner()->PostTask(FROM_HERE, std::move(request)); +   photo_requests_queue_.clear(); ++#endif // !defined(OS_FREEBSD) + } +  + void VideoCaptureDeviceLinux::StopAndDeAllocate() { +   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); ++#if !defined(OS_FREEBSD) +   if (!v4l2_thread_.IsRunning()) +     return;  // Wrong state. +   v4l2_thread_.task_runner()->PostTask( +@@ -111,6 +116,7 @@ void VideoCaptureDeviceLinux::StopAndDeAllocate() { +   v4l2_thread_.Stop(); +  +   capture_impl_ = nullptr; ++#endif // !defined(OS_FREEBSD) + } +  + void VideoCaptureDeviceLinux::TakePhoto(TakePhotoCallback callback) { +@@ -158,11 +164,13 @@ void VideoCaptureDeviceLinux::SetPhotoOptions( + void VideoCaptureDeviceLinux::SetRotation(int rotation) { +   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); +   rotation_ = rotation; ++#if !defined(OS_FREEBSD) +   if (v4l2_thread_.IsRunning()) { +     v4l2_thread_.task_runner()->PostTask( +         FROM_HERE, base::BindOnce(&V4L2CaptureDelegate::SetRotation, +                                   capture_impl_->GetWeakPtr(), rotation)); +   } ++#endif // !defined(OS_FREEBSD) + } +  + }  // namespace media diff --git a/devel/electron6/files/patch-media_capture_video_mock__gpu__memory__buffer__manager.cc b/devel/electron6/files/patch-media_capture_video_mock__gpu__memory__buffer__manager.cc new file mode 100644 index 000000000000..b0cab44ec6e3 --- /dev/null +++ b/devel/electron6/files/patch-media_capture_video_mock__gpu__memory__buffer__manager.cc @@ -0,0 +1,11 @@ +--- media/capture/video/mock_gpu_memory_buffer_manager.cc.orig	2019-09-10 10:42:40 UTC ++++ media/capture/video/mock_gpu_memory_buffer_manager.cc +@@ -115,7 +115,7 @@ class FakeGpuMemoryBuffer : public gfx::GpuMemoryBuffe +     gfx::GpuMemoryBufferHandle handle; +     handle.type = gfx::NATIVE_PIXMAP; +     handle.id = handle_.id; +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +     handle.native_pixmap_handle = +         gfx::CloneHandleForIPC(handle_.native_pixmap_handle); + #endif diff --git a/devel/electron6/files/patch-media_capture_video_shared__memory__handle__provider.cc b/devel/electron6/files/patch-media_capture_video_shared__memory__handle__provider.cc new file mode 100644 index 000000000000..758c0bf1d1ea --- /dev/null +++ b/devel/electron6/files/patch-media_capture_video_shared__memory__handle__provider.cc @@ -0,0 +1,20 @@ +--- media/capture/video/shared_memory_handle_provider.cc.orig	2019-09-10 11:14:08 UTC ++++ media/capture/video/shared_memory_handle_provider.cc +@@ -63,7 +63,7 @@ bool SharedMemoryHandleProvider::InitFromMojoHandle( +   return true; + } +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + bool SharedMemoryHandleProvider::InitAsReadOnlyFromRawFileDescriptor( +     mojo::ScopedHandle fd_handle, +     uint32_t memory_size_in_bytes) { +@@ -80,7 +80,7 @@ bool SharedMemoryHandleProvider::InitAsReadOnlyFromRaw +   shared_memory_.emplace(memory_handle, read_only_flag_); +   return true; + } +-#endif  // defined(OS_LINUX) ++#endif  // defined(OS_LINUX) || defined(OS_BSD) +  + mojo::ScopedSharedBufferHandle + SharedMemoryHandleProvider::GetHandleForInterProcessTransit(bool read_only) { diff --git a/devel/electron6/files/patch-media_capture_video_shared__memory__handle__provider.h b/devel/electron6/files/patch-media_capture_video_shared__memory__handle__provider.h new file mode 100644 index 000000000000..6702558c99e4 --- /dev/null +++ b/devel/electron6/files/patch-media_capture_video_shared__memory__handle__provider.h @@ -0,0 +1,15 @@ +--- media/capture/video/shared_memory_handle_provider.h.orig	2019-09-10 11:14:08 UTC ++++ media/capture/video/shared_memory_handle_provider.h +@@ -38,10 +38,10 @@ class CAPTURE_EXPORT SharedMemoryHandleProvider +  + // This requires platforms where base::SharedMemoryHandle is backed by a + // file descriptor. +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   bool InitAsReadOnlyFromRawFileDescriptor(mojo::ScopedHandle fd_handle, +                                            uint32_t memory_size_in_bytes); +-#endif  // defined(OS_LINUX) ++#endif  // defined(OS_LINUX) || defined(OS_BSD) +  +   uint32_t GetMemorySizeInBytes(); +  diff --git a/devel/electron6/files/patch-media_capture_video_video__capture__buffer__pool__impl.cc b/devel/electron6/files/patch-media_capture_video_video__capture__buffer__pool__impl.cc new file mode 100644 index 000000000000..e53f32c42a67 --- /dev/null +++ b/devel/electron6/files/patch-media_capture_video_video__capture__buffer__pool__impl.cc @@ -0,0 +1,11 @@ +--- media/capture/video/video_capture_buffer_pool_impl.cc.orig	2019-09-10 11:14:08 UTC ++++ media/capture/video/video_capture_buffer_pool_impl.cc +@@ -58,7 +58,7 @@ VideoCaptureBufferPoolImpl::CreateSharedMemoryViaRawFi +     int buffer_id) { + // This requires platforms where base::SharedMemoryHandle is backed by a + // file descriptor. +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   base::AutoLock lock(lock_); +  +   VideoCaptureBufferTracker* tracker = GetTracker(buffer_id); diff --git a/devel/electron6/files/patch-media_capture_video_video__capture__device__client.cc b/devel/electron6/files/patch-media_capture_video_video__capture__device__client.cc new file mode 100644 index 000000000000..5e09b5d2adae --- /dev/null +++ b/devel/electron6/files/patch-media_capture_video_video__capture__device__client.cc @@ -0,0 +1,11 @@ +--- media/capture/video/video_capture_device_client.cc.orig	2019-09-10 11:14:08 UTC ++++ media/capture/video/video_capture_device_client.cc +@@ -298,7 +298,7 @@ void VideoCaptureDeviceClient::OnIncomingCapturedData( + // see http://linuxtv.org/downloads/v4l-dvb-apis/packed-rgb.html. + // Windows RGB24 defines blue at lowest byte, + // see https://msdn.microsoft.com/en-us/library/windows/desktop/dd407253 +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +       fourcc_format = libyuv::FOURCC_RAW; + #elif defined(OS_WIN) +       fourcc_format = libyuv::FOURCC_24BG; diff --git a/devel/electron6/files/patch-media_filters_vp9__parser.h b/devel/electron6/files/patch-media_filters_vp9__parser.h new file mode 100644 index 000000000000..137b79b0ed90 --- /dev/null +++ b/devel/electron6/files/patch-media_filters_vp9__parser.h @@ -0,0 +1,10 @@ +--- media/filters/vp9_parser.h.orig	2019-09-10 11:14:08 UTC ++++ media/filters/vp9_parser.h +@@ -14,6 +14,7 @@ +  + #include <stddef.h> + #include <stdint.h> ++#include <unistd.h> + #include <sys/types.h> +  + #include <memory> diff --git a/devel/electron6/files/patch-media_formats_common_offset__byte__queue.cc b/devel/electron6/files/patch-media_formats_common_offset__byte__queue.cc new file mode 100644 index 000000000000..2c56e226bae4 --- /dev/null +++ b/devel/electron6/files/patch-media_formats_common_offset__byte__queue.cc @@ -0,0 +1,20 @@ +--- media/formats/common/offset_byte_queue.cc.orig	2019-09-10 10:42:40 UTC ++++ media/formats/common/offset_byte_queue.cc +@@ -46,13 +46,13 @@ void OffsetByteQueue::PeekAt(int64_t offset, const uin +   *size = tail() - offset; + } +  +-bool OffsetByteQueue::Trim(int64_t max_offset) { +-  if (max_offset < head_) return true; +-  if (max_offset > tail()) { ++bool OffsetByteQueue::Trim(int64_t _max_offset) { ++  if (_max_offset < head_) return true; ++  if (_max_offset > tail()) { +     Pop(size_); +     return false; +   } +-  Pop(max_offset - head_); ++  Pop(_max_offset - head_); +   return true; + } +  diff --git a/devel/electron6/files/patch-media_formats_common_offset__byte__queue.h b/devel/electron6/files/patch-media_formats_common_offset__byte__queue.h new file mode 100644 index 000000000000..331c1ce0e6b0 --- /dev/null +++ b/devel/electron6/files/patch-media_formats_common_offset__byte__queue.h @@ -0,0 +1,22 @@ +--- media/formats/common/offset_byte_queue.h.orig	2019-09-10 10:42:40 UTC ++++ media/formats/common/offset_byte_queue.h +@@ -36,15 +36,15 @@ class MEDIA_EXPORT OffsetByteQueue { +   // a null |buf| and a |size| of zero. +   void PeekAt(int64_t offset, const uint8_t** buf, int* size); +  +-  // Marks the bytes up to (but not including) |max_offset| as ready for ++  // Marks the bytes up to (but not including) |_max_offset| as ready for +   // deletion. This is relatively inexpensive, but will not necessarily reduce +   // the resident buffer size right away (or ever). +   // +   // Returns true if the full range of bytes were successfully trimmed, +-  // including the case where |max_offset| is less than the current head. +-  // Returns false if |max_offset| > tail() (although all bytes currently ++  // including the case where |_max_offset| is less than the current head. ++  // Returns false if |_max_offset| > tail() (although all bytes currently +   // buffered are still cleared). +-  bool Trim(int64_t max_offset); ++  bool Trim(int64_t _max_offset); +  +   // The head and tail positions, in terms of the file's absolute offsets. +   // tail() is an exclusive bound. diff --git a/devel/electron6/files/patch-media_formats_mp2t_es__parser__adts.cc b/devel/electron6/files/patch-media_formats_mp2t_es__parser__adts.cc new file mode 100644 index 000000000000..2a609551f072 --- /dev/null +++ b/devel/electron6/files/patch-media_formats_mp2t_es__parser__adts.cc @@ -0,0 +1,26 @@ +--- media/formats/mp2t/es_parser_adts.cc.orig	2019-09-10 10:42:40 UTC ++++ media/formats/mp2t/es_parser_adts.cc +@@ -62,11 +62,11 @@ bool EsParserAdts::LookForAdtsFrame(AdtsFrame* adts_fr +   const uint8_t* es; +   es_queue_->Peek(&es, &es_size); +  +-  int max_offset = es_size - kADTSHeaderMinSize; +-  if (max_offset <= 0) ++  int _max_offset = es_size - kADTSHeaderMinSize; ++  if (_max_offset <= 0) +     return false; +  +-  for (int offset = 0; offset < max_offset; offset++) { ++  for (int offset = 0; offset < _max_offset; offset++) { +     const uint8_t* cur_buf = &es[offset]; +     if (!isAdtsSyncWord(cur_buf)) +       continue; +@@ -106,7 +106,7 @@ bool EsParserAdts::LookForAdtsFrame(AdtsFrame* adts_fr +     return true; +   } +  +-  es_queue_->Pop(max_offset); ++  es_queue_->Pop(_max_offset); +   return false; + } +  diff --git a/devel/electron6/files/patch-media_formats_mp2t_es__parser__mpeg1audio.cc b/devel/electron6/files/patch-media_formats_mp2t_es__parser__mpeg1audio.cc new file mode 100644 index 000000000000..204750388c06 --- /dev/null +++ b/devel/electron6/files/patch-media_formats_mp2t_es__parser__mpeg1audio.cc @@ -0,0 +1,26 @@ +--- media/formats/mp2t/es_parser_mpeg1audio.cc.orig	2019-09-10 10:42:40 UTC ++++ media/formats/mp2t/es_parser_mpeg1audio.cc +@@ -108,11 +108,11 @@ bool EsParserMpeg1Audio::LookForMpeg1AudioFrame( +   const uint8_t* es; +   es_queue_->Peek(&es, &es_size); +  +-  int max_offset = es_size - MPEG1AudioStreamParser::kHeaderSize; +-  if (max_offset <= 0) ++  int _max_offset = es_size - MPEG1AudioStreamParser::kHeaderSize; ++  if (_max_offset <= 0) +     return false; +  +-  for (int offset = 0; offset < max_offset; offset++) { ++  for (int offset = 0; offset < _max_offset; offset++) { +     const uint8_t* cur_buf = &es[offset]; +     if (cur_buf[0] != 0xff) +       continue; +@@ -153,7 +153,7 @@ bool EsParserMpeg1Audio::LookForMpeg1AudioFrame( +     return true; +   } +  +-  es_queue_->Pop(max_offset); ++  es_queue_->Pop(_max_offset); +   return false; + } +  diff --git a/devel/electron6/files/patch-media_gpu_libyuv__image__processor.cc b/devel/electron6/files/patch-media_gpu_libyuv__image__processor.cc new file mode 100644 index 000000000000..6a29a4e3ec19 --- /dev/null +++ b/devel/electron6/files/patch-media_gpu_libyuv__image__processor.cc @@ -0,0 +1,38 @@ +--- media/gpu/libyuv_image_processor.cc.orig	2019-09-10 11:14:08 UTC ++++ media/gpu/libyuv_image_processor.cc +@@ -91,7 +91,7 @@ std::unique_ptr<LibYUVImageProcessor> LibYUVImageProce +   // LibYUVImageProcessor supports only memory-based video frame for input. +   VideoFrame::StorageType input_storage_type = VideoFrame::STORAGE_UNKNOWN; +   for (auto input_type : input_config.preferred_storage_types) { +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +     if (input_type == VideoFrame::STORAGE_DMABUFS) { +       video_frame_mapper = VideoFrameMapperFactory::CreateMapper( +           input_config.layout.format(), true); +@@ -100,7 +100,7 @@ std::unique_ptr<LibYUVImageProcessor> LibYUVImageProce +         break; +       } +     } +-#endif  // defined(OS_LINUX) ++#endif  // defined(OS_LINUX) || defined(OS_BSD) +  +     if (VideoFrame::IsStorageTypeMappable(input_type)) { +       input_storage_type = input_type; +@@ -203,7 +203,7 @@ void LibYUVImageProcessor::ProcessTask(scoped_refptr<V +                                        FrameReadyCB cb) { +   DCHECK(process_thread_.task_runner()->BelongsToCurrentThread()); +   DVLOGF(4); +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   if (input_frame->storage_type() == VideoFrame::STORAGE_DMABUFS) { +     DCHECK_NE(video_frame_mapper_.get(), nullptr); +     input_frame = video_frame_mapper_->Map(std::move(input_frame)); +@@ -213,7 +213,7 @@ void LibYUVImageProcessor::ProcessTask(scoped_refptr<V +       return; +     } +   } +-#endif  // defined(OS_LINUX) ++#endif  // defined(OS_LINUX) || defined(OS_BSD) +  +   int res = DoConversion(input_frame.get(), output_frame.get()); +   if (res != 0) { diff --git a/devel/electron6/files/patch-media_gpu_linux_platform__video__frame__utils.cc b/devel/electron6/files/patch-media_gpu_linux_platform__video__frame__utils.cc new file mode 100644 index 000000000000..439f3c046068 --- /dev/null +++ b/devel/electron6/files/patch-media_gpu_linux_platform__video__frame__utils.cc @@ -0,0 +1,20 @@ +--- media/gpu/linux/platform_video_frame_utils.cc.orig	2019-09-10 11:14:08 UTC ++++ media/gpu/linux/platform_video_frame_utils.cc +@@ -107,7 +107,7 @@ gfx::GpuMemoryBufferHandle CreateGpuMemoryBufferHandle +   DCHECK(video_frame); +  +   gfx::GpuMemoryBufferHandle handle; +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   handle.type = gfx::NATIVE_PIXMAP; +  +   std::vector<base::ScopedFD> duped_fds = +@@ -126,7 +126,7 @@ gfx::GpuMemoryBufferHandle CreateGpuMemoryBufferHandle +   } + #else +   NOTREACHED(); +-#endif  // defined(OS_LINUX) ++#endif  // defined(OS_LINUX) || defined(OS_BSD) +   return handle; + } +  diff --git a/devel/electron6/files/patch-media_gpu_vaapi_vaapi__dmabuf__video__frame__mapper.cc b/devel/electron6/files/patch-media_gpu_vaapi_vaapi__dmabuf__video__frame__mapper.cc new file mode 100644 index 000000000000..cdbbdfe203e3 --- /dev/null +++ b/devel/electron6/files/patch-media_gpu_vaapi_vaapi__dmabuf__video__frame__mapper.cc @@ -0,0 +1,20 @@ +--- media/gpu/vaapi/vaapi_dmabuf_video_frame_mapper.cc.orig	2019-09-10 11:14:08 UTC ++++ media/gpu/vaapi/vaapi_dmabuf_video_frame_mapper.cc +@@ -15,7 +15,7 @@ + #include "media/gpu/vaapi/vaapi_wrapper.h" + #include "media/video/picture.h" +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + #include "media/gpu/linux/platform_video_frame_utils.h" + #endif +  +@@ -137,7 +137,7 @@ scoped_refptr<VideoFrame> VaapiDmaBufVideoFrameMapper: +   } +  +   gfx::GpuMemoryBufferHandle gmb_handle; +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   gmb_handle = CreateGpuMemoryBufferHandle(video_frame.get()); + #endif +   if (gmb_handle.is_null()) { diff --git a/devel/electron6/files/patch-media_gpu_vaapi_vaapi__video__encode__accelerator.cc b/devel/electron6/files/patch-media_gpu_vaapi_vaapi__video__encode__accelerator.cc new file mode 100644 index 000000000000..2d4e3b41aa73 --- /dev/null +++ b/devel/electron6/files/patch-media_gpu_vaapi_vaapi__video__encode__accelerator.cc @@ -0,0 +1,20 @@ +--- media/gpu/vaapi/vaapi_video_encode_accelerator.cc.orig	2019-09-10 11:14:08 UTC ++++ media/gpu/vaapi/vaapi_video_encode_accelerator.cc +@@ -41,7 +41,7 @@ + #include "media/gpu/vp8_reference_frame_vector.h" + #include "media/gpu/vp9_reference_frame_vector.h" +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + #include "media/gpu/linux/platform_video_frame_utils.h" + #endif +  +@@ -558,7 +558,7 @@ scoped_refptr<VaapiEncodeJob> VaapiVideoEncodeAccelera +         vaapi_wrapper_, MakeGLContextCurrentCallback(), BindGLImageCallback(), +         PictureBuffer(kDummyPictureBufferId, frame->coded_size())); +     gfx::GpuMemoryBufferHandle gmb_handle; +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +     gmb_handle = CreateGpuMemoryBufferHandle(frame.get()); + #endif +     if (gmb_handle.is_null()) { diff --git a/devel/electron6/files/patch-media_gpu_video__frame__mapper__factory.cc b/devel/electron6/files/patch-media_gpu_video__frame__mapper__factory.cc new file mode 100644 index 000000000000..31b7c2bd8fe3 --- /dev/null +++ b/devel/electron6/files/patch-media_gpu_video__frame__mapper__factory.cc @@ -0,0 +1,51 @@ +--- media/gpu/video_frame_mapper_factory.cc.orig	2019-09-10 11:14:08 UTC ++++ media/gpu/video_frame_mapper_factory.cc +@@ -7,38 +7,38 @@ + #include "build/build_config.h" + #include "media/gpu/buildflags.h" +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + #include "media/gpu/linux/generic_dmabuf_video_frame_mapper.h" +-#endif  // defined(OS_LINUX) ++#endif  // defined(OS_LINUX) || defined(OS_BSD) +  +-#if BUILDFLAG(USE_VAAPI) && defined(OS_LINUX) ++#if BUILDFLAG(USE_VAAPI) && (defined(OS_LINUX) || defined(OS_BSD)) + #include "media/gpu/vaapi/vaapi_dmabuf_video_frame_mapper.h" +-#endif  // BUILDFLAG(USE_VAAPI) && defined(OS_LINUX) ++#endif  // BUILDFLAG(USE_VAAPI) && (defined(OS_LINUX) || defined(OS_BSD)) +  + namespace media { +  + // static + std::unique_ptr<VideoFrameMapper> VideoFrameMapperFactory::CreateMapper( +     VideoPixelFormat format) { +-#if BUILDFLAG(USE_VAAPI) && defined(OS_LINUX) ++#if BUILDFLAG(USE_VAAPI) && (defined(OS_LINUX) || defined(OS_BSD)) +   return CreateMapper(format, false); + #else +   return CreateMapper(format, true); +-#endif  // BUILDFLAG(USE_VAAPI) && defined(OS_LINUX) ++#endif  // BUILDFLAG(USE_VAAPI) && (defined(OS_LINUX) || defined(OS_BSD)) + } +  + // static + std::unique_ptr<VideoFrameMapper> VideoFrameMapperFactory::CreateMapper( +     VideoPixelFormat format, +     bool linear_buffer_mapper) { +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   if (linear_buffer_mapper) +     return GenericDmaBufVideoFrameMapper::Create(format); +-#endif  // defined(OS_LINUX) ++#endif  // defined(OS_LINUX) || defined(OS_BSD) +  +-#if BUILDFLAG(USE_VAAPI) && defined(OS_LINUX) ++#if BUILDFLAG(USE_VAAPI) && (defined(OS_LINUX) || defined(OS_BSD)) +   return VaapiDmaBufVideoFrameMapper::Create(format); +-#endif  // BUILDFLAG(USE_VAAPI) && defined(OS_LINUX) ++#endif  // BUILDFLAG(USE_VAAPI) && (defined(OS_LINUX) || defined(OS_BSD)) +  +   return nullptr; + } diff --git a/devel/electron6/files/patch-media_media__options.gni b/devel/electron6/files/patch-media_media__options.gni new file mode 100644 index 000000000000..ea9eff811fd0 --- /dev/null +++ b/devel/electron6/files/patch-media_media__options.gni @@ -0,0 +1,12 @@ +--- media/media_options.gni.orig	2019-09-10 11:14:08 UTC ++++ media/media_options.gni +@@ -110,6 +110,9 @@ declare_args() { +   # Enables runtime selection of ALSA library for audio. +   use_alsa = false +  ++  # Enable runtime selection of sndio(7) ++  use_sndio = false ++ +   # Alsa should be used on non-Android, non-Mac POSIX systems. +   # Alsa should be used on desktop Chromecast and audio-only Chromecast builds. +   if (is_posix && !is_android && !is_mac && diff --git a/devel/electron6/files/patch-media_mojo_services_gpu__mojo__media__client.cc b/devel/electron6/files/patch-media_mojo_services_gpu__mojo__media__client.cc new file mode 100644 index 000000000000..840c5fcef61e --- /dev/null +++ b/devel/electron6/files/patch-media_mojo_services_gpu__mojo__media__client.cc @@ -0,0 +1,20 @@ +--- media/mojo/services/gpu_mojo_media_client.cc.orig	2019-09-10 11:14:08 UTC ++++ media/mojo/services/gpu_mojo_media_client.cc +@@ -55,7 +55,7 @@ namespace media { + namespace { +  + #if defined(OS_ANDROID) || defined(OS_CHROMEOS) || defined(OS_MACOSX) || \ +-    defined(OS_WIN) || defined(OS_LINUX) ++    defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD) + gpu::CommandBufferStub* GetCommandBufferStub( +     base::WeakPtr<MediaGpuChannelManager> media_gpu_channel_manager, +     base::UnguessableToken channel_token, +@@ -199,7 +199,7 @@ std::unique_ptr<VideoDecoder> GpuMojoMediaClient::Crea +       std::make_unique<VideoFrameFactoryImpl>( +           gpu_task_runner_, std::move(get_stub_cb), gpu_preferences_)); + #elif defined(OS_CHROMEOS) || defined(OS_MACOSX) || defined(OS_WIN) || \ +-    defined(OS_LINUX) ++    defined(OS_LINUX) || defined(OS_BSD) +       video_decoder = VdaVideoDecoder::Create( +           task_runner, gpu_task_runner_, media_log->Clone(), target_color_space, +           gpu_preferences_, gpu_workarounds_, diff --git a/devel/electron6/files/patch-media_video_gpu__memory__buffer__video__frame__pool.cc b/devel/electron6/files/patch-media_video_gpu__memory__buffer__video__frame__pool.cc new file mode 100644 index 000000000000..cd2df1daa0a5 --- /dev/null +++ b/devel/electron6/files/patch-media_video_gpu__memory__buffer__video__frame__pool.cc @@ -0,0 +1,11 @@ +--- media/video/gpu_memory_buffer_video_frame_pool.cc.orig	2019-09-10 11:14:08 UTC ++++ media/video/gpu_memory_buffer_video_frame_pool.cc +@@ -597,7 +597,7 @@ void GpuMemoryBufferVideoFramePool::PoolImpl::CreateHa +   } +  +   bool is_software_backed_video_frame = !video_frame->HasTextures(); +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   is_software_backed_video_frame &= !video_frame->HasDmaBufs(); + #endif +  diff --git a/devel/electron6/files/patch-mojo_public_c_system_thunks.cc b/devel/electron6/files/patch-mojo_public_c_system_thunks.cc new file mode 100644 index 000000000000..e33929ae9b66 --- /dev/null +++ b/devel/electron6/files/patch-mojo_public_c_system_thunks.cc @@ -0,0 +1,58 @@ +--- mojo/public/c/system/thunks.cc.orig	2019-09-10 10:42:41 UTC ++++ mojo/public/c/system/thunks.cc +@@ -16,7 +16,7 @@ + #include "build/build_config.h" + #include "mojo/public/c/system/core.h" +  +-#if defined(OS_CHROMEOS) || defined(OS_LINUX) || defined(OS_WIN) ++#if defined(OS_CHROMEOS) || defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD) + #include "base/environment.h" + #include "base/files/file_path.h" + #include "base/optional.h" +@@ -28,7 +28,7 @@ namespace { +  + typedef void (*MojoGetSystemThunksFunction)(MojoSystemThunks* thunks); +  +-#if defined(OS_CHROMEOS) || defined(OS_LINUX) || defined(OS_WIN) ++#if defined(OS_CHROMEOS) || defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD) + PROTECTED_MEMORY_SECTION + base::ProtectedMemory<MojoGetSystemThunksFunction> g_get_thunks; + #endif +@@ -65,7 +65,7 @@ namespace mojo { + class CoreLibraryInitializer { +  public: +   CoreLibraryInitializer(const MojoInitializeOptions* options) { +-#if defined(OS_CHROMEOS) || defined(OS_LINUX) || defined(OS_WIN) ++#if defined(OS_CHROMEOS) || defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD) +     bool application_provided_path = false; +     base::Optional<base::FilePath> library_path; +     if (options && options->struct_size >= sizeof(*options) && +@@ -84,7 +84,7 @@ class CoreLibraryInitializer { +  +     if (!library_path) { +       // Default to looking for the library in the current working directory. +-#if defined(OS_CHROMEOS) || defined(OS_LINUX) ++#if defined(OS_CHROMEOS) || defined(OS_LINUX) || defined(OS_BSD) +       const base::FilePath::CharType kDefaultLibraryPathValue[] = +           FILE_PATH_LITERAL("./libmojo_core.so"); + #elif defined(OS_WIN) +@@ -138,16 +138,16 @@ class CoreLibraryInitializer { +  +     CHECK_GT(g_thunks->size, 0u) +         << "Invalid mojo_core library: " << library_path->value(); +-#else   // defined(OS_CHROMEOS) || defined(OS_LINUX) ++#else   // defined(OS_CHROMEOS) || defined(OS_LINUX) || defined(OS_BSD) +     NOTREACHED() +         << "Dynamic mojo_core loading is not supported on this platform."; +-#endif  // defined(OS_CHROMEOS) || defined(OS_LINUX) ++#endif  // defined(OS_CHROMEOS) || defined(OS_LINUX) || defined(OS_BSD) +   } +  +   ~CoreLibraryInitializer() = default; +  +  private: +-#if defined(OS_CHROMEOS) || defined(OS_LINUX) || defined(OS_WIN) ++#if defined(OS_CHROMEOS) || defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD) +   base::Optional<base::ScopedNativeLibrary> library_; + #endif +  diff --git a/devel/electron6/files/patch-mojo_public_js_mojo__bindings__resources.grd b/devel/electron6/files/patch-mojo_public_js_mojo__bindings__resources.grd new file mode 100644 index 000000000000..142f0b1efb95 --- /dev/null +++ b/devel/electron6/files/patch-mojo_public_js_mojo__bindings__resources.grd @@ -0,0 +1,11 @@ +--- mojo/public/js/mojo_bindings_resources.grd.orig	2019-09-10 10:42:41 UTC ++++ mojo/public/js/mojo_bindings_resources.grd +@@ -60,7 +60,7 @@ +           use_base_dir="false" +           type="BINDATA" +           compress="gzip" /> +-      <if expr="is_win or is_macosx or is_linux"> ++      <if expr="is_win or is_macosx or is_posix"> +         <include name="IDR_MOJO_TIME_MOJOM_HTML" +             file="${root_gen_dir}/mojo/public/mojom/base/time.mojom.html" +             use_base_dir="false" diff --git a/devel/electron6/files/patch-net_BUILD.gn b/devel/electron6/files/patch-net_BUILD.gn new file mode 100644 index 000000000000..7a78876da0c0 --- /dev/null +++ b/devel/electron6/files/patch-net_BUILD.gn @@ -0,0 +1,37 @@ +--- net/BUILD.gn.orig	2019-09-10 11:14:08 UTC ++++ net/BUILD.gn +@@ -98,7 +98,7 @@ net_configs = [ +   "//build/config/compiler:wexit_time_destructors", + ] +  +-if (is_linux) { ++if (is_linux && !is_bsd) { +   net_configs += [ "//build/config/linux:libresolv" ] + } +  +@@ -1919,7 +1919,7 @@ component("net") { +     } +  +     # Use getifaddrs() on POSIX platforms, except Linux and Android. +-    if (is_posix && !is_linux && !is_android) { ++    if (is_posix && ((!is_linux && !is_android) || (is_bsd))) { +       sources += [ +         "base/network_interfaces_getifaddrs.cc", +         "base/network_interfaces_getifaddrs.h", +@@ -2012,6 +2012,16 @@ component("net") { +       ] +  +       sources -= [ "disk_cache/blockfile/file_posix.cc" ] ++    } ++ ++    if (is_bsd) { ++      sources -= [ ++         "base/address_tracker_linux.cc", ++         "base/address_tracker_linux.h", ++         "base/network_change_notifier_linux.cc", ++         "base/network_change_notifier_linux.h", ++         "base/network_interfaces_linux.cc", ++      ] +     } +  +     if (is_ios || is_mac) { diff --git a/devel/electron6/files/patch-net_base_address__tracker__linux.cc b/devel/electron6/files/patch-net_base_address__tracker__linux.cc new file mode 100644 index 000000000000..ab9cbdac1e21 --- /dev/null +++ b/devel/electron6/files/patch-net_base_address__tracker__linux.cc @@ -0,0 +1,177 @@ +--- net/base/address_tracker_linux.cc.orig	2019-09-10 10:42:42 UTC ++++ net/base/address_tracker_linux.cc +@@ -21,96 +21,10 @@ + namespace net { + namespace internal { +  +-namespace { +- +-// Some kernel functions such as wireless_send_event and rtnetlink_ifinfo_prep +-// may send spurious messages over rtnetlink. RTM_NEWLINK messages where +-// ifi_change == 0 and rta_type == IFLA_WIRELESS should be ignored. +-bool IgnoreWirelessChange(const struct nlmsghdr* header, +-                          const struct ifinfomsg* msg) { +-  size_t length = IFLA_PAYLOAD(header); +-  for (const struct rtattr* attr = IFLA_RTA(msg); RTA_OK(attr, length); +-       attr = RTA_NEXT(attr, length)) { +-    if (attr->rta_type == IFLA_WIRELESS && msg->ifi_change == 0) +-      return true; +-  } +-  return false; +-} +- +-// Retrieves address from NETLINK address message. +-// Sets |really_deprecated| for IPv6 addresses with preferred lifetimes of 0. +-bool GetAddress(const struct nlmsghdr* header, +-                IPAddress* out, +-                bool* really_deprecated) { +-  if (really_deprecated) +-    *really_deprecated = false; +-  const struct ifaddrmsg* msg = +-      reinterpret_cast<struct ifaddrmsg*>(NLMSG_DATA(header)); +-  size_t address_length = 0; +-  switch (msg->ifa_family) { +-    case AF_INET: +-      address_length = IPAddress::kIPv4AddressSize; +-      break; +-    case AF_INET6: +-      address_length = IPAddress::kIPv6AddressSize; +-      break; +-    default: +-      // Unknown family. +-      return false; +-  } +-  // Use IFA_ADDRESS unless IFA_LOCAL is present. This behavior here is based on +-  // getaddrinfo in glibc (check_pf.c). Judging from kernel implementation of +-  // NETLINK, IPv4 addresses have only the IFA_ADDRESS attribute, while IPv6 +-  // have the IFA_LOCAL attribute. +-  uint8_t* address = NULL; +-  uint8_t* local = NULL; +-  size_t length = IFA_PAYLOAD(header); +-  for (const struct rtattr* attr = +-           reinterpret_cast<const struct rtattr*>(IFA_RTA(msg)); +-       RTA_OK(attr, length); +-       attr = RTA_NEXT(attr, length)) { +-    switch (attr->rta_type) { +-      case IFA_ADDRESS: +-        DCHECK_GE(RTA_PAYLOAD(attr), address_length); +-        address = reinterpret_cast<uint8_t*>(RTA_DATA(attr)); +-        break; +-      case IFA_LOCAL: +-        DCHECK_GE(RTA_PAYLOAD(attr), address_length); +-        local = reinterpret_cast<uint8_t*>(RTA_DATA(attr)); +-        break; +-      case IFA_CACHEINFO: { +-        const struct ifa_cacheinfo *cache_info = +-            reinterpret_cast<const struct ifa_cacheinfo*>(RTA_DATA(attr)); +-        if (really_deprecated) +-          *really_deprecated = (cache_info->ifa_prefered == 0); +-      } break; +-      default: +-        break; +-    } +-  } +-  if (local) +-    address = local; +-  if (!address) +-    return false; +-  *out = IPAddress(address, address_length); +-  return true; +-} +- +-}  // namespace +- + // static + char* AddressTrackerLinux::GetInterfaceName(int interface_index, char* buf) { +-  memset(buf, 0, IFNAMSIZ); +-  base::ScopedFD ioctl_socket = GetSocketForIoctl(); +-  if (!ioctl_socket.is_valid()) +-    return buf; +- +-  struct ifreq ifr = {}; +-  ifr.ifr_ifindex = interface_index; +- +-  if (ioctl(ioctl_socket.get(), SIOCGIFNAME, &ifr) == 0) +-    strncpy(buf, ifr.ifr_name, IFNAMSIZ - 1); +-  return buf; ++  NOTIMPLEMENTED(); ++  return NULL; + } +  + AddressTrackerLinux::AddressTrackerLinux() +@@ -147,6 +61,7 @@ AddressTrackerLinux::AddressTrackerLinux( + AddressTrackerLinux::~AddressTrackerLinux() = default; +  + void AddressTrackerLinux::Init() { ++#if !defined(OS_FREEBSD) +   netlink_fd_.reset(socket(AF_NETLINK, SOCK_RAW, NETLINK_ROUTE)); +   if (!netlink_fd_.is_valid()) { +     PLOG(ERROR) << "Could not create NETLINK socket"; +@@ -242,6 +157,7 @@ void AddressTrackerLinux::AbortAndForceOnline() { +   connection_type_initialized_cv_.Broadcast(); + } +  ++#if !defined(OS_BSD) + AddressTrackerLinux::AddressMap AddressTrackerLinux::GetAddressMap() const { +   AddressTrackerAutoLock lock(*this, address_map_lock_); +   return address_map_; +@@ -260,6 +176,7 @@ bool AddressTrackerLinux::IsInterfaceIgnored(int inter +   const char* interface_name = get_interface_name_(interface_index, buf); +   return ignored_interfaces_.find(interface_name) != ignored_interfaces_.end(); + } ++#endif // !OS_BSD +  + NetworkChangeNotifier::ConnectionType + AddressTrackerLinux::GetCurrentConnectionType() { +@@ -318,6 +235,7 @@ void AddressTrackerLinux::HandleMessage(char* buffer, +                                         bool* address_changed, +                                         bool* link_changed, +                                         bool* tunnel_changed) { ++#if !defined(OS_FREEBSD) +   DCHECK(buffer); +   for (struct nlmsghdr* header = reinterpret_cast<struct nlmsghdr*>(buffer); +        NLMSG_OK(header, length); +@@ -414,6 +332,10 @@ void AddressTrackerLinux::HandleMessage(char* buffer, +         break; +     } +   } ++#else  // !OS_FREEBSD ++  NOTIMPLEMENTED(); ++  AbortAndForceOnline(); ++#endif // !OS_FREEBSD + } +  + void AddressTrackerLinux::OnFileCanReadWithoutBlocking() { +@@ -441,31 +363,7 @@ bool AddressTrackerLinux::IsTunnelInterfaceName(const  + } +  + void AddressTrackerLinux::UpdateCurrentConnectionType() { +-  AddressTrackerLinux::AddressMap address_map = GetAddressMap(); +-  std::unordered_set<int> online_links = GetOnlineLinks(); +- +-  // Strip out tunnel interfaces from online_links +-  for (auto it = online_links.cbegin(); it != online_links.cend();) { +-    if (IsTunnelInterface(*it)) { +-      it = online_links.erase(it); +-    } else { +-      ++it; +-    } +-  } +- +-  NetworkInterfaceList networks; +-  NetworkChangeNotifier::ConnectionType type = +-      NetworkChangeNotifier::CONNECTION_NONE; +-  if (GetNetworkListImpl(&networks, 0, online_links, address_map, +-                         get_interface_name_)) { +-    type = NetworkChangeNotifier::ConnectionTypeFromInterfaceList(networks); +-  } else { +-    type = online_links.empty() ? NetworkChangeNotifier::CONNECTION_NONE +-                                : NetworkChangeNotifier::CONNECTION_UNKNOWN; +-  } +- +-  AddressTrackerAutoLock lock(*this, connection_type_lock_); +-  current_connection_type_ = type; ++  NOTIMPLEMENTED(); + } +  + int AddressTrackerLinux::GetThreadsWaitingForConnectionTypeInitForTesting() diff --git a/devel/electron6/files/patch-net_base_address__tracker__linux.h b/devel/electron6/files/patch-net_base_address__tracker__linux.h new file mode 100644 index 000000000000..005254c601c1 --- /dev/null +++ b/devel/electron6/files/patch-net_base_address__tracker__linux.h @@ -0,0 +1,12 @@ +--- net/base/address_tracker_linux.h.orig	2019-09-10 10:42:42 UTC ++++ net/base/address_tracker_linux.h +@@ -7,9 +7,6 @@ +  + #include <sys/socket.h>  // Needed to include netlink. + // Mask superfluous definition of |struct net|. This is fixed in Linux 2.6.38. +-#define net net_kernel +-#include <linux/rtnetlink.h> +-#undef net + #include <stddef.h> +  + #include <map> diff --git a/devel/electron6/files/patch-net_base_address__tracker__linux__unittest.cc b/devel/electron6/files/patch-net_base_address__tracker__linux__unittest.cc new file mode 100644 index 000000000000..12103f80fd53 --- /dev/null +++ b/devel/electron6/files/patch-net_base_address__tracker__linux__unittest.cc @@ -0,0 +1,14 @@ +--- net/base/address_tracker_linux_unittest.cc.orig	2019-09-10 11:14:08 UTC ++++ net/base/address_tracker_linux_unittest.cc +@@ -4,7 +4,11 @@ +  + #include "net/base/address_tracker_linux.h" +  ++#if defined(__linux__) + #include <linux/if.h> ++#else ++#include <net/if.h> ++#endif +  + #include <memory> + #include <unordered_set> diff --git a/devel/electron6/files/patch-net_base_network__change__notifier.cc b/devel/electron6/files/patch-net_base_network__change__notifier.cc new file mode 100644 index 000000000000..6b36703b8ee1 --- /dev/null +++ b/devel/electron6/files/patch-net_base_network__change__notifier.cc @@ -0,0 +1,10 @@ +--- net/base/network_change_notifier.cc.orig	2019-09-10 11:14:08 UTC ++++ net/base/network_change_notifier.cc +@@ -225,7 +225,6 @@ NetworkChangeNotifier* NetworkChangeNotifier::Create() + #elif defined(OS_FUCHSIA) +   return new NetworkChangeNotifierFuchsia(0 /* required_features */); + #else +-  NOTIMPLEMENTED(); +   return NULL; + #endif + } diff --git a/devel/electron6/files/patch-net_base_network__interfaces__posix.h b/devel/electron6/files/patch-net_base_network__interfaces__posix.h new file mode 100644 index 000000000000..0fd751f8678b --- /dev/null +++ b/devel/electron6/files/patch-net_base_network__interfaces__posix.h @@ -0,0 +1,11 @@ +--- net/base/network_interfaces_posix.h.orig	2019-09-10 10:42:42 UTC ++++ net/base/network_interfaces_posix.h +@@ -8,6 +8,8 @@ + // This file provides some basic functionality shared between + // network_interfaces_linux.cc and network_interfaces_getifaddrs.cc. +  ++#include <sys/socket.h> ++ + #include <string> +  + struct sockaddr; diff --git a/devel/electron6/files/patch-net_disk__cache_blockfile_disk__format.h b/devel/electron6/files/patch-net_disk__cache_blockfile_disk__format.h new file mode 100644 index 000000000000..4ef2a09b96f8 --- /dev/null +++ b/devel/electron6/files/patch-net_disk__cache_blockfile_disk__format.h @@ -0,0 +1,12 @@ +--- net/disk_cache/blockfile/disk_format.h.orig	2019-09-10 10:42:43 UTC ++++ net/disk_cache/blockfile/disk_format.h +@@ -149,7 +149,9 @@ struct RankingsNode { + }; + #pragma pack(pop) +  ++#if !defined(OS_BSD) + static_assert(sizeof(RankingsNode) == 36, "bad RankingsNode"); ++#endif +  + }  // namespace disk_cache +  diff --git a/devel/electron6/files/patch-net_dns_address__sorter__posix.cc b/devel/electron6/files/patch-net_dns_address__sorter__posix.cc new file mode 100644 index 000000000000..db4671b0fd15 --- /dev/null +++ b/devel/electron6/files/patch-net_dns_address__sorter__posix.cc @@ -0,0 +1,12 @@ +--- net/dns/address_sorter_posix.cc.orig	2019-09-10 10:42:43 UTC ++++ net/dns/address_sorter_posix.cc +@@ -13,7 +13,9 @@ + #include <sys/socket.h>  // Must be included before ifaddrs.h. + #include <ifaddrs.h> + #include <net/if.h> ++#include <net/if_var.h> + #include <netinet/in_var.h> ++#include <netinet6/in6_var.h> + #include <string.h> + #include <sys/ioctl.h> + #endif diff --git a/devel/electron6/files/patch-net_dns_dns__config__service__posix__unittest.cc b/devel/electron6/files/patch-net_dns_dns__config__service__posix__unittest.cc new file mode 100644 index 000000000000..b6c411ae6553 --- /dev/null +++ b/devel/electron6/files/patch-net_dns_dns__config__service__posix__unittest.cc @@ -0,0 +1,47 @@ +--- net/dns/dns_config_service_posix_unittest.cc.orig	2019-09-10 11:14:09 UTC ++++ net/dns/dns_config_service_posix_unittest.cc +@@ -2,8 +2,6 @@ + // Use of this source code is governed by a BSD-style license that can be + // found in the LICENSE file. +  +-#include <resolv.h> +- + #include <memory> +  + #include "base/cancelable_callback.h" +@@ -50,7 +48,7 @@ const char* const kNameserversIPv4[] = { +     "1.0.0.1", + }; +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + const char* const kNameserversIPv6[] = { +     NULL, +     "2001:DB8:0::42", +@@ -86,7 +84,7 @@ void InitializeResState(res_state res) { +     ++res->nscount; +   } +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   // Install IPv6 addresses, replacing the corresponding IPv4 addresses. +   unsigned nscount6 = 0; +   for (unsigned i = 0; i < base::size(kNameserversIPv6) && i < MAXNS; ++i) { +@@ -107,7 +105,7 @@ void InitializeResState(res_state res) { + } +  + void CloseResState(res_state res) { +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   for (int i = 0; i < res->nscount; ++i) { +     if (res->_u._ext.nsaddrs[i] != NULL) +       free(res->_u._ext.nsaddrs[i]); +@@ -132,7 +130,7 @@ void InitializeExpectedConfig(DnsConfig* config) { +     config->nameservers.push_back(IPEndPoint(ip, NS_DEFAULTPORT + i)); +   } +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   for (unsigned i = 0; i < base::size(kNameserversIPv6) && i < MAXNS; ++i) { +     if (!kNameserversIPv6[i]) +       continue; diff --git a/devel/electron6/files/patch-net_dns_dns__reloader.cc b/devel/electron6/files/patch-net_dns_dns__reloader.cc new file mode 100644 index 000000000000..7c969e0eb0c0 --- /dev/null +++ b/devel/electron6/files/patch-net_dns_dns__reloader.cc @@ -0,0 +1,13 @@ +--- net/dns/dns_reloader.cc.orig	2019-09-10 11:14:09 UTC ++++ net/dns/dns_reloader.cc +@@ -7,6 +7,10 @@ + #if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_OPENBSD) && \ +     !defined(OS_ANDROID) && !defined(OS_FUCHSIA) +  ++#if defined(OS_FREEBSD) ++#include <netinet/in.h> ++#endif ++ + #include <resolv.h> +  + #include "base/lazy_instance.h" diff --git a/devel/electron6/files/patch-net_dns_dns__util.cc b/devel/electron6/files/patch-net_dns_dns__util.cc new file mode 100644 index 000000000000..8db6ae0b2488 --- /dev/null +++ b/devel/electron6/files/patch-net_dns_dns__util.cc @@ -0,0 +1,11 @@ +--- net/dns/dns_util.cc.orig	2019-09-10 11:14:09 UTC ++++ net/dns/dns_util.cc +@@ -36,6 +36,8 @@ const uint16_t kFlagNamePointer = 0xc000; +  + }  // namespace +  ++#include <sys/socket.h> ++ + #if defined(OS_POSIX) + #include <netinet/in.h> + #if !defined(OS_NACL) diff --git a/devel/electron6/files/patch-net_dns_host__resolver__proc.cc b/devel/electron6/files/patch-net_dns_host__resolver__proc.cc new file mode 100644 index 000000000000..f629903e61b1 --- /dev/null +++ b/devel/electron6/files/patch-net_dns_host__resolver__proc.cc @@ -0,0 +1,11 @@ +--- net/dns/host_resolver_proc.cc.orig	2019-09-10 11:14:09 UTC ++++ net/dns/host_resolver_proc.cc +@@ -197,7 +197,7 @@ int SystemHostResolverCall(const std::string& host, +   base::ScopedBlockingCall scoped_blocking_call(FROM_HERE, +                                                 base::BlockingType::WILL_BLOCK); +  +-#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_OPENBSD) && \ ++#if defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_BSD) && \ +     !defined(OS_ANDROID) && !defined(OS_FUCHSIA) +   DnsReloaderMaybeReload(); + #endif diff --git a/devel/electron6/files/patch-net_features.gni b/devel/electron6/files/patch-net_features.gni new file mode 100644 index 000000000000..db530f1d0ebf --- /dev/null +++ b/devel/electron6/files/patch-net_features.gni @@ -0,0 +1,11 @@ +--- net/features.gni.orig	2019-09-10 11:14:09 UTC ++++ net/features.gni +@@ -26,7 +26,7 @@ declare_args() { +   disable_brotli_filter = false +  +   # Multicast DNS. +-  enable_mdns = is_win || is_linux || is_fuchsia || is_mac || is_ios ++  enable_mdns = is_win || is_linux || is_fuchsia || is_mac || is_ios || is_bsd +  +   # Reporting not used on iOS. +   enable_reporting = !is_ios diff --git a/devel/electron6/files/patch-net_http_http__auth__gssapi__posix.cc b/devel/electron6/files/patch-net_http_http__auth__gssapi__posix.cc new file mode 100644 index 000000000000..8f480c78f3e1 --- /dev/null +++ b/devel/electron6/files/patch-net_http_http__auth__gssapi__posix.cc @@ -0,0 +1,14 @@ +--- net/http/http_auth_gssapi_posix.cc.orig	2019-09-10 11:14:09 UTC ++++ net/http/http_auth_gssapi_posix.cc +@@ -443,8 +443,9 @@ base::NativeLibrary GSSAPISharedLibrary::LoadSharedLib +     static const char* const kDefaultLibraryNames[] = { + #if defined(OS_MACOSX) +       "/System/Library/Frameworks/GSS.framework/GSS" +-#elif defined(OS_OPENBSD) +-      "libgssapi.so"          // Heimdal - OpenBSD ++#elif defined(OS_BSD) ++      "libgssapi_krb5.so.2",  // MIT Kerberos - FreeBSD ++      "libgssapi.so"          // Heimdal - OpenBSD, FreeBSD + #else +       "libgssapi_krb5.so.2",  // MIT Kerberos - FC, Suse10, Debian +       "libgssapi.so.4",       // Heimdal - Suse10, MDK diff --git a/devel/electron6/files/patch-net_http_http__auth__gssapi__posix.h b/devel/electron6/files/patch-net_http_http__auth__gssapi__posix.h new file mode 100644 index 000000000000..32c314b27025 --- /dev/null +++ b/devel/electron6/files/patch-net_http_http__auth__gssapi__posix.h @@ -0,0 +1,12 @@ +--- net/http/http_auth_gssapi_posix.h.orig	2019-09-10 11:14:09 UTC ++++ net/http/http_auth_gssapi_posix.h +@@ -19,6 +19,9 @@ + #include <GSS/gssapi.h> + #elif defined(OS_FREEBSD) + #include <gssapi/gssapi.h> ++#ifndef GSS_C_DELEG_POLICY_FLAG ++#define GSS_C_DELEG_POLICY_FLAG 32768 ++#endif + #else + #include <gssapi.h> + #endif diff --git a/devel/electron6/files/patch-net_nqe_network__quality__estimator.cc b/devel/electron6/files/patch-net_nqe_network__quality__estimator.cc new file mode 100644 index 000000000000..f1ef02aa9054 --- /dev/null +++ b/devel/electron6/files/patch-net_nqe_network__quality__estimator.cc @@ -0,0 +1,11 @@ +--- net/nqe/network_quality_estimator.cc.orig	2019-09-10 11:14:10 UTC ++++ net/nqe/network_quality_estimator.cc +@@ -100,7 +100,7 @@ nqe::internal::NetworkID DoGetCurrentNetworkID() { +       case NetworkChangeNotifier::ConnectionType::CONNECTION_ETHERNET: +         break; +       case NetworkChangeNotifier::ConnectionType::CONNECTION_WIFI: +-#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_WIN) ++#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD) +         network_id.id = GetWifiSSID(); + #endif +         break; diff --git a/devel/electron6/files/patch-net_nqe_network__quality__estimator__unittest.cc b/devel/electron6/files/patch-net_nqe_network__quality__estimator__unittest.cc new file mode 100644 index 000000000000..6bb886782ff0 --- /dev/null +++ b/devel/electron6/files/patch-net_nqe_network__quality__estimator__unittest.cc @@ -0,0 +1,11 @@ +--- net/nqe/network_quality_estimator_unittest.cc.orig	2019-09-10 11:14:10 UTC ++++ net/nqe/network_quality_estimator_unittest.cc +@@ -2039,7 +2039,7 @@ TEST_F(NetworkQualityEstimatorTest, TestGlobalSocketWa +  + // TestTCPSocketRTT requires kernel support for tcp_info struct, and so it is + // enabled only on certain platforms. +-#if defined(TCP_INFO) || defined(OS_LINUX) || defined(OS_ANDROID) ++#if defined(TCP_INFO) || defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD) + #define MAYBE_TestTCPSocketRTT TestTCPSocketRTT + #else + #define MAYBE_TestTCPSocketRTT DISABLED_TestTCPSocketRTT diff --git a/devel/electron6/files/patch-net_proxy__resolution_proxy__config__service__linux.cc b/devel/electron6/files/patch-net_proxy__resolution_proxy__config__service__linux.cc new file mode 100644 index 000000000000..4be453aa55d0 --- /dev/null +++ b/devel/electron6/files/patch-net_proxy__resolution_proxy__config__service__linux.cc @@ -0,0 +1,39 @@ +--- net/proxy_resolution/proxy_config_service_linux.cc.orig	2019-09-10 11:14:10 UTC ++++ net/proxy_resolution/proxy_config_service_linux.cc +@@ -6,7 +6,9 @@ +  + #include <errno.h> + #include <limits.h> ++#if !defined(OS_BSD) + #include <sys/inotify.h> ++#endif + #include <unistd.h> +  + #include <map> +@@ -495,6 +497,7 @@ int StringToIntOrDefault(base::StringPiece value, int  +   return default_value; + } +  ++#if !defined(OS_BSD) + // This is the KDE version that reads kioslaverc and simulates gsettings. + // Doing this allows the main Delegate code, as well as the unit tests + // for it, to stay the same - and the settings map fairly well besides. +@@ -986,6 +989,7 @@ class SettingGetterImplKDE : public ProxyConfigService +  +   DISALLOW_COPY_AND_ASSIGN(SettingGetterImplKDE); + }; ++#endif +  + }  // namespace +  +@@ -1197,8 +1201,10 @@ ProxyConfigServiceLinux::Delegate::Delegate( +     case base::nix::DESKTOP_ENVIRONMENT_KDE3: +     case base::nix::DESKTOP_ENVIRONMENT_KDE4: +     case base::nix::DESKTOP_ENVIRONMENT_KDE5: ++#if !defined(OS_BSD) +       setting_getter_.reset(new SettingGetterImplKDE(env_var_getter_.get())); +       break; ++#endif +     case base::nix::DESKTOP_ENVIRONMENT_XFCE: +     case base::nix::DESKTOP_ENVIRONMENT_OTHER: +       break; diff --git a/devel/electron6/files/patch-net_proxy__resolution_proxy__resolution__service.cc b/devel/electron6/files/patch-net_proxy__resolution_proxy__resolution__service.cc new file mode 100644 index 000000000000..f74171817a93 --- /dev/null +++ b/devel/electron6/files/patch-net_proxy__resolution_proxy__resolution__service.cc @@ -0,0 +1,29 @@ +--- net/proxy_resolution/proxy_resolution_service.cc.orig	2019-09-10 11:14:10 UTC ++++ net/proxy_resolution/proxy_resolution_service.cc +@@ -48,7 +48,7 @@ + #elif defined(OS_MACOSX) + #include "net/proxy_resolution/proxy_config_service_mac.h" + #include "net/proxy_resolution/proxy_resolver_mac.h" +-#elif defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#elif (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS) + #include "net/proxy_resolution/proxy_config_service_linux.h" + #elif defined(OS_ANDROID) + #include "net/proxy_resolution/proxy_config_service_android.h" +@@ -62,7 +62,7 @@ namespace net { + namespace { +  + #if defined(OS_WIN) || defined(OS_IOS) || defined(OS_MACOSX) || \ +-    (defined(OS_LINUX) && !defined(OS_CHROMEOS)) ++    ((defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)) + constexpr net::NetworkTrafficAnnotationTag kSystemProxyConfigTrafficAnnotation = +     net::DefineNetworkTrafficAnnotation("proxy_config_system", R"( +       semantics { +@@ -1571,7 +1571,7 @@ ProxyResolutionService::CreateSystemProxyConfigService +              << "profile_io_data.cc::CreateProxyConfigService and this should " +              << "be used only for examples."; +   return std::make_unique<UnsetProxyConfigService>(); +-#elif defined(OS_LINUX) ++#elif defined(OS_LINUX) || defined(OS_BSD) +   std::unique_ptr<ProxyConfigServiceLinux> linux_config_service( +       new ProxyConfigServiceLinux()); +  diff --git a/devel/electron6/files/patch-net_quic_platform_impl_quic__ip__address__impl.cc b/devel/electron6/files/patch-net_quic_platform_impl_quic__ip__address__impl.cc new file mode 100644 index 000000000000..71a422e9b2ca --- /dev/null +++ b/devel/electron6/files/patch-net_quic_platform_impl_quic__ip__address__impl.cc @@ -0,0 +1,10 @@ +--- net/quic/platform/impl/quic_ip_address_impl.cc.orig	2019-09-10 11:14:10 UTC ++++ net/quic/platform/impl/quic_ip_address_impl.cc +@@ -13,6 +13,7 @@ + #include <ws2bth.h> + #elif defined(OS_POSIX) || defined(OS_FUCHSIA) + #include <netinet/in.h> ++#include <sys/socket.h> + #endif +  + using std::string; diff --git a/devel/electron6/files/patch-net_socket_socket__posix.cc b/devel/electron6/files/patch-net_socket_socket__posix.cc new file mode 100644 index 000000000000..ea6fbf137ee9 --- /dev/null +++ b/devel/electron6/files/patch-net_socket_socket__posix.cc @@ -0,0 +1,11 @@ +--- net/socket/socket_posix.cc.orig	2019-09-10 11:14:10 UTC ++++ net/socket/socket_posix.cc +@@ -569,7 +569,7 @@ void SocketPosix::ReadCompleted() { + } +  + int SocketPosix::DoWrite(IOBuffer* buf, int buf_len) { +-#if defined(OS_LINUX) || defined(OS_ANDROID) ++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD) +   // Disable SIGPIPE for this write. Although Chromium globally disables +   // SIGPIPE, the net stack may be used in other consumers which do not do +   // this. MSG_NOSIGNAL is a Linux-only API. On OS X, this is a setsockopt on diff --git a/devel/electron6/files/patch-net_socket_socks5__client__socket.cc b/devel/electron6/files/patch-net_socket_socks5__client__socket.cc new file mode 100644 index 000000000000..ef7673c870b7 --- /dev/null +++ b/devel/electron6/files/patch-net_socket_socks5__client__socket.cc @@ -0,0 +1,13 @@ +--- net/socket/socks5_client_socket.cc.orig	2019-09-10 11:14:10 UTC ++++ net/socket/socks5_client_socket.cc +@@ -4,6 +4,10 @@ +  + #include "net/socket/socks5_client_socket.h" +  ++#if defined(OS_BSD) ++#include <netinet/in.h> ++#endif ++ + #include <utility> +  + #include "base/bind.h" diff --git a/devel/electron6/files/patch-net_socket_tcp__socket__posix.cc b/devel/electron6/files/patch-net_socket_tcp__socket__posix.cc new file mode 100644 index 000000000000..040ebe9609c1 --- /dev/null +++ b/devel/electron6/files/patch-net_socket_tcp__socket__posix.cc @@ -0,0 +1,20 @@ +--- net/socket/tcp_socket_posix.cc.orig	2019-09-10 11:14:10 UTC ++++ net/socket/tcp_socket_posix.cc +@@ -88,6 +88,17 @@ bool SetTCPKeepAlive(int fd, bool enable, int delay) { +     PLOG(ERROR) << "Failed to set TCP_KEEPALIVE on fd: " << fd; +     return false; +   } ++#elif defined(OS_BSD) ++  // Set seconds until first TCP keep alive. ++  if (setsockopt(fd, IPPROTO_TCP, TCP_KEEPIDLE, &delay, sizeof(delay))) { ++    PLOG(ERROR) << "Failed to set TCP_KEEPIDLE on fd: " << fd; ++    return false; ++  } ++  // Set seconds between TCP keep alives. ++  if (setsockopt(fd, IPPROTO_TCP, TCP_KEEPINTVL, &delay, sizeof(delay))) { ++    PLOG(ERROR) << "Failed to set TCP_KEEPINTVL on fd: " << fd; ++    return false; ++  } + #endif +   return true; + } diff --git a/devel/electron6/files/patch-net_socket_udp__socket__posix.cc b/devel/electron6/files/patch-net_socket_udp__socket__posix.cc new file mode 100644 index 000000000000..814263c38c22 --- /dev/null +++ b/devel/electron6/files/patch-net_socket_udp__socket__posix.cc @@ -0,0 +1,108 @@ +--- net/socket/udp_socket_posix.cc.orig	2019-09-10 11:14:10 UTC ++++ net/socket/udp_socket_posix.cc +@@ -69,7 +69,7 @@ const int kActivityMonitorMinimumSamplesForThroughputE + const base::TimeDelta kActivityMonitorMsThreshold = +     base::TimeDelta::FromMilliseconds(100); +  +-#if defined(OS_MACOSX) ++#if defined(OS_MACOSX) || defined(OS_BSD) + // When enabling multicast using setsockopt(IP_MULTICAST_IF) MacOS + // requires passing IPv4 address instead of interface index. This function + // resolves IPv4 address by interface index. The |address| is returned in +@@ -98,7 +98,7 @@ int GetIPv4AddressFromIndex(int socket, uint32_t index +   return OK; + } +  +-#endif  // OS_MACOSX ++#endif  // OS_MACOSX || OS_BSD +  + #if defined(OS_MACOSX) && !defined(OS_IOS) +  +@@ -645,13 +645,13 @@ int UDPSocketPosix::SetDoNotFragment() { + } +  + void UDPSocketPosix::SetMsgConfirm(bool confirm) { +-#if !defined(OS_MACOSX) && !defined(OS_IOS) ++#if !defined(OS_MACOSX) && !defined(OS_IOS) && !defined(OS_BSD) +   if (confirm) { +     sendto_flags_ |= MSG_CONFIRM; +   } else { +     sendto_flags_ &= ~MSG_CONFIRM; +   } +-#endif  // !defined(OS_MACOSX) && !defined(OS_IOS) ++#endif  // !defined(OS_MACOSX) && !defined(OS_IOS) && !defined(OS_BSD) + } +  + int UDPSocketPosix::AllowAddressReuse() { +@@ -666,17 +666,20 @@ int UDPSocketPosix::SetBroadcast(bool broadcast) { +   DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); +   int value = broadcast ? 1 : 0; +   int rv; +-#if defined(OS_MACOSX) ++#if defined(OS_MACOSX) || defined(OS_BSD) +   // SO_REUSEPORT on OSX permits multiple processes to each receive +   // UDP multicast or broadcast datagrams destined for the bound +   // port. +   // This is only being set on OSX because its behavior is platform dependent +   // and we are playing it safe by only setting it on platforms where things +   // break. ++  rv = setsockopt(socket_, SOL_SOCKET, SO_REUSEADDR, &value, sizeof(value)); ++  if (rv != 0) ++    return MapSystemError(errno); +   rv = setsockopt(socket_, SOL_SOCKET, SO_REUSEPORT, &value, sizeof(value)); +   if (rv != 0) +     return MapSystemError(errno); +-#endif  // defined(OS_MACOSX) ++#endif  // defined(OS_MACOSX) || defined(OS_BSD) +   rv = setsockopt(socket_, SOL_SOCKET, SO_BROADCAST, &value, sizeof(value)); +  +   return rv == 0 ? OK : MapSystemError(errno); +@@ -938,7 +941,7 @@ int UDPSocketPosix::SetMulticastOptions() { +   if (multicast_interface_ != 0) { +     switch (addr_family_) { +       case AF_INET: { +-#if defined(OS_MACOSX) ++#if defined(OS_MACOSX) || defined(OS_BSD) +         ip_mreq mreq = {}; +         int error = GetIPv4AddressFromIndex(socket_, multicast_interface_, +                                             &mreq.imr_interface.s_addr); +@@ -950,7 +953,11 @@ int UDPSocketPosix::SetMulticastOptions() { +         mreq.imr_address.s_addr = htonl(INADDR_ANY); + #endif  //  !defined(OS_MACOSX) +         int rv = setsockopt(socket_, IPPROTO_IP, IP_MULTICAST_IF, ++#if defined(OS_BSD) ++                            reinterpret_cast<const char*>(&mreq.imr_interface.s_addr), sizeof(mreq.imr_interface.s_addr)); ++#else +                             reinterpret_cast<const char*>(&mreq), sizeof(mreq)); ++#endif +         if (rv) +           return MapSystemError(errno); +         break; +@@ -1012,7 +1019,7 @@ int UDPSocketPosix::JoinGroup(const IPAddress& group_a +       if (addr_family_ != AF_INET) +         return ERR_ADDRESS_INVALID; +  +-#if defined(OS_MACOSX) ++#if defined(OS_MACOSX) || defined(OS_BSD) +       ip_mreq mreq = {}; +       int error = GetIPv4AddressFromIndex(socket_, multicast_interface_, +                                           &mreq.imr_interface.s_addr); +@@ -1060,9 +1067,18 @@ int UDPSocketPosix::LeaveGroup(const IPAddress& group_ +     case IPAddress::kIPv4AddressSize: { +       if (addr_family_ != AF_INET) +         return ERR_ADDRESS_INVALID; ++#if defined(OS_BSD) ++      ip_mreq mreq = {}; ++      int error = GetIPv4AddressFromIndex(socket_, multicast_interface_, ++                                          &mreq.imr_interface.s_addr); ++ ++      if (error != OK) ++        return error; ++#else +       ip_mreqn mreq = {}; +       mreq.imr_ifindex = multicast_interface_; +       mreq.imr_address.s_addr = INADDR_ANY; ++#endif +       memcpy(&mreq.imr_multiaddr, group_address.bytes().data(), +              IPAddress::kIPv4AddressSize); +       int rv = setsockopt(socket_, IPPROTO_IP, IP_DROP_MEMBERSHIP, diff --git a/devel/electron6/files/patch-net_socket_udp__socket__posix.h b/devel/electron6/files/patch-net_socket_udp__socket__posix.h new file mode 100644 index 000000000000..72bf892abcb0 --- /dev/null +++ b/devel/electron6/files/patch-net_socket_udp__socket__posix.h @@ -0,0 +1,11 @@ +--- net/socket/udp_socket_posix.h.orig	2019-09-10 11:14:10 UTC ++++ net/socket/udp_socket_posix.h +@@ -33,7 +33,7 @@ +  + #if defined(__ANDROID__) && defined(__aarch64__) + #define HAVE_SENDMMSG 1 +-#elif defined(OS_LINUX) ++#elif defined(OS_LINUX) || defined(OS_BSD) + #define HAVE_SENDMMSG 1 + #else + #define HAVE_SENDMMSG 0 diff --git a/devel/electron6/files/patch-net_socket_unix__domain__client__socket__posix.cc b/devel/electron6/files/patch-net_socket_unix__domain__client__socket__posix.cc new file mode 100644 index 000000000000..81685d32a765 --- /dev/null +++ b/devel/electron6/files/patch-net_socket_unix__domain__client__socket__posix.cc @@ -0,0 +1,11 @@ +--- net/socket/unix_domain_client_socket_posix.cc.orig	2019-09-10 10:42:43 UTC ++++ net/socket/unix_domain_client_socket_posix.cc +@@ -56,7 +56,7 @@ bool UnixDomainClientSocket::FillAddress(const std::st +     return true; +   } +  +-#if defined(OS_ANDROID) || defined(OS_LINUX) ++#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_BSD) +   // Convert the path given into abstract socket name. It must start with +   // the '\0' character, so we are adding it. |addr_len| must specify the +   // length of the structure exactly, as potentially the socket name may diff --git a/devel/electron6/files/patch-net_tools_cert__verify__tool_cert__verify__tool.cc b/devel/electron6/files/patch-net_tools_cert__verify__tool_cert__verify__tool.cc new file mode 100644 index 000000000000..21ee836bf151 --- /dev/null +++ b/devel/electron6/files/patch-net_tools_cert__verify__tool_cert__verify__tool.cc @@ -0,0 +1,20 @@ +--- net/tools/cert_verify_tool/cert_verify_tool.cc.orig	2019-09-10 11:14:10 UTC ++++ net/tools/cert_verify_tool/cert_verify_tool.cc +@@ -28,7 +28,7 @@ + #include "net/url_request/url_request_context_builder.h" + #include "net/url_request/url_request_context_getter.h" +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + #include "net/proxy_resolution/proxy_config.h" + #include "net/proxy_resolution/proxy_config_service_fixed.h" + #endif +@@ -49,7 +49,7 @@ void SetUpOnNetworkThread( +     base::WaitableEvent* initialization_complete_event) { +   net::URLRequestContextBuilder url_request_context_builder; +   url_request_context_builder.set_user_agent(GetUserAgent()); +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   // On Linux, use a fixed ProxyConfigService, since the default one +   // depends on glib. +   // diff --git a/devel/electron6/files/patch-net_tools_quic_quic__http__proxy__backend.cc b/devel/electron6/files/patch-net_tools_quic_quic__http__proxy__backend.cc new file mode 100644 index 000000000000..62ad72465d61 --- /dev/null +++ b/devel/electron6/files/patch-net_tools_quic_quic__http__proxy__backend.cc @@ -0,0 +1,11 @@ +--- net/tools/quic/quic_http_proxy_backend.cc.orig	2019-09-10 11:14:11 UTC ++++ net/tools/quic/quic_http_proxy_backend.cc +@@ -160,7 +160,7 @@ void QuicHttpProxyBackend::InitializeURLRequestContext +   // Enable HTTP2, but disable QUIC on the backend +   context_builder.SetSpdyAndQuicEnabled(true /* http2 */, false /* quic */); +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   // On Linux, use a fixed ProxyConfigService, since the default one +   // depends on glib. +   context_builder.set_proxy_config_service( diff --git a/devel/electron6/files/patch-net_url__request_url__request__context__builder.cc b/devel/electron6/files/patch-net_url__request_url__request__context__builder.cc new file mode 100644 index 000000000000..0c1dd48a53a2 --- /dev/null +++ b/devel/electron6/files/patch-net_url__request_url__request__context__builder.cc @@ -0,0 +1,20 @@ +--- net/url_request/url_request_context_builder.cc.orig	2019-09-10 11:14:11 UTC ++++ net/url_request/url_request_context_builder.cc +@@ -534,7 +534,7 @@ std::unique_ptr<URLRequestContext> URLRequestContextBu +   } +  +   if (!proxy_resolution_service_) { +-#if !defined(OS_LINUX) && !defined(OS_ANDROID) ++#if !defined(OS_LINUX) && !defined(OS_ANDROID) && !defined(OS_BSD) +     // TODO(willchan): Switch to using this code when +     // ProxyResolutionService::CreateSystemProxyConfigService()'s signature +     // doesn't suck. +@@ -543,7 +543,7 @@ std::unique_ptr<URLRequestContext> URLRequestContextBu +           ProxyResolutionService::CreateSystemProxyConfigService( +               base::ThreadTaskRunnerHandle::Get().get()); +     } +-#endif  // !defined(OS_LINUX) && !defined(OS_ANDROID) ++#endif  // !defined(OS_LINUX) && !defined(OS_ANDROID) && !defined(OS_BSD) +     proxy_resolution_service_ = CreateProxyResolutionService( +         std::move(proxy_config_service_), context.get(), +         context->host_resolver(), context->network_delegate(), diff --git a/devel/electron6/files/patch-pdf_pdfium_pdfium__engine.cc b/devel/electron6/files/patch-pdf_pdfium_pdfium__engine.cc new file mode 100644 index 000000000000..ae6c92b2918c --- /dev/null +++ b/devel/electron6/files/patch-pdf_pdfium_pdfium__engine.cc @@ -0,0 +1,74 @@ +--- pdf/pdfium/pdfium_engine.cc.orig	2019-09-10 11:14:11 UTC ++++ pdf/pdfium/pdfium_engine.cc +@@ -134,7 +134,7 @@ constexpr base::TimeDelta kMaxInitialProgressivePaintT +  + PDFiumEngine* g_engine_for_fontmapper = nullptr; +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +  + PP_Instance g_last_instance_id; +  +@@ -414,7 +414,7 @@ void Release(FPDF_SYSFONTINFO* sysfontinfo) { +   fontinfo_with_metrics->default_sysfontinfo->Release( +       fontinfo_with_metrics->default_sysfontinfo); + } +-#endif  // defined(OS_LINUX) ++#endif  // defined(OS_LINUX) || defined(OS_BSD) +  + PDFiumEngine::CreateDocumentLoaderFunction +     g_create_document_loader_for_testing = nullptr; +@@ -664,7 +664,7 @@ bool InitializeSDK() { +   config.m_v8EmbedderSlot = gin::kEmbedderPDFium; +   FPDF_InitLibraryWithConfig(&config); +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   // Font loading doesn't work in the renderer sandbox in Linux. +   FPDF_SetSystemFontInfo(&g_font_info); + #else +@@ -689,7 +689,7 @@ bool InitializeSDK() { +  + void ShutdownSDK() { +   FPDF_DestroyLibrary(); +-#if !defined(OS_LINUX) ++#if !defined(OS_LINUX) && !defined(OS_BSD) +   delete g_font_info; + #endif +   TearDownV8(); +@@ -713,7 +713,7 @@ PDFiumEngine::PDFiumEngine(PDFEngine::Client* client,  +   IFSDK_PAUSE::user = nullptr; +   IFSDK_PAUSE::NeedToPauseNow = Pause_NeedToPauseNow; +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   // PreviewModeClient does not know its pp::Instance. +   pp::Instance* instance = client_->GetPluginInstance(); +   if (instance) +@@ -1177,7 +1177,7 @@ pp::Buffer_Dev PDFiumEngine::PrintPagesAsRasterPdf( +  +   KillFormFocus(); +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   g_last_instance_id = client_->GetPluginInstance()->pp_instance(); + #endif +  +@@ -2978,7 +2978,7 @@ bool PDFiumEngine::ContinuePaint(int progressive_index +   DCHECK(image_data); +  +   last_progressive_start_time_ = base::Time::Now(); +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   g_last_instance_id = client_->GetPluginInstance()->pp_instance(); + #endif +  +@@ -3453,7 +3453,7 @@ void PDFiumEngine::SetCurrentPage(int index) { +     FORM_DoPageAAction(old_page, form(), FPDFPAGE_AACTION_CLOSE); +   } +   most_visible_page_ = index; +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   g_last_instance_id = client_->GetPluginInstance()->pp_instance(); + #endif +   if (most_visible_page_ != -1 && called_do_document_action_) { diff --git a/devel/electron6/files/patch-ppapi_proxy_file__io__resource.cc b/devel/electron6/files/patch-ppapi_proxy_file__io__resource.cc new file mode 100644 index 000000000000..9eef7c1cbd55 --- /dev/null +++ b/devel/electron6/files/patch-ppapi_proxy_file__io__resource.cc @@ -0,0 +1,48 @@ +--- ppapi/proxy/file_io_resource.cc.orig	2019-09-10 10:42:43 UTC ++++ ppapi/proxy/file_io_resource.cc +@@ -285,17 +285,19 @@ int32_t FileIOResource::Write(int64_t offset, +  +   if (check_quota_) { +     int64_t increase = 0; +-    uint64_t max_offset = 0; ++    uint64_t _max_offset = 0; ++    // (rene) avoid name collission with /usr/include/vm/vm_map.h on FreeBSD ++    // which also defines max_offset +     bool append = (open_flags_ & PP_FILEOPENFLAG_APPEND) != 0; +     if (append) { +       increase = bytes_to_write; +     } else { +-      uint64_t max_offset = offset + bytes_to_write; +-      if (max_offset > ++      uint64_t _max_offset = offset + bytes_to_write; ++      if (_max_offset > +           static_cast<uint64_t>(std::numeric_limits<int64_t>::max())) { +         return PP_ERROR_FAILED;  // amount calculation would overflow. +       } +-      increase = static_cast<int64_t>(max_offset) - max_written_offset_; ++      increase = static_cast<int64_t>(_max_offset) - max_written_offset_; +     } +  +     if (increase > 0) { +@@ -319,7 +321,7 @@ int32_t FileIOResource::Write(int64_t offset, +       if (append) +         append_mode_write_amount_ += bytes_to_write; +       else +-        max_written_offset_ = max_offset; ++        max_written_offset_ = _max_offset; +     } +   } +   return WriteValidated(offset, buffer, bytes_to_write, callback); +@@ -597,9 +599,9 @@ void FileIOResource::OnRequestWriteQuotaComplete( +   } else { +     DCHECK_LE(offset + bytes_to_write - max_written_offset_, granted); +  +-    int64_t max_offset = offset + bytes_to_write; +-    if (max_written_offset_ < max_offset) +-      max_written_offset_ = max_offset; ++    int64_t _max_offset = offset + bytes_to_write; ++    if (max_written_offset_ < _max_offset) ++      max_written_offset_ = _max_offset; +   } +  +   if (callback->is_blocking()) { diff --git a/devel/electron6/files/patch-printing_backend_print__backend__cups.h b/devel/electron6/files/patch-printing_backend_print__backend__cups.h new file mode 100644 index 000000000000..535e9ca5ba04 --- /dev/null +++ b/devel/electron6/files/patch-printing_backend_print__backend__cups.h @@ -0,0 +1,11 @@ +--- printing/backend/print_backend_cups.h.orig	2019-09-10 11:14:11 UTC ++++ printing/backend/print_backend_cups.h +@@ -5,6 +5,8 @@ + #ifndef PRINTING_BACKEND_PRINT_BACKEND_CUPS_H_ + #define PRINTING_BACKEND_PRINT_BACKEND_CUPS_H_ +  ++#include <cups/ppd.h> ++ + #include <string> +  + #include "base/files/file_util.h" diff --git a/devel/electron6/files/patch-printing_cups__config__helper.py b/devel/electron6/files/patch-printing_cups__config__helper.py new file mode 100644 index 000000000000..4a5df9ff1dd2 --- /dev/null +++ b/devel/electron6/files/patch-printing_cups__config__helper.py @@ -0,0 +1,11 @@ +--- printing/cups_config_helper.py.orig	2019-09-10 10:42:43 UTC ++++ printing/cups_config_helper.py +@@ -65,7 +65,7 @@ def main(): +   mode = sys.argv[1] +   if len(sys.argv) > 2 and sys.argv[2]: +     sysroot = sys.argv[2] +-    cups_config = os.path.join(sysroot, 'usr', 'bin', 'cups-config') ++    cups_config = os.path.join(sysroot, 'bin', 'cups-config') +     if not os.path.exists(cups_config): +       print 'cups-config not found: %s' % cups_config +       return 1 diff --git a/devel/electron6/files/patch-remoting_base_chromoting__event.cc b/devel/electron6/files/patch-remoting_base_chromoting__event.cc new file mode 100644 index 000000000000..a95349dacede --- /dev/null +++ b/devel/electron6/files/patch-remoting_base_chromoting__event.cc @@ -0,0 +1,11 @@ +--- remoting/base/chromoting_event.cc.orig	2019-09-10 11:14:11 UTC ++++ remoting/base/chromoting_event.cc +@@ -189,7 +189,7 @@ void ChromotingEvent::AddSystemInfo() { +   SetString(kCpuKey, base::SysInfo::OperatingSystemArchitecture()); +   SetString(kOsVersionKey, GetOperatingSystemVersionString()); +   SetString(kWebAppVersionKey, STRINGIZE(VERSION)); +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   Os os = Os::CHROMOTING_LINUX; + #elif defined(OS_CHROMEOS) +   Os os = Os::CHROMOTING_CHROMEOS; diff --git a/devel/electron6/files/patch-remoting_client_display_sys__opengl.h b/devel/electron6/files/patch-remoting_client_display_sys__opengl.h new file mode 100644 index 000000000000..48124c8a6bf1 --- /dev/null +++ b/devel/electron6/files/patch-remoting_client_display_sys__opengl.h @@ -0,0 +1,11 @@ +--- remoting/client/display/sys_opengl.h.orig	2019-09-10 10:42:43 UTC ++++ remoting/client/display/sys_opengl.h +@@ -9,7 +9,7 @@ +  + #if defined(OS_IOS) + #include <OpenGLES/ES3/gl.h> +-#elif defined(OS_LINUX) ++#elif defined(OS_LINUX) || defined(OS_BSD) + #define GL_GLEXT_PROTOTYPES + #include <GL/gl.h> + #include <GL/glext.h> diff --git a/devel/electron6/files/patch-remoting_host_evaluate__capability.cc b/devel/electron6/files/patch-remoting_host_evaluate__capability.cc new file mode 100644 index 000000000000..879aef159f18 --- /dev/null +++ b/devel/electron6/files/patch-remoting_host_evaluate__capability.cc @@ -0,0 +1,11 @@ +--- remoting/host/evaluate_capability.cc.orig	2019-09-10 10:42:43 UTC ++++ remoting/host/evaluate_capability.cc +@@ -50,7 +50,7 @@ base::FilePath BuildHostBinaryPath() { +   } + #endif +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   if (path.BaseName().value() == +       FILE_PATH_LITERAL("chrome-remote-desktop-host")) { +     return path; diff --git a/devel/electron6/files/patch-remoting_host_host__attributes.cc b/devel/electron6/files/patch-remoting_host_host__attributes.cc new file mode 100644 index 000000000000..3dbc10a512e8 --- /dev/null +++ b/devel/electron6/files/patch-remoting_host_host__attributes.cc @@ -0,0 +1,11 @@ +--- remoting/host/host_attributes.cc.orig	2019-09-10 11:14:11 UTC ++++ remoting/host/host_attributes.cc +@@ -123,7 +123,7 @@ std::string GetHostAttributes() { +       media::InitializeMediaFoundation()) { +     result.push_back("HWEncoder"); +   } +-#elif defined(OS_LINUX) ++#elif defined(OS_LINUX) || defined(OS_BSD) +   result.push_back("HWEncoder"); + #endif +  diff --git a/devel/electron6/files/patch-remoting_host_host__details.cc b/devel/electron6/files/patch-remoting_host_host__details.cc new file mode 100644 index 000000000000..e705321f08ce --- /dev/null +++ b/devel/electron6/files/patch-remoting_host_host__details.cc @@ -0,0 +1,11 @@ +--- remoting/host/host_details.cc.orig	2019-09-10 11:14:11 UTC ++++ remoting/host/host_details.cc +@@ -24,7 +24,7 @@ std::string GetHostOperatingSystemName() { +   return "Mac"; + #elif defined(OS_CHROMEOS) +   return "ChromeOS"; +-#elif defined(OS_LINUX) ++#elif defined(OS_LINUX) || defined(OS_BSD) +   return "Linux"; + #elif defined(OS_ANDROID) +   return "Android"; diff --git a/devel/electron6/files/patch-remoting_host_it2me_it2me__native__messaging__host__main.cc b/devel/electron6/files/patch-remoting_host_it2me_it2me__native__messaging__host__main.cc new file mode 100644 index 000000000000..655c1a6f3c84 --- /dev/null +++ b/devel/electron6/files/patch-remoting_host_it2me_it2me__native__messaging__host__main.cc @@ -0,0 +1,35 @@ +--- remoting/host/it2me/it2me_native_messaging_host_main.cc.orig	2019-09-10 11:14:11 UTC ++++ remoting/host/it2me/it2me_native_messaging_host_main.cc +@@ -27,12 +27,12 @@ + #include "remoting/host/resources.h" + #include "remoting/host/usage_stats_consent.h" +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + #include <gtk/gtk.h> +  + #include "base/linux_util.h" + #include "ui/gfx/x/x11.h" +-#endif  // defined(OS_LINUX) ++#endif  // defined(OS_LINUX) || defined(OS_BSD) +  + #if defined(OS_MACOSX) + #include "base/mac/scoped_nsautorelease_pool.h" +@@ -106,7 +106,7 @@ int It2MeNativeMessagingHostMain(int argc, char** argv +  +   remoting::LoadResources(""); +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   // Required in order for us to run multiple X11 threads. +   XInitThreads(); +  +@@ -122,7 +122,7 @@ int It2MeNativeMessagingHostMain(int argc, char** argv +   // Need to prime the host OS version value for linux to prevent IO on the +   // network thread. base::GetLinuxDistro() caches the result. +   base::GetLinuxDistro(); +-#endif  // OS_LINUX ++#endif  // OS_LINUX || OS_BSD +  +   base::File read_file; +   base::File write_file; diff --git a/devel/electron6/files/patch-remoting_host_me2me__desktop__environment.cc b/devel/electron6/files/patch-remoting_host_me2me__desktop__environment.cc new file mode 100644 index 000000000000..b83b156ff2f4 --- /dev/null +++ b/devel/electron6/files/patch-remoting_host_me2me__desktop__environment.cc @@ -0,0 +1,11 @@ +--- remoting/host/me2me_desktop_environment.cc.orig	2019-09-10 11:14:11 UTC ++++ remoting/host/me2me_desktop_environment.cc +@@ -131,7 +131,7 @@ bool Me2MeDesktopEnvironment::InitializeSecurity( +  +   // Otherwise, if the session is shared with the local user start monitoring +   // the local input and create the in-session UI. +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   bool want_user_interface = false; + #elif defined(OS_MACOSX) +   // Don't try to display any UI on top of the system's login screen as this diff --git a/devel/electron6/files/patch-remoting_host_remoting__me2me__host.cc b/devel/electron6/files/patch-remoting_host_remoting__me2me__host.cc new file mode 100644 index 000000000000..62e1fa64c857 --- /dev/null +++ b/devel/electron6/files/patch-remoting_host_remoting__me2me__host.cc @@ -0,0 +1,108 @@ +--- remoting/host/remoting_me2me_host.cc.orig	2019-09-10 11:14:11 UTC ++++ remoting/host/remoting_me2me_host.cc +@@ -126,13 +126,13 @@ + #include "remoting/host/mac/permission_utils.h" + #endif  // defined(OS_MACOSX) +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + #include <gtk/gtk.h> + #include "base/linux_util.h" + #include "remoting/host/audio_capturer_linux.h" + #include "remoting/host/linux/certificate_watcher.h" + #include "ui/gfx/x/x11.h" +-#endif  // defined(OS_LINUX) ++#endif  // defined(OS_LINUX) || defined(OS_BSD) +  + #if defined(OS_WIN) + #include <commctrl.h> +@@ -167,11 +167,11 @@ const char kApplicationName[] = "chromoting"; + const char kStdinConfigPath[] = "-"; + #endif  // !defined(REMOTING_MULTI_PROCESS) +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + // The command line switch used to pass name of the pipe to capture audio on + // linux. + const char kAudioPipeSwitchName[] = "audio-pipe-name"; +-#endif  // defined(OS_LINUX) ++#endif  // defined(OS_LINUX) || defined(OS_BSD) +  + #if defined(OS_POSIX) + // The command line switch used to pass name of the unix domain socket used to +@@ -369,7 +369,7 @@ class HostProcess : public ConfigWatcher::Delegate, +  +   std::unique_ptr<ChromotingHostContext> context_; +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   // Watch for certificate changes and kill the host when changes occur +   std::unique_ptr<CertificateWatcher> cert_watcher_; + #endif +@@ -589,10 +589,10 @@ bool HostProcess::InitWithCommandLine(const base::Comm +   enable_window_capture_ = cmd_line->HasSwitch(kWindowIdSwitchName); +   if (enable_window_capture_) { +  +-#if defined(OS_LINUX) || defined(OS_WIN) ++#if defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD) +     LOG(WARNING) << "Window capturing is not fully supported on Linux or " +                     "Windows."; +-#endif  // defined(OS_LINUX) || defined(OS_WIN) ++#endif  // defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD) +  +     // uint32_t is large enough to hold window IDs on all platforms. +     uint32_t window_id; +@@ -788,7 +788,7 @@ void HostProcess::CreateAuthenticatorFactory() { +     DCHECK(third_party_auth_config_.token_url.is_valid()); +     DCHECK(third_party_auth_config_.token_validation_url.is_valid()); +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +     if (!cert_watcher_) { +       cert_watcher_.reset(new CertificateWatcher( +           base::Bind(&HostProcess::ShutdownHost, this, kSuccessExitCode), +@@ -874,7 +874,7 @@ void HostProcess::StartOnUiThread() { +       base::Bind(&HostProcess::OnPolicyUpdate, base::Unretained(this)), +       base::Bind(&HostProcess::OnPolicyError, base::Unretained(this))); +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   // If an audio pipe is specific on the command-line then initialize +   // AudioCapturerLinux to capture from it. +   base::FilePath audio_pipe_name = base::CommandLine::ForCurrentProcess()-> +@@ -883,7 +883,7 @@ void HostProcess::StartOnUiThread() { +     remoting::AudioCapturerLinux::InitializePipeReader( +         context_->audio_task_runner(), audio_pipe_name); +   } +-#endif  // defined(OS_LINUX) ++#endif  // defined(OS_LINUX) || defined(OS_BSD) +  + #if defined(OS_POSIX) +   base::FilePath security_key_socket_name = +@@ -940,7 +940,7 @@ void HostProcess::ShutdownOnUiThread() { +   // It is now safe for the HostProcess to be deleted. +   self_ = nullptr; +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   // Cause the global AudioPipeReader to be freed, otherwise the audio +   // thread will remain in-use and prevent the process from exiting. +   // TODO(wez): DesktopEnvironmentFactory should own the pipe reader. +@@ -1634,7 +1634,7 @@ void HostProcess::StartHost() { +   host_->AddExtension(std::make_unique<TestEchoExtension>()); +  +   // TODO(simonmorris): Get the maximum session duration from a policy. +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   host_->SetMaximumSessionDuration(base::TimeDelta::FromHours(20)); + #endif +  +@@ -1819,7 +1819,7 @@ void HostProcess::OnCrash(const std::string& function_ + int HostProcessMain() { +   HOST_LOG << "Starting host process: version " << STRINGIZE(VERSION); +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   if (!base::CommandLine::ForCurrentProcess()->HasSwitch( +           kReportOfflineReasonSwitchName)) { +     // Required in order for us to run multiple X11 threads. diff --git a/devel/electron6/files/patch-remoting_webapp_base_js_platform.js b/devel/electron6/files/patch-remoting_webapp_base_js_platform.js new file mode 100644 index 000000000000..000ff4201d25 --- /dev/null +++ b/devel/electron6/files/patch-remoting_webapp_base_js_platform.js @@ -0,0 +1,17 @@ +--- remoting/webapp/base/js/platform.js.orig	2019-09-10 10:42:43 UTC ++++ remoting/webapp/base/js/platform.js +@@ -107,6 +107,14 @@ remoting.getSystemInfo = function() { +     return result; +   } +  ++  match = new RegExp('FreeBSD ([a-zA-Z0-9_]*)').exec(userAgent); ++  if (match && (match.length >= 2)) { ++    result.osName = remoting.Os.LINUX; ++    result.osVersion = ''; ++    result.cpu = match[1]; ++    return result; ++  } ++ +   match = new RegExp('([a-zA-Z]*) Mac OS X ([0-9_]*)').exec(userAgent); +   if (match && (match.length >= 3)) { +     result.osName = remoting.Os.MAC; diff --git a/devel/electron6/files/patch-sandbox_features.gni b/devel/electron6/files/patch-sandbox_features.gni new file mode 100644 index 000000000000..fb07624e9912 --- /dev/null +++ b/devel/electron6/files/patch-sandbox_features.gni @@ -0,0 +1,10 @@ +--- sandbox/features.gni.orig	2019-09-10 10:42:43 UTC ++++ sandbox/features.gni +@@ -12,6 +12,6 @@ use_seccomp_bpf = +     (is_linux || is_android) && +     (current_cpu == "x86" || current_cpu == "x64" || current_cpu == "arm" || +      current_cpu == "arm64" || current_cpu == "mipsel" || +-     current_cpu == "mips64el") ++     current_cpu == "mips64el") && !is_bsd +  + use_seccomp_bpf = use_seccomp_bpf || is_nacl_nonsfi diff --git a/devel/electron6/files/patch-sandbox_linux_BUILD.gn b/devel/electron6/files/patch-sandbox_linux_BUILD.gn new file mode 100644 index 000000000000..71bc60b9f5f0 --- /dev/null +++ b/devel/electron6/files/patch-sandbox_linux_BUILD.gn @@ -0,0 +1,47 @@ +--- sandbox/linux/BUILD.gn.orig	2019-09-10 10:42:43 UTC ++++ sandbox/linux/BUILD.gn +@@ -12,12 +12,12 @@ if (is_android) { + } +  + declare_args() { +-  compile_suid_client = is_linux ++  compile_suid_client = is_linux && !is_bsd +  +-  compile_credentials = is_linux ++  compile_credentials = is_linux && !is_bsd +  +   # On Android, use plain GTest. +-  use_base_test_suite = is_linux ++  use_base_test_suite = is_linux && !is_bsd + } +  + if (is_nacl_nonsfi) { +@@ -379,7 +379,7 @@ component("sandbox_services") { +     public_deps += [ ":sandbox_services_headers" ] +   } +  +-  if (is_nacl_nonsfi) { ++  if (is_nacl_nonsfi || is_bsd) { +     cflags = [ "-fgnu-inline-asm" ] +  +     sources -= [ +@@ -387,6 +387,8 @@ component("sandbox_services") { +       "services/init_process_reaper.h", +       "services/scoped_process.cc", +       "services/scoped_process.h", ++      "services/syscall_wrappers.cc", ++      "services/syscall_wrappers.h", +       "services/yama.cc", +       "services/yama.h", +       "syscall_broker/broker_channel.cc", +@@ -405,6 +407,10 @@ component("sandbox_services") { +       "syscall_broker/broker_process.h", +       "syscall_broker/broker_simple_message.cc", +       "syscall_broker/broker_simple_message.h", ++    ] ++    sources += [ ++      "services/libc_interceptor.cc", ++      "services/libc_interceptor.h", +     ] +   } else if (!is_android) { +     sources += [ diff --git a/devel/electron6/files/patch-sandbox_linux_services_init__process__reaper.cc b/devel/electron6/files/patch-sandbox_linux_services_init__process__reaper.cc new file mode 100644 index 000000000000..3b9857101454 --- /dev/null +++ b/devel/electron6/files/patch-sandbox_linux_services_init__process__reaper.cc @@ -0,0 +1,15 @@ +--- sandbox/linux/services/init_process_reaper.cc.orig	2019-09-10 10:42:43 UTC ++++ sandbox/linux/services/init_process_reaper.cc +@@ -1,6 +1,7 @@ + // Copyright 2013 The Chromium Authors. All rights reserved. + // Use of this source code is governed by a BSD-style license that can be + // found in the LICENSE file. ++#if 0 +  + #include "sandbox/linux/services/init_process_reaper.h" +  +@@ -100,3 +101,4 @@ bool CreateInitProcessReaper(base::OnceClosure post_fo + } +  + }  // namespace sandbox. ++#endif diff --git a/devel/electron6/files/patch-sandbox_linux_services_libc__interceptor.cc b/devel/electron6/files/patch-sandbox_linux_services_libc__interceptor.cc new file mode 100644 index 000000000000..7f22281afee7 --- /dev/null +++ b/devel/electron6/files/patch-sandbox_linux_services_libc__interceptor.cc @@ -0,0 +1,21 @@ +--- sandbox/linux/services/libc_interceptor.cc.orig	2019-09-10 10:42:43 UTC ++++ sandbox/linux/services/libc_interceptor.cc +@@ -11,7 +11,9 @@ + #include <stddef.h> + #include <stdint.h> + #include <string.h> ++#if !defined(OS_BSD) + #include <sys/prctl.h> ++#endif + #include <sys/socket.h> + #include <sys/types.h> + #include <time.h> +@@ -94,7 +96,7 @@ bool ReadTimeStruct(base::PickleIterator* iter, +   } else { +     base::AutoLock lock(g_timezones_lock.Get()); +     auto ret_pair = g_timezones.Get().insert(timezone); +-    output->tm_zone = ret_pair.first->c_str(); ++    output->tm_zone = (char *)ret_pair.first->c_str(); +   } +  +   return true; diff --git a/devel/electron6/files/patch-services_audio_BUILD.gn b/devel/electron6/files/patch-services_audio_BUILD.gn new file mode 100644 index 000000000000..09ec5dce8424 --- /dev/null +++ b/devel/electron6/files/patch-services_audio_BUILD.gn @@ -0,0 +1,11 @@ +--- services/audio/BUILD.gn.orig	2019-09-10 10:42:43 UTC ++++ services/audio/BUILD.gn +@@ -99,7 +99,7 @@ source_set("lib") { +     "//services/service_manager/sandbox:sandbox", +   ] +  +-  if (is_linux) { ++  if ((is_linux) && (!is_bsd)) { +     sources += [ +       "audio_sandbox_hook_linux.cc", +       "audio_sandbox_hook_linux.h", diff --git a/devel/electron6/files/patch-services_content_simple__browser_simple__browser__service.cc b/devel/electron6/files/patch-services_content_simple__browser_simple__browser__service.cc new file mode 100644 index 000000000000..6b5013bbc09c --- /dev/null +++ b/devel/electron6/files/patch-services_content_simple__browser_simple__browser__service.cc @@ -0,0 +1,20 @@ +--- services/content/simple_browser/simple_browser_service.cc.orig	2019-09-10 11:14:11 UTC ++++ services/content/simple_browser/simple_browser_service.cc +@@ -7,7 +7,7 @@ + #include "build/build_config.h" + #include "services/content/simple_browser/window.h" +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + #include "third_party/skia/include/ports/SkFontConfigInterface.h"  // nogncheck + #endif +  +@@ -23,7 +23,7 @@ SimpleBrowserService::~SimpleBrowserService() = defaul +  + void SimpleBrowserService::OnStart() { +   if (ui_initialization_mode_ == UIInitializationMode::kInitializeUI) { +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +     font_loader_ = +         sk_make_sp<font_service::FontLoader>(service_binding_.GetConnector()); +     SkFontConfigInterface::SetGlobal(font_loader_); diff --git a/devel/electron6/files/patch-services_content_simple__browser_simple__browser__service.h b/devel/electron6/files/patch-services_content_simple__browser_simple__browser__service.h new file mode 100644 index 000000000000..23416edf2156 --- /dev/null +++ b/devel/electron6/files/patch-services_content_simple__browser_simple__browser__service.h @@ -0,0 +1,20 @@ +--- services/content/simple_browser/simple_browser_service.h.orig	2019-09-10 11:14:11 UTC ++++ services/content/simple_browser/simple_browser_service.h +@@ -15,7 +15,7 @@ + #include "services/service_manager/public/cpp/service_binding.h" + #include "services/service_manager/public/mojom/service.mojom.h" +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + #include "components/services/font/public/cpp/font_loader.h"  // nogncheck + #endif +  +@@ -45,7 +45,7 @@ class COMPONENT_EXPORT(SIMPLE_BROWSER) SimpleBrowserSe +   // service_manager::Service: +   void OnStart() override; +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   sk_sp<font_service::FontLoader> font_loader_; + #endif +  diff --git a/devel/electron6/files/patch-services_device_geolocation_location__arbitrator.cc b/devel/electron6/files/patch-services_device_geolocation_location__arbitrator.cc new file mode 100644 index 000000000000..51f3faafebdd --- /dev/null +++ b/devel/electron6/files/patch-services_device_geolocation_location__arbitrator.cc @@ -0,0 +1,11 @@ +--- services/device/geolocation/location_arbitrator.cc.orig	2019-09-10 10:42:43 UTC ++++ services/device/geolocation/location_arbitrator.cc +@@ -156,7 +156,7 @@ LocationArbitrator::NewNetworkLocationProvider( +  + std::unique_ptr<LocationProvider> + LocationArbitrator::NewSystemLocationProvider() { +-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || \ ++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) || \ +     defined(OS_FUCHSIA) +   return nullptr; + #else diff --git a/devel/electron6/files/patch-services_device_hid_BUILD.gn b/devel/electron6/files/patch-services_device_hid_BUILD.gn new file mode 100644 index 000000000000..9b85f5c60393 --- /dev/null +++ b/devel/electron6/files/patch-services_device_hid_BUILD.gn @@ -0,0 +1,22 @@ +--- services/device/hid/BUILD.gn.orig	2019-09-10 10:42:43 UTC ++++ services/device/hid/BUILD.gn +@@ -51,6 +51,19 @@ source_set("hid") { +     deps += [ "//device/udev_linux" ] +   } +  ++  if (is_bsd) { ++    sources -= [ ++      "hid_connection_linux.cc", ++      "hid_connection_linux.h", ++    ] ++    sources += [ ++      "hid_connection_freebsd.cc", ++      "hid_connection_freebsd.h", ++      "hid_service_freebsd.cc", ++      "hid_service_freebsd.h", ++    ] ++  } ++ +   if (is_chromeos) { +     deps += [ "//chromeos/dbus/permission_broker" ] +   } diff --git a/devel/electron6/files/patch-services_device_hid_hid__connection__freebsd.cc b/devel/electron6/files/patch-services_device_hid_hid__connection__freebsd.cc new file mode 100644 index 000000000000..aa83dd50bcaf --- /dev/null +++ b/devel/electron6/files/patch-services_device_hid_hid__connection__freebsd.cc @@ -0,0 +1,243 @@ +--- services/device/hid/hid_connection_freebsd.cc.orig	2019-09-16 09:25:15 UTC ++++ services/device/hid/hid_connection_freebsd.cc +@@ -0,0 +1,240 @@ ++// Copyright (c) 2014 The Chromium Authors. All rights reserved. ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++ ++#include "services/device/hid/hid_connection_freebsd.h" ++ ++#include <dev/usb/usbhid.h> ++#include <dev/usb/usb_ioctl.h> ++ ++#include "base/bind.h" ++#include "base/files/file_descriptor_watcher_posix.h" ++#include "base/location.h" ++#include "base/numerics/safe_math.h" ++#include "base/posix/eintr_wrapper.h" ++#include "base/single_thread_task_runner.h" ++#include "base/strings/stringprintf.h" ++#include "base/task/post_task.h" ++#include "base/threading/scoped_blocking_call.h" ++#include "base/threading/thread_restrictions.h" ++#include "base/threading/thread_task_runner_handle.h" ++#include "components/device_event_log/device_event_log.h" ++#include "services/device/hid/hid_service.h" ++ ++namespace device { ++ ++class HidConnectionFreeBSD::BlockingTaskHelper { ++ public: ++  BlockingTaskHelper(base::ScopedFD fd, ++                     scoped_refptr<HidDeviceInfo> device_info, ++                     base::WeakPtr<HidConnectionFreeBSD> connection) ++      : fd_(std::move(fd)), ++        connection_(connection), ++        origin_task_runner_(base::ThreadTaskRunnerHandle::Get()) { ++    DETACH_FROM_SEQUENCE(sequence_checker_); ++    // Report buffers must always have room for the report ID. ++    report_buffer_size_ = device_info->max_input_report_size() + 1; ++    has_report_id_ = device_info->has_report_id(); ++  } ++ ++  ~BlockingTaskHelper() { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); } ++ ++  // Starts the FileDescriptorWatcher that reads input events from the device. ++  // Must be called on a thread that has a base::MessageLoopForIO. ++  void Start() { ++    DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); ++    base::internal::AssertBlockingAllowed(); ++ ++    file_watcher_ = base::FileDescriptorWatcher::WatchReadable( ++        fd_.get(), base::Bind(&BlockingTaskHelper::OnFileCanReadWithoutBlocking, ++                              base::Unretained(this))); ++  } ++ ++  void Write(scoped_refptr<base::RefCountedBytes> buffer, ++             WriteCallback callback) { ++    DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); ++    base::ScopedBlockingCall scoped_blocking_call( ++        FROM_HERE, base::BlockingType::MAY_BLOCK); ++ ++    auto data = buffer->front(); ++    size_t size = buffer->size(); ++    // if report id is 0, it shouldn't be included ++    if (data[0] == 0) { ++      data++; ++      size--; ++    } ++ ++    ssize_t result = HANDLE_EINTR(write(fd_.get(), data, size)); ++    if (result < 0) { ++      HID_PLOG(EVENT) << "Write failed"; ++      origin_task_runner_->PostTask(FROM_HERE, base::BindOnce(std::move(callback), false)); ++    } else { ++      if (static_cast<size_t>(result) != size) ++        HID_LOG(EVENT) << "Incomplete HID write: " << result << " != " << size; ++      origin_task_runner_->PostTask(FROM_HERE, base::BindOnce(std::move(callback), true)); ++    } ++  } ++ ++  void GetFeatureReport(uint8_t report_id, ++                        scoped_refptr<base::RefCountedBytes> buffer, ++                        ReadCallback callback) { ++    DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); ++    base::ScopedBlockingCall scoped_blocking_call( ++        FROM_HERE, base::BlockingType::MAY_BLOCK); ++    struct usb_gen_descriptor ugd; ++    ugd.ugd_report_type = UHID_FEATURE_REPORT; ++    ugd.ugd_data = buffer->front(); ++    ugd.ugd_maxlen = buffer->size(); ++    int result = HANDLE_EINTR( ++        ioctl(fd_.get(), USB_GET_REPORT, &ugd)); ++    if (result < 0) { ++      HID_PLOG(EVENT) << "Failed to get feature report"; ++      origin_task_runner_->PostTask(FROM_HERE, ++                                    base::BindOnce(std::move(callback), false, nullptr, 0)); ++    } else if (result == 0) { ++      HID_LOG(EVENT) << "Get feature result too short."; ++      origin_task_runner_->PostTask(FROM_HERE, ++                                    base::BindOnce(std::move(callback), false, nullptr, 0)); ++    } else { ++      origin_task_runner_->PostTask(FROM_HERE, ++                                    base::BindOnce(std::move(callback), true, buffer, result)); ++    } ++  } ++ ++  void SendFeatureReport(scoped_refptr<base::RefCountedBytes> buffer, ++                         WriteCallback callback) { ++    DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); ++    struct usb_gen_descriptor ugd; ++    ugd.ugd_report_type = UHID_FEATURE_REPORT; ++    ugd.ugd_data = buffer->front(); ++    ugd.ugd_maxlen = buffer->size(); ++    // FreeBSD does not require report id if it's not used ++    if (buffer->front()[0] == 0) { ++      ugd.ugd_data = buffer->front() + 1; ++      ugd.ugd_maxlen = buffer->size() - 1; ++    } else { ++      ugd.ugd_data = buffer->front(); ++      ugd.ugd_maxlen = buffer->size(); ++    } ++    int result = HANDLE_EINTR( ++        ioctl(fd_.get(), USB_SET_REPORT, &ugd)); ++    if (result < 0) { ++      HID_PLOG(EVENT) << "Failed to send feature report"; ++      origin_task_runner_->PostTask(FROM_HERE, ++                                    base::BindOnce(std::move(callback), false)); ++    } else { ++      origin_task_runner_->PostTask(FROM_HERE, ++                                    base::BindOnce(std::move(callback), true)); ++    } ++  } ++ ++ private: ++  void OnFileCanReadWithoutBlocking() { ++    DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); ++ ++    scoped_refptr<base::RefCountedBytes> buffer(new base::RefCountedBytes(report_buffer_size_)); ++    unsigned char* data = buffer->front(); ++    size_t length = report_buffer_size_; ++    if (!has_report_id_) { ++      // FreeBSD will not prefix the buffer with a report ID if report IDs are not ++      // used by the device. Prefix the buffer with 0. ++      *data++ = 0; ++      length--; ++    } ++ ++    ssize_t bytes_read = HANDLE_EINTR(read(fd_.get(), data, length)); ++    if (bytes_read < 0) { ++      if (errno != EAGAIN) { ++        HID_PLOG(EVENT) << "Read failed"; ++        // This assumes that the error is unrecoverable and disables reading ++        // from the device until it has been re-opened. ++        // TODO(reillyg): Investigate starting and stopping the file descriptor ++        // watcher in response to pending read requests so that per-request ++        // errors can be returned to the client. ++        file_watcher_.reset(); ++      } ++      return; ++    } ++    if (!has_report_id_) { ++      // Behave as if the byte prefixed above as the the report ID was read. ++      bytes_read++; ++    } ++ ++    origin_task_runner_->PostTask( ++        FROM_HERE, base::BindOnce(&HidConnectionFreeBSD::ProcessInputReport, ++                              connection_, buffer, bytes_read)); ++  } ++ ++  SEQUENCE_CHECKER(sequence_checker_); ++  base::ScopedFD fd_; ++  size_t report_buffer_size_; ++  bool has_report_id_; ++  base::WeakPtr<HidConnectionFreeBSD> connection_; ++  const scoped_refptr<base::SequencedTaskRunner> origin_task_runner_; ++  std::unique_ptr<base::FileDescriptorWatcher::Controller> file_watcher_; ++ ++  DISALLOW_COPY_AND_ASSIGN(BlockingTaskHelper); ++}; ++ ++HidConnectionFreeBSD::HidConnectionFreeBSD( ++    scoped_refptr<HidDeviceInfo> device_info, ++    base::ScopedFD fd, ++    scoped_refptr<base::SequencedTaskRunner> blocking_task_runner) ++    : HidConnection(device_info), ++      blocking_task_runner_(std::move(blocking_task_runner)), ++      weak_factory_(this) { ++  helper_ = std::make_unique<BlockingTaskHelper>(std::move(fd), device_info, ++                                                 weak_factory_.GetWeakPtr()); ++  blocking_task_runner_->PostTask( ++      FROM_HERE, base::BindOnce(&BlockingTaskHelper::Start, ++                                base::Unretained(helper_.get()))); ++} ++ ++HidConnectionFreeBSD::~HidConnectionFreeBSD() {} ++ ++void HidConnectionFreeBSD::PlatformClose() { ++  // By closing the device on the blocking task runner 1) the requirement that ++  // base::ScopedFD is destroyed on a thread where I/O is allowed is satisfied ++  // and 2) any tasks posted to this task runner that refer to this file will ++  // complete before it is closed. ++  blocking_task_runner_->DeleteSoon(FROM_HERE, helper_.release()); ++} ++ ++void HidConnectionFreeBSD::PlatformWrite(scoped_refptr<base::RefCountedBytes> buffer, ++                                     WriteCallback callback) { ++ ++  blocking_task_runner_->PostTask( ++      FROM_HERE, ++      base::BindOnce(&BlockingTaskHelper::Write, base::Unretained(helper_.get()), ++                 buffer, std::move(callback))); ++} ++ ++void HidConnectionFreeBSD::PlatformGetFeatureReport(uint8_t report_id, ++                                                ReadCallback callback) { ++  // The first byte of the destination buffer is the report ID being requested ++  // and is overwritten by the feature report. ++  DCHECK_GT(device_info()->max_feature_report_size(), 0u); ++  scoped_refptr<base::RefCountedBytes> buffer( ++      new base::RefCountedBytes(device_info()->max_feature_report_size() + 1)); ++  if (report_id != 0) ++    buffer->data()[0] = report_id; ++ ++  blocking_task_runner_->PostTask( ++      FROM_HERE, ++      base::BindOnce(&BlockingTaskHelper::GetFeatureReport, ++                 base::Unretained(helper_.get()), report_id, ++                 buffer, std::move(callback))); ++} ++ ++void HidConnectionFreeBSD::PlatformSendFeatureReport( ++    scoped_refptr<base::RefCountedBytes> buffer, ++    WriteCallback callback) { ++  base::ScopedBlockingCall scoped_blocking_call( ++      FROM_HERE, base::BlockingType::MAY_BLOCK); ++  blocking_task_runner_->PostTask( ++      FROM_HERE, ++      base::BindOnce(&BlockingTaskHelper::SendFeatureReport, ++                 base::Unretained(helper_.get()), buffer, std::move(callback))); ++} ++ ++}  // namespace device diff --git a/devel/electron6/files/patch-services_device_hid_hid__connection__freebsd.h b/devel/electron6/files/patch-services_device_hid_hid__connection__freebsd.h new file mode 100644 index 000000000000..0745f973a643 --- /dev/null +++ b/devel/electron6/files/patch-services_device_hid_hid__connection__freebsd.h @@ -0,0 +1,71 @@ +--- services/device/hid/hid_connection_freebsd.h.orig	2019-09-16 09:25:15 UTC ++++ services/device/hid/hid_connection_freebsd.h +@@ -0,0 +1,68 @@ ++// Copyright (c) 2014 The Chromium Authors. All rights reserved. ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++ ++#ifndef DEVICE_HID_HID_CONNECTION_FREEBSD_H_ ++#define DEVICE_HID_HID_CONNECTION_FREEBSD_H_ ++ ++#include <stddef.h> ++#include <stdint.h> ++ ++#include "base/files/scoped_file.h" ++#include "base/macros.h" ++#include "base/memory/ptr_util.h" ++#include "base/memory/ref_counted_memory.h" ++#include "base/memory/weak_ptr.h" ++#include "base/sequence_checker.h" ++#include "services/device/hid/hid_connection.h" ++ ++namespace base { ++class SequencedTaskRunner; ++} ++ ++namespace net { ++class IOBuffer; ++} ++ ++namespace device { ++ ++class HidConnectionFreeBSD : public HidConnection { ++ public: ++  HidConnectionFreeBSD( ++      scoped_refptr<HidDeviceInfo> device_info, ++      base::ScopedFD fd, ++      scoped_refptr<base::SequencedTaskRunner> blocking_task_runner); ++ ++ private: ++  friend class base::RefCountedThreadSafe<HidConnectionFreeBSD>; ++  class BlockingTaskHelper; ++ ++  ~HidConnectionFreeBSD() override; ++ ++  // HidConnection implementation. ++  void PlatformClose() override; ++  void PlatformWrite(scoped_refptr<base::RefCountedBytes> buffer, ++                     WriteCallback callback) override; ++  void PlatformGetFeatureReport(uint8_t report_id, ++                                ReadCallback callback) override; ++  void PlatformSendFeatureReport(scoped_refptr<base::RefCountedBytes> buffer, ++                                 WriteCallback callback) override; ++ ++  // |helper_| lives on the sequence to which |blocking_task_runner_| posts ++  // tasks so all calls must be posted there including this object's ++  // destruction. ++  std::unique_ptr<BlockingTaskHelper> helper_; ++ ++  const scoped_refptr<base::SequencedTaskRunner> blocking_task_runner_; ++  const scoped_refptr<base::SequencedTaskRunner> task_runner_; ++ ++  SEQUENCE_CHECKER(sequence_checker_); ++ ++  base::WeakPtrFactory<HidConnectionFreeBSD> weak_factory_; ++ ++  DISALLOW_COPY_AND_ASSIGN(HidConnectionFreeBSD); ++}; ++ ++}  // namespace device ++ ++#endif  // DEVICE_HID_HID_CONNECTION_FREEBSD_H_ diff --git a/devel/electron6/files/patch-services_device_hid_hid__service.cc b/devel/electron6/files/patch-services_device_hid_hid__service.cc new file mode 100644 index 000000000000..a4a2fa1b937e --- /dev/null +++ b/devel/electron6/files/patch-services_device_hid_hid__service.cc @@ -0,0 +1,20 @@ +--- services/device/hid/hid_service.cc.orig	2019-09-10 11:14:11 UTC ++++ services/device/hid/hid_service.cc +@@ -16,6 +16,8 @@ +  + #if defined(OS_LINUX) && defined(USE_UDEV) + #include "services/device/hid/hid_service_linux.h" ++#elif defined(OS_BSD) ++#include "services/device/hid/hid_service_freebsd.h" + #elif defined(OS_MACOSX) + #include "services/device/hid/hid_service_mac.h" + #elif defined(OS_WIN) +@@ -36,6 +38,8 @@ constexpr base::TaskTraits HidService::kBlockingTaskTr + std::unique_ptr<HidService> HidService::Create() { + #if defined(OS_LINUX) && defined(USE_UDEV) +   return base::WrapUnique(new HidServiceLinux()); ++#elif defined(OS_BSD) ++  return base::WrapUnique(new HidServiceFreeBSD()); + #elif defined(OS_MACOSX) +   return base::WrapUnique(new HidServiceMac()); + #elif defined(OS_WIN) diff --git a/devel/electron6/files/patch-services_device_hid_hid__service__freebsd.cc b/devel/electron6/files/patch-services_device_hid_hid__service__freebsd.cc new file mode 100644 index 000000000000..94d1e44f30bf --- /dev/null +++ b/devel/electron6/files/patch-services_device_hid_hid__service__freebsd.cc @@ -0,0 +1,377 @@ +--- services/device/hid/hid_service_freebsd.cc.orig	2019-09-16 09:25:15 UTC ++++ services/device/hid/hid_service_freebsd.cc +@@ -0,0 +1,374 @@ ++// Copyright 2014 The Chromium Authors. All rights reserved. ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++ ++#include "services/device/hid/hid_service_freebsd.h" ++ ++#include <dev/usb/usb_ioctl.h> ++#include <stdint.h> ++#include <sys/socket.h> ++#include <sys/un.h> ++ ++#include <set> ++#include <string> ++#include <vector> ++ ++#include "base/bind.h" ++#include "base/files/file_descriptor_watcher_posix.h" ++#include "base/files/file_enumerator.h" ++#include "base/location.h" ++#include "base/logging.h" ++#include "base/posix/eintr_wrapper.h" ++#include "base/single_thread_task_runner.h" ++#include "base/stl_util.h" ++#include "base/strings/pattern.h" ++#include "base/strings/stringprintf.h" ++#include "base/strings/sys_string_conversions.h" ++#include "base/strings/string_util.h" ++#include "base/strings/string_split.h" ++#include "base/task/post_task.h" ++#include "base/threading/scoped_blocking_call.h" ++#include "base/threading/thread_task_runner_handle.h" ++#include "components/device_event_log/device_event_log.h" ++#include "services/device/hid/hid_connection_freebsd.h" ++ ++const int kMaxPermissionChecks = 5; ++ ++namespace device { ++ ++struct HidServiceFreeBSD::ConnectParams { ++  ConnectParams(scoped_refptr<HidDeviceInfo> device_info, ++                const ConnectCallback& callback) ++      : device_info(std::move(device_info)), ++        callback(callback), ++        task_runner(base::ThreadTaskRunnerHandle::Get()), ++        blocking_task_runner( ++            base::CreateSequencedTaskRunnerWithTraits(kBlockingTaskTraits)) {} ++  ~ConnectParams() {} ++ ++  scoped_refptr<HidDeviceInfo> device_info; ++  ConnectCallback callback; ++  scoped_refptr<base::SequencedTaskRunner> task_runner; ++  scoped_refptr<base::SequencedTaskRunner> blocking_task_runner; ++  base::ScopedFD fd; ++}; ++ ++class HidServiceFreeBSD::BlockingTaskHelper { ++ public: ++  BlockingTaskHelper(base::WeakPtr<HidServiceFreeBSD> service) ++      : service_(std::move(service)), ++        task_runner_(base::ThreadTaskRunnerHandle::Get()) { ++    DETACH_FROM_SEQUENCE(sequence_checker_); ++ ++    timer_.reset(new base::RepeatingTimer()); ++    devd_buffer_ = new net::IOBufferWithSize(1024); ++  } ++ ++  ~BlockingTaskHelper() { ++  } ++ ++  void Start() { ++    DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); ++ ++    const base::FilePath kDevRoot("/dev"); ++    const std::string kUHIDPattern("/dev/uhid*"); ++ ++    base::FileEnumerator enumerator(kDevRoot, false, base::FileEnumerator::FILES); ++    do { ++      const base::FilePath next_device_path(enumerator.Next()); ++      const std::string next_device = next_device_path.value(); ++      if (next_device.empty()) ++        break; ++ ++      if (base::MatchPattern(next_device, kUHIDPattern)) ++        OnDeviceAdded(next_device.substr(5)); ++    } while (true); ++ ++    SetupDevdMonitor(); ++ ++    task_runner_->PostTask( ++        FROM_HERE, ++        base::Bind(&HidServiceFreeBSD::FirstEnumerationComplete, service_)); ++  } ++ ++  bool HaveReadWritePermissions(std::string device_id) { ++    std::string device_node = "/dev/" + device_id; ++    base::internal::AssertBlockingAllowed(); ++ ++    base::FilePath device_path(device_node); ++    base::File device_file; ++    int flags = ++        base::File::FLAG_OPEN | base::File::FLAG_READ | base::File::FLAG_WRITE; ++    device_file.Initialize(device_path, flags); ++    if (!device_file.IsValid()) ++      return false; ++ ++    return true; ++  } ++ ++  void OnDeviceAdded(std::string device_id) { ++    base::ScopedBlockingCall scoped_blocking_call( ++        FROM_HERE, base::BlockingType::MAY_BLOCK); ++    std::string device_node = "/dev/" + device_id; ++    uint16_t vendor_id = 0xffff; ++    uint16_t product_id = 0xffff; ++    std::string product_name = ""; ++    std::string serial_number = ""; ++ ++    std::vector<uint8_t> report_descriptor; ++ ++    base::internal::AssertBlockingAllowed(); ++ ++    base::FilePath device_path(device_node); ++    base::File device_file; ++    int flags = ++        base::File::FLAG_OPEN | base::File::FLAG_READ | base::File::FLAG_WRITE; ++    device_file.Initialize(device_path, flags); ++    if (!device_file.IsValid()) { ++      HID_LOG(ERROR) << "Failed to open '" << device_node ++                     << "': " ++                     << base::File::ErrorToString(device_file.error_details()); ++      return; ++    } ++ ++    base::ScopedFD fd; ++    fd.reset(device_file.TakePlatformFile()); ++ ++    struct usb_gen_descriptor ugd; ++    ugd.ugd_data = NULL; ++    ugd.ugd_maxlen = 0xffff; ++    int result = HANDLE_EINTR( ++        ioctl(fd.get(), USB_GET_REPORT_DESC, &ugd)); ++ ++    if (result < 0) { ++      HID_LOG(ERROR) << "Failed to get report descriptor size"; ++      return; ++    } ++ ++    report_descriptor.resize(ugd.ugd_actlen); ++ ++    ugd.ugd_data = report_descriptor.data(); ++    ugd.ugd_maxlen = ugd.ugd_actlen; ++    result = HANDLE_EINTR( ++        ioctl(fd.get(), USB_GET_REPORT_DESC, &ugd)); ++ ++    if (result < 0) { ++      HID_LOG(ERROR) << "Failed to get report descriptor"; ++      return; ++    } ++ ++    scoped_refptr<HidDeviceInfo> device_info(new HidDeviceInfo( ++        device_id, vendor_id, product_id, product_name, serial_number, ++        device::mojom::HidBusType::kHIDBusTypeUSB, ++        report_descriptor, device_node)); ++ ++    task_runner_->PostTask(FROM_HERE, base::Bind(&HidServiceFreeBSD::AddDevice, ++                                                 service_, device_info)); ++  } ++ ++  void OnDeviceRemoved(std::string device_id) { ++    base::ScopedBlockingCall scoped_blocking_call( ++        FROM_HERE, base::BlockingType::MAY_BLOCK); ++    task_runner_->PostTask( ++        FROM_HERE, base::Bind(&HidServiceFreeBSD::RemoveDevice, service_, ++                              device_id)); ++  } ++ ++ private: ++ ++  void CheckPendingPermissionChange() { ++    base::internal::AssertBlockingAllowed(); ++    std::map<std::string, int>::iterator it; ++    for (it = permissions_checks_attempts_.begin(); it != permissions_checks_attempts_.end();) { ++      std::string device_name = it->first; ++      bool keep = true; ++      if (HaveReadWritePermissions(device_name)) { ++        OnDeviceAdded(device_name); ++        keep = false; ++      } ++      else if (it->second-- <= 0) { ++        HID_LOG(ERROR) << "Still don't have write permissions to '" << device_name ++                       << "' after " << kMaxPermissionChecks << " attempts"; ++        keep = false; ++      } ++ ++      if (keep) ++        ++it; ++      else ++        permissions_checks_attempts_.erase(it++); ++    } ++ ++    if (permissions_checks_attempts_.empty()) ++      timer_->Stop(); ++  } ++ ++  void SetupDevdMonitor() { ++    base::internal::AssertBlockingAllowed(); ++ ++    int devd_fd = socket(AF_UNIX, SOCK_SEQPACKET, 0); ++    if (devd_fd < 0) ++      return; ++ ++    struct sockaddr_un sa; ++ ++    sa.sun_family = AF_UNIX; ++    strlcpy(sa.sun_path, "/var/run/devd.seqpacket.pipe", sizeof(sa.sun_path)); ++    if (connect(devd_fd, (struct sockaddr *) &sa, sizeof(sa)) < 0) { ++      close(devd_fd); ++      return; ++    }  ++ ++    devd_fd_.reset(devd_fd); ++    file_watcher_ = base::FileDescriptorWatcher::WatchReadable( ++        devd_fd_.get(), base::Bind(&BlockingTaskHelper::OnDevdMessageCanBeRead, ++                                   base::Unretained(this))); ++  } ++ ++  void OnDevdMessageCanBeRead() { ++    DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); ++    ssize_t bytes_read = HANDLE_EINTR(recv(devd_fd_.get(), devd_buffer_->data(), ++                                      devd_buffer_->size() - 1, MSG_WAITALL)); ++    if (bytes_read < 0) { ++      if (errno != EAGAIN) { ++        HID_LOG(ERROR) << "Read failed"; ++        file_watcher_.reset(); ++      } ++      return; ++    } ++ ++    devd_buffer_->data()[bytes_read] = 0; ++    char *data = devd_buffer_->data(); ++    // It may take some time for devd to change permissions ++    // on /dev/uhidX node. So do not fail immediately if ++    // open fail. Retry each second for kMaxPermissionChecks ++    // times before giving up entirely ++    if (base::StartsWith(data, "+uhid", base::CompareCase::SENSITIVE)) { ++      std::vector<std::string> parts = base::SplitString( ++        data, " ", base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL); ++      if (!parts.empty()) { ++        std::string device_name = parts[0].substr(1); // skip '+' ++        if (HaveReadWritePermissions(device_name)) ++          OnDeviceAdded(parts[0].substr(1)); ++        else { ++          // Do not re-add to checks ++          if (permissions_checks_attempts_.find(device_name) == permissions_checks_attempts_.end()) { ++            permissions_checks_attempts_.insert(std::pair<std::string, int>(device_name, kMaxPermissionChecks)); ++            timer_->Start(FROM_HERE, base::TimeDelta::FromSeconds(1), ++                          this, &BlockingTaskHelper::CheckPendingPermissionChange); ++          } ++        } ++      } ++    } ++ ++    if (base::StartsWith(data, "-uhid", base::CompareCase::SENSITIVE)) { ++      std::vector<std::string> parts = base::SplitString( ++        data, " ", base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL); ++      if (!parts.empty()) { ++        std::string device_name = parts[0].substr(1); // skip '-' ++        auto it = permissions_checks_attempts_.find(device_name); ++        if (it != permissions_checks_attempts_.end()) { ++          permissions_checks_attempts_.erase(it); ++          if (permissions_checks_attempts_.empty()) ++            timer_->Stop(); ++        } ++        OnDeviceRemoved(parts[0].substr(1)); ++      } ++    } ++  } ++ ++  SEQUENCE_CHECKER(sequence_checker_); ++ ++  // This weak pointer is only valid when checked on this task runner. ++  base::WeakPtr<HidServiceFreeBSD> service_; ++  scoped_refptr<base::SequencedTaskRunner> task_runner_; ++  std::unique_ptr<base::FileDescriptorWatcher::Controller> file_watcher_; ++  std::unique_ptr<base::RepeatingTimer> timer_; ++  base::ScopedFD devd_fd_; ++  scoped_refptr<net::IOBufferWithSize> devd_buffer_; ++  std::map<std::string, int> permissions_checks_attempts_; ++ ++  DISALLOW_COPY_AND_ASSIGN(BlockingTaskHelper); ++}; ++ ++HidServiceFreeBSD::HidServiceFreeBSD() ++    : task_runner_(base::ThreadTaskRunnerHandle::Get()), ++      blocking_task_runner_( ++          base::CreateSequencedTaskRunnerWithTraits(kBlockingTaskTraits)), ++      weak_factory_(this) { ++  helper_ = std::make_unique<BlockingTaskHelper>(weak_factory_.GetWeakPtr()); ++  blocking_task_runner_->PostTask( ++      FROM_HERE, ++      base::Bind(&BlockingTaskHelper::Start, base::Unretained(helper_.get()))); ++} ++ ++HidServiceFreeBSD::~HidServiceFreeBSD() { ++  blocking_task_runner_->DeleteSoon(FROM_HERE, helper_.release()); ++} ++ ++base::WeakPtr<HidService> HidServiceFreeBSD::GetWeakPtr() { ++  return weak_factory_.GetWeakPtr(); ++} ++ ++// static ++void HidServiceFreeBSD::OpenOnBlockingThread( ++    std::unique_ptr<ConnectParams> params) { ++  base::ScopedBlockingCall scoped_blocking_call( ++      FROM_HERE, base::BlockingType::MAY_BLOCK); ++  scoped_refptr<base::SequencedTaskRunner> task_runner = params->task_runner; ++ ++  base::FilePath device_path(params->device_info->device_node()); ++  base::File device_file; ++  int flags = ++      base::File::FLAG_OPEN | base::File::FLAG_READ | base::File::FLAG_WRITE; ++  device_file.Initialize(device_path, flags); ++  if (!device_file.IsValid()) { ++    HID_LOG(EVENT) << "Failed to open '" << params->device_info->device_node() ++                   << "': " ++                   << base::File::ErrorToString(device_file.error_details()); ++    task_runner->PostTask(FROM_HERE, base::Bind(params->callback, nullptr)); ++    return; ++  } ++  params->fd.reset(device_file.TakePlatformFile()); ++  FinishOpen(std::move(params)); ++} ++ ++void HidServiceFreeBSD::Connect(const std::string& device_guid, ++                            const ConnectCallback& callback) { ++  DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); ++ ++  const auto& map_entry = devices().find(device_guid); ++  if (map_entry == devices().end()) { ++    base::ThreadTaskRunnerHandle::Get()->PostTask( ++        FROM_HERE, base::Bind(callback, nullptr)); ++    return; ++  } ++ ++  scoped_refptr<HidDeviceInfo> device_info = map_entry->second; ++ ++  auto params = std::make_unique<ConnectParams>(device_info, callback); ++ ++  scoped_refptr<base::SequencedTaskRunner> blocking_task_runner = ++      params->blocking_task_runner; ++  blocking_task_runner->PostTask( ++      FROM_HERE, base::Bind(&HidServiceFreeBSD::OpenOnBlockingThread, ++                            base::Passed(¶ms))); ++} ++ ++// static ++void HidServiceFreeBSD::FinishOpen(std::unique_ptr<ConnectParams> params) { ++  scoped_refptr<base::SequencedTaskRunner> task_runner = params->task_runner; ++ ++  task_runner->PostTask( ++      FROM_HERE, ++      base::Bind(&HidServiceFreeBSD::CreateConnection, base::Passed(¶ms))); ++} ++ ++// static ++void HidServiceFreeBSD::CreateConnection(std::unique_ptr<ConnectParams> params) { ++  DCHECK(params->fd.is_valid()); ++  params->callback.Run(base::MakeRefCounted<HidConnectionFreeBSD>( ++      std::move(params->device_info), std::move(params->fd), ++      std::move(params->blocking_task_runner))); ++} ++ ++}  // namespace device diff --git a/devel/electron6/files/patch-services_device_hid_hid__service__freebsd.h b/devel/electron6/files/patch-services_device_hid_hid__service__freebsd.h new file mode 100644 index 000000000000..5833cf580590 --- /dev/null +++ b/devel/electron6/files/patch-services_device_hid_hid__service__freebsd.h @@ -0,0 +1,51 @@ +--- services/device/hid/hid_service_freebsd.h.orig	2019-09-16 09:25:15 UTC ++++ services/device/hid/hid_service_freebsd.h +@@ -0,0 +1,48 @@ ++// Copyright 2014 The Chromium Authors. All rights reserved. ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++ ++#ifndef DEVICE_HID_HID_SERVICE_FREEBSD_H_ ++#define DEVICE_HID_HID_SERVICE_FREEBSD_H_ ++ ++#include <string> ++ ++#include "base/macros.h" ++#include "base/memory/ref_counted.h" ++#include "base/memory/weak_ptr.h" ++#include "base/timer/timer.h" ++#include "services/device/hid/hid_service.h" ++#include "net/base/io_buffer.h" ++ ++namespace device { ++ ++class HidServiceFreeBSD : public HidService { ++ public: ++  HidServiceFreeBSD(); ++  ~HidServiceFreeBSD() override; ++ ++  void Connect(const std::string& device_guid, ++               const ConnectCallback& connect) override; ++  base::WeakPtr<HidService> GetWeakPtr() override; ++ ++ private: ++  struct ConnectParams; ++  class BlockingTaskHelper; ++ ++  static void OpenOnBlockingThread(std::unique_ptr<ConnectParams> params); ++  static void FinishOpen(std::unique_ptr<ConnectParams> params); ++  static void CreateConnection(std::unique_ptr<ConnectParams> params); ++ ++  const scoped_refptr<base::SequencedTaskRunner> task_runner_; ++  const scoped_refptr<base::SequencedTaskRunner> blocking_task_runner_; ++  // |helper_| lives on the sequence |blocking_task_runner_| posts to and holds ++  // a weak reference back to the service that owns it. ++  std::unique_ptr<BlockingTaskHelper> helper_; ++  base::WeakPtrFactory<HidServiceFreeBSD> weak_factory_; ++ ++  DISALLOW_COPY_AND_ASSIGN(HidServiceFreeBSD); ++}; ++ ++}  // namespace device ++ ++#endif  // DEVICE_HID_HID_SERVICE_FREEBSD_H_ diff --git a/devel/electron6/files/patch-services_device_serial_BUILD.gn b/devel/electron6/files/patch-services_device_serial_BUILD.gn new file mode 100644 index 000000000000..6afca45e425a --- /dev/null +++ b/devel/electron6/files/patch-services_device_serial_BUILD.gn @@ -0,0 +1,11 @@ +--- services/device/serial/BUILD.gn.orig	2019-09-10 10:42:43 UTC ++++ services/device/serial/BUILD.gn +@@ -4,7 +4,7 @@ +  + import("//build/config/features.gni") +  +-if (is_win || (is_linux && use_udev) || is_mac) { ++if (is_win || (is_linux && use_udev) || is_mac || is_bsd) { +   config("platform_support") { +     visibility = [ ":serial" ] +     if (is_win) { diff --git a/devel/electron6/files/patch-services_device_serial_serial__io__handler__posix.cc b/devel/electron6/files/patch-services_device_serial_serial__io__handler__posix.cc new file mode 100644 index 000000000000..975e34bb2d5c --- /dev/null +++ b/devel/electron6/files/patch-services_device_serial_serial__io__handler__posix.cc @@ -0,0 +1,11 @@ +--- services/device/serial/serial_io_handler_posix.cc.orig	2019-09-10 11:14:11 UTC ++++ services/device/serial/serial_io_handler_posix.cc +@@ -66,7 +66,7 @@ bool BitrateToSpeedConstant(int bitrate, speed_t* spee +     BITRATE_TO_SPEED_CASE(9600) +     BITRATE_TO_SPEED_CASE(19200) +     BITRATE_TO_SPEED_CASE(38400) +-#if !defined(OS_MACOSX) ++#if !defined(OS_MACOSX) && !defined(OS_BSD) +     BITRATE_TO_SPEED_CASE(57600) +     BITRATE_TO_SPEED_CASE(115200) +     BITRATE_TO_SPEED_CASE(230400) diff --git a/devel/electron6/files/patch-services_device_time__zone__monitor_time__zone__monitor.cc b/devel/electron6/files/patch-services_device_time__zone__monitor_time__zone__monitor.cc new file mode 100644 index 000000000000..2f7a3a2e0313 --- /dev/null +++ b/devel/electron6/files/patch-services_device_time__zone__monitor_time__zone__monitor.cc @@ -0,0 +1,20 @@ +--- services/device/time_zone_monitor/time_zone_monitor.cc.orig	2019-09-10 11:14:11 UTC ++++ services/device/time_zone_monitor/time_zone_monitor.cc +@@ -29,7 +29,7 @@ void TimeZoneMonitor::Bind(device::mojom::TimeZoneMoni +  + void TimeZoneMonitor::NotifyClients() { +   DCHECK(thread_checker_.CalledOnValidThread()); +-#if defined(OS_CHROMEOS) || (defined(OS_LINUX) && defined(IS_CHROMECAST)) ++#if defined(OS_CHROMEOS) || ((defined(OS_BSD) || defined(OS_LINUX)) && defined(IS_CHROMECAST)) +   // On CrOS (and Chromecast), ICU's default tz is already set to a new zone. No +   // need to redetect it with detectHostTimeZone(). +   std::unique_ptr<icu::TimeZone> new_zone(icu::TimeZone::createDefault()); +@@ -41,7 +41,7 @@ void TimeZoneMonitor::NotifyClients() { + #else +   std::unique_ptr<icu::TimeZone> new_zone(icu::TimeZone::detectHostTimeZone()); + #endif +-#if defined(OS_LINUX) && !defined(IS_CHROMECAST) ++#if (defined(OS_LINUX) && !defined(IS_CHROMECAST)) || defined(OS_BSD) +   // We get here multiple times on Linux per a single tz change, but +   // want to update the ICU default zone and notify renderer only once. +   std::unique_ptr<icu::TimeZone> current_zone(icu::TimeZone::createDefault()); diff --git a/devel/electron6/files/patch-services_device_time__zone__monitor_time__zone__monitor__linux.cc b/devel/electron6/files/patch-services_device_time__zone__monitor_time__zone__monitor__linux.cc new file mode 100644 index 000000000000..4259da68a162 --- /dev/null +++ b/devel/electron6/files/patch-services_device_time__zone__monitor_time__zone__monitor__linux.cc @@ -0,0 +1,14 @@ +--- services/device/time_zone_monitor/time_zone_monitor_linux.cc.orig	2019-09-10 10:42:43 UTC ++++ services/device/time_zone_monitor/time_zone_monitor_linux.cc +@@ -104,7 +104,11 @@ class TimeZoneMonitorLinuxImpl +     // false positives are harmless, assuming the false positive rate is +     // reasonable. +     const char* const kFilesToWatch[] = { ++#if defined(OS_BSD) ++        "/etc/localtime", ++#else +         "/etc/localtime", "/etc/timezone", "/etc/TZ", ++#endif +     }; +     for (size_t index = 0; index < base::size(kFilesToWatch); ++index) { +       file_path_watchers_.push_back(std::make_unique<base::FilePathWatcher>()); diff --git a/devel/electron6/files/patch-services_device_usb_BUILD.gn b/devel/electron6/files/patch-services_device_usb_BUILD.gn new file mode 100644 index 000000000000..b457e80670bb --- /dev/null +++ b/devel/electron6/files/patch-services_device_usb_BUILD.gn @@ -0,0 +1,11 @@ +--- services/device/usb/BUILD.gn.orig	2019-09-10 11:14:11 UTC ++++ services/device/usb/BUILD.gn +@@ -111,7 +111,7 @@ static_library("usb") { +     ] +   } +  +-  if (is_android || is_chromeos || is_linux) { ++  if ((is_android || is_chromeos || is_linux) && !is_bsd) { +     sources += [ +       "usb_device_handle_usbfs.cc", +       "usb_device_handle_usbfs.h", diff --git a/devel/electron6/files/patch-services_network_BUILD.gn b/devel/electron6/files/patch-services_network_BUILD.gn new file mode 100644 index 000000000000..2e2eb28eca54 --- /dev/null +++ b/devel/electron6/files/patch-services_network_BUILD.gn @@ -0,0 +1,10 @@ +--- services/network/BUILD.gn.orig	2019-09-10 11:14:11 UTC ++++ services/network/BUILD.gn +@@ -253,7 +253,6 @@ jumbo_component("network_service") { +  +   if (is_linux) { +     deps += [ +-      "//sandbox/linux:sandbox_services", +       "//services/service_manager/sandbox:sandbox", +     ] +   } diff --git a/devel/electron6/files/patch-services_network_network__context.cc b/devel/electron6/files/patch-services_network_network__context.cc new file mode 100644 index 000000000000..c029f106fdaa --- /dev/null +++ b/devel/electron6/files/patch-services_network_network__context.cc @@ -0,0 +1,11 @@ +--- services/network/network_context.cc.orig	2019-09-10 11:14:11 UTC ++++ services/network/network_context.cc +@@ -1711,7 +1711,7 @@ URLRequestContextOwner NetworkContext::ApplyContextPar +  +     net::CookieCryptoDelegate* crypto_delegate = nullptr; +     if (params_->enable_encrypted_cookies) { +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(IS_CHROMECAST) ++#if (defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS) && !defined(IS_CHROMECAST) +       DCHECK(network_service_->os_crypt_config_set()) +           << "NetworkService::SetCryptConfig must be called before creating a " +              "NetworkContext with encrypted cookies."; diff --git a/devel/electron6/files/patch-services_network_network__sandbox__hook__linux.cc b/devel/electron6/files/patch-services_network_network__sandbox__hook__linux.cc new file mode 100644 index 000000000000..008f5b05108f --- /dev/null +++ b/devel/electron6/files/patch-services_network_network__sandbox__hook__linux.cc @@ -0,0 +1,18 @@ +--- services/network/network_sandbox_hook_linux.cc.orig	2019-09-10 10:42:43 UTC ++++ services/network/network_sandbox_hook_linux.cc +@@ -14,6 +14,7 @@ using sandbox::syscall_broker::MakeBrokerCommandSet; + namespace network { +  + bool NetworkPreSandboxHook(service_manager::SandboxLinux::Options options) { ++#if !defined(OS_BSD) +   auto* instance = service_manager::SandboxLinux::GetInstance(); +  +   // TODO(tsepez): remove universal permission under filesytem root. +@@ -32,6 +33,7 @@ bool NetworkPreSandboxHook(service_manager::SandboxLin +       service_manager::SandboxLinux::PreSandboxHook(), options); +  +   instance->EngageNamespaceSandboxIfPossible(); ++#endif // defined(OS_BSD) +   return true; + } +  diff --git a/devel/electron6/files/patch-services_network_network__service.cc b/devel/electron6/files/patch-services_network_network__service.cc new file mode 100644 index 000000000000..fc8bb4ca1b33 --- /dev/null +++ b/devel/electron6/files/patch-services_network_network__service.cc @@ -0,0 +1,20 @@ +--- services/network/network_service.cc.orig	2019-09-10 11:14:11 UTC ++++ services/network/network_service.cc +@@ -60,7 +60,7 @@ + #include "third_party/boringssl/src/include/openssl/cpu.h" + #endif +  +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(IS_CHROMECAST) ++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(IS_CHROMECAST)) || defined(OS_BSD) + #include "components/os_crypt/key_storage_config_linux.h" + #endif +  +@@ -625,7 +625,7 @@ void NetworkService::OnCertDBChanged() { +   net::CertDatabase::GetInstance()->NotifyObserversCertDBChanged(); + } +  +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) + void NetworkService::SetCryptConfig(mojom::CryptConfigPtr crypt_config) { + #if !defined(IS_CHROMECAST) +   DCHECK(!os_crypt_config_set_); diff --git a/devel/electron6/files/patch-services_network_network__service.h b/devel/electron6/files/patch-services_network_network__service.h new file mode 100644 index 000000000000..8b0617b25692 --- /dev/null +++ b/devel/electron6/files/patch-services_network_network__service.h @@ -0,0 +1,11 @@ +--- services/network/network_service.h.orig	2019-09-10 11:14:11 UTC ++++ services/network/network_service.h +@@ -176,7 +176,7 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkService +       mojom::NetworkService::GetNetworkListCallback callback) override; +   void UpdateCRLSet(base::span<const uint8_t> crl_set) override; +   void OnCertDBChanged() override; +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) +   void SetCryptConfig(mojom::CryptConfigPtr crypt_config) override; + #endif + #if defined(OS_MACOSX) && !defined(OS_IOS) diff --git a/devel/electron6/files/patch-services_resource__coordinator_memory__instrumentation_queued__request__dispatcher.cc b/devel/electron6/files/patch-services_resource__coordinator_memory__instrumentation_queued__request__dispatcher.cc new file mode 100644 index 000000000000..b0efb4bf3544 --- /dev/null +++ b/devel/electron6/files/patch-services_resource__coordinator_memory__instrumentation_queued__request__dispatcher.cc @@ -0,0 +1,20 @@ +--- services/resource_coordinator/memory_instrumentation/queued_request_dispatcher.cc.orig	2019-09-10 11:14:12 UTC ++++ services/resource_coordinator/memory_instrumentation/queued_request_dispatcher.cc +@@ -42,7 +42,7 @@ namespace { + uint32_t CalculatePrivateFootprintKb(const mojom::RawOSMemDump& os_dump, +                                      uint32_t shared_resident_kb) { +   DCHECK(os_dump.platform_private_footprint); +-#if defined(OS_LINUX) || defined(OS_ANDROID) ++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD) +   uint64_t rss_anon_bytes = os_dump.platform_private_footprint->rss_anon_bytes; +   uint64_t vm_swap_bytes = os_dump.platform_private_footprint->vm_swap_bytes; +   return (rss_anon_bytes + vm_swap_bytes) / 1024; +@@ -151,7 +151,7 @@ memory_instrumentation::mojom::OSMemDumpPtr CreatePubl +   os_dump->is_peak_rss_resettable = internal_os_dump.is_peak_rss_resettable; +   os_dump->private_footprint_kb = +       CalculatePrivateFootprintKb(internal_os_dump, shared_resident_kb); +-#if defined(OS_LINUX) || defined(OS_ANDROID) ++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD) +   os_dump->private_footprint_swap_kb = +       internal_os_dump.platform_private_footprint->vm_swap_bytes / 1024; + #endif diff --git a/devel/electron6/files/patch-services_resource__coordinator_public_cpp_memory__instrumentation_os__metrics.h b/devel/electron6/files/patch-services_resource__coordinator_public_cpp_memory__instrumentation_os__metrics.h new file mode 100644 index 000000000000..09840a4f3a30 --- /dev/null +++ b/devel/electron6/files/patch-services_resource__coordinator_public_cpp_memory__instrumentation_os__metrics.h @@ -0,0 +1,32 @@ +--- services/resource_coordinator/public/cpp/memory_instrumentation/os_metrics.h.orig	2019-09-10 10:42:44 UTC ++++ services/resource_coordinator/public/cpp/memory_instrumentation/os_metrics.h +@@ -28,9 +28,9 @@ class COMPONENT_EXPORT( +                                     mojom::RawOSMemDump*); +   static std::vector<mojom::VmRegionPtr> GetProcessMemoryMaps(base::ProcessId); +  +-#if defined(OS_LINUX) || defined(OS_ANDROID) ++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD) +   static void SetProcSmapsForTesting(FILE*); +-#endif  // defined(OS_LINUX) || defined(OS_ANDROID) ++#endif  // defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD) +  +  private: +   FRIEND_TEST_ALL_PREFIXES(OSMetricsTest, ParseProcSmaps); +@@ -44,7 +44,7 @@ class COMPONENT_EXPORT( +   static std::vector<mojom::VmRegionPtr> GetProcessModules(base::ProcessId); + #endif +  +-#if defined(OS_LINUX) || defined(OS_ANDROID) ++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD) +   // Provides information on the dump state of resident pages. +   enum class MappedAndResidentPagesDumpState { +     // Access to /proc/<pid>/pagemap can be denied for android devices running +@@ -68,7 +68,7 @@ class COMPONENT_EXPORT( +   // TODO(chiniforooshan): move to /base/process/process_metrics_linux.cc after +   // making sure that peak RSS is useful. +   static size_t GetPeakResidentSetSize(base::ProcessId pid); +-#endif  // defined(OS_LINUX) || defined(OS_ANDROID) ++#endif  // defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD) + }; +  + }  // namespace memory_instrumentation diff --git a/devel/electron6/files/patch-services_resource__coordinator_public_cpp_memory__instrumentation_os__metrics__linux.cc b/devel/electron6/files/patch-services_resource__coordinator_public_cpp_memory__instrumentation_os__metrics__linux.cc new file mode 100644 index 000000000000..25b213ee5170 --- /dev/null +++ b/devel/electron6/files/patch-services_resource__coordinator_public_cpp_memory__instrumentation_os__metrics__linux.cc @@ -0,0 +1,103 @@ +--- services/resource_coordinator/public/cpp/memory_instrumentation/os_metrics_linux.cc.orig	2019-09-10 10:42:44 UTC ++++ services/resource_coordinator/public/cpp/memory_instrumentation/os_metrics_linux.cc +@@ -22,8 +22,10 @@ + #include "build/build_config.h" + #include "services/resource_coordinator/public/cpp/memory_instrumentation/os_metrics.h" +  ++#if !defined(OS_BSD) + // Symbol with virtual address of the start of ELF header of the current binary. + extern char __ehdr_start; ++#endif +  + namespace memory_instrumentation { +  +@@ -86,6 +88,7 @@ struct ModuleData { +  + ModuleData GetMainModuleData() { +   ModuleData module_data; ++#if !defined(OS_BSD) +   Dl_info dl_info; +   if (dladdr(&__ehdr_start, &dl_info)) { +     base::debug::ElfBuildIdBuffer build_id; +@@ -96,6 +99,7 @@ ModuleData GetMainModuleData() { +       module_data.build_id = std::string(build_id, build_id_length); +     } +   } ++#endif +   return module_data; + } +  +@@ -143,14 +147,14 @@ bool ParseSmapsHeader(const char* header_line, +   // Build ID is needed to symbolize heap profiles, and is generated only on +   // official builds. Build ID is only added for the current library (chrome) +   // since it is racy to read other libraries which can be unmapped any time. +-#if defined(OFFICIAL_BUILD) ++#if defined(OFFICIAL_BUILD) && !defined(OS_BSD) +   if (!region->mapped_file.empty() && +       base::StartsWith(main_module_data.path, region->mapped_file, +                        base::CompareCase::SENSITIVE) && +       !main_module_data.build_id.empty()) { +     region->module_debugid = main_module_data.build_id; +   } +-#endif  // defined(OFFICIAL_BUILD) ++#endif  // defined(OFFICIAL_BUILD) && !defined(OS_BSD) +  +   return res; + } +@@ -239,6 +243,7 @@ bool OSMetrics::FillOSMemoryDump(base::ProcessId pid, +                                  mojom::RawOSMemDump* dump) { +   // TODO(chiniforooshan): There is no need to read both /statm and /status +   // files. Refactor to get everything from /status using ProcessMetric. ++#if !defined(OS_BSD) +   auto statm_file = GetProcPidDir(pid).Append("statm"); +   auto autoclose = base::ScopedFD(open(statm_file.value().c_str(), O_RDONLY)); +   int statm_fd = autoclose.get(); +@@ -253,6 +258,10 @@ bool OSMetrics::FillOSMemoryDump(base::ProcessId pid, +  +   if (!success) +     return false; ++#else ++  uint64_t resident_pages = 0; ++  uint64_t shared_pages = 0; ++#endif +  +   auto process_metrics = CreateProcessMetrics(pid); +  +@@ -293,6 +302,10 @@ bool OSMetrics::FillOSMemoryDump(base::ProcessId pid, +  + // static + std::vector<VmRegionPtr> OSMetrics::GetProcessMemoryMaps(base::ProcessId pid) { ++#if defined(OS_BSD) ++  NOTIMPLEMENTED(); ++  return std::vector<VmRegionPtr>(); ++#else +   std::vector<VmRegionPtr> maps; +   uint32_t res = 0; +   if (g_proc_smaps_for_testing) { +@@ -310,6 +323,7 @@ std::vector<VmRegionPtr> OSMetrics::GetProcessMemoryMa +     return std::vector<VmRegionPtr>(); +  +   return maps; ++#endif + } +  + // static +@@ -317,6 +331,10 @@ OSMetrics::MappedAndResidentPagesDumpState OSMetrics:: +     const size_t start_address, +     const size_t end_address, +     std::vector<uint8_t>* accessed_pages_bitmap) { ++#if defined(OS_BSD) ++  NOTIMPLEMENTED(); ++  return OSMetrics::MappedAndResidentPagesDumpState::kFailure; ++#else +   const char* kPagemap = "/proc/self/pagemap"; +  +   base::ScopedFILE pagemap_file(fopen(kPagemap, "r")); +@@ -358,6 +376,7 @@ OSMetrics::MappedAndResidentPagesDumpState OSMetrics:: +     } +   } +   return OSMetrics::MappedAndResidentPagesDumpState::kSuccess; ++#endif + } +  + // static diff --git a/devel/electron6/files/patch-services_service__manager_embedder_main.cc b/devel/electron6/files/patch-services_service__manager_embedder_main.cc new file mode 100644 index 000000000000..a7f0ca6b549b --- /dev/null +++ b/devel/electron6/files/patch-services_service__manager_embedder_main.cc @@ -0,0 +1,11 @@ +--- services/service_manager/embedder/main.cc.orig	2019-09-10 11:14:12 UTC ++++ services/service_manager/embedder/main.cc +@@ -271,7 +271,7 @@ int Main(const MainParams& params) { + #endif +     base::EnableTerminationOnOutOfMemory(); +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +     // The various desktop environments set this environment variable that +     // allows the dbus client library to connect directly to the bus. When this +     // variable is not set (test environments like xvfb-run), the dbus client diff --git a/devel/electron6/files/patch-services_service__manager_embedder_set__process__title__linux.cc b/devel/electron6/files/patch-services_service__manager_embedder_set__process__title__linux.cc new file mode 100644 index 000000000000..3082baf1a0f1 --- /dev/null +++ b/devel/electron6/files/patch-services_service__manager_embedder_set__process__title__linux.cc @@ -0,0 +1,19 @@ +--- services/service_manager/embedder/set_process_title_linux.cc.orig	2019-09-10 10:42:44 UTC ++++ services/service_manager/embedder/set_process_title_linux.cc +@@ -49,6 +49,8 @@ + extern char** environ; +  + static char** g_main_argv = NULL; ++ ++#if !defined(OS_FREEBSD) + static char* g_orig_argv0 = NULL; +  + void setproctitle(const char* fmt, ...) { +@@ -101,6 +103,7 @@ void setproctitle(const char* fmt, ...) { +   va_end(ap); +   g_main_argv[1] = NULL; + } ++#endif +  + // A version of this built into glibc would not need this function, since + // it could stash the argv pointer in __libc_start_main(). But we need it. diff --git a/devel/electron6/files/patch-services_service__manager_embedder_set__process__title__linux.h b/devel/electron6/files/patch-services_service__manager_embedder_set__process__title__linux.h new file mode 100644 index 000000000000..84f7f55d3d85 --- /dev/null +++ b/devel/electron6/files/patch-services_service__manager_embedder_set__process__title__linux.h @@ -0,0 +1,20 @@ +--- services/service_manager/embedder/set_process_title_linux.h.orig	2019-09-10 10:42:44 UTC ++++ services/service_manager/embedder/set_process_title_linux.h +@@ -5,6 +5,9 @@ + #ifndef SERVICES_SERVICE_MANAGER_EMBEDDER_SET_PROCESS_TITLE_LINUX_H_ + #define SERVICES_SERVICE_MANAGER_EMBEDDER_SET_PROCESS_TITLE_LINUX_H_ +  ++#include "build/build_config.h" ++ ++#if !defined(OS_FREEBSD) + // Set the process title that will show in "ps" and similar tools. Takes + // printf-style format string and arguments. After calling setproctitle() + // the original main() argv[] array should not be used. By default, the +@@ -14,6 +17,7 @@ + // This signature and naming is to be compatible with most other Unix + // implementations of setproctitle(). + void setproctitle(const char* fmt, ...); ++#endif +  + // Initialize state needed for setproctitle() on Linux. Pass the argv pointer + // from main() to setproctitle_init() before calling setproctitle(). diff --git a/devel/electron6/files/patch-services_service__manager_public_cpp_service__executable_BUILD.gn b/devel/electron6/files/patch-services_service__manager_public_cpp_service__executable_BUILD.gn new file mode 100644 index 000000000000..66965d4867a0 --- /dev/null +++ b/devel/electron6/files/patch-services_service__manager_public_cpp_service__executable_BUILD.gn @@ -0,0 +1,14 @@ +--- services/service_manager/public/cpp/service_executable/BUILD.gn.orig	2019-09-10 10:42:44 UTC ++++ services/service_manager/public/cpp/service_executable/BUILD.gn +@@ -29,6 +29,11 @@ source_set("support") { +       "//sandbox/linux:seccomp_bpf", +     ] +   } ++  if (is_bsd) { ++    deps -= [ ++      "//sandbox/linux:seccomp_bpf" ++    ] ++  } + } +  + source_set("switches") { diff --git a/devel/electron6/files/patch-services_service__manager_sandbox_BUILD.gn b/devel/electron6/files/patch-services_service__manager_sandbox_BUILD.gn new file mode 100644 index 000000000000..1d3dd736922d --- /dev/null +++ b/devel/electron6/files/patch-services_service__manager_sandbox_BUILD.gn @@ -0,0 +1,11 @@ +--- services/service_manager/sandbox/BUILD.gn.orig	2019-09-10 11:14:12 UTC ++++ services/service_manager/sandbox/BUILD.gn +@@ -28,7 +28,7 @@ component("sandbox") { +     "//base", +     "//sandbox:common", +   ] +-  if (is_linux) { ++  if (is_linux && !is_bsd) { +     sources += [ +       "linux/bpf_audio_policy_linux.cc", +       "linux/bpf_audio_policy_linux.h", diff --git a/devel/electron6/files/patch-services_service__manager_sandbox_sandbox__type.cc b/devel/electron6/files/patch-services_service__manager_sandbox_sandbox__type.cc new file mode 100644 index 000000000000..d921f9ea3277 --- /dev/null +++ b/devel/electron6/files/patch-services_service__manager_sandbox_sandbox__type.cc @@ -0,0 +1,11 @@ +--- services/service_manager/sandbox/sandbox_type.cc.orig	2019-09-10 10:42:44 UTC ++++ services/service_manager/sandbox/sandbox_type.cc +@@ -25,7 +25,7 @@ bool IsUnsandboxedSandboxType(SandboxType sandbox_type +           service_manager::features::kXRSandbox); + #endif +     case SANDBOX_TYPE_AUDIO: +-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) ++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) +       return !base::FeatureList::IsEnabled( +           service_manager::features::kAudioServiceSandbox); + #else diff --git a/devel/electron6/files/patch-services_service__manager_zygote_common_zygote__features.gni b/devel/electron6/files/patch-services_service__manager_zygote_common_zygote__features.gni new file mode 100644 index 000000000000..c17a86909abe --- /dev/null +++ b/devel/electron6/files/patch-services_service__manager_zygote_common_zygote__features.gni @@ -0,0 +1,8 @@ +--- services/service_manager/zygote/common/zygote_features.gni.orig	2019-09-10 10:42:44 UTC ++++ services/service_manager/zygote/common/zygote_features.gni +@@ -2,4 +2,4 @@ + # Use of this source code is governed by a BSD-style license that can be + # found in the LICENSE file. +  +-use_zygote_handle = is_posix && !is_android && !is_mac ++use_zygote_handle = is_posix && !is_android && !is_mac && !is_bsd diff --git a/devel/electron6/files/patch-services_service__manager_zygote_host_zygote__host__impl__linux.cc b/devel/electron6/files/patch-services_service__manager_zygote_host_zygote__host__impl__linux.cc new file mode 100644 index 000000000000..2bb512277af0 --- /dev/null +++ b/devel/electron6/files/patch-services_service__manager_zygote_host_zygote__host__impl__linux.cc @@ -0,0 +1,40 @@ +--- services/service_manager/zygote/host/zygote_host_impl_linux.cc.orig	2019-09-10 10:42:44 UTC ++++ services/service_manager/zygote/host/zygote_host_impl_linux.cc +@@ -72,6 +72,7 @@ ZygoteHostImpl* ZygoteHostImpl::GetInstance() { + } +  + void ZygoteHostImpl::Init(const base::CommandLine& command_line) { ++#if !defined(OS_BSD) +   if (command_line.HasSwitch(service_manager::switches::kNoSandbox)) { +     return; +   } +@@ -122,6 +123,7 @@ void ZygoteHostImpl::Init(const base::CommandLine& com +            "you can try using --" +         << service_manager::switches::kNoSandbox << "."; +   } ++#endif + } +  + void ZygoteHostImpl::AddZygotePid(pid_t pid) { +@@ -146,6 +148,7 @@ pid_t ZygoteHostImpl::LaunchZygote( +     base::CommandLine* cmd_line, +     base::ScopedFD* control_fd, +     base::FileHandleMappingVector additional_remapped_fds) { ++#if !defined(OS_BSD) +   int fds[2]; +   CHECK_EQ(0, socketpair(AF_UNIX, SOCK_SEQPACKET, 0, fds)); +   CHECK(base::UnixDomainSocket::EnableReceiveProcessId(fds[0])); +@@ -210,9 +213,12 @@ pid_t ZygoteHostImpl::LaunchZygote( +  +   AddZygotePid(pid); +   return pid; ++#else ++  return 0; ++#endif + } +  +-#if !defined(OS_OPENBSD) ++#if !defined(OS_BSD) + void ZygoteHostImpl::AdjustRendererOOMScore(base::ProcessHandle pid, +                                             int score) { +   // 1) You can't change the oom_score_adj of a non-dumpable process diff --git a/devel/electron6/files/patch-services_service__manager_zygote_host_zygote__host__impl__linux.h b/devel/electron6/files/patch-services_service__manager_zygote_host_zygote__host__impl__linux.h new file mode 100644 index 000000000000..1b4fcd5460fc --- /dev/null +++ b/devel/electron6/files/patch-services_service__manager_zygote_host_zygote__host__impl__linux.h @@ -0,0 +1,13 @@ +--- services/service_manager/zygote/host/zygote_host_impl_linux.h.orig	2019-09-10 10:42:44 UTC ++++ services/service_manager/zygote/host/zygote_host_impl_linux.h +@@ -44,8 +44,10 @@ class COMPONENT_EXPORT(SERVICE_MANAGER_ZYGOTE) ZygoteH +                      base::ScopedFD* control_fd, +                      base::FileHandleMappingVector additional_remapped_fds); +  ++#if !defined(OS_BSD) +   void AdjustRendererOOMScore(base::ProcessHandle process_handle, +                               int score) override; ++#endif +   bool HasZygote() { return !zygote_pids_.empty(); } +  +  private: diff --git a/devel/electron6/files/patch-services_service__manager_zygote_zygote__host__linux.h b/devel/electron6/files/patch-services_service__manager_zygote_zygote__host__linux.h new file mode 100644 index 000000000000..803c7da65aa6 --- /dev/null +++ b/devel/electron6/files/patch-services_service__manager_zygote_zygote__host__linux.h @@ -0,0 +1,16 @@ +--- services/service_manager/zygote/zygote_host_linux.h.orig	2019-09-10 10:42:44 UTC ++++ services/service_manager/zygote/zygote_host_linux.h +@@ -30,11 +30,13 @@ class ZygoteHost { +   // after the first render has been forked. +   virtual int GetRendererSandboxStatus() const = 0; +  ++#if !defined(OS_BSD) +   // Adjust the OOM score of the given renderer's PID.  The allowed +   // range for the score is [0, 1000], where higher values are more +   // likely to be killed by the OOM killer. +   virtual void AdjustRendererOOMScore(base::ProcessHandle process_handle, +                                       int score) = 0; ++#endif + }; +  + }  // namespace service_manager diff --git a/devel/electron6/files/patch-services_service__manager_zygote_zygote__linux.cc b/devel/electron6/files/patch-services_service__manager_zygote_zygote__linux.cc new file mode 100644 index 000000000000..de1deed27873 --- /dev/null +++ b/devel/electron6/files/patch-services_service__manager_zygote_zygote__linux.cc @@ -0,0 +1,15 @@ +--- services/service_manager/zygote/zygote_linux.cc.orig	2019-09-10 10:42:44 UTC ++++ services/service_manager/zygote/zygote_linux.cc +@@ -1,6 +1,7 @@ + // Copyright (c) 2012 The Chromium Authors. All rights reserved. + // Use of this source code is governed by a BSD-style license that can be + // found in the LICENSE file. ++#if 0 +  + #include "services/service_manager/zygote/zygote_linux.h" +  +@@ -657,3 +658,4 @@ bool Zygote::HandleGetSandboxStatus(int fd, base::Pick + } +  + }  // namespace service_manager ++#endif diff --git a/devel/electron6/files/patch-services_service__manager_zygote_zygote__main__linux.cc b/devel/electron6/files/patch-services_service__manager_zygote_zygote__main__linux.cc new file mode 100644 index 000000000000..e59d3b343be9 --- /dev/null +++ b/devel/electron6/files/patch-services_service__manager_zygote_zygote__main__linux.cc @@ -0,0 +1,48 @@ +--- services/service_manager/zygote/zygote_main_linux.cc.orig	2019-09-10 10:42:44 UTC ++++ services/service_manager/zygote/zygote_main_linux.cc +@@ -11,7 +11,9 @@ + #include <stddef.h> + #include <stdint.h> + #include <string.h> ++#if !defined(OS_BSD) + #include <sys/prctl.h> ++#endif + #include <sys/socket.h> + #include <sys/types.h> + #include <unistd.h> +@@ -101,6 +103,7 @@ static bool CreateInitProcessReaper( + // created through the setuid sandbox. + static bool EnterSuidSandbox(sandbox::SetuidSandboxClient* setuid_sandbox, +                              base::OnceClosure post_fork_parent_callback) { ++#if !defined(OS_BSD) +   DCHECK(setuid_sandbox); +   DCHECK(setuid_sandbox->IsSuidSandboxChild()); +  +@@ -133,6 +136,9 @@ static bool EnterSuidSandbox(sandbox::SetuidSandboxCli +  +   CHECK(service_manager::SandboxDebugHandling::SetDumpableStatusAndHandlers()); +   return true; ++#else ++  return false; ++#endif + } +  + static void DropAllCapabilities(int proc_fd) { +@@ -178,6 +184,7 @@ static void EnterLayerOneSandbox(service_manager::Sand +  + bool ZygoteMain( +     std::vector<std::unique_ptr<ZygoteForkDelegate>> fork_delegates) { ++#if !defined(OS_BSD) +   sandbox::SetAmZygoteOrRenderer(true, GetSandboxFD()); +  +   auto* linux_sandbox = service_manager::SandboxLinux::GetInstance(); +@@ -240,6 +247,9 @@ bool ZygoteMain( +  +   // This function call can return multiple times, once per fork(). +   return zygote.ProcessRequests(); ++#else ++  return false; ++#endif + } +  + }  // namespace service_manager diff --git a/devel/electron6/files/patch-services_video__capture_broadcasting__receiver.cc b/devel/electron6/files/patch-services_video__capture_broadcasting__receiver.cc new file mode 100644 index 000000000000..4bb8fcaded29 --- /dev/null +++ b/devel/electron6/files/patch-services_video__capture_broadcasting__receiver.cc @@ -0,0 +1,20 @@ +--- services/video_capture/broadcasting_receiver.cc.orig	2019-09-10 11:14:12 UTC ++++ services/video_capture/broadcasting_receiver.cc +@@ -40,7 +40,7 @@ void CloneSharedBufferHandle(const mojo::ScopedSharedB + void CloneSharedBufferToRawFileDescriptorHandle( +     const mojo::ScopedSharedBufferHandle& source, +     media::mojom::VideoBufferHandlePtr* target) { +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   media::SharedMemoryHandleProvider provider; +   provider.InitFromMojoHandle( +       source->Clone(mojo::SharedBufferHandle::AccessMode::READ_WRITE)); +@@ -174,7 +174,7 @@ void BroadcastingReceiver::BufferContext:: +     ConvertRawFileDescriptorToSharedBuffer() { +   DCHECK(buffer_handle_->is_shared_memory_via_raw_file_descriptor()); +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   media::SharedMemoryHandleProvider provider; +   provider.InitAsReadOnlyFromRawFileDescriptor( +       std::move(buffer_handle_->get_shared_memory_via_raw_file_descriptor() diff --git a/devel/electron6/files/patch-skia_ext_SkMemory__new__handler.cpp b/devel/electron6/files/patch-skia_ext_SkMemory__new__handler.cpp new file mode 100644 index 000000000000..eb122c63a178 --- /dev/null +++ b/devel/electron6/files/patch-skia_ext_SkMemory__new__handler.cpp @@ -0,0 +1,20 @@ +--- skia/ext/SkMemory_new_handler.cpp.orig	2019-09-10 10:42:44 UTC ++++ skia/ext/SkMemory_new_handler.cpp +@@ -77,7 +77,7 @@ static void* malloc_nothrow(size_t size) { +   // TODO(b.kelemen): we should always use UncheckedMalloc but currently it +   // doesn't work as intended everywhere. +   void* result; +-#if  defined(OS_IOS) ++#if  defined(OS_IOS) || defined(OS_BSD) +     result = malloc(size); + #else +     // It's the responsibility of the caller to check the return value. +@@ -97,7 +97,7 @@ static void* calloc_nothrow(size_t size) { +   // TODO(b.kelemen): we should always use UncheckedCalloc but currently it +   // doesn't work as intended everywhere. +   void* result; +-#if  defined(OS_IOS) ++#if  defined(OS_IOS) || defined(OS_BSD) +     result = calloc(1, size); + #else +     // It's the responsibility of the caller to check the return value. diff --git a/devel/electron6/files/patch-third__party_angle_BUILD.gn b/devel/electron6/files/patch-third__party_angle_BUILD.gn new file mode 100644 index 000000000000..954435e4c889 --- /dev/null +++ b/devel/electron6/files/patch-third__party_angle_BUILD.gn @@ -0,0 +1,21 @@ +--- third_party/angle/BUILD.gn.orig	2019-09-10 11:15:10 UTC ++++ third_party/angle/BUILD.gn +@@ -322,6 +322,7 @@ angle_static_library("angle_gpu_info_util") { +         "X11", +         "Xi", +         "Xext", ++        "GL", +       ] +     } +   } +@@ -929,10 +930,6 @@ foreach(is_shared_library, +     libs = [] +     if (is_linux) { +       sources += util_linux_sources +-      libs += [ +-        "rt", +-        "dl", +-      ] +     } +  +     if (is_mac) { diff --git a/devel/electron6/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__internal.h b/devel/electron6/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__internal.h new file mode 100644 index 000000000000..67a5ed46dc17 --- /dev/null +++ b/devel/electron6/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__internal.h @@ -0,0 +1,16 @@ +--- third_party/angle/src/gpu_info_util/SystemInfo_internal.h.orig	2019-09-10 11:15:11 UTC ++++ third_party/angle/src/gpu_info_util/SystemInfo_internal.h +@@ -14,8 +14,13 @@ + namespace angle + { +  ++bool CollectMesaCardInfo(std::vector<GPUDeviceInfo> *devices); ++ + // Defined in SystemInfo_libpci when GPU_INFO_USE_LIBPCI is defined. + bool GetPCIDevicesWithLibPCI(std::vector<GPUDeviceInfo> *devices); ++#if defined(__FreeBSD__) ++bool GetPCIDevicesFreeBSD(std::vector<GPUDeviceInfo> *devices); ++#endif + // Defined in SystemInfo_x11 when GPU_INFO_USE_X11 is defined. + bool GetNvidiaDriverVersionWithXNVCtrl(std::string *version); +  diff --git a/devel/electron6/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__libpci.cpp b/devel/electron6/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__libpci.cpp new file mode 100644 index 000000000000..16812e3f628c --- /dev/null +++ b/devel/electron6/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__libpci.cpp @@ -0,0 +1,90 @@ +--- third_party/angle/src/gpu_info_util/SystemInfo_libpci.cpp.orig	2019-09-10 11:15:11 UTC ++++ third_party/angle/src/gpu_info_util/SystemInfo_libpci.cpp +@@ -12,6 +12,11 @@ + #include <pci/pci.h> + #include <unistd.h> +  ++#if defined(__FreeBSD__) ++#include <fcntl.h> ++#include <sys/pciio.h> ++#endif ++ + #include "common/angleutils.h" + #include "common/debug.h" +  +@@ -82,6 +87,75 @@ struct LibPCI : private angle::NonCopyable + }; +  + }  // anonymous namespace ++ ++#if defined(__FreeBSD__) ++// Adds an entry per PCI GPU found and fills the device and vendor ID. ++bool GetPCIDevicesFreeBSD(std::vector<GPUDeviceInfo> *devices) ++{ ++    int fd; ++    struct pci_conf_io conf; ++    struct pci_conf *matches; ++    uint32_t offset = 0; ++ ++    fd = open("/dev/pci", O_RDONLY); ++    if (fd < 0) ++        return false; ++ ++    matches = new struct pci_conf[32]; ++    conf.generation = 0; ++    do { ++        conf.pat_buf_len = 0; ++        conf.num_patterns = 0; ++        conf.patterns = NULL; ++        conf.match_buf_len = 32 * sizeof(struct pci_conf); ++        conf.num_matches = 32; ++        conf.matches = matches; ++        conf.offset = offset; ++        conf.status = PCI_GETCONF_ERROR; ++        if (ioctl(fd, PCIOCGETCONF, &conf) < 0) { ++            if (errno == ENODEV) ++                break; ++        } ++        /* PCI_GETCONF_LIST_CHANGED would require us to start over. */ ++        if (conf.status == PCI_GETCONF_ERROR || conf.status == PCI_GETCONF_LIST_CHANGED) { ++            break; ++        } ++ ++        for (unsigned int i = 0; i < conf.num_matches; i++) { ++            uint16_t device_class = (matches[i].pc_class << 8) |  matches[i].pc_subclass; ++ ++            // Skip non-GPU devices ++            switch (device_class) ++            { ++                case PCI_CLASS_DISPLAY_VGA: ++                case PCI_CLASS_DISPLAY_XGA: ++                case PCI_CLASS_DISPLAY_3D: ++                    break; ++                default: ++                    continue; ++            } ++ ++            // Skip unknown devices ++            if (matches[i].pc_vendor == 0 || matches[i].pc_device == 0) { ++                continue; ++            } ++ ++            GPUDeviceInfo info; ++            info.vendorId = matches[i].pc_vendor; ++            info.deviceId = matches[i].pc_device; ++ ++            devices->push_back(info); ++        } ++        offset += conf.num_matches; ++    } while (conf.status == PCI_GETCONF_MORE_DEVS); ++ ++    delete[] matches; ++ ++    close(fd); ++ ++    return true; ++} ++#endif +  + // Adds an entry per PCI GPU found and fills the device and vendor ID. + bool GetPCIDevicesWithLibPCI(std::vector<GPUDeviceInfo> *devices) diff --git a/devel/electron6/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__linux.cpp b/devel/electron6/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__linux.cpp new file mode 100644 index 000000000000..f671b69d3c18 --- /dev/null +++ b/devel/electron6/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__linux.cpp @@ -0,0 +1,21 @@ +--- third_party/angle/src/gpu_info_util/SystemInfo_linux.cpp.orig	2019-09-10 11:15:11 UTC ++++ third_party/angle/src/gpu_info_util/SystemInfo_linux.cpp +@@ -71,10 +71,18 @@ bool GetPCIDevicesWithLibPCI(std::vector<GPUDeviceInfo +  + bool GetSystemInfo(SystemInfo *info) + { ++#if defined(__FreeBSD__) ++    if (!CollectMesaCardInfo(&(info->gpus))) ++    { ++        if (!GetPCIDevicesFreeBSD(&(info->gpus))) ++            return false; ++    } ++#else +     if (!GetPCIDevicesWithLibPCI(&(info->gpus))) +     { +         return false; +     } ++#endif +  +     if (info->gpus.size() == 0) +     { diff --git a/devel/electron6/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__x11.cpp b/devel/electron6/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__x11.cpp new file mode 100644 index 000000000000..e05666a44695 --- /dev/null +++ b/devel/electron6/files/patch-third__party_angle_src_gpu__info__util_SystemInfo__x11.cpp @@ -0,0 +1,55 @@ +--- third_party/angle/src/gpu_info_util/SystemInfo_x11.cpp.orig	2019-09-10 11:15:11 UTC ++++ third_party/angle/src/gpu_info_util/SystemInfo_x11.cpp +@@ -8,6 +8,8 @@ +  + #include "gpu_info_util/SystemInfo_internal.h" +  ++#include <GL/glx.h> ++#include <GL/glxext.h> + #include <X11/Xlib.h> +  + #include "common/debug.h" +@@ -18,8 +20,43 @@ + #    error SystemInfo_x11.cpp compiled without GPU_INFO_USE_X11 + #endif +  ++#define GLX_RENDERER_VENDOR_ID_MESA	0x8183 ++#define GLX_RENDERER_DEVICE_ID_MESA	0x8184 ++ + namespace angle + { ++ ++bool CollectMesaCardInfo(std::vector<GPUDeviceInfo> *devices) ++{ ++ ++    unsigned int vid[3], did[3]; ++ ++    Display *display = XOpenDisplay(NULL); ++    if (!display) { ++        return false; ++    } ++ ++    PFNGLXQUERYRENDERERINTEGERMESAPROC queryInteger = ++        (PFNGLXQUERYRENDERERINTEGERMESAPROC) glXGetProcAddressARB((const GLubyte *) ++        "glXQueryRendererIntegerMESA"); ++ ++    if (!queryInteger) ++        return false; ++ ++    bool vendor_ret = ++        queryInteger(display, 0, 0, GLX_RENDERER_VENDOR_ID_MESA, vid); ++    bool device_ret = ++        queryInteger(display, 0, 0, GLX_RENDERER_DEVICE_ID_MESA, did); ++ ++    if (vendor_ret && device_ret) { ++        GPUDeviceInfo info; ++        info.vendorId = vid[0]; ++        info.deviceId = did[0]; ++        devices->push_back(info); ++    } ++ ++    return true; ++} +  + bool GetNvidiaDriverVersionWithXNVCtrl(std::string *version) + { diff --git a/devel/electron6/files/patch-third__party_angle_src_libANGLE_Display.cpp b/devel/electron6/files/patch-third__party_angle_src_libANGLE_Display.cpp new file mode 100644 index 000000000000..7c6c41e420bc --- /dev/null +++ b/devel/electron6/files/patch-third__party_angle_src_libANGLE_Display.cpp @@ -0,0 +1,20 @@ +--- third_party/angle/src/libANGLE/Display.cpp.orig	2019-09-10 11:15:11 UTC ++++ third_party/angle/src/libANGLE/Display.cpp +@@ -66,7 +66,7 @@ + #if defined(ANGLE_ENABLE_VULKAN) + #    if defined(ANGLE_PLATFORM_WINDOWS) + #        include "libANGLE/renderer/vulkan/win32/DisplayVkWin32.h" +-#    elif defined(ANGLE_PLATFORM_LINUX) ++#    elif defined(ANGLE_PLATFORM_POSIX) + #        include "libANGLE/renderer/vulkan/xcb/DisplayVkXcb.h" + #    elif defined(ANGLE_PLATFORM_ANDROID) + #        include "libANGLE/renderer/vulkan/android/DisplayVkAndroid.h" +@@ -261,7 +261,7 @@ rx::DisplayImpl *CreateDisplayFromAttribs(const Attrib + #if defined(ANGLE_ENABLE_VULKAN) + #    if defined(ANGLE_PLATFORM_WINDOWS) +             impl = new rx::DisplayVkWin32(state); +-#    elif defined(ANGLE_PLATFORM_LINUX) ++#    elif defined(ANGLE_PLATFORM_POSIX) +             impl = new rx::DisplayVkXcb(state); + #    elif defined(ANGLE_PLATFORM_ANDROID) +             impl = new rx::DisplayVkAndroid(state); diff --git a/devel/electron6/files/patch-third__party_angle_src_libANGLE_renderer_driver__utils.h b/devel/electron6/files/patch-third__party_angle_src_libANGLE_renderer_driver__utils.h new file mode 100644 index 000000000000..4ada61211ff8 --- /dev/null +++ b/devel/electron6/files/patch-third__party_angle_src_libANGLE_renderer_driver__utils.h @@ -0,0 +1,11 @@ +--- third_party/angle/src/libANGLE/renderer/driver_utils.h.orig	2019-09-10 11:15:12 UTC ++++ third_party/angle/src/libANGLE/renderer/driver_utils.h +@@ -107,7 +107,7 @@ inline bool IsWindows() +  + inline bool IsLinux() + { +-#if defined(ANGLE_PLATFORM_LINUX) ++#if defined(ANGLE_PLATFORM_POSIX) +     return true; + #else +     return false; diff --git a/devel/electron6/files/patch-third__party_angle_third__party_vulkan-loader_src_loader_loader.c b/devel/electron6/files/patch-third__party_angle_third__party_vulkan-loader_src_loader_loader.c new file mode 100644 index 000000000000..fb4921833d4a --- /dev/null +++ b/devel/electron6/files/patch-third__party_angle_third__party_vulkan-loader_src_loader_loader.c @@ -0,0 +1,11 @@ +--- third_party/angle/third_party/vulkan-loader/src/loader/loader.c.orig	2019-09-10 10:47:33 UTC ++++ third_party/angle/third_party/vulkan-loader/src/loader/loader.c +@@ -229,7 +229,7 @@ void *loader_device_heap_realloc(const struct loader_d + } +  + // Environment variables +-#if defined(__linux__) || defined(__APPLE__) ++#if defined(__linux__) || defined(__APPLE__) || defined(__FreeBSD__) +  + static inline char *loader_getenv(const char *name, const struct loader_instance *inst) { +     // No allocation of memory necessary for Linux, but we should at least touch diff --git a/devel/electron6/files/patch-third__party_angle_third__party_vulkan-loader_src_loader_vk__loader__platform.h b/devel/electron6/files/patch-third__party_angle_third__party_vulkan-loader_src_loader_vk__loader__platform.h new file mode 100644 index 000000000000..a83eb5403249 --- /dev/null +++ b/devel/electron6/files/patch-third__party_angle_third__party_vulkan-loader_src_loader_vk__loader__platform.h @@ -0,0 +1,11 @@ +--- third_party/angle/third_party/vulkan-loader/src/loader/vk_loader_platform.h.orig	2019-09-10 10:47:33 UTC ++++ third_party/angle/third_party/vulkan-loader/src/loader/vk_loader_platform.h +@@ -31,7 +31,7 @@ + #include "vulkan/vk_platform.h" + #include "vulkan/vk_sdk_platform.h" +  +-#if defined(__linux__) || defined(__APPLE__) ++#if defined(__linux__) || defined(__APPLE__) || defined(__FreeBSD__) + /* Linux-specific common code: */ +  + // Headers: diff --git a/devel/electron6/files/patch-third__party_angle_third__party_vulkan-validation-layers_src_layers_vk__loader__platform.h b/devel/electron6/files/patch-third__party_angle_third__party_vulkan-validation-layers_src_layers_vk__loader__platform.h new file mode 100644 index 000000000000..299a498d82b0 --- /dev/null +++ b/devel/electron6/files/patch-third__party_angle_third__party_vulkan-validation-layers_src_layers_vk__loader__platform.h @@ -0,0 +1,11 @@ +--- third_party/angle/third_party/vulkan-validation-layers/src/layers/vk_loader_platform.h.orig	2019-09-10 10:48:22 UTC ++++ third_party/angle/third_party/vulkan-validation-layers/src/layers/vk_loader_platform.h +@@ -31,7 +31,7 @@ + #include "vulkan/vk_platform.h" + #include "vulkan/vk_sdk_platform.h" +  +-#if defined(__linux__) || defined(__APPLE__) ++#if defined(__linux__) || defined(__APPLE__) || defined(__FreeBSD__) + /* Linux-specific common code: */ +  + // Headers: diff --git a/devel/electron6/files/patch-third__party_blink_renderer_BUILD.gn b/devel/electron6/files/patch-third__party_blink_renderer_BUILD.gn new file mode 100644 index 000000000000..7591c034e872 --- /dev/null +++ b/devel/electron6/files/patch-third__party_blink_renderer_BUILD.gn @@ -0,0 +1,13 @@ +--- third_party/blink/renderer/BUILD.gn.orig	2019-09-10 10:42:46 UTC ++++ third_party/blink/renderer/BUILD.gn +@@ -45,8 +45,8 @@ config("inside_blink") { +       "-Wconversion", +       "-Wno-float-conversion", +       "-Wno-sign-conversion", +-      "-Wno-implicit-float-conversion", +-      "-Wno-implicit-int-conversion", ++#      "-Wno-implicit-float-conversion", ++#      "-Wno-implicit-int-conversion", +     ] +   } + } diff --git a/devel/electron6/files/patch-third__party_blink_renderer_core_editing_editing__behavior.cc b/devel/electron6/files/patch-third__party_blink_renderer_core_editing_editing__behavior.cc new file mode 100644 index 000000000000..1d51ccf95af5 --- /dev/null +++ b/devel/electron6/files/patch-third__party_blink_renderer_core_editing_editing__behavior.cc @@ -0,0 +1,11 @@ +--- third_party/blink/renderer/core/editing/editing_behavior.cc.orig	2019-09-10 10:42:47 UTC ++++ third_party/blink/renderer/core/editing/editing_behavior.cc +@@ -270,7 +270,7 @@ bool EditingBehavior::ShouldInsertCharacter(const Keyb +   // unexpected behaviour +   if (ch < ' ') +     return false; +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   // According to XKB map no keyboard combinations with ctrl key are mapped to +   // printable characters, however we need the filter as the DomKey/text could +   // contain printable characters. diff --git a/devel/electron6/files/patch-third__party_blink_renderer_core_html_canvas_canvas__async__blob__creator.cc b/devel/electron6/files/patch-third__party_blink_renderer_core_html_canvas_canvas__async__blob__creator.cc new file mode 100644 index 000000000000..20fbc09c0af1 --- /dev/null +++ b/devel/electron6/files/patch-third__party_blink_renderer_core_html_canvas_canvas__async__blob__creator.cc @@ -0,0 +1,11 @@ +--- third_party/blink/renderer/core/html/canvas/canvas_async_blob_creator.cc.orig	2019-09-10 11:14:14 UTC ++++ third_party/blink/renderer/core/html/canvas/canvas_async_blob_creator.cc +@@ -40,7 +40,7 @@ constexpr TimeDelta kEncodeRowSlackBeforeDeadline = +     TimeDelta::FromMicroseconds(100); +  + /* The value is based on user statistics on Nov 2017. */ +-#if (defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN)) ++#if (defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_WIN)) || defined(OS_BSD) + const double kIdleTaskStartTimeoutDelayMs = 1000.0; + #else + const double kIdleTaskStartTimeoutDelayMs = 4000.0;  // For ChromeOS, Mobile diff --git a/devel/electron6/files/patch-third__party_blink_renderer_core_html_forms_internal__popup__menu.cc b/devel/electron6/files/patch-third__party_blink_renderer_core_html_forms_internal__popup__menu.cc new file mode 100644 index 000000000000..98516f626b8e --- /dev/null +++ b/devel/electron6/files/patch-third__party_blink_renderer_core_html_forms_internal__popup__menu.cc @@ -0,0 +1,11 @@ +--- third_party/blink/renderer/core/html/forms/internal_popup_menu.cc.orig	2019-09-10 11:14:15 UTC ++++ third_party/blink/renderer/core/html/forms/internal_popup_menu.cc +@@ -120,7 +120,7 @@ class InternalPopupMenu::ItemIterationContext { +         is_in_group_(false), +         buffer_(buffer) { +     DCHECK(buffer_); +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +     // On other platforms, the <option> background color is the same as the +     // <select> background color. On Linux, that makes the <option> +     // background color very dark, so by default, try to use a lighter diff --git a/devel/electron6/files/patch-third__party_blink_renderer_core_inspector_inspector__memory__agent.cc b/devel/electron6/files/patch-third__party_blink_renderer_core_inspector_inspector__memory__agent.cc new file mode 100644 index 000000000000..20f3ee32cef5 --- /dev/null +++ b/devel/electron6/files/patch-third__party_blink_renderer_core_inspector_inspector__memory__agent.cc @@ -0,0 +1,11 @@ +--- third_party/blink/renderer/core/inspector/inspector_memory_agent.cc.orig	2019-09-10 11:14:15 UTC ++++ third_party/blink/renderer/core/inspector/inspector_memory_agent.cc +@@ -188,7 +188,7 @@ InspectorMemoryAgent::GetSamplingProfileById(uint32_t  +  + std::vector<std::string> InspectorMemoryAgent::Symbolize( +     const std::vector<void*>& addresses) { +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   // TODO(alph): Move symbolization to the client. +   std::vector<void*> addresses_to_symbolize; +   for (void* address : addresses) { diff --git a/devel/electron6/files/patch-third__party_blink_renderer_core_layout_layout__view.cc b/devel/electron6/files/patch-third__party_blink_renderer_core_layout_layout__view.cc new file mode 100644 index 000000000000..be79d23536a7 --- /dev/null +++ b/devel/electron6/files/patch-third__party_blink_renderer_core_layout_layout__view.cc @@ -0,0 +1,20 @@ +--- third_party/blink/renderer/core/layout/layout_view.cc.orig	2019-09-10 11:14:15 UTC ++++ third_party/blink/renderer/core/layout/layout_view.cc +@@ -58,7 +58,7 @@ + #include "third_party/blink/renderer/platform/instrumentation/tracing/traced_value.h" + #include "third_party/blink/renderer/platform/runtime_enabled_features.h" +  +-#if defined(OS_LINUX) || defined(OS_CHROMEOS) ++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD) + #include "third_party/blink/renderer/platform/fonts/font_cache.h" + #endif +  +@@ -321,7 +321,7 @@ void LayoutView::UpdateLayout() { +   DCHECK(!layout_state_); +   LayoutState root_layout_state(*this); +  +-#if defined(OS_LINUX) || defined(OS_CHROMEOS) ++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD) +   // The font code in FontPlatformData does not have a direct connection to the +   // document, the frame or anything from which we could retrieve the device +   // scale factor. After using zoom for DSF, the GraphicsContext does only ever diff --git a/devel/electron6/files/patch-third__party_blink_renderer_core_paint_paint__layer.cc b/devel/electron6/files/patch-third__party_blink_renderer_core_paint_paint__layer.cc new file mode 100644 index 000000000000..bf1e019b551b --- /dev/null +++ b/devel/electron6/files/patch-third__party_blink_renderer_core_paint_paint__layer.cc @@ -0,0 +1,11 @@ +--- third_party/blink/renderer/core/paint/paint_layer.cc.orig	2019-09-10 11:14:15 UTC ++++ third_party/blink/renderer/core/paint/paint_layer.cc +@@ -103,7 +103,7 @@ namespace { + static CompositingQueryMode g_compositing_query_mode = +     kCompositingQueriesAreOnlyAllowedInCertainDocumentLifecyclePhases; +  +-#ifdef OS_LINUX ++#if defined(OS_LINUX) || defined(OS_BSD) + struct SameSizeAsPaintLayer : DisplayItemClient { +   // The bit fields may fit into the machine word of DisplayItemClient which +   // has only 8-bit data. diff --git a/devel/electron6/files/patch-third__party_blink_renderer_core_scroll_scrollbar__theme__aura.cc b/devel/electron6/files/patch-third__party_blink_renderer_core_scroll_scrollbar__theme__aura.cc new file mode 100644 index 000000000000..b888ab86e008 --- /dev/null +++ b/devel/electron6/files/patch-third__party_blink_renderer_core_scroll_scrollbar__theme__aura.cc @@ -0,0 +1,20 @@ +--- third_party/blink/renderer/core/scroll/scrollbar_theme_aura.cc.orig	2019-09-10 11:14:15 UTC ++++ third_party/blink/renderer/core/scroll/scrollbar_theme_aura.cc +@@ -332,7 +332,7 @@ ScrollbarPart ScrollbarThemeAura::InvalidateOnThumbPos +  + bool ScrollbarThemeAura::ShouldCenterOnThumb(const Scrollbar& scrollbar, +                                              const WebMouseEvent& event) { +-#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) ++#if ((defined(OS_BSD) || defined(OS_LINUX)) && !defined(OS_CHROMEOS)) +   if (event.button == WebPointerProperties::Button::kMiddle) +     return true; + #endif +@@ -347,7 +347,7 @@ bool ScrollbarThemeAura::ShouldSnapBackToDragOrigin( + // Disable snapback on desktop Linux to better integrate with the desktop + // behavior.  Typically, Linux apps do not implement scrollbar snapback (this is + // true for at least GTK and QT apps). +-#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) ++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) +   return false; + #endif +  diff --git a/devel/electron6/files/patch-third__party_blink_renderer_platform_BUILD.gn b/devel/electron6/files/patch-third__party_blink_renderer_platform_BUILD.gn new file mode 100644 index 000000000000..91edcd89de39 --- /dev/null +++ b/devel/electron6/files/patch-third__party_blink_renderer_platform_BUILD.gn @@ -0,0 +1,10 @@ +--- third_party/blink/renderer/platform/BUILD.gn.orig	2019-09-16 09:24:25 UTC ++++ third_party/blink/renderer/platform/BUILD.gn +@@ -111,6 +111,7 @@ executable("character_data_generator") { +     "//build/win:default_exe_manifest", +     "//third_party/icu", +   ] ++  libs = [ "cxxrt" ] + } +  + # This isn't strictly necessary since we can just add the deps to "platform", diff --git a/devel/electron6/files/patch-third__party_blink_renderer_platform_fonts_font__cache.cc b/devel/electron6/files/patch-third__party_blink_renderer_platform_fonts_font__cache.cc new file mode 100644 index 000000000000..22aff7adfd71 --- /dev/null +++ b/devel/electron6/files/patch-third__party_blink_renderer_platform_fonts_font__cache.cc @@ -0,0 +1,20 @@ +--- third_party/blink/renderer/platform/fonts/font_cache.cc.orig	2019-09-10 11:14:16 UTC ++++ third_party/blink/renderer/platform/fonts/font_cache.cc +@@ -72,7 +72,7 @@ static const char kColorEmojiLocale[] = "und-Zsye"; +  + SkFontMgr* FontCache::static_font_manager_ = nullptr; +  +-#if defined(OS_LINUX) || defined(OS_CHROMEOS) ++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD) + float FontCache::device_scale_factor_ = 1.0; + #endif +  +@@ -95,7 +95,7 @@ FontCache::FontCache() + FontPlatformData* FontCache::SystemFontPlatformData( +     const FontDescription& font_description) { +   const AtomicString& family = FontCache::SystemFontFamily(); +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   if (family.IsEmpty() || family == font_family_names::kSystemUi) +     return nullptr; + #else diff --git a/devel/electron6/files/patch-third__party_blink_renderer_platform_fonts_font__cache.h b/devel/electron6/files/patch-third__party_blink_renderer_platform_fonts_font__cache.h new file mode 100644 index 000000000000..ecbb6b5182e2 --- /dev/null +++ b/devel/electron6/files/patch-third__party_blink_renderer_platform_fonts_font__cache.h @@ -0,0 +1,53 @@ +--- third_party/blink/renderer/platform/fonts/font_cache.h.orig	2019-09-10 11:14:16 UTC ++++ third_party/blink/renderer/platform/fonts/font_cache.h +@@ -155,7 +155,7 @@ class PLATFORM_EXPORT FontCache { +   sk_sp<SkFontMgr> FontManager() { return font_manager_; } +   static void SetFontManager(sk_sp<SkFontMgr>); +  +-#if defined(OS_LINUX) || defined(OS_CHROMEOS) ++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD) +   // These are needed for calling QueryRenderStyleForStrike, since +   // gfx::GetFontRenderParams makes distinctions based on DSF. +   static float DeviceScaleFactor() { return device_scale_factor_; } +@@ -216,7 +216,7 @@ class PLATFORM_EXPORT FontCache { +       const FontDescription&); + #endif  // defined(OS_ANDROID) +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   struct PlatformFallbackFont { +     String name; +     CString filename; +@@ -228,7 +228,7 @@ class PLATFORM_EXPORT FontCache { +   static void GetFontForCharacter(UChar32, +                                   const char* preferred_locale, +                                   PlatformFallbackFont*); +-#endif  // defined(OS_LINUX) ++#endif  // defined(OS_LINUX) || defined(OS_BSD) +  +   scoped_refptr<SimpleFontData> FontDataFromFontPlatformData( +       const FontPlatformData*, +@@ -301,12 +301,12 @@ class PLATFORM_EXPORT FontCache { +                                    const FontFaceCreationParams&, +                                    CString& name); +  +-#if defined(OS_ANDROID) || defined(OS_LINUX) ++#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_BSD) +   static AtomicString GetFamilyNameForCharacter(SkFontMgr*, +                                                 UChar32, +                                                 const FontDescription&, +                                                 FontFallbackPriority); +-#endif  // defined(OS_ANDROID) || defined(OS_LINUX) ++#endif  // defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_BSD) +  +   scoped_refptr<SimpleFontData> FallbackOnStandardFontStyle( +       const FontDescription&, +@@ -338,7 +338,7 @@ class PLATFORM_EXPORT FontCache { +   bool is_test_font_mgr_ = false; + #endif  // defined(OS_WIN) +  +-#if defined(OS_LINUX) || defined(OS_CHROMEOS) ++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD) +   static float device_scale_factor_; + #endif +  diff --git a/devel/electron6/files/patch-third__party_blink_renderer_platform_fonts_font__description.cc b/devel/electron6/files/patch-third__party_blink_renderer_platform_fonts_font__description.cc new file mode 100644 index 000000000000..a4097fa1cbdf --- /dev/null +++ b/devel/electron6/files/patch-third__party_blink_renderer_platform_fonts_font__description.cc @@ -0,0 +1,20 @@ +--- third_party/blink/renderer/platform/fonts/font_description.cc.orig	2019-09-10 11:14:16 UTC ++++ third_party/blink/renderer/platform/fonts/font_description.cc +@@ -38,7 +38,7 @@ + #include "third_party/blink/renderer/platform/wtf/text/string_hash.h" + #include "third_party/blink/renderer/platform/wtf/text/string_hasher.h" +  +-#if defined(OS_LINUX) || defined(OS_CHROMEOS) ++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD) + #include "third_party/blink/renderer/platform/fonts/font_cache.h" + #endif +  +@@ -223,7 +223,7 @@ FontCacheKey FontDescription::CacheKey( +       static_cast<unsigned>(fields_.orientation_) << 1 |       // bit 2-3 +       static_cast<unsigned>(fields_.subpixel_text_position_);  // bit 1 +  +-#if defined(OS_LINUX) || defined(OS_CHROMEOS) ++#if defined(OS_LINUX) || defined(OS_CHROMEOS) || defined(OS_BSD) +   float device_scale_factor_for_key = FontCache::DeviceScaleFactor(); + #else +   float device_scale_factor_for_key = 1.0f; diff --git a/devel/electron6/files/patch-third__party_blink_renderer_platform_fonts_font__metrics.cc b/devel/electron6/files/patch-third__party_blink_renderer_platform_fonts_font__metrics.cc new file mode 100644 index 000000000000..184dfbb80663 --- /dev/null +++ b/devel/electron6/files/patch-third__party_blink_renderer_platform_fonts_font__metrics.cc @@ -0,0 +1,29 @@ +--- third_party/blink/renderer/platform/fonts/font_metrics.cc.orig	2019-09-10 10:42:49 UTC ++++ third_party/blink/renderer/platform/fonts/font_metrics.cc +@@ -38,7 +38,7 @@ +  + namespace blink { +  +-#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_FUCHSIA) ++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_FUCHSIA) || defined(OS_BSD) + // This is the largest VDMX table which we'll try to load and parse. + static const size_t kMaxVDMXTableSize = 1024 * 1024;  // 1 MB + #endif +@@ -60,7 +60,7 @@ void FontMetrics::AscentDescentWithHacks( +   int vdmx_ascent = 0, vdmx_descent = 0; +   bool is_vdmx_valid = false; +  +-#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_FUCHSIA) ++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_FUCHSIA) || defined(OS_BSD) +   // Manually digging up VDMX metrics is only applicable when bytecode hinting +   // using FreeType.  With DirectWrite or CoreText, no bytecode hinting is ever +   // done.  This code should be pushed into FreeType (hinted font metrics). +@@ -106,7 +106,7 @@ void FontMetrics::AscentDescentWithHacks( +       visual_overflow_inflation_for_ascent = 1; +     if (descent < metrics.fDescent) { +       visual_overflow_inflation_for_descent = 1; +-#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_FUCHSIA) ++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_FUCHSIA) || defined(OS_BSD) +       // When subpixel positioning is enabled, if the descent is rounded down, +       // the descent part of the glyph may be truncated when displayed in a +       // 'overflow: hidden' container.  To avoid that, borrow 1 unit from the diff --git a/devel/electron6/files/patch-third__party_blink_renderer_platform_fonts_font__unique__name__lookup.cc b/devel/electron6/files/patch-third__party_blink_renderer_platform_fonts_font__unique__name__lookup.cc new file mode 100644 index 000000000000..6f60dd6c314d --- /dev/null +++ b/devel/electron6/files/patch-third__party_blink_renderer_platform_fonts_font__unique__name__lookup.cc @@ -0,0 +1,20 @@ +--- third_party/blink/renderer/platform/fonts/font_unique_name_lookup.cc.orig	2019-09-10 10:42:49 UTC ++++ third_party/blink/renderer/platform/fonts/font_unique_name_lookup.cc +@@ -8,7 +8,7 @@ + #if defined(OS_ANDROID) + #include "third_party/blink/public/mojom/font_unique_name_lookup/font_unique_name_lookup.mojom-blink.h" + #include "third_party/blink/renderer/platform/fonts/android/font_unique_name_lookup_android.h" +-#elif defined(OS_LINUX) ++#elif defined(OS_LINUX) || defined(OS_BSD) + #include "third_party/blink/renderer/platform/fonts/linux/font_unique_name_lookup_linux.h" + #elif defined(OS_WIN) + #include "third_party/blink/renderer/platform/fonts/win/font_unique_name_lookup_win.h" +@@ -23,7 +23,7 @@ std::unique_ptr<FontUniqueNameLookup> + FontUniqueNameLookup::GetPlatformUniqueNameLookup() { + #if defined(OS_ANDROID) +   return std::make_unique<FontUniqueNameLookupAndroid>(); +-#elif defined(OS_LINUX) ++#elif defined(OS_LINUX) || defined(OS_BSD) +   return std::make_unique<FontUniqueNameLookupLinux>(); + #elif defined(OS_WIN) +   return std::make_unique<FontUniqueNameLookupWin>(); diff --git a/devel/electron6/files/patch-third__party_blink_renderer_platform_fonts_shaping_shape__result__inline__headers.h b/devel/electron6/files/patch-third__party_blink_renderer_platform_fonts_shaping_shape__result__inline__headers.h new file mode 100644 index 000000000000..dfc98cc644e5 --- /dev/null +++ b/devel/electron6/files/patch-third__party_blink_renderer_platform_fonts_shaping_shape__result__inline__headers.h @@ -0,0 +1,78 @@ +--- third_party/blink/renderer/platform/fonts/shaping/shape_result_inline_headers.h.orig	2019-09-10 11:14:16 UTC ++++ third_party/blink/renderer/platform/fonts/shaping/shape_result_inline_headers.h +@@ -251,37 +251,6 @@ struct ShapeResult::RunInfo : public RefCounted<ShapeR +     template <bool has_non_zero_glyph_offsets> +     struct iterator final {}; +  +-    // For non-zero glyph offset array +-    template <> +-    struct iterator<true> final { +-      // The constructor for ShapeResult +-      explicit iterator(const GlyphOffsetArray& array) +-          : pointer(array.storage_.get()) { +-        DCHECK(pointer); +-      } +- +-      // The constructor for ShapeResultView +-      explicit iterator(const GlyphDataRange& range) : pointer(range.offsets) { +-        DCHECK(pointer); +-      } +- +-      GlyphOffset operator*() const { return *pointer; } +-      void operator++() { ++pointer; } +- +-      const GlyphOffset* pointer; +-    }; +- +-    // For zero glyph offset array +-    template <> +-    struct iterator<false> final { +-      explicit iterator(const GlyphOffsetArray& array) { +-        DCHECK(!array.HasStorage()); +-      } +-      explicit iterator(const GlyphDataRange& range) { DCHECK(!range.offsets); } +-      GlyphOffset operator*() const { return GlyphOffset(); } +-      void operator++() {} +-    }; +- +     template <bool has_non_zero_glyph_offsets> +     iterator<has_non_zero_glyph_offsets> GetIterator() const { +       return iterator<has_non_zero_glyph_offsets>(*this); +@@ -493,6 +462,37 @@ struct ShapeResult::RunInfo : public RefCounted<ShapeR +   unsigned start_index_; +   unsigned num_characters_; +   float width_; ++}; ++ ++// For non-zero glyph offset array ++template <> ++struct ShapeResult::RunInfo::GlyphOffsetArray::iterator<true> final { ++  // The constructor for ShapeResult ++  explicit iterator(const GlyphOffsetArray& array) ++      : pointer(array.storage_.get()) { ++    DCHECK(pointer); ++  } ++ ++  // The constructor for ShapeResultView ++  explicit iterator(const GlyphDataRange& range) : pointer(range.offsets) { ++    DCHECK(pointer); ++  } ++ ++  GlyphOffset operator*() const { return *pointer; } ++  void operator++() { ++pointer; } ++ ++  const GlyphOffset* pointer; ++}; ++ ++// For zero glyph offset array ++template <> ++struct ShapeResult::RunInfo::GlyphOffsetArray::iterator<false> final { ++  explicit iterator(const GlyphOffsetArray& array) { ++    DCHECK(!array.HasStorage()); ++  } ++  explicit iterator(const GlyphDataRange& range) { DCHECK(!range.offsets); } ++  GlyphOffset operator*() const { return GlyphOffset(); } ++  void operator++() {} + }; +  + // Find the range of HarfBuzzRunGlyphData for the specified character index diff --git a/devel/electron6/files/patch-third__party_blink_renderer_platform_fonts_skia_font__cache__skia.cc b/devel/electron6/files/patch-third__party_blink_renderer_platform_fonts_skia_font__cache__skia.cc new file mode 100644 index 000000000000..d3cc393b797e --- /dev/null +++ b/devel/electron6/files/patch-third__party_blink_renderer_platform_fonts_skia_font__cache__skia.cc @@ -0,0 +1,38 @@ +--- third_party/blink/renderer/platform/fonts/skia/font_cache_skia.cc.orig	2019-09-10 11:14:16 UTC ++++ third_party/blink/renderer/platform/fonts/skia/font_cache_skia.cc +@@ -60,7 +60,7 @@ AtomicString ToAtomicString(const SkString& str) { +   return AtomicString::FromUTF8(str.c_str(), str.size()); + } +  +-#if defined(OS_ANDROID) || defined(OS_LINUX) ++#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_BSD) + // This function is called on android or when we are emulating android fonts on + // linux and the embedder has overriden the default fontManager with + // WebFontRendering::setSkiaFontMgr. +@@ -83,7 +83,7 @@ AtomicString FontCache::GetFamilyNameForCharacter( +   typeface->getFamilyName(&skia_family_name); +   return ToAtomicString(skia_family_name); + } +-#endif  // defined(OS_ANDROID) || defined(OS_LINUX) ++#endif  // defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_BSD) +  + void FontCache::PlatformInit() {} +  +@@ -228,7 +228,7 @@ sk_sp<SkTypeface> FontCache::CreateTypeface( +   } + #endif +  +-#if defined(OS_LINUX) || defined(OS_WIN) ++#if defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD) +   // On linux if the fontManager has been overridden then we should be calling +   // the embedder provided font Manager rather than calling +   // SkTypeface::CreateFromName which may redirect the call to the default font +@@ -255,7 +255,7 @@ std::unique_ptr<FontPlatformData> FontCache::CreateFon +   CString name; +  +   sk_sp<SkTypeface> typeface; +-#if defined(OS_ANDROID) || defined(OS_LINUX) ++#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_BSD) +   if (alternate_name == AlternateFontName::kLocalUniqueFace && +       RuntimeEnabledFeatures::FontSrcLocalMatchingEnabled()) { +     typeface = CreateTypefaceFromUniqueName(creation_params, name); diff --git a/devel/electron6/files/patch-third__party_blink_renderer_platform_wtf_container__annotations.h b/devel/electron6/files/patch-third__party_blink_renderer_platform_wtf_container__annotations.h new file mode 100644 index 000000000000..102f017aa1bb --- /dev/null +++ b/devel/electron6/files/patch-third__party_blink_renderer_platform_wtf_container__annotations.h @@ -0,0 +1,27 @@ +--- third_party/blink/renderer/platform/wtf/container_annotations.h.orig	2019-09-10 10:42:49 UTC ++++ third_party/blink/renderer/platform/wtf/container_annotations.h +@@ -10,7 +10,7 @@ +  + // TODO(ochang): Remove the ARCH_CPU_X86_64 condition to enable this for X86 + // once the crashes there have been fixed: http://crbug.com/461406 +-#if defined(ADDRESS_SANITIZER) && defined(OS_LINUX) && defined(ARCH_CPU_X86_64) ++#if defined(ADDRESS_SANITIZER) && (defined(OS_LINUX) || defined(OS_BSD)) && defined(ARCH_CPU_X86_64) + #define ANNOTATE_CONTIGUOUS_CONTAINER + #define ANNOTATE_NEW_BUFFER(buffer, capacity, newSize)                       \ +   if (buffer) {                                                              \ +@@ -35,13 +35,13 @@ +   ANNOTATE_NEW_BUFFER(buffer, newCapacity, bufferSize); + // Annotations require buffers to begin on an 8-byte boundary. +  +-#else  // ADDRESS_SANITIZER && OS_LINUX && ARCH_CPU_X86_64 ++#else  // ADDRESS_SANITIZER && (OS_LINUX || OS_BSD) && ARCH_CPU_X86_64 +  + #define ANNOTATE_NEW_BUFFER(buffer, capacity, newSize) + #define ANNOTATE_DELETE_BUFFER(buffer, capacity, oldSize) + #define ANNOTATE_CHANGE_SIZE(buffer, capacity, oldSize, newSize) + #define ANNOTATE_CHANGE_CAPACITY(buffer, oldCapacity, bufferSize, newCapacity) +  +-#endif  // ADDRESS_SANITIZER && OS_LINUX && ARCH_CPU_X86_64 ++#endif  // ADDRESS_SANITIZER && (OS_LINUX || OS_BSD) && ARCH_CPU_X86_64 +  + #endif  // THIRD_PARTY_BLINK_RENDERER_PLATFORM_WTF_CONTAINER_ANNOTATIONS_H_ diff --git a/devel/electron6/files/patch-third__party_blink_renderer_platform_wtf_stack__util.cc b/devel/electron6/files/patch-third__party_blink_renderer_platform_wtf_stack__util.cc new file mode 100644 index 000000000000..ffd0fe162d98 --- /dev/null +++ b/devel/electron6/files/patch-third__party_blink_renderer_platform_wtf_stack__util.cc @@ -0,0 +1,14 @@ +--- third_party/blink/renderer/platform/wtf/stack_util.cc.orig	2019-09-10 10:42:49 UTC ++++ third_party/blink/renderer/platform/wtf/stack_util.cc +@@ -17,6 +17,11 @@ + extern "C" void* __libc_stack_end;  // NOLINT + #endif +  ++#if defined(OS_FREEBSD) ++#include <sys/signal.h> ++#include <pthread_np.h> ++#endif ++ + namespace WTF { +  + size_t GetUnderestimatedStackSize() { diff --git a/devel/electron6/files/patch-third__party_blink_renderer_platform_wtf_threading__pthreads.cc b/devel/electron6/files/patch-third__party_blink_renderer_platform_wtf_threading__pthreads.cc new file mode 100644 index 000000000000..62a4a6337f6f --- /dev/null +++ b/devel/electron6/files/patch-third__party_blink_renderer_platform_wtf_threading__pthreads.cc @@ -0,0 +1,22 @@ +--- third_party/blink/renderer/platform/wtf/threading_pthreads.cc.orig	2019-09-10 11:14:17 UTC ++++ third_party/blink/renderer/platform/wtf/threading_pthreads.cc +@@ -52,12 +52,17 @@ + #include <objc/objc-auto.h> + #endif +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + #include <sys/syscall.h> + #endif +  +-#if defined(OS_LINUX) || defined(OS_ANDROID) ++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD) + #include <unistd.h> ++#endif ++ ++#if defined(OS_BSD) ++#include <sys/signal.h> ++#include <pthread_np.h> + #endif +  + namespace WTF { diff --git a/devel/electron6/files/patch-third__party_boringssl_BUILD.gn b/devel/electron6/files/patch-third__party_boringssl_BUILD.gn new file mode 100644 index 000000000000..9edcd278cef0 --- /dev/null +++ b/devel/electron6/files/patch-third__party_boringssl_BUILD.gn @@ -0,0 +1,36 @@ +--- third_party/boringssl/BUILD.gn.orig	2019-09-16 09:24:24 UTC ++++ third_party/boringssl/BUILD.gn +@@ -87,7 +87,7 @@ if (is_win && !is_msan && current_cpu != "arm64") { +     } else if (current_cpu == "x64") { +       if (is_mac) { +         sources += crypto_sources_mac_x86_64 +-      } else if (is_linux || is_android) { ++      } else if (is_linux || is_bsd || is_android) { +         sources += crypto_sources_linux_x86_64 +       } else { +         public_configs = [ ":no_asm_config" ] +@@ -95,13 +95,13 @@ if (is_win && !is_msan && current_cpu != "arm64") { +     } else if (current_cpu == "x86") { +       if (is_mac) { +         sources += crypto_sources_mac_x86 +-      } else if (is_linux || is_android) { ++      } else if (is_linux || is_bsd || is_android) { +         sources += crypto_sources_linux_x86 +       } else { +         public_configs = [ ":no_asm_config" ] +       } +     } else if (current_cpu == "arm") { +-      if (is_linux || is_android) { ++      if (is_linux || is_bsd || is_android) { +         sources += crypto_sources_linux_arm +       } else if (is_ios) { +         sources += crypto_sources_ios_arm +@@ -109,7 +109,7 @@ if (is_win && !is_msan && current_cpu != "arm64") { +         public_configs = [ ":no_asm_config" ] +       } +     } else if (current_cpu == "arm64") { +-      if (is_linux || is_android) { ++      if (is_linux || is_bsd || is_android) { +         sources += crypto_sources_linux_aarch64 +       } else if (is_ios) { +         sources += crypto_sources_ios_aarch64 diff --git a/devel/electron6/files/patch-third__party_boringssl_src_crypto_cpu-aarch64-linux.c b/devel/electron6/files/patch-third__party_boringssl_src_crypto_cpu-aarch64-linux.c new file mode 100644 index 000000000000..ed62f264c3ae --- /dev/null +++ b/devel/electron6/files/patch-third__party_boringssl_src_crypto_cpu-aarch64-linux.c @@ -0,0 +1,63 @@ +--- third_party/boringssl/src/crypto/cpu-aarch64-linux.c.orig	2019-09-10 10:44:10 UTC ++++ third_party/boringssl/src/crypto/cpu-aarch64-linux.c +@@ -14,49 +14,35 @@ +  + #include <openssl/cpu.h> +  +-#if defined(OPENSSL_AARCH64) && defined(OPENSSL_LINUX) && \ +-    !defined(OPENSSL_STATIC_ARMCAP) ++#if defined(OPENSSL_AARCH64) +  +-#include <sys/auxv.h> +- + #include <openssl/arm_arch.h> +  + #include "internal.h" +  +- + extern uint32_t OPENSSL_armcap_P; +  ++#include <sys/types.h> ++#include <machine/armreg.h> ++ + void OPENSSL_cpuid_setup(void) { +-  unsigned long hwcap = getauxval(AT_HWCAP); ++  uint64_t id_aa64isar0; +  +-  // See /usr/include/asm/hwcap.h on an aarch64 installation for the source of +-  // these values. +-  static const unsigned long kNEON = 1 << 1; +-  static const unsigned long kAES = 1 << 3; +-  static const unsigned long kPMULL = 1 << 4; +-  static const unsigned long kSHA1 = 1 << 5; +-  static const unsigned long kSHA256 = 1 << 6; ++  id_aa64isar0 = READ_SPECIALREG(ID_AA64ISAR0_EL1); +  +-  if ((hwcap & kNEON) == 0) { +-    // Matching OpenSSL, if NEON is missing, don't report other features +-    // either. +-    return; +-  } +- +   OPENSSL_armcap_P |= ARMV7_NEON; +  +-  if (hwcap & kAES) { ++  if (ID_AA64ISAR0_AES(id_aa64isar0) >= ID_AA64ISAR0_AES_BASE) { +     OPENSSL_armcap_P |= ARMV8_AES; +   } +-  if (hwcap & kPMULL) { ++  if (ID_AA64ISAR0_AES(id_aa64isar0) == ID_AA64ISAR0_AES_PMULL) { +     OPENSSL_armcap_P |= ARMV8_PMULL; +   } +-  if (hwcap & kSHA1) { ++  if (ID_AA64ISAR0_SHA1(id_aa64isar0) == ID_AA64ISAR0_SHA1_BASE) { +     OPENSSL_armcap_P |= ARMV8_SHA1; +   } +-  if (hwcap & kSHA256) { ++  if(ID_AA64ISAR0_SHA2(id_aa64isar0) >= ID_AA64ISAR0_SHA2_BASE) { +     OPENSSL_armcap_P |= ARMV8_SHA256; +   } + } +- +-#endif  // OPENSSL_AARCH64 && !OPENSSL_STATIC_ARMCAP ++#endif  // OPENSSL_AARCH64 diff --git a/devel/electron6/files/patch-third__party_boringssl_src_crypto_ex__data.c b/devel/electron6/files/patch-third__party_boringssl_src_crypto_ex__data.c new file mode 100644 index 000000000000..a9cfcc2451ab --- /dev/null +++ b/devel/electron6/files/patch-third__party_boringssl_src_crypto_ex__data.c @@ -0,0 +1,13 @@ +--- third_party/boringssl/src/crypto/ex_data.c.orig	2019-09-10 10:44:10 UTC ++++ third_party/boringssl/src/crypto/ex_data.c +@@ -186,7 +186,9 @@ int CRYPTO_set_ex_data(CRYPTO_EX_DATA *ad, int index,  +     } +   } +  +-  sk_void_set(ad->sk, index, val); ++  // expression result unused; should this cast be to 'void'? ++  // seems it should, feel free to investigate those #def ++  (void) sk_void_set(ad->sk, index, val); +   return 1; + } +  diff --git a/devel/electron6/files/patch-third__party_breakpad_breakpad_src_common_simple__string__dictionary.h b/devel/electron6/files/patch-third__party_breakpad_breakpad_src_common_simple__string__dictionary.h new file mode 100644 index 000000000000..da0e9b018047 --- /dev/null +++ b/devel/electron6/files/patch-third__party_breakpad_breakpad_src_common_simple__string__dictionary.h @@ -0,0 +1,11 @@ +--- third_party/breakpad/breakpad/src/common/simple_string_dictionary.h.orig	2019-09-10 10:43:55 UTC ++++ third_party/breakpad/breakpad/src/common/simple_string_dictionary.h +@@ -33,7 +33,7 @@ + #include <assert.h> + #include <string.h> +  +-#include "common/basictypes.h" ++#include "third_party/breakpad/breakpad/src/common/basictypes.h" +  + namespace google_breakpad { +  diff --git a/devel/electron6/files/patch-third__party_cacheinvalidation_src_google_cacheinvalidation_include_types.h b/devel/electron6/files/patch-third__party_cacheinvalidation_src_google_cacheinvalidation_include_types.h new file mode 100644 index 000000000000..bba83f8bf1e1 --- /dev/null +++ b/devel/electron6/files/patch-third__party_cacheinvalidation_src_google_cacheinvalidation_include_types.h @@ -0,0 +1,11 @@ +--- third_party/cacheinvalidation/src/google/cacheinvalidation/include/types.h.orig	2019-09-10 10:43:16 UTC ++++ third_party/cacheinvalidation/src/google/cacheinvalidation/include/types.h +@@ -334,6 +334,8 @@ class Status { +      */ +     PERMANENT_FAILURE +   }; ++   ++  Status() : code_(SUCCESS), message_() {} +  +   /* Creates a new Status object given the code and message. */ +   Status(Code code, const string& message) : code_(code), message_(message) {} diff --git a/devel/electron6/files/patch-third__party_crashpad_crashpad_build_crashpad__buildconfig.gni b/devel/electron6/files/patch-third__party_crashpad_crashpad_build_crashpad__buildconfig.gni new file mode 100644 index 000000000000..fae3994cef37 --- /dev/null +++ b/devel/electron6/files/patch-third__party_crashpad_crashpad_build_crashpad__buildconfig.gni @@ -0,0 +1,11 @@ +--- third_party/crashpad/crashpad/build/crashpad_buildconfig.gni.orig	2019-09-10 10:43:16 UTC ++++ third_party/crashpad/crashpad/build/crashpad_buildconfig.gni +@@ -38,7 +38,7 @@ crashpad_is_standalone = crashpad_dependencies == "sta + if (crashpad_is_in_chromium) { +   crashpad_is_mac = is_mac +   crashpad_is_win = is_win +-  crashpad_is_linux = is_linux ++  crashpad_is_linux = is_linux && !is_bsd +   crashpad_is_android = is_android +   crashpad_is_fuchsia = is_fuchsia +  diff --git a/devel/electron6/files/patch-third__party_crashpad_crashpad_client_BUILD.gn b/devel/electron6/files/patch-third__party_crashpad_crashpad_client_BUILD.gn new file mode 100644 index 000000000000..f7bbbae27af5 --- /dev/null +++ b/devel/electron6/files/patch-third__party_crashpad_crashpad_client_BUILD.gn @@ -0,0 +1,15 @@ +--- third_party/crashpad/crashpad/client/BUILD.gn.orig	2019-09-10 10:43:16 UTC ++++ third_party/crashpad/crashpad/client/BUILD.gn +@@ -71,6 +71,12 @@ static_library("client") { +     sources += [ "crashpad_client_fuchsia.cc" ] +   } +  ++  if (crashpad_is_posix) { ++    sources += [ ++      "crashpad_client_posix.cc", ++    ] ++  } ++ +   if (crashpad_is_linux || crashpad_is_android || crashpad_is_fuchsia) { +     sources += [ "crash_report_database_generic.cc" ] +   } diff --git a/devel/electron6/files/patch-third__party_crashpad_crashpad_client_crashpad__client__posix.cc b/devel/electron6/files/patch-third__party_crashpad_crashpad_client_crashpad__client__posix.cc new file mode 100644 index 000000000000..11bc66d28901 --- /dev/null +++ b/devel/electron6/files/patch-third__party_crashpad_crashpad_client_crashpad__client__posix.cc @@ -0,0 +1,41 @@ +--- third_party/crashpad/crashpad/client/crashpad_client_posix.cc.orig	2019-09-16 09:25:15 UTC ++++ third_party/crashpad/crashpad/client/crashpad_client_posix.cc +@@ -0,0 +1,38 @@ ++// Copyright 2017 The Crashpad Authors. All rights reserved. ++// ++// Licensed under the Apache License, Version 2.0 (the "License"); ++// you may not use this file except in compliance with the License. ++// You may obtain a copy of the License at ++// ++//     http://www.apache.org/licenses/LICENSE-2.0 ++// ++// Unless required by applicable law or agreed to in writing, software ++// distributed under the License is distributed on an "AS IS" BASIS, ++// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ++// See the License for the specific language governing permissions and ++// limitations under the License. ++ ++#include "client/crashpad_client.h" ++ ++#include "base/logging.h" ++ ++namespace crashpad { ++ ++CrashpadClient::CrashpadClient() {} ++ ++CrashpadClient::~CrashpadClient() {} ++ ++bool CrashpadClient::StartHandler( ++    const base::FilePath& handler, ++    const base::FilePath& database, ++    const base::FilePath& metrics_dir, ++    const std::string& url, ++    const std::map<std::string, std::string>& annotations, ++    const std::vector<std::string>& arguments, ++    bool restartable, ++    bool asynchronous_start) { ++  NOTREACHED();  // TODO(scottmg): https://crashpad.chromium.org/bug/196 ++  return false; ++} ++ ++}  // namespace crashpad diff --git a/devel/electron6/files/patch-third__party_crashpad_crashpad_util_misc_address__types.h b/devel/electron6/files/patch-third__party_crashpad_crashpad_util_misc_address__types.h new file mode 100644 index 000000000000..a5ad09945a78 --- /dev/null +++ b/devel/electron6/files/patch-third__party_crashpad_crashpad_util_misc_address__types.h @@ -0,0 +1,20 @@ +--- third_party/crashpad/crashpad/util/misc/address_types.h.orig	2019-09-10 10:43:16 UTC ++++ third_party/crashpad/crashpad/util/misc/address_types.h +@@ -25,7 +25,7 @@ + #include <mach/mach_types.h> + #elif defined(OS_WIN) + #include "util/win/address_types.h" +-#elif defined(OS_LINUX) || defined(OS_ANDROID) ++#elif defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD) + #include "util/linux/address_types.h" + #elif defined(OS_FUCHSIA) + #include <zircon/types.h> +@@ -55,7 +55,7 @@ using VMSize = mach_vm_size_t; + using VMAddress = WinVMAddress; + using VMSize = WinVMSize; +  +-#elif defined(OS_LINUX) || defined(OS_ANDROID) ++#elif defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD) +  + using VMAddress = LinuxVMAddress; + using VMSize = LinuxVMSize; diff --git a/devel/electron6/files/patch-third__party_crashpad_crashpad_util_misc_capture__context.h b/devel/electron6/files/patch-third__party_crashpad_crashpad_util_misc_capture__context.h new file mode 100644 index 000000000000..bff565f5eeec --- /dev/null +++ b/devel/electron6/files/patch-third__party_crashpad_crashpad_util_misc_capture__context.h @@ -0,0 +1,20 @@ +--- third_party/crashpad/crashpad/util/misc/capture_context.h.orig	2019-09-10 10:43:16 UTC ++++ third_party/crashpad/crashpad/util/misc/capture_context.h +@@ -21,7 +21,7 @@ + #include <mach/mach.h> + #elif defined(OS_WIN) + #include <windows.h> +-#elif defined(OS_LINUX) || defined(OS_ANDROID) ++#elif defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD) + #include <ucontext.h> + #elif defined(OS_FUCHSIA) + #include <signal.h> +@@ -35,7 +35,7 @@ using NativeCPUContext = x86_thread_state; + #endif + #elif defined(OS_WIN) + using NativeCPUContext = CONTEXT; +-#elif defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_FUCHSIA) ++#elif defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_FUCHSIA) || defined(OS_BSD) + using NativeCPUContext = ucontext_t; + #endif  // OS_MACOSX +  diff --git a/devel/electron6/files/patch-third__party_crashpad_crashpad_util_misc_metrics.cc b/devel/electron6/files/patch-third__party_crashpad_crashpad_util_misc_metrics.cc new file mode 100644 index 000000000000..f1020292d89c --- /dev/null +++ b/devel/electron6/files/patch-third__party_crashpad_crashpad_util_misc_metrics.cc @@ -0,0 +1,11 @@ +--- third_party/crashpad/crashpad/util/misc/metrics.cc.orig	2019-09-10 10:43:16 UTC ++++ third_party/crashpad/crashpad/util/misc/metrics.cc +@@ -25,7 +25,7 @@ + #define METRICS_OS_NAME "Win" + #elif defined(OS_ANDROID) + #define METRICS_OS_NAME "Android" +-#elif defined(OS_LINUX) ++#elif defined(OS_LINUX) || defined(OS_BSD) + #define METRICS_OS_NAME "Linux" + #elif defined(OS_FUCHSIA) + #define METRICS_OS_NAME "Fuchsia" diff --git a/devel/electron6/files/patch-third__party_crashpad_crashpad_util_misc_uuid.cc b/devel/electron6/files/patch-third__party_crashpad_crashpad_util_misc_uuid.cc new file mode 100644 index 000000000000..3101719e0299 --- /dev/null +++ b/devel/electron6/files/patch-third__party_crashpad_crashpad_util_misc_uuid.cc @@ -0,0 +1,11 @@ +--- third_party/crashpad/crashpad/util/misc/uuid.cc.orig	2019-09-10 10:43:16 UTC ++++ third_party/crashpad/crashpad/util/misc/uuid.cc +@@ -95,7 +95,7 @@ bool UUID::InitializeWithNew() { +   InitializeFromBytes(uuid); +   return true; + #elif defined(OS_WIN) || defined(OS_LINUX) || defined(OS_ANDROID) || \ +-    defined(OS_FUCHSIA) ++    defined(OS_FUCHSIA) || defined(OS_BSD) +   // Linux, Android, and Fuchsia do not provide a UUID generator in a +   // widely-available system library. On Linux and Android, uuid_generate() +   // from libuuid is not available everywhere. diff --git a/devel/electron6/files/patch-third__party_crashpad_crashpad_util_posix_close__multiple.cc b/devel/electron6/files/patch-third__party_crashpad_crashpad_util_posix_close__multiple.cc new file mode 100644 index 000000000000..0f3a072f7f7a --- /dev/null +++ b/devel/electron6/files/patch-third__party_crashpad_crashpad_util_posix_close__multiple.cc @@ -0,0 +1,29 @@ +--- third_party/crashpad/crashpad/util/posix/close_multiple.cc.orig	2019-09-10 10:43:16 UTC ++++ third_party/crashpad/crashpad/util/posix/close_multiple.cc +@@ -31,7 +31,7 @@ + #include "util/file/directory_reader.h" + #include "util/misc/implicit_cast.h" +  +-#if defined(OS_MACOSX) ++#if defined(OS_MACOSX) || defined(OS_BSD) + #include <sys/sysctl.h> + #endif +  +@@ -72,7 +72,7 @@ void CloseNowOrOnExec(int fd, bool ebadf_ok) { + // This is an advantage over looping over all possible file descriptors, because + // no attempt needs to be made to close file descriptors that are not open. + bool CloseMultipleNowOrOnExecUsingFDDir(int min_fd, int preserve_fd) { +-#if defined(OS_MACOSX) ++#if defined(OS_MACOSX) || defined(OS_BSD) +   static constexpr char kFDDir[] = "/dev/fd"; + #elif defined(OS_LINUX) || defined(OS_ANDROID) +   static constexpr char kFDDir[] = "/proc/self/fd"; +@@ -146,7 +146,7 @@ void CloseMultipleNowOrOnExec(int fd, int preserve_fd) +   // while the system is running, but it’s still a better upper bound than the +   // current RLIMIT_NOFILE value. +  +-#if defined(OS_MACOSX) ++#if defined(OS_MACOSX) || defined(OS_BSD) +   // See 10.11.6 xnu-3248.60.10/bsd/kern/kern_resource.c maxfilesperproc, +   // referenced by dosetrlimit(). +   int oid[] = {CTL_KERN, KERN_MAXFILESPERPROC}; diff --git a/devel/electron6/files/patch-third__party_crashpad_crashpad_util_posix_drop__privileges.cc b/devel/electron6/files/patch-third__party_crashpad_crashpad_util_posix_drop__privileges.cc new file mode 100644 index 000000000000..e234ad11aef9 --- /dev/null +++ b/devel/electron6/files/patch-third__party_crashpad_crashpad_util_posix_drop__privileges.cc @@ -0,0 +1,11 @@ +--- third_party/crashpad/crashpad/util/posix/drop_privileges.cc.orig	2019-09-10 10:43:16 UTC ++++ third_party/crashpad/crashpad/util/posix/drop_privileges.cc +@@ -23,7 +23,7 @@ void DropPrivileges() { +   gid_t gid = getgid(); +   uid_t uid = getuid(); +  +-#if defined(OS_MACOSX) ++#if defined(OS_MACOSX) || defined(OS_BSD) +   // Based on the POSIX.1-2008 2013 edition documentation for setreuid() and +   // setregid(), setreuid() and setregid() alone should be sufficient to drop +   // privileges. The standard specifies that the saved ID should be set to the diff --git a/devel/electron6/files/patch-third__party_crashpad_crashpad_util_posix_signals.cc b/devel/electron6/files/patch-third__party_crashpad_crashpad_util_posix_signals.cc new file mode 100644 index 000000000000..e260ff61e59e --- /dev/null +++ b/devel/electron6/files/patch-third__party_crashpad_crashpad_util_posix_signals.cc @@ -0,0 +1,40 @@ +--- third_party/crashpad/crashpad/util/posix/signals.cc.orig	2019-09-10 10:43:16 UTC ++++ third_party/crashpad/crashpad/util/posix/signals.cc +@@ -45,10 +45,10 @@ constexpr int kCrashSignals[] = { + #if defined(SIGEMT) +     SIGEMT, + #endif  // defined(SIGEMT) +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +     SIGXCPU, +     SIGXFSZ, +-#endif  // defined(OS_LINUX) ++#endif  // defined(OS_LINUX) || defined(OS_BSD) + }; +  + // These are the non-core-generating but terminating signals. +@@ -85,9 +85,9 @@ constexpr int kTerminateSignals[] = { +     SIGXCPU, +     SIGXFSZ, + #endif  // defined(OS_MACOSX) +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +     SIGIO, +-#endif  // defined(OS_LINUX) ++#endif  // defined(OS_LINUX) || defined(OS_BSD) + }; +  + bool InstallHandlers(const std::vector<int>& signals, +@@ -216,8 +216,12 @@ bool Signals::WillSignalReraiseAutonomously(const sigi +          // remains. See 10.12.3 xnu-3789.41.3/bsd/kern/kern_sig.c +          // psignal_internal(). +          (code > 0 && ++#if defined(SI_ASYNCIO) +           code != SI_ASYNCIO && ++#endif ++#if defined(SI_MESGQ) +           code != SI_MESGQ && ++#endif +           code != SI_QUEUE && +           code != SI_TIMER && +           code != SI_USER && diff --git a/devel/electron6/files/patch-third__party_crashpad_crashpad_util_posix_symbolic__constants__posix.cc b/devel/electron6/files/patch-third__party_crashpad_crashpad_util_posix_symbolic__constants__posix.cc new file mode 100644 index 000000000000..d213b3ab9758 --- /dev/null +++ b/devel/electron6/files/patch-third__party_crashpad_crashpad_util_posix_symbolic__constants__posix.cc @@ -0,0 +1,20 @@ +--- third_party/crashpad/crashpad/util/posix/symbolic_constants_posix.cc.orig	2019-09-10 10:43:16 UTC ++++ third_party/crashpad/crashpad/util/posix/symbolic_constants_posix.cc +@@ -64,7 +64,7 @@ constexpr const char* kSignalNames[] = { +     "INFO", +     "USR1", +     "USR2", +-#elif defined(OS_LINUX) || defined(OS_ANDROID) ++#elif defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD) + #if defined(ARCH_CPU_MIPS_FAMILY) +     "HUP", +     "INT", +@@ -135,7 +135,7 @@ constexpr const char* kSignalNames[] = { + #endif  // defined(ARCH_CPU_MIPS_FAMILY) + #endif + }; +-#if defined(OS_LINUX) || defined(OS_ANDROID) ++#if defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD) + // NSIG is 64 to account for real-time signals. + static_assert(base::size(kSignalNames) == 32, "kSignalNames length"); + #else diff --git a/devel/electron6/files/patch-third__party_crc32c_src_src_crc32c__arm64__linux__check.h b/devel/electron6/files/patch-third__party_crc32c_src_src_crc32c__arm64__linux__check.h new file mode 100644 index 000000000000..fdccb9e9d47c --- /dev/null +++ b/devel/electron6/files/patch-third__party_crc32c_src_src_crc32c__arm64__linux__check.h @@ -0,0 +1,53 @@ +--- third_party/crc32c/src/src/crc32c_arm64_linux_check.h.orig	2019-09-10 10:43:57 UTC ++++ third_party/crc32c/src/src/crc32c_arm64_linux_check.h +@@ -7,8 +7,6 @@ + #ifndef CRC32C_CRC32C_ARM_LINUX_CHECK_H_ + #define CRC32C_CRC32C_ARM_LINUX_CHECK_H_ +  +-// X86-specific code checking for the availability of SSE4.2 instructions. +- + #include <cstddef> + #include <cstdint> +  +@@ -16,30 +14,19 @@ +  + #if HAVE_ARM64_CRC32C +  +-#if HAVE_STRONG_GETAUXVAL +-#include <sys/auxv.h> +-#elif HAVE_WEAK_GETAUXVAL +-// getauxval() is not available on Android until API level 20. Link it as a weak +-// symbol. +-extern "C" unsigned long getauxval(unsigned long type) __attribute__((weak)); +- +-#define AT_HWCAP 16 +-#endif  // HAVE_STRONG_GETAUXVAL || HAVE_WEAK_GETAUXVAL +- ++#include <machine/armreg.h> ++#include <sys/types.h> + namespace crc32c { +  +-inline bool CanUseArm64Linux() { +-#if HAVE_STRONG_GETAUXVAL || HAVE_WEAK_GETAUXVAL +-  // From 'arch/arm64/include/uapi/asm/hwcap.h' in Linux kernel source code. +-  constexpr unsigned long kHWCAP_PMULL = 1 << 4; +-  constexpr unsigned long kHWCAP_CRC32 = 1 << 7; +-  unsigned long hwcap = (&getauxval != nullptr) ? getauxval(AT_HWCAP) : 0; +-  return (hwcap & (kHWCAP_PMULL | kHWCAP_CRC32)) == +-         (kHWCAP_PMULL | kHWCAP_CRC32); +-#else +-  return false; +-#endif  // HAVE_STRONG_GETAUXVAL || HAVE_WEAK_GETAUXVAL +-} ++  inline bool CanUseArm64Linux() { ++    uint64_t id_aa64isar0; ++   ++    id_aa64isar0 = READ_SPECIALREG(ID_AA64ISAR0_EL1); ++    if ((ID_AA64ISAR0_AES(id_aa64isar0) == ID_AA64ISAR0_AES_PMULL) && \ ++       (ID_AA64ISAR0_CRC32(id_aa64isar0) == ID_AA64ISAR0_CRC32_BASE)) ++      return true; ++    return false; ++  } +  + }  // namespace crc32c +  diff --git a/devel/electron6/files/patch-third__party_electron__node_deps_uv_BUILD.gn b/devel/electron6/files/patch-third__party_electron__node_deps_uv_BUILD.gn new file mode 100644 index 000000000000..7317f54c9438 --- /dev/null +++ b/devel/electron6/files/patch-third__party_electron__node_deps_uv_BUILD.gn @@ -0,0 +1,45 @@ +--- third_party/electron_node/deps/uv/BUILD.gn.orig	2019-09-16 09:24:26 UTC ++++ third_party/electron_node/deps/uv/BUILD.gn +@@ -3,7 +3,7 @@ config("libuv_config") { +  +   defines = [] +  +-  if (is_linux) { ++  if (is_linux && !is_bsd) { +     defines += [ "_POSIX_C_SOURCE=200112" ] +   } +   if (!is_win) { +@@ -147,7 +147,7 @@ static_library("uv") { +     libs += [ "m" ] +     ldflags += [ "-pthread" ] +   } +-  if (is_mac || is_linux) { ++  if (is_mac || (is_linux && !is_bsd)) { +     sources += [ "src/unix/proctitle.c" ] +   } +   if (is_mac) { +@@ -161,7 +161,7 @@ static_library("uv") { +       "_DARWIN_UNLIMITED_SELECT=1", +     ] +   } +-  if (is_linux) { ++  if (is_linux && !is_bsd) { +     defines += [ "_GNU_SOURCE" ] +     sources += [ +       "src/unix/linux-core.c", +@@ -180,6 +180,15 @@ static_library("uv") { +     sources += [ +       "src/unix/bsd-ifaddrs.c", +       "src/unix/kqueue.c", ++    ] ++  } ++  if (is_bsd) { ++    sources += [ ++      "src/unix/bsd-ifaddrs.c", ++      "src/unix/bsd-proctitle.c", ++      "src/unix/freebsd.c", ++      "src/unix/kqueue.c", ++      "src/unix/posix-hrtime.c", +     ] +   } + } diff --git a/devel/electron6/files/patch-third__party_ffmpeg_libavutil_mem.c b/devel/electron6/files/patch-third__party_ffmpeg_libavutil_mem.c new file mode 100644 index 000000000000..2de3c146399c --- /dev/null +++ b/devel/electron6/files/patch-third__party_ffmpeg_libavutil_mem.c @@ -0,0 +1,12 @@ +--- third_party/ffmpeg/libavutil/mem.c.orig	2019-09-10 10:46:29 UTC ++++ third_party/ffmpeg/libavutil/mem.c +@@ -32,9 +32,6 @@ + #include <stdint.h> + #include <stdlib.h> + #include <string.h> +-#if HAVE_MALLOC_H +-#include <malloc.h> +-#endif +  + #include "avassert.h" + #include "avutil.h" diff --git a/devel/electron6/files/patch-third__party_glslang_src_glslang_Include_PoolAlloc.h b/devel/electron6/files/patch-third__party_glslang_src_glslang_Include_PoolAlloc.h new file mode 100644 index 000000000000..152585b2bca0 --- /dev/null +++ b/devel/electron6/files/patch-third__party_glslang_src_glslang_Include_PoolAlloc.h @@ -0,0 +1,10 @@ +--- third_party/glslang/src/glslang/Include/PoolAlloc.h.orig	2020-03-15 04:26:41 UTC ++++ third_party/glslang/src/glslang/Include/PoolAlloc.h +@@ -304,7 +304,6 @@ class pool_allocator { (public) +     size_type max_size() const { return static_cast<size_type>(-1) / sizeof(T); } +     size_type max_size(int size) const { return static_cast<size_type>(-1) / size; } +  +-    void setAllocator(TPoolAllocator* a) { allocator = *a; } +     TPoolAllocator& getAllocator() const { return allocator; } +  + protected: diff --git a/devel/electron6/files/patch-third__party_googletest_src_googletest_src_gtest-port.cc b/devel/electron6/files/patch-third__party_googletest_src_googletest_src_gtest-port.cc new file mode 100644 index 000000000000..4d6a56b669c9 --- /dev/null +++ b/devel/electron6/files/patch-third__party_googletest_src_googletest_src_gtest-port.cc @@ -0,0 +1,43 @@ +--- third_party/googletest/src/googletest/src/gtest-port.cc.orig	2019-09-10 11:15:40 UTC ++++ third_party/googletest/src/googletest/src/gtest-port.cc +@@ -63,6 +63,11 @@ + # endif + #endif +  ++#if GTEST_OS_FREEBSD ++#include <sys/sysctl.h> ++#include <sys/user.h> ++#endif ++ + #if GTEST_OS_QNX + # include <devctl.h> + # include <fcntl.h> +@@ -137,6 +142,28 @@ size_t GetThreadCount() { +   } else { +     return 0; +   } ++} ++ ++#elif GTEST_OS_FREEBSD ++ ++#define KP_NLWP(kp) (kp.ki_numthreads) ++ ++// Return the number of threads running in the process, or 0 to indicate that ++// we cannot detect it. ++size_t GetThreadCount() { ++  int mib[] = { ++    CTL_KERN, ++    KERN_PROC, ++    KERN_PROC_PID, ++    getpid(), ++  }; ++  u_int miblen = sizeof(mib) / sizeof(mib[0]); ++  struct kinfo_proc(info); ++  size_t size = sizeof(info); ++  if (sysctl(mib, miblen, &info, &size, NULL, 0)) { ++    return 0; ++  } ++  return KP_NLWP(info); + } +  + #elif GTEST_OS_DRAGONFLY || GTEST_OS_FREEBSD || GTEST_OS_GNU_KFREEBSD || \ diff --git a/devel/electron6/files/patch-third__party_googletest_src_googletest_src_gtest.cc b/devel/electron6/files/patch-third__party_googletest_src_googletest_src_gtest.cc new file mode 100644 index 000000000000..32836fc8cd9a --- /dev/null +++ b/devel/electron6/files/patch-third__party_googletest_src_googletest_src_gtest.cc @@ -0,0 +1,10 @@ +--- third_party/googletest/src/googletest/src/gtest.cc.orig	2019-09-10 11:15:40 UTC ++++ third_party/googletest/src/googletest/src/gtest.cc +@@ -114,6 +114,7 @@ +  + #if GTEST_CAN_STREAM_RESULTS_ + # include <arpa/inet.h>  // NOLINT ++# include <sys/socket.h> // NOLINT + # include <netdb.h>  // NOLINT + # include <sys/socket.h>  // NOLINT + # include <sys/types.h>  // NOLINT diff --git a/devel/electron6/files/patch-third__party_harfbuzz-ng_harfbuzz.gni b/devel/electron6/files/patch-third__party_harfbuzz-ng_harfbuzz.gni new file mode 100644 index 000000000000..2cd00a60022c --- /dev/null +++ b/devel/electron6/files/patch-third__party_harfbuzz-ng_harfbuzz.gni @@ -0,0 +1,20 @@ +--- third_party/harfbuzz-ng/harfbuzz.gni.orig	2019-09-10 10:43:16 UTC ++++ third_party/harfbuzz-ng/harfbuzz.gni +@@ -3,10 +3,11 @@ + # found in the LICENSE file. +  + declare_args() { +-  # Blink uses a cutting-edge version of Harfbuzz; most Linux distros do not +-  # contain a new enough version of the code to work correctly. However, +-  # ChromeOS chroots (i.e, real ChromeOS builds for devices) do contain a +-  # new enough version of the library, and so this variable exists so that +-  # ChromeOS can build against the system lib and keep binary sizes smaller. +-  use_system_harfbuzz = false ++  # Blink uses a cutting-edge version of Harfbuzz (version listed in ++  # third_party/harfbuzz-ng/README.chromium); most Linux distros do not contain ++  # a new enough version of the code to work correctly. However, ChromeOS ++  # chroots (i.e. real ChromeOS builds for devices) do contain a new enough ++  # version of the library, and so this variable exists so that ChromeOS can ++  # build against the system lib and keep binary sizes smaller. ++  use_system_harfbuzz = true + } diff --git a/devel/electron6/files/patch-third__party_leveldatabase_env__chromium.cc b/devel/electron6/files/patch-third__party_leveldatabase_env__chromium.cc new file mode 100644 index 000000000000..5c362f8a6e13 --- /dev/null +++ b/devel/electron6/files/patch-third__party_leveldatabase_env__chromium.cc @@ -0,0 +1,14 @@ +--- third_party/leveldatabase/env_chromium.cc.orig	2019-09-10 11:14:32 UTC ++++ third_party/leveldatabase/env_chromium.cc +@@ -40,7 +40,11 @@ + #include "third_party/leveldatabase/leveldb_chrome.h" + #include "third_party/leveldatabase/leveldb_features.h" + #include "third_party/leveldatabase/src/include/leveldb/options.h" ++#if defined(OS_BSD) ++#include <re2/re2.h> ++#else + #include "third_party/re2/src/re2/re2.h" ++#endif +  + #if defined(OS_WIN) + #undef DeleteFile diff --git a/devel/electron6/files/patch-third__party_libXNVCtrl_NVCtrl.c b/devel/electron6/files/patch-third__party_libXNVCtrl_NVCtrl.c new file mode 100644 index 000000000000..bc8ef4ca4f83 --- /dev/null +++ b/devel/electron6/files/patch-third__party_libXNVCtrl_NVCtrl.c @@ -0,0 +1,25 @@ +--- third_party/libXNVCtrl/NVCtrl.c.orig	2019-09-10 10:43:17 UTC ++++ third_party/libXNVCtrl/NVCtrl.c +@@ -27,10 +27,6 @@ +  * libXNVCtrl library properly protects the Display connection. +  */ +  +-#if !defined(XTHREADS) +-#define XTHREADS +-#endif /* XTHREADS */ +- + #define NEED_EVENTS + #define NEED_REPLIES + #include <stdint.h> +@@ -39,6 +35,11 @@ + #include <X11/Xutil.h> + #include <X11/extensions/Xext.h> + #include <X11/extensions/extutil.h> ++ ++#if !defined(XTHREADS) ++#define XTHREADS ++#endif /* XTHREADS */ ++ + #include "NVCtrlLib.h" + #include "nv_control.h" +  diff --git a/devel/electron6/files/patch-third__party_libphonenumber_dist_cpp_src_phonenumbers_base_memory_singleton.h b/devel/electron6/files/patch-third__party_libphonenumber_dist_cpp_src_phonenumbers_base_memory_singleton.h new file mode 100644 index 000000000000..4f3e6c310bed --- /dev/null +++ b/devel/electron6/files/patch-third__party_libphonenumber_dist_cpp_src_phonenumbers_base_memory_singleton.h @@ -0,0 +1,11 @@ +--- third_party/libphonenumber/dist/cpp/src/phonenumbers/base/memory/singleton.h.orig	2019-09-10 10:45:51 UTC ++++ third_party/libphonenumber/dist/cpp/src/phonenumbers/base/memory/singleton.h +@@ -56,7 +56,7 @@ template <class T> boost::once_flag Singleton<T>::flag + #include "phonenumbers/base/logging.h" + #include "phonenumbers/base/thread_checker.h" +  +-#if !defined(__linux__) && !defined(__APPLE__) ++#if !defined(__linux__) && !defined(__APPLE__) && !defined(__FreeBSD__) && !defined(__OpenBSD__) +  + namespace i18n { + namespace phonenumbers { diff --git a/devel/electron6/files/patch-third__party_libphonenumber_dist_cpp_src_phonenumbers_base_synchronization_lock.h b/devel/electron6/files/patch-third__party_libphonenumber_dist_cpp_src_phonenumbers_base_synchronization_lock.h new file mode 100644 index 000000000000..53c9908660ef --- /dev/null +++ b/devel/electron6/files/patch-third__party_libphonenumber_dist_cpp_src_phonenumbers_base_synchronization_lock.h @@ -0,0 +1,11 @@ +--- third_party/libphonenumber/dist/cpp/src/phonenumbers/base/synchronization/lock.h.orig	2019-09-10 11:16:34 UTC ++++ third_party/libphonenumber/dist/cpp/src/phonenumbers/base/synchronization/lock.h +@@ -37,7 +37,7 @@ typedef boost::mutex::scoped_lock AutoLock; + // Dummy lock implementation on non-POSIX platforms. If you are running on a + // different platform and care about thread-safety, please compile with + // -DI18N_PHONENUMBERS_USE_BOOST. +-#if !defined(__linux__) && !defined(__APPLE__) ++#if !defined(__linux__) && !defined(__APPLE__) && !defined(__FreeBSD__) && !defined(__OpenBSD__) +  + namespace i18n { + namespace phonenumbers { diff --git a/devel/electron6/files/patch-third__party_libphonenumber_dist_cpp_src_phonenumbers_base_thread__checker.h b/devel/electron6/files/patch-third__party_libphonenumber_dist_cpp_src_phonenumbers_base_thread__checker.h new file mode 100644 index 000000000000..995c70f8af89 --- /dev/null +++ b/devel/electron6/files/patch-third__party_libphonenumber_dist_cpp_src_phonenumbers_base_thread__checker.h @@ -0,0 +1,19 @@ +--- third_party/libphonenumber/dist/cpp/src/phonenumbers/base/thread_checker.h.orig	2019-09-10 10:45:51 UTC ++++ third_party/libphonenumber/dist/cpp/src/phonenumbers/base/thread_checker.h +@@ -23,6 +23,7 @@ + // user of the library know that it can't be used in a thread-safe manner when + // it is not depending on Boost. + #if !defined(__linux__) && !defined(__APPLE__) && \ ++    !defined(__FreeBSD__) && !defined(__OpenBSD__) && \ +     !defined(I18N_PHONENUMBERS_NO_THREAD_SAFETY) + #error Building without Boost, please provide \ +        -DI18N_PHONENUMBERS_NO_THREAD_SAFETY +@@ -31,7 +32,7 @@ + #endif +  + #if !defined(NDEBUG) && !defined(I18N_PHONENUMBERS_USE_BOOST) && \ +-    (defined(__linux__) || defined(__apple__)) ++    (defined(__linux__) || defined(__apple__)) || defined(__FreeBSD__) || defined(__OpenBSD__) +  + #include <pthread.h> +  diff --git a/devel/electron6/files/patch-third__party_libyuv_include_libyuv_row.h b/devel/electron6/files/patch-third__party_libyuv_include_libyuv_row.h new file mode 100644 index 000000000000..2f844b0a4490 --- /dev/null +++ b/devel/electron6/files/patch-third__party_libyuv_include_libyuv_row.h @@ -0,0 +1,37 @@ +--- third_party/libyuv/include/libyuv/row.h.orig	2019-09-10 11:16:18 UTC ++++ third_party/libyuv/include/libyuv/row.h +@@ -157,10 +157,14 @@ extern "C" { + #define HAS_ARGBSHADEROW_SSE2 + #define HAS_ARGBSUBTRACTROW_SSE2 + #define HAS_ARGBUNATTENUATEROW_SSE2 ++#if !(defined(__i386__) && defined(__GNUC__)) + #define HAS_BLENDPLANEROW_SSSE3 ++#endif + #define HAS_COMPUTECUMULATIVESUMROW_SSE2 + #define HAS_CUMULATIVESUMTOAVERAGEROW_SSE2 ++#if !(defined(__i386__) && defined(__GNUC__)) + #define HAS_INTERPOLATEROW_SSSE3 ++#endif + #define HAS_RGBCOLORTABLEROW_X86 + #define HAS_SOBELROW_SSE2 + #define HAS_SOBELTOPLANEROW_SSE2 +@@ -206,7 +210,9 @@ extern "C" { + #define HAS_I422TORGB565ROW_AVX2 + #define HAS_I422TORGBAROW_AVX2 + #define HAS_I444TOARGBROW_AVX2 ++#if !(defined(__i386__) && defined(__GNUC__)) + #define HAS_INTERPOLATEROW_AVX2 ++#endif + #define HAS_J422TOARGBROW_AVX2 + #define HAS_MERGEUVROW_AVX2 + #define HAS_MIRRORROW_AVX2 +@@ -231,7 +237,9 @@ extern "C" { + #define HAS_ARGBMULTIPLYROW_AVX2 + #define HAS_ARGBSUBTRACTROW_AVX2 + #define HAS_ARGBUNATTENUATEROW_AVX2 ++#if !(defined(__i386__) && defined(__GNUC__)) + #define HAS_BLENDPLANEROW_AVX2 ++#endif +  + #if defined(__x86_64__) || !defined(__pic__) || defined(__clang__) || \ +     defined(_MSC_VER) diff --git a/devel/electron6/files/patch-third__party_nasm_config_config-linux.h b/devel/electron6/files/patch-third__party_nasm_config_config-linux.h new file mode 100644 index 000000000000..69a36677e8c1 --- /dev/null +++ b/devel/electron6/files/patch-third__party_nasm_config_config-linux.h @@ -0,0 +1,29 @@ +--- third_party/nasm/config/config-linux.h.orig	2019-09-10 10:45:53 UTC ++++ third_party/nasm/config/config-linux.h +@@ -117,7 +117,7 @@ + #define HAVE_ACCESS 1 +  + /* Define to 1 if you have the `canonicalize_file_name' function. */ +-#define HAVE_CANONICALIZE_FILE_NAME 1 ++/* #undef HAVE_CANONICALIZE_FILE_NAME */ +  + /* Define to 1 if you have the `cpu_to_le16' intrinsic function. */ + /* #undef HAVE_CPU_TO_LE16 */ +@@ -161,7 +161,7 @@ + #define HAVE_DECL_STRSEP 1 +  + /* Define to 1 if you have the <endian.h> header file. */ +-#define HAVE_ENDIAN_H 1 ++/* #undef HAVE_ENDIAN_H */ +  + /* Define to 1 if you have the `faccessat' function. */ + #define HAVE_FACCESSAT 1 +@@ -322,7 +322,7 @@ + #define HAVE_SYSCONF 1 +  + /* Define to 1 if you have the <sys/endian.h> header file. */ +-/* #undef HAVE_SYS_ENDIAN_H */ ++#define HAVE_SYS_ENDIAN_H 1 +  + /* Define to 1 if you have the <sys/mman.h> header file. */ + #define HAVE_SYS_MMAN_H 1 diff --git a/devel/electron6/files/patch-third__party_node_node.py b/devel/electron6/files/patch-third__party_node_node.py new file mode 100644 index 000000000000..24d2dd419f55 --- /dev/null +++ b/devel/electron6/files/patch-third__party_node_node.py @@ -0,0 +1,10 @@ +--- third_party/node/node.py.orig	2019-09-10 10:43:18 UTC ++++ third_party/node/node.py +@@ -12,6 +12,7 @@ import sys + def GetBinaryPath(): +   return os_path.join(os_path.dirname(__file__), *{ +     'Darwin': ('mac', 'node-darwin-x64', 'bin', 'node'), ++    'FreeBSD': ('freebsd', 'node-freebsd-x64', 'bin', 'node'), +     'Linux': ('linux', 'node-linux-x64', 'bin', 'node'), +     'Windows': ('win', 'node.exe'), +   }[platform.system()]) diff --git a/devel/electron6/files/patch-third__party_pdfium_core_fxcrt_cfx__datetime.cpp b/devel/electron6/files/patch-third__party_pdfium_core_fxcrt_cfx__datetime.cpp new file mode 100644 index 000000000000..3efcfdd04f15 --- /dev/null +++ b/devel/electron6/files/patch-third__party_pdfium_core_fxcrt_cfx__datetime.cpp @@ -0,0 +1,11 @@ +--- third_party/pdfium/core/fxcrt/cfx_datetime.cpp.orig	2019-09-10 10:46:46 UTC ++++ third_party/pdfium/core/fxcrt/cfx_datetime.cpp +@@ -9,7 +9,7 @@ + #include "build/build_config.h" + #include "core/fxcrt/fx_system.h" +  +-#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_MACOSX) || \ ++#if defined(OS_ANDROID) || defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_BSD) || \ +     defined(OS_ASMJS) || defined(__wasm__) + #include <sys/time.h> + #include <time.h> diff --git a/devel/electron6/files/patch-third__party_pdfium_core_fxcrt_fx__system.h b/devel/electron6/files/patch-third__party_pdfium_core_fxcrt_fx__system.h new file mode 100644 index 000000000000..4bed08c294a7 --- /dev/null +++ b/devel/electron6/files/patch-third__party_pdfium_core_fxcrt_fx__system.h @@ -0,0 +1,11 @@ +--- third_party/pdfium/core/fxcrt/fx_system.h.orig	2019-09-10 11:17:33 UTC ++++ third_party/pdfium/core/fxcrt/fx_system.h +@@ -26,7 +26,7 @@ + #define _FX_PLATFORM_ _FX_PLATFORM_WINDOWS_ + #elif defined(_WIN64) + #define _FX_PLATFORM_ _FX_PLATFORM_WINDOWS_ +-#elif defined(__linux__) ++#elif defined(__linux__) || defined(__FreeBSD__) + #define _FX_PLATFORM_ _FX_PLATFORM_LINUX_ + #elif defined(__APPLE__) + #define _FX_PLATFORM_ _FX_PLATFORM_APPLE_ diff --git a/devel/electron6/files/patch-third__party_pdfium_core_fxge_fx__ge__linux.cpp b/devel/electron6/files/patch-third__party_pdfium_core_fxge_fx__ge__linux.cpp new file mode 100644 index 000000000000..d70a8288ea9a --- /dev/null +++ b/devel/electron6/files/patch-third__party_pdfium_core_fxge_fx__ge__linux.cpp @@ -0,0 +1,14 @@ +--- third_party/pdfium/core/fxge/fx_ge_linux.cpp.orig	2019-09-10 11:17:33 UTC ++++ third_party/pdfium/core/fxge/fx_ge_linux.cpp +@@ -151,9 +151,8 @@ std::unique_ptr<SystemFontInfoIface> SystemFontInfoIfa +     const char** pUserPaths) { +   auto pInfo = pdfium::MakeUnique<CFX_LinuxFontInfo>(); +   if (!pInfo->ParseFontCfg(pUserPaths)) { +-    pInfo->AddPath("/usr/share/fonts"); +-    pInfo->AddPath("/usr/share/X11/fonts/Type1"); +-    pInfo->AddPath("/usr/share/X11/fonts/TTF"); ++    pInfo->AddPath("/usr/local/share/fonts/Type1"); ++    pInfo->AddPath("/usr/local/share/fonts/TTF"); +     pInfo->AddPath("/usr/local/share/fonts"); +   } +   return std::move(pInfo); diff --git a/devel/electron6/files/patch-third__party_pdfium_fxjs_cjs__publicmethods.cpp b/devel/electron6/files/patch-third__party_pdfium_fxjs_cjs__publicmethods.cpp new file mode 100644 index 000000000000..414ecc06931a --- /dev/null +++ b/devel/electron6/files/patch-third__party_pdfium_fxjs_cjs__publicmethods.cpp @@ -0,0 +1,106 @@ +--- third_party/pdfium/fxjs/cjs_publicmethods.cpp.orig	2019-09-10 11:17:33 UTC ++++ third_party/pdfium/fxjs/cjs_publicmethods.cpp +@@ -86,6 +86,103 @@ constexpr const wchar_t* kDateFormats[] = {L"m/d", + constexpr const wchar_t* kTimeFormats[] = {L"HH:MM", L"h:MM tt", L"HH:MM:ss", +                                            L"h:MM:ss tt"}; +  ++#if defined(__FreeBSD__) ++/* ++ * cvt.c - IEEE floating point formatting routines for FreeBSD ++ * from GNU libc-4.6.27 ++ */ ++ ++/* ++ *    ap_ecvt converts to decimal ++ *      the number of digits is specified by ndigit ++ *      decpt is set to the position of the decimal point ++ *      sign is set to 0 for positive, 1 for negative ++ */ ++ ++#define	NDIG	80 ++ ++static char * ++     ap_cvt(double arg, int ndigits, int *decpt, int *sign, int eflag) ++{ ++    register int r2; ++    double fi, fj; ++    register char *p, *p1; ++    static char buf[NDIG]; ++ ++    if (ndigits >= NDIG - 1) ++	ndigits = NDIG - 2; ++    r2 = 0; ++    *sign = 0; ++    p = &buf[0]; ++    if (arg < 0) { ++	*sign = 1; ++	arg = -arg; ++    } ++    arg = modf(arg, &fi); ++    p1 = &buf[NDIG]; ++    /* ++     * Do integer part ++     */ ++    if (fi != 0) { ++	p1 = &buf[NDIG]; ++	while (fi != 0) { ++	    fj = modf(fi / 10, &fi); ++	    *--p1 = (int) ((fj + .03) * 10) + '0'; ++	    r2++; ++	} ++	while (p1 < &buf[NDIG]) ++	    *p++ = *p1++; ++    } ++    else if (arg > 0) { ++	while ((fj = arg * 10) < 1) { ++	    arg = fj; ++	    r2--; ++	} ++    } ++    p1 = &buf[ndigits]; ++    if (eflag == 0) ++	p1 += r2; ++    *decpt = r2; ++    if (p1 < &buf[0]) { ++	buf[0] = '\0'; ++        return (buf); ++    } ++    while (p <= p1 && p < &buf[NDIG]) { ++	arg *= 10; ++	arg = modf(arg, &fj); ++	*p++ = (int) fj + '0'; ++    } ++    if (p1 >= &buf[NDIG]) { ++	buf[NDIG - 1] = '\0'; ++	return (buf); ++    } ++    p = p1; ++    *p1 += 5; ++    while (*p1 > '9') { ++	*p1 = '0'; ++	if (p1 > buf) ++	    ++ * --p1; ++	else { ++	    *p1 = '1'; ++	    (*decpt)++; ++	    if (eflag == 0) { ++		if (p > buf) ++		    *p = '0'; ++		p++; ++	    } ++	} ++    } ++    *p = '\0'; ++    return (buf); ++} ++ ++static char * ++     fcvt(double arg, int ndigits, int *decpt, int *sign) ++{ ++     return (ap_cvt(arg, ndigits, decpt, sign, 0)); ++} ++#endif // defined(__FreeBSD__) ++ + template <typename T> + T StrTrim(const T& str) { +   T result = str; diff --git a/devel/electron6/files/patch-third__party_pdfium_fxjs_fx__date__helpers.cpp b/devel/electron6/files/patch-third__party_pdfium_fxjs_fx__date__helpers.cpp new file mode 100644 index 000000000000..21340f38054f --- /dev/null +++ b/devel/electron6/files/patch-third__party_pdfium_fxjs_fx__date__helpers.cpp @@ -0,0 +1,22 @@ +--- third_party/pdfium/fxjs/fx_date_helpers.cpp.orig	2019-09-10 11:17:33 UTC ++++ third_party/pdfium/fxjs/fx_date_helpers.cpp +@@ -35,6 +35,11 @@ double GetLocalTZA() { +     return 0; +   time_t t = 0; +   FXSYS_time(&t); ++#ifdef __FreeBSD__ ++  struct tm lt; ++  localtime_r(&t, <); ++  return (double)(-(lt.tm_gmtoff * 1000)); ++#else +   FXSYS_localtime(&t); + #if defined(OS_WIN) +   // In gcc 'timezone' is a global variable declared in time.h. In VC++, that +@@ -43,6 +48,7 @@ double GetLocalTZA() { +   _get_timezone(&timezone); + #endif +   return (double)(-(timezone * 1000)); ++#endif // __FreeBSD__ + } +  + int GetDaylightSavingTA(double d) { diff --git a/devel/electron6/files/patch-third__party_pdfium_third__party_base_allocator_partition__allocator_page__allocator.cc b/devel/electron6/files/patch-third__party_pdfium_third__party_base_allocator_partition__allocator_page__allocator.cc new file mode 100644 index 000000000000..d027e112f5ac --- /dev/null +++ b/devel/electron6/files/patch-third__party_pdfium_third__party_base_allocator_partition__allocator_page__allocator.cc @@ -0,0 +1,11 @@ +--- third_party/pdfium/third_party/base/allocator/partition_allocator/page_allocator.cc.orig	2019-09-10 10:46:46 UTC ++++ third_party/pdfium/third_party/base/allocator/partition_allocator/page_allocator.cc +@@ -117,7 +117,7 @@ void* AllocPages(void* address, +   uintptr_t align_base_mask = ~align_offset_mask; +   DCHECK(!(reinterpret_cast<uintptr_t>(address) & align_offset_mask)); +  +-#if defined(OS_LINUX) && defined(ARCH_CPU_64_BITS) ++#if (defined(OS_LINUX) || defined(OS_BSD)) && defined(ARCH_CPU_64_BITS) +   // On 64 bit Linux, we may need to adjust the address space limit for +   // guarded allocations. +   if (length >= kMinimumGuardedMemorySize) { diff --git a/devel/electron6/files/patch-third__party_pdfium_third__party_base_allocator_partition__allocator_page__allocator__internals__posix.h b/devel/electron6/files/patch-third__party_pdfium_third__party_base_allocator_partition__allocator_page__allocator__internals__posix.h new file mode 100644 index 000000000000..97167ee1a80b --- /dev/null +++ b/devel/electron6/files/patch-third__party_pdfium_third__party_base_allocator_partition__allocator_page__allocator__internals__posix.h @@ -0,0 +1,38 @@ +--- third_party/pdfium/third_party/base/allocator/partition_allocator/page_allocator_internals_posix.h.orig	2019-09-10 10:46:46 UTC ++++ third_party/pdfium/third_party/base/allocator/partition_allocator/page_allocator_internals_posix.h +@@ -13,7 +13,7 @@ + #if defined(OS_MACOSX) + #include <mach/mach.h> + #endif +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + #include <sys/resource.h> +  + #include <algorithm> +@@ -48,7 +48,7 @@ int GetAccessFlags(PageAccessibilityConfiguration acce +   } + } +  +-#if defined(OS_LINUX) && defined(ARCH_CPU_64_BITS) ++#if (defined(OS_LINUX) || defined(OS_BSD)) && defined(ARCH_CPU_64_BITS) +  + // Multiple guarded memory regions may exceed the process address space limit. + // This function will raise or lower the limit by |amount|. +@@ -68,7 +68,7 @@ bool AdjustAddressSpaceLimit(int64_t amount) { + // schemes that reduce that to 4 GiB. + constexpr size_t kMinimumGuardedMemorySize = 1ULL << 32;  // 4 GiB +  +-#endif  // defined(OS_LINUX) && defined(ARCH_CPU_64_BITS) ++#endif  // (defined(OS_LINUX) || defined(OS_BSD)) && defined(ARCH_CPU_64_BITS) +  + void* SystemAllocPagesInternal(void* hint, +                                size_t length, +@@ -134,7 +134,7 @@ void SetSystemPagesAccessInternal( + void FreePagesInternal(void* address, size_t length) { +   CHECK(!munmap(address, length)); +  +-#if defined(OS_LINUX) && defined(ARCH_CPU_64_BITS) ++#if (defined(OS_LINUX) || defined(OS_BSD)) && defined(ARCH_CPU_64_BITS) +   // Restore the address space limit. +   if (length >= kMinimumGuardedMemorySize) { +     CHECK(AdjustAddressSpaceLimit(-base::checked_cast<int64_t>(length))); diff --git a/devel/electron6/files/patch-third__party_pdfium_xfa_fgas_font_cfx__fontsourceenum__file.cpp b/devel/electron6/files/patch-third__party_pdfium_xfa_fgas_font_cfx__fontsourceenum__file.cpp new file mode 100644 index 000000000000..7a2b2e050aa2 --- /dev/null +++ b/devel/electron6/files/patch-third__party_pdfium_xfa_fgas_font_cfx__fontsourceenum__file.cpp @@ -0,0 +1,14 @@ +--- third_party/pdfium/xfa/fgas/font/cfx_fontsourceenum_file.cpp.orig	2019-09-10 10:46:46 UTC ++++ third_party/pdfium/xfa/fgas/font/cfx_fontsourceenum_file.cpp +@@ -16,9 +16,8 @@ constexpr char kFolderSeparator = '/'; +  + constexpr const char* kFontFolders[] = { + #if _FX_PLATFORM_ == _FX_PLATFORM_LINUX_ +-    "/usr/share/fonts", +-    "/usr/share/X11/fonts/Type1", +-    "/usr/share/X11/fonts/TTF", ++    "/usr/local/share/fonts/Type1", ++    "/usr/local/share/fonts/TTF", +     "/usr/local/share/fonts", + #elif defined(OS_MACOSX) +     "~/Library/Fonts", diff --git a/devel/electron6/files/patch-third__party_pdfium_xfa_fwl_cfwl__notedriver.cpp b/devel/electron6/files/patch-third__party_pdfium_xfa_fwl_cfwl__notedriver.cpp new file mode 100644 index 000000000000..e5bf3baf6e6e --- /dev/null +++ b/devel/electron6/files/patch-third__party_pdfium_xfa_fwl_cfwl__notedriver.cpp @@ -0,0 +1,19 @@ +--- third_party/pdfium/xfa/fwl/cfwl_notedriver.cpp.orig	2019-09-10 11:17:34 UTC ++++ third_party/pdfium/xfa/fwl/cfwl_notedriver.cpp +@@ -83,14 +83,14 @@ bool CFWL_NoteDriver::SetFocus(CFWL_Widget* pFocus) { + } +  + void CFWL_NoteDriver::Run() { +-#if defined(OS_LINUX) || defined(OS_WIN) ++#if defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD) +   for (;;) { +     CFWL_NoteLoop* pTopLoop = GetTopLoop(); +     if (!pTopLoop || !pTopLoop->ContinueModal()) +       break; +     UnqueueMessageAndProcess(pTopLoop); +   } +-#endif  // defined(OS_LINUX) || defined(OS_WIN) ++#endif  // defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD) + } +  + void CFWL_NoteDriver::NotifyTargetHide(CFWL_Widget* pNoteTarget) { diff --git a/devel/electron6/files/patch-third__party_perfetto_include_perfetto_base_build__config.h b/devel/electron6/files/patch-third__party_perfetto_include_perfetto_base_build__config.h new file mode 100644 index 000000000000..6332e89c7526 --- /dev/null +++ b/devel/electron6/files/patch-third__party_perfetto_include_perfetto_base_build__config.h @@ -0,0 +1,51 @@ +--- third_party/perfetto/include/perfetto/base/build_config.h.orig	2019-09-10 11:16:55 UTC ++++ third_party/perfetto/include/perfetto/base/build_config.h +@@ -28,6 +28,7 @@ + #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_ANDROID() 1 + #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_MACOSX() 0 + #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_LINUX() 0 ++#define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_FREEBSD() 0 + #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_WIN() 0 + #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_WASM() 0 + #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_FUCHSIA() 0 +@@ -35,13 +36,15 @@ + #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_ANDROID() 0 + #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_MACOSX() 1 + #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_LINUX() 0 ++#define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_FREEBSD() 0 + #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_WIN() 0 + #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_WASM() 0 + #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_FUCHSIA() 0 +-#elif defined(__linux__) ++#elif defined(__linux__) || defined(__FreeBSD__) + #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_ANDROID() 0 + #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_MACOSX() 0 + #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_LINUX() 1 ++#define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_FREEBSD() 1 + #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_WIN() 0 + #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_WASM() 0 + #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_FUCHSIA() 0 +@@ -49,6 +52,7 @@ + #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_ANDROID() 0 + #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_MACOSX() 0 + #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_LINUX() 0 ++#define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_FREEBSD() 0 + #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_WIN() 1 + #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_WASM() 0 + #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_FUCHSIA() 0 +@@ -56,6 +60,7 @@ + #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_ANDROID() 0 + #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_MACOSX() 0 + #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_LINUX() 0 ++#define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_FREEBSD() 0 + #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_WIN() 0 + #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_WASM() 1 + #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_FUCHSIA() 0 +@@ -63,6 +68,7 @@ + #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_ANDROID() 0 + #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_MACOSX() 0 + #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_LINUX() 0 ++#define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_FREEBSD() 0 + #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_WIN() 0 + #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_WASM() 0 + #define PERFETTO_BUILDFLAG_DEFINE_PERFETTO_OS_FUCHSIA() 1 diff --git a/devel/electron6/files/patch-third__party_perfetto_include_perfetto_base_event.h b/devel/electron6/files/patch-third__party_perfetto_include_perfetto_base_event.h new file mode 100644 index 000000000000..d605c136af25 --- /dev/null +++ b/devel/electron6/files/patch-third__party_perfetto_include_perfetto_base_event.h @@ -0,0 +1,14 @@ +--- third_party/perfetto/include/perfetto/base/event.h.orig	2019-09-10 11:16:55 UTC ++++ third_party/perfetto/include/perfetto/base/event.h +@@ -20,8 +20,9 @@ + #include "perfetto/base/build_config.h" + #include "perfetto/base/scoped_file.h" +  +-#if PERFETTO_BUILDFLAG(PERFETTO_OS_LINUX) || \ +-    PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID) ++#if (PERFETTO_BUILDFLAG(PERFETTO_OS_LINUX) || \ ++    PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID)) && \ ++    !PERFETTO_BUILDFLAG(PERFETTO_OS_FREEBSD) + #define PERFETTO_USE_EVENTFD() 1 + #else + #define PERFETTO_USE_EVENTFD() 0 diff --git a/devel/electron6/files/patch-third__party_perfetto_include_perfetto_base_thread__utils.h b/devel/electron6/files/patch-third__party_perfetto_include_perfetto_base_thread__utils.h new file mode 100644 index 000000000000..1bb9b855d31a --- /dev/null +++ b/devel/electron6/files/patch-third__party_perfetto_include_perfetto_base_thread__utils.h @@ -0,0 +1,25 @@ +--- third_party/perfetto/include/perfetto/base/thread_utils.h.orig	2019-09-10 11:16:55 UTC ++++ third_party/perfetto/include/perfetto/base/thread_utils.h +@@ -33,6 +33,10 @@ + #include <unistd.h> + #endif +  ++#if PERFETTO_BUILDFLAG(PERFETTO_OS_FREEBSD) ++#include <pthread_np.h> ++#endif ++ + namespace perfetto { + namespace base { +  +@@ -40,6 +44,11 @@ namespace base { + using PlatformThreadID = pid_t; + inline PlatformThreadID GetThreadId() { +   return gettid(); ++} ++#elif PERFETTO_BUILDFLAG(PERFETTO_OS_FREEBSD) ++      using PlatformThreadID = int; ++inline PlatformThreadID GetThreadId() { ++  return pthread_getthreadid_np(); + } + #elif PERFETTO_BUILDFLAG(PERFETTO_OS_LINUX) + using PlatformThreadID = pid_t; diff --git a/devel/electron6/files/patch-third__party_perfetto_include_perfetto_base_time.h b/devel/electron6/files/patch-third__party_perfetto_include_perfetto_base_time.h new file mode 100644 index 000000000000..793a710e015b --- /dev/null +++ b/devel/electron6/files/patch-third__party_perfetto_include_perfetto_base_time.h @@ -0,0 +1,20 @@ +--- third_party/perfetto/include/perfetto/base/time.h.orig	2019-09-10 10:46:24 UTC ++++ third_party/perfetto/include/perfetto/base/time.h +@@ -123,6 +123,9 @@ inline TimeNanos GetTimeInternalNs(clockid_t clk_id) { + // Return ns from boot. Conversely to GetWallTimeNs, this clock counts also time + // during suspend (when supported). + inline TimeNanos GetBootTimeNs() { ++#if PERFETTO_BUILDFLAG(PERFETTO_OS_FREEBSD) ++  return GetTimeInternalNs(kWallTimeClockSource); ++#else +   // Determine if CLOCK_BOOTTIME is available on the first call. +   static const clockid_t kBootTimeClockSource = [] { +     struct timespec ts = {}; +@@ -130,6 +133,7 @@ inline TimeNanos GetBootTimeNs() { +     return res == 0 ? CLOCK_BOOTTIME : kWallTimeClockSource; +   }(); +   return GetTimeInternalNs(kBootTimeClockSource); ++#endif + } +  + inline TimeNanos GetWallTimeNs() { diff --git a/devel/electron6/files/patch-third__party_perfetto_include_perfetto_base_watchdog__posix.h b/devel/electron6/files/patch-third__party_perfetto_include_perfetto_base_watchdog__posix.h new file mode 100644 index 000000000000..69e855c968ee --- /dev/null +++ b/devel/electron6/files/patch-third__party_perfetto_include_perfetto_base_watchdog__posix.h @@ -0,0 +1,11 @@ +--- third_party/perfetto/include/perfetto/base/watchdog_posix.h.orig	2019-09-10 11:16:55 UTC ++++ third_party/perfetto/include/perfetto/base/watchdog_posix.h +@@ -46,7 +46,7 @@ class Watchdog { +     Timer(const Timer&) = delete; +     Timer& operator=(const Timer&) = delete; +  +-    timer_t timerid_ = nullptr; ++    timer_t timerid_ = 0; +   }; +   virtual ~Watchdog(); +  diff --git a/devel/electron6/files/patch-third__party_perfetto_src_base_unix__socket.cc b/devel/electron6/files/patch-third__party_perfetto_src_base_unix__socket.cc new file mode 100644 index 000000000000..171ad9721f72 --- /dev/null +++ b/devel/electron6/files/patch-third__party_perfetto_src_base_unix__socket.cc @@ -0,0 +1,12 @@ +--- third_party/perfetto/src/base/unix_socket.cc.orig	2019-09-10 11:16:55 UTC ++++ third_party/perfetto/src/base/unix_socket.cc +@@ -523,7 +523,8 @@ void UnixSocket::DoConnect(const std::string& socket_n +  + void UnixSocket::ReadPeerCredentials() { + #if PERFETTO_BUILDFLAG(PERFETTO_OS_LINUX) || \ +-    PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID) ++    PERFETTO_BUILDFLAG(PERFETTO_OS_ANDROID) || \ ++    PERFETTO_BUILDFLAG(PERFETTO_OS_FREEBSD) +   struct ucred user_cred; +   socklen_t len = sizeof(user_cred); +   int fd = sock_raw_.fd(); diff --git a/devel/electron6/files/patch-third__party_perfetto_src_tracing_core_tracing__service__impl.cc b/devel/electron6/files/patch-third__party_perfetto_src_tracing_core_tracing__service__impl.cc new file mode 100644 index 000000000000..25c0f46829ac --- /dev/null +++ b/devel/electron6/files/patch-third__party_perfetto_src_tracing_core_tracing__service__impl.cc @@ -0,0 +1,22 @@ +--- third_party/perfetto/src/tracing/core/tracing_service_impl.cc.orig	2019-09-10 11:16:55 UTC ++++ third_party/perfetto/src/tracing/core/tracing_service_impl.cc +@@ -2053,7 +2053,8 @@ void TracingServiceImpl::OnStartTriggersTimeout(Tracin +  + void TracingServiceImpl::UpdateMemoryGuardrail() { + #if !PERFETTO_BUILDFLAG(PERFETTO_EMBEDDER_BUILD) && \ +-    !PERFETTO_BUILDFLAG(PERFETTO_OS_MACOSX) ++    !PERFETTO_BUILDFLAG(PERFETTO_OS_MACOSX) && \ ++    !PERFETTO_BUILDFLAG(PERFETTO_OS_FREEBSD) +   uint64_t total_buffer_bytes = 0; +  +   // Sum up all the shared memory buffers. +@@ -2106,7 +2107,8 @@ void TracingServiceImpl::SnapshotClocks(std::vector<Tr +   protos::ClockSnapshot* clock_snapshot = packet.mutable_clock_snapshot(); +  + #if !PERFETTO_BUILDFLAG(PERFETTO_OS_MACOSX) && \ +-    !PERFETTO_BUILDFLAG(PERFETTO_OS_WIN) ++    !PERFETTO_BUILDFLAG(PERFETTO_OS_WIN) && \ ++    !PERFETTO_BUILDFLAG(PERFETTO_OS_FREEBSD) +   struct { +     clockid_t id; +     protos::ClockSnapshot::Clock::Type type; diff --git a/devel/electron6/files/patch-third__party_perfetto_src_tracing_core_virtual__destructors.cc b/devel/electron6/files/patch-third__party_perfetto_src_tracing_core_virtual__destructors.cc new file mode 100644 index 000000000000..1285cc6324b9 --- /dev/null +++ b/devel/electron6/files/patch-third__party_perfetto_src_tracing_core_virtual__destructors.cc @@ -0,0 +1,28 @@ +Backport of: + +From 46f0abc66c1d78c60a0415c5cb46852ef3bfa9bb Mon Sep 17 00:00:00 2001 +From: Nico Weber <thakis@chromium.org> +Date: Sat, 8 Feb 2020 21:26:53 -0500 +Subject: [PATCH] Fix compile error emitted by trunk clang + +../../third_party/perfetto/src/tracing/core/virtual_destructors.cc:33:35: +error: destructor cannot be declared using a type alias +    'perfetto::TracingService::ConsumerEndpoint' (aka +    'perfetto::ConsumerEndpoint') of the class name +TracingService::ConsumerEndpoint::~ConsumerEndpoint() = default; + +Bug: chromium:1050372 + +--- third_party/perfetto/src/tracing/core/virtual_destructors.cc.orig	2020-08-24 19:11:33 UTC ++++ third_party/perfetto/src/tracing/core/virtual_destructors.cc +@@ -30,8 +30,8 @@ namespace perfetto { + Consumer::~Consumer() = default; + Producer::~Producer() = default; + TracingService::~TracingService() = default; +-TracingService::ConsumerEndpoint::~ConsumerEndpoint() = default; +-TracingService::ProducerEndpoint::~ProducerEndpoint() = default; ++ConsumerEndpoint::~ConsumerEndpoint() = default; ++ProducerEndpoint::~ProducerEndpoint() = default; + SharedMemory::~SharedMemory() = default; + SharedMemory::Factory::~Factory() = default; + SharedMemoryArbiter::~SharedMemoryArbiter() = default; diff --git a/devel/electron6/files/patch-third__party_protobuf_src_google_protobuf_stubs_platform__macros.h b/devel/electron6/files/patch-third__party_protobuf_src_google_protobuf_stubs_platform__macros.h new file mode 100644 index 000000000000..285f9d939895 --- /dev/null +++ b/devel/electron6/files/patch-third__party_protobuf_src_google_protobuf_stubs_platform__macros.h @@ -0,0 +1,11 @@ +--- third_party/protobuf/src/google/protobuf/stubs/platform_macros.h.orig	2019-09-10 11:14:34 UTC ++++ third_party/protobuf/src/google/protobuf/stubs/platform_macros.h +@@ -117,7 +117,7 @@ GOOGLE_PROTOBUF_PLATFORM_ERROR +  + #undef GOOGLE_PROTOBUF_PLATFORM_ERROR +  +-#if defined(GOOGLE_PROTOBUF_OS_ANDROID) || defined(GOOGLE_PROTOBUF_OS_IPHONE) || defined(__OpenBSD__) ++#if defined(GOOGLE_PROTOBUF_OS_ANDROID) || defined(GOOGLE_PROTOBUF_OS_IPHONE) || defined(__FreeBSD__) + // Android ndk does not support the __thread keyword very well yet. Here + // we use pthread_key_create()/pthread_getspecific()/... methods for + // TLS support on android. diff --git a/devel/electron6/files/patch-third__party_sfntly_src_cpp_src_sfntly_table_core_cmap__table.cc b/devel/electron6/files/patch-third__party_sfntly_src_cpp_src_sfntly_table_core_cmap__table.cc new file mode 100644 index 000000000000..1ce88c7c1b5b --- /dev/null +++ b/devel/electron6/files/patch-third__party_sfntly_src_cpp_src_sfntly_table_core_cmap__table.cc @@ -0,0 +1,47 @@ +--- third_party/sfntly/src/cpp/src/sfntly/table/core/cmap_table.cc.orig	2019-09-10 10:46:36 UTC ++++ third_party/sfntly/src/cpp/src/sfntly/table/core/cmap_table.cc +@@ -439,7 +439,7 @@ CMapTable::CMapFormat0::Builder::Builder( + } +  + CMapTable::CMapFormat0::Builder::Builder(const CMapId& cmap_id) +-    : CMap::Builder(reinterpret_cast<ReadableFontData*>(NULL), ++    : CMap::Builder(static_cast<ReadableFontData*>(NULL), +                     CMapFormat::kFormat0, +                     cmap_id) { + } +@@ -563,7 +563,7 @@ CMapTable::CMapFormat2::Builder::Builder(WritableFontD +     : CMapTable::CMap::Builder(data ? down_cast<WritableFontData*>( +                                    data->Slice(offset, data->ReadUShort( +                                        offset + Offset::kFormat0Length))) +-                               : reinterpret_cast<WritableFontData*>(NULL), ++                               : static_cast<WritableFontData*>(NULL), +                                CMapFormat::kFormat2, cmap_id) { +   // TODO(arthurhsu): FIXIT: heavy lifting and leak, need fix. + } +@@ -574,7 +574,7 @@ CMapTable::CMapFormat2::Builder::Builder(ReadableFontD +     : CMapTable::CMap::Builder(data ? down_cast<ReadableFontData*>( +                                    data->Slice(offset, data->ReadUShort( +                                        offset + Offset::kFormat0Length))) +-                               : reinterpret_cast<ReadableFontData*>(NULL), ++                               : static_cast<ReadableFontData*>(NULL), +                                CMapFormat::kFormat2, cmap_id) { +   // TODO(arthurhsu): FIXIT: heavy lifting and leak, need fix. + } +@@ -958,7 +958,7 @@ CMapTable::CMapFormat4::Builder::Builder(WritableFontD + CMapTable::CMapFormat4::Builder::Builder(SegmentList* segments, +                                          std::vector<int32_t>* glyph_id_array, +                                          const CMapId& cmap_id) +-    : CMap::Builder(reinterpret_cast<ReadableFontData*>(NULL), ++    : CMap::Builder(static_cast<ReadableFontData*>(NULL), +                     CMapFormat::kFormat4, cmap_id), +       segments_(segments->begin(), segments->end()), +       glyph_id_array_(glyph_id_array->begin(), glyph_id_array->end()) { +@@ -966,7 +966,7 @@ CMapTable::CMapFormat4::Builder::Builder(SegmentList*  + } +  + CMapTable::CMapFormat4::Builder::Builder(const CMapId& cmap_id) +-    : CMap::Builder(reinterpret_cast<ReadableFontData*>(NULL), ++    : CMap::Builder(static_cast<ReadableFontData*>(NULL), +                     CMapFormat::kFormat4, cmap_id) { + } +  diff --git a/devel/electron6/files/patch-third__party_skia_src_core_SkCpu.cpp b/devel/electron6/files/patch-third__party_skia_src_core_SkCpu.cpp new file mode 100644 index 000000000000..4fa4944c79d1 --- /dev/null +++ b/devel/electron6/files/patch-third__party_skia_src_core_SkCpu.cpp @@ -0,0 +1,19 @@ +--- third_party/skia/src/core/SkCpu.cpp.orig	2019-09-10 10:48:48 UTC ++++ third_party/skia/src/core/SkCpu.cpp +@@ -76,6 +76,8 @@ +     #include <sys/auxv.h> +  +     static uint32_t read_cpu_features() { ++return 0; ++#if 0 +         const uint32_t kHWCAP_CRC32   = (1<< 7), +                        kHWCAP_ASIMDHP = (1<<10); +  +@@ -112,6 +114,7 @@ +             } +         } +         return features; ++#endif +     } +  + #elif defined(SK_CPU_ARM32) && __has_include(<sys/auxv.h>) && \ diff --git a/devel/electron6/files/patch-third__party_skia_src_gpu_GrAutoLocaleSetter.h b/devel/electron6/files/patch-third__party_skia_src_gpu_GrAutoLocaleSetter.h new file mode 100644 index 000000000000..59a502093d13 --- /dev/null +++ b/devel/electron6/files/patch-third__party_skia_src_gpu_GrAutoLocaleSetter.h @@ -0,0 +1,11 @@ +--- third_party/skia/src/gpu/GrAutoLocaleSetter.h.orig	2019-09-10 10:48:48 UTC ++++ third_party/skia/src/gpu/GrAutoLocaleSetter.h +@@ -27,7 +27,7 @@ + #define HAVE_XLOCALE 0 + #endif +  +-#if defined(SK_BUILD_FOR_ANDROID) || defined(__UCLIBC__) || defined(_NEWLIB_VERSION) ++#if defined(SK_BUILD_FOR_ANDROID) || defined(__UCLIBC__) || defined(_NEWLIB_VERSION) || defined(__FreeBSD__) + #define HAVE_LOCALE_T 0 + #else + #define HAVE_LOCALE_T 1 diff --git a/devel/electron6/files/patch-third__party_skia_src_images_SkJpegEncoder.cpp b/devel/electron6/files/patch-third__party_skia_src_images_SkJpegEncoder.cpp new file mode 100644 index 000000000000..553adfb3d8df --- /dev/null +++ b/devel/electron6/files/patch-third__party_skia_src_images_SkJpegEncoder.cpp @@ -0,0 +1,41 @@ +--- third_party/skia/src/images/SkJpegEncoder.cpp.orig	2019-09-10 11:16:50 UTC ++++ third_party/skia/src/images/SkJpegEncoder.cpp +@@ -75,9 +75,14 @@ bool SkJpegEncoderMgr::setParams(const SkImageInfo& sr +         return (transform_scanline_proc) nullptr; +     }; +  ++#ifdef JCS_EXTENSIONS +     J_COLOR_SPACE jpegColorType = JCS_EXT_RGBA; ++#else ++    J_COLOR_SPACE jpegColorType = JCS_RGB; ++#endif +     int numComponents = 0; +     switch (srcInfo.colorType()) { ++#ifdef JCS_EXTENSIONS +         case kRGBA_8888_SkColorType: +             fProc = chooseProc8888(); +             jpegColorType = JCS_EXT_RGBA; +@@ -88,6 +93,7 @@ bool SkJpegEncoderMgr::setParams(const SkImageInfo& sr +             jpegColorType = JCS_EXT_BGRA; +             numComponents = 4; +             break; ++#endif +         case kRGB_565_SkColorType: +             fProc = transform_scanline_565; +             jpegColorType = JCS_RGB; +@@ -107,6 +113,7 @@ bool SkJpegEncoderMgr::setParams(const SkImageInfo& sr +             jpegColorType = JCS_GRAYSCALE; +             numComponents = 1; +             break; ++#ifdef JCS_EXTENSIONS +         case kRGBA_F16_SkColorType: +             if (kUnpremul_SkAlphaType == srcInfo.alphaType() && +                     options.fAlphaOption == SkJpegEncoder::AlphaOption::kBlendOnBlack) { +@@ -117,6 +124,7 @@ bool SkJpegEncoderMgr::setParams(const SkImageInfo& sr +             jpegColorType = JCS_EXT_RGBA; +             numComponents = 4; +             break; ++#endif +         default: +             return false; +     } diff --git a/devel/electron6/files/patch-third__party_skia_src_opts_SkRasterPipeline__opts.h b/devel/electron6/files/patch-third__party_skia_src_opts_SkRasterPipeline__opts.h new file mode 100644 index 000000000000..3d13d8e3ba98 --- /dev/null +++ b/devel/electron6/files/patch-third__party_skia_src_opts_SkRasterPipeline__opts.h @@ -0,0 +1,20 @@ +--- third_party/skia/src/opts/SkRasterPipeline_opts.h.orig	2019-09-10 11:16:50 UTC ++++ third_party/skia/src/opts/SkRasterPipeline_opts.h +@@ -729,7 +729,7 @@ SI F approx_powf(F x, F y) { + } +  + SI F from_half(U16 h) { +-#if defined(SK_CPU_ARM64) && !defined(SK_BUILD_FOR_GOOGLE3)  // Temporary workaround for some Google3 builds. ++#if defined(JUMPER_IS_NEON) && defined(SK_CPU_ARM64) && !defined(SK_BUILD_FOR_GOOGLE3)  // Temporary workaround for some Google3 builds. +     return vcvt_f32_f16(h); +  + #elif defined(JUMPER_IS_HSW) || defined(JUMPER_IS_AVX512) +@@ -749,7 +749,7 @@ SI F from_half(U16 h) { + } +  + SI U16 to_half(F f) { +-#if defined(SK_CPU_ARM64) && !defined(SK_BUILD_FOR_GOOGLE3)  // Temporary workaround for some Google3 builds. ++#if defined(JUMPER_IS_NEON) && defined(SK_CPU_ARM64) && !defined(SK_BUILD_FOR_GOOGLE3)  // Temporary workaround for some Google3 builds. +     return vcvt_f16_f32(f); +  + #elif defined(JUMPER_IS_HSW) || defined(JUMPER_IS_AVX512) diff --git a/devel/electron6/files/patch-third__party_skia_src_ports_SkOSFile__stdio.cpp b/devel/electron6/files/patch-third__party_skia_src_ports_SkOSFile__stdio.cpp new file mode 100644 index 000000000000..bc32a5299a44 --- /dev/null +++ b/devel/electron6/files/patch-third__party_skia_src_ports_SkOSFile__stdio.cpp @@ -0,0 +1,11 @@ +--- third_party/skia/src/ports/SkOSFile_stdio.cpp.orig	2019-09-10 10:48:48 UTC ++++ third_party/skia/src/ports/SkOSFile_stdio.cpp +@@ -129,7 +129,7 @@ void sk_fflush(FILE* f) { +  + void sk_fsync(FILE* f) { + #if !defined(_WIN32) && !defined(SK_BUILD_FOR_ANDROID) && !defined(__UCLIBC__) \ +-        && !defined(_NEWLIB_VERSION) ++        && !defined(_NEWLIB_VERSION) && !defined(__FreeBSD__) +     int fd = fileno(f); +     fsync(fd); + #endif diff --git a/devel/electron6/files/patch-third__party_skia_src_sksl_SkSLString.h b/devel/electron6/files/patch-third__party_skia_src_sksl_SkSLString.h new file mode 100644 index 000000000000..e8ebbfcad8ab --- /dev/null +++ b/devel/electron6/files/patch-third__party_skia_src_sksl_SkSLString.h @@ -0,0 +1,11 @@ +--- third_party/skia/src/sksl/SkSLString.h.orig	2019-09-10 11:16:50 UTC ++++ third_party/skia/src/sksl/SkSLString.h +@@ -22,6 +22,8 @@ +     #include "include/core/SkString.h" + #endif +  ++#include <stdarg.h> ++ + namespace SkSL { +  + // Represents a (not necessarily null-terminated) slice of a string. diff --git a/devel/electron6/files/patch-third__party_skia_third__party_vulkanmemoryallocator_include_vk__mem__alloc.h b/devel/electron6/files/patch-third__party_skia_third__party_vulkanmemoryallocator_include_vk__mem__alloc.h new file mode 100644 index 000000000000..a4a39af71ac7 --- /dev/null +++ b/devel/electron6/files/patch-third__party_skia_third__party_vulkanmemoryallocator_include_vk__mem__alloc.h @@ -0,0 +1,11 @@ +--- third_party/skia/third_party/vulkanmemoryallocator/include/vk_mem_alloc.h.orig	2019-09-16 09:24:24 UTC ++++ third_party/skia/third_party/vulkanmemoryallocator/include/vk_mem_alloc.h +@@ -2232,7 +2232,7 @@ remove them if not needed. + #include <mutex> // for std::mutex + #include <atomic> // for std::atomic +  +-#if !defined(_WIN32) && !defined(__APPLE__) ++#if !defined(_WIN32) && !defined(__APPLE__) && !defined(__FreeBSD__) +     #include <malloc.h> // for aligned_alloc() + #endif +  diff --git a/devel/electron6/files/patch-third__party_snappy_src_snappy.h b/devel/electron6/files/patch-third__party_snappy_src_snappy.h new file mode 100644 index 000000000000..9882e6de01a6 --- /dev/null +++ b/devel/electron6/files/patch-third__party_snappy_src_snappy.h @@ -0,0 +1,20 @@ +--- third_party/snappy/src/snappy.h.orig	2019-09-10 10:46:35 UTC ++++ third_party/snappy/src/snappy.h +@@ -73,7 +73,7 @@ namespace snappy { +   // Original contents of *output are lost. +   // +   // REQUIRES: "input[]" is not an alias of "*output". +-  size_t Compress(const char* input, size_t input_length, string* output); ++  size_t Compress(const char* input, size_t input_length, std::string* output); +  +   // Decompresses "compressed[0,compressed_length-1]" to "*uncompressed". +   // Original contents of "*uncompressed" are lost. +@@ -82,7 +82,7 @@ namespace snappy { +   // +   // returns false if the message is corrupted and could not be decompressed +   bool Uncompress(const char* compressed, size_t compressed_length, +-                  string* uncompressed); ++                  std::string* uncompressed); +  +   // Decompresses "compressed" to "*uncompressed". +   // diff --git a/devel/electron6/files/patch-third__party_sqlite_BUILD.gn b/devel/electron6/files/patch-third__party_sqlite_BUILD.gn new file mode 100644 index 000000000000..d6201dd113dc --- /dev/null +++ b/devel/electron6/files/patch-third__party_sqlite_BUILD.gn @@ -0,0 +1,11 @@ +--- third_party/sqlite/BUILD.gn.orig	2019-09-10 11:14:34 UTC ++++ third_party/sqlite/BUILD.gn +@@ -258,7 +258,7 @@ config("sqlite_warnings") { +       ] +     } +   } +-  if (is_linux) { ++  if (is_linux && !is_bsd) { +     cflags += [ +       # SQLite doesn't believe in compiler warnings, preferring testing. +       # http://www.sqlite.org/faq.html#q17 diff --git a/devel/electron6/files/patch-third__party_swiftshader_BUILD.gn b/devel/electron6/files/patch-third__party_swiftshader_BUILD.gn new file mode 100644 index 000000000000..4c96fb1337af --- /dev/null +++ b/devel/electron6/files/patch-third__party_swiftshader_BUILD.gn @@ -0,0 +1,24 @@ +--- third_party/swiftshader/BUILD.gn.orig	2019-09-10 11:17:34 UTC ++++ third_party/swiftshader/BUILD.gn +@@ -126,9 +126,6 @@ config("swiftshader_config") { +       ldflags = [ "-Wl,--gc-sections" ] +  +       if (target_cpu == "mipsel") { +-        ldflags += [ +-          "-Wl,--hash-style=sysv", +-        ] +         if (mips_arch_variant == "r1") { +           ldflags += [ +             "-mips32", +@@ -140,11 +137,8 @@ config("swiftshader_config") { +         } +       } else if (target_cpu == "mips64el") { +         ldflags += [ +-          "-Wl,--hash-style=sysv", +           "-mips64r2", +         ] +-      } else { +-        ldflags += [ "-Wl,--hash-style=both" ] +       } +  +       # A bug in the gold linker prevents using ICF on 32-bit (crbug.com/729532) diff --git a/devel/electron6/files/patch-third__party_swiftshader_src_Common_Configurator.cpp b/devel/electron6/files/patch-third__party_swiftshader_src_Common_Configurator.cpp new file mode 100644 index 000000000000..ac508a3161e4 --- /dev/null +++ b/devel/electron6/files/patch-third__party_swiftshader_src_Common_Configurator.cpp @@ -0,0 +1,12 @@ +--- third_party/swiftshader/src/Common/Configurator.cpp.orig	2019-09-10 10:47:39 UTC ++++ third_party/swiftshader/src/Common/Configurator.cpp +@@ -42,6 +42,9 @@ namespace sw +  + 	bool Configurator::readFile() + 	{ ++#if defined(__FreeBSD__) ++                return false; ++#endif       + 		#if defined(__unix__) + 			if(access(path.c_str(), R_OK) != 0) + 			{ diff --git a/devel/electron6/files/patch-third__party_swiftshader_src_Common_MutexLock.hpp b/devel/electron6/files/patch-third__party_swiftshader_src_Common_MutexLock.hpp new file mode 100644 index 000000000000..2a71f63e4666 --- /dev/null +++ b/devel/electron6/files/patch-third__party_swiftshader_src_Common_MutexLock.hpp @@ -0,0 +1,11 @@ +--- third_party/swiftshader/src/Common/MutexLock.hpp.orig	2019-09-10 10:47:39 UTC ++++ third_party/swiftshader/src/Common/MutexLock.hpp +@@ -17,7 +17,7 @@ +  + #include "Thread.hpp" +  +-#if defined(__linux__) ++#if defined(__linux__) || defined(__FreeBSD__) + // Use a pthread mutex on Linux. Since many processes may use SwiftShader + // at the same time it's best to just have the scheduler overhead. + #include <pthread.h> diff --git a/devel/electron6/files/patch-third__party_swiftshader_src_Common_SharedLibrary.hpp b/devel/electron6/files/patch-third__party_swiftshader_src_Common_SharedLibrary.hpp new file mode 100644 index 000000000000..37742a6abea4 --- /dev/null +++ b/devel/electron6/files/patch-third__party_swiftshader_src_Common_SharedLibrary.hpp @@ -0,0 +1,11 @@ +--- third_party/swiftshader/src/Common/SharedLibrary.hpp.orig	2019-09-10 10:47:39 UTC ++++ third_party/swiftshader/src/Common/SharedLibrary.hpp +@@ -97,7 +97,7 @@ void *loadLibrary(const std::string &libraryDirectory, +  + 	inline void *getLibraryHandle(const char *path) + 	{ +-		#ifdef __ANDROID__ ++		#if defined( __ANDROID__) || defined(__FreeBSD__) + 			// bionic doesn't support RTLD_NOLOAD before L + 			return dlopen(path, RTLD_NOW | RTLD_LOCAL); + 		#else diff --git a/devel/electron6/files/patch-third__party_swiftshader_src_Main_SwiftConfig.cpp b/devel/electron6/files/patch-third__party_swiftshader_src_Main_SwiftConfig.cpp new file mode 100644 index 000000000000..fc377b91713b --- /dev/null +++ b/devel/electron6/files/patch-third__party_swiftshader_src_Main_SwiftConfig.cpp @@ -0,0 +1,14 @@ +--- third_party/swiftshader/src/Main/SwiftConfig.cpp.orig	2019-09-10 11:17:34 UTC ++++ third_party/swiftshader/src/Main/SwiftConfig.cpp +@@ -762,7 +762,11 @@ namespace sw + 		struct stat status; + 		int lastModified = ini.getInteger("LastModified", "Time", 0); +  ++#if !defined(__FreeBSD__) + 		bool noConfig = stat("SwiftShader.ini", &status) != 0; ++#else ++               bool noConfig = false; ++#endif + 		newConfig = !noConfig && abs((int)status.st_mtime - lastModified) > 1; +  + 		if(disableServerOverride) diff --git a/devel/electron6/files/patch-third__party_swiftshader_src_OpenGL_libEGL_Display.cpp b/devel/electron6/files/patch-third__party_swiftshader_src_OpenGL_libEGL_Display.cpp new file mode 100644 index 000000000000..a39cf89c22ca --- /dev/null +++ b/devel/electron6/files/patch-third__party_swiftshader_src_OpenGL_libEGL_Display.cpp @@ -0,0 +1,20 @@ +--- third_party/swiftshader/src/OpenGL/libEGL/Display.cpp.orig	2019-09-10 11:17:34 UTC ++++ third_party/swiftshader/src/OpenGL/libEGL/Display.cpp +@@ -688,7 +688,7 @@ bool Display::isValidWindow(EGLNativeWindowType window + 			return status != 0; + 		} + 		return false; +-	#elif defined(__linux__) ++	#elif defined(__linux__) || defined(__FreeBSD__) + 		return false;  // Non X11 linux is headless only + 	#elif defined(__APPLE__) + 		return sw::OSX::IsValidWindow(window); +@@ -866,7 +866,7 @@ sw::Format Display::getDisplayFormat() const + 		{ + 			return sw::FORMAT_X8R8G8B8; + 		} +-	#elif defined(__linux__)  // Non X11 linux is headless only ++	#elif defined(__linux__) || defined(__FreeBSD__) // Non X11 linux is headless only + 		return sw::FORMAT_A8B8G8R8; + 	#elif defined(__APPLE__) + 		return sw::FORMAT_A8B8G8R8; diff --git a/devel/electron6/files/patch-third__party_swiftshader_src_OpenGL_libEGL_Surface.cpp b/devel/electron6/files/patch-third__party_swiftshader_src_OpenGL_libEGL_Surface.cpp new file mode 100644 index 000000000000..f9e89655fdfe --- /dev/null +++ b/devel/electron6/files/patch-third__party_swiftshader_src_OpenGL_libEGL_Surface.cpp @@ -0,0 +1,11 @@ +--- third_party/swiftshader/src/OpenGL/libEGL/Surface.cpp.orig	2019-09-10 11:17:34 UTC ++++ third_party/swiftshader/src/OpenGL/libEGL/Surface.cpp +@@ -360,7 +360,7 @@ bool WindowSurface::checkForResize() +  + 		int windowWidth = windowAttributes.width; + 		int windowHeight = windowAttributes.height; +-	#elif defined(__linux__) ++	#elif defined(__linux__) || defined(__FreeBSD__) + 		// Non X11 linux is headless only + 		int windowWidth = 100; + 		int windowHeight = 100; diff --git a/devel/electron6/files/patch-third__party_swiftshader_src_OpenGL_libEGL_libEGL.cpp b/devel/electron6/files/patch-third__party_swiftshader_src_OpenGL_libEGL_libEGL.cpp new file mode 100644 index 000000000000..8bf7c1768b1c --- /dev/null +++ b/devel/electron6/files/patch-third__party_swiftshader_src_OpenGL_libEGL_libEGL.cpp @@ -0,0 +1,29 @@ +--- third_party/swiftshader/src/OpenGL/libEGL/libEGL.cpp.orig	2019-09-10 11:17:34 UTC ++++ third_party/swiftshader/src/OpenGL/libEGL/libEGL.cpp +@@ -148,7 +148,7 @@ EGLDisplay GetDisplay(EGLNativeDisplayType display_id) + 		// FIXME: Check if display_id is the default display + 	} +  +-	#if defined(__linux__) && !defined(__ANDROID__) ++	#if (defined(__linux__) || defined(__FreeBSD)) && !defined(__ANDROID__) + 		#if defined(USE_X11) + 		if(!libX11) + 		#endif  // Non X11 linux is headless only +@@ -207,7 +207,7 @@ const char *QueryString(EGLDisplay dpy, EGLint name) + 	{ + 		return success( + 			"EGL_KHR_client_get_all_proc_addresses " +-#if defined(__linux__) && !defined(__ANDROID__) ++#if (defined(__linux__) || defined(__FreeBSD__)) && !defined(__ANDROID__) + 			"EGL_KHR_platform_gbm " + #endif + #if defined(USE_X11) +@@ -1250,7 +1250,7 @@ EGLDisplay GetPlatformDisplay(EGLenum platform, void * + { + 	TRACE("(EGLenum platform = 0x%X, void *native_display = %p, const EGLAttrib *attrib_list = %p)", platform, native_display, attrib_list); +  +-	#if defined(__linux__) && !defined(__ANDROID__) ++	#if (defined(__linux__) || defined(__FreeBSD__)) && !defined(__ANDROID__) + 		switch(platform) + 		{ + 		#if defined(USE_X11) diff --git a/devel/electron6/files/patch-third__party_swiftshader_src_OpenGL_libEGL_libEGL.hpp b/devel/electron6/files/patch-third__party_swiftshader_src_OpenGL_libEGL_libEGL.hpp new file mode 100644 index 000000000000..766971cf7706 --- /dev/null +++ b/devel/electron6/files/patch-third__party_swiftshader_src_OpenGL_libEGL_libEGL.hpp @@ -0,0 +1,11 @@ +--- third_party/swiftshader/src/OpenGL/libEGL/libEGL.hpp.orig	2019-09-10 11:17:34 UTC ++++ third_party/swiftshader/src/OpenGL/libEGL/libEGL.hpp +@@ -100,7 +100,7 @@ class LibEGL (private) + 				#endif + 			#elif defined(__ANDROID__) + 				const char *libEGL_lib[] = {"libEGL_swiftshader.so", "libEGL_swiftshader.so"}; +-			#elif defined(__linux__) ++			#elif defined(__linux__) || defined(__FreeBSD__) + 				#if defined(__LP64__) + 					const char *libEGL_lib[] = {"lib64EGL_translator.so", "libEGL.so.1", "libEGL.so"}; + 				#else diff --git a/devel/electron6/files/patch-third__party_swiftshader_src_OpenGL_libGLES__CM_libGLES__CM.hpp b/devel/electron6/files/patch-third__party_swiftshader_src_OpenGL_libGLES__CM_libGLES__CM.hpp new file mode 100644 index 000000000000..5f3caea1813b --- /dev/null +++ b/devel/electron6/files/patch-third__party_swiftshader_src_OpenGL_libGLES__CM_libGLES__CM.hpp @@ -0,0 +1,11 @@ +--- third_party/swiftshader/src/OpenGL/libGLES_CM/libGLES_CM.hpp.orig	2019-09-10 10:47:39 UTC ++++ third_party/swiftshader/src/OpenGL/libGLES_CM/libGLES_CM.hpp +@@ -261,7 +261,7 @@ class LibGLES_CM (private) + 				#endif + 			#elif defined(__ANDROID__) + 				const char *libGLES_CM_lib[] = {"libGLESv1_CM_swiftshader.so", "libGLESv1_CM_swiftshader.so"}; +-			#elif defined(__linux__) ++			#elif defined(__linux__) || defined(__FreeBSD__) + 				#if defined(__LP64__) + 					const char *libGLES_CM_lib[] = {"lib64GLES_CM_translator.so", "libGLES_CM.so.1", "libGLES_CM.so"}; + 				#else diff --git a/devel/electron6/files/patch-third__party_swiftshader_src_OpenGL_libGLESv2_libGLESv2.hpp b/devel/electron6/files/patch-third__party_swiftshader_src_OpenGL_libGLESv2_libGLESv2.hpp new file mode 100644 index 000000000000..54a6c0b53e27 --- /dev/null +++ b/devel/electron6/files/patch-third__party_swiftshader_src_OpenGL_libGLESv2_libGLESv2.hpp @@ -0,0 +1,11 @@ +--- third_party/swiftshader/src/OpenGL/libGLESv2/libGLESv2.hpp.orig	2019-09-10 11:17:34 UTC ++++ third_party/swiftshader/src/OpenGL/libGLESv2/libGLESv2.hpp +@@ -286,7 +286,7 @@ class LibGLESv2 (private) + 				#endif + 			#elif defined(__ANDROID__) + 				const char *libGLESv2_lib[] = {"libGLESv2_swiftshader.so", "libGLESv2_swiftshader.so"}; +-			#elif defined(__linux__) ++			#elif defined(__linux__) || defined(__FreeBSD__) + 				#if defined(__LP64__) + 					const char *libGLESv2_lib[] = {"lib64GLES_V2_translator.so", "libGLESv2.so.2", "libGLESv2.so"}; + 				#else diff --git a/devel/electron6/files/patch-third__party_swiftshader_third__party_llvm-7.0_configs_linux_include_llvm_Config_config.h b/devel/electron6/files/patch-third__party_swiftshader_third__party_llvm-7.0_configs_linux_include_llvm_Config_config.h new file mode 100644 index 000000000000..a5cde29bf8b9 --- /dev/null +++ b/devel/electron6/files/patch-third__party_swiftshader_third__party_llvm-7.0_configs_linux_include_llvm_Config_config.h @@ -0,0 +1,152 @@ +--- third_party/swiftshader/third_party/llvm-7.0/configs/linux/include/llvm/Config/config.h.orig	2019-09-10 11:17:37 UTC ++++ third_party/swiftshader/third_party/llvm-7.0/configs/linux/include/llvm/Config/config.h +@@ -8,15 +8,15 @@ + #define BUG_REPORT_URL "https://bugs.llvm.org/" +  + /* Define to 1 to enable backtraces, and to 0 otherwise. */ +-/* #undef ENABLE_BACKTRACES */ ++#define ENABLE_BACKTRACES 1 +  + /* Define to 1 to enable crash overrides, and to 0 otherwise. */ +-/* #undef ENABLE_CRASH_OVERRIDES */ ++#define ENABLE_CRASH_OVERRIDES 1 +  + /* Define to 1 if you have the `backtrace' function. */ +-/* #undef HAVE_BACKTRACE */ ++#define HAVE_BACKTRACE TRUE +  +-/* #undef BACKTRACE_HEADER */ ++#define BACKTRACE_HEADER <execinfo.h> +  + /* Define to 1 if you have the <CrashReporterClient.h> header file. */ + /* #undef HAVE_CRASHREPORTERCLIENT_H */ +@@ -26,7 +26,7 @@ +  + /* Define to 1 if you have the declaration of `arc4random', and to 0 if you +    don't. */ +-#define HAVE_DECL_ARC4RANDOM 0 ++#define HAVE_DECL_ARC4RANDOM 1 +  + /* Define to 1 if you have the declaration of `FE_ALL_EXCEPT', and to 0 if you +    don't. */ +@@ -50,7 +50,7 @@ + #define HAVE_DLOPEN 1 +  + /* Define if dladdr() is available on this platform. */ +-/* #undef HAVE_DLADDR */ ++#define HAVE_DLADDR 1 +  + /* Define to 1 if you have the <errno.h> header file. */ + #define HAVE_ERRNO_H 1 +@@ -89,7 +89,7 @@ + #define HAVE_ISATTY 1 +  + /* Define to 1 if you have the `edit' library (-ledit). */ +-/* #undef HAVE_LIBEDIT */ ++#define HAVE_LIBEDIT 1 +  + /* Define to 1 if you have the `pfm' library (-lpfm). */ + /* #undef HAVE_LIBPFM */ +@@ -107,25 +107,25 @@ + /* #undef HAVE_PTHREAD_SETNAME_NP */ +  + /* Define to 1 if you have the `z' library (-lz). */ +-/* #undef HAVE_LIBZ */ ++#define HAVE_LIBZ 1 +  + /* Define to 1 if you have the <link.h> header file. */ + #define HAVE_LINK_H 1 +  + /* Define to 1 if you have the `lseek64' function. */ +-#define HAVE_LSEEK64 1 ++/* #undef HAVE_LSEEK64 */ +  + /* Define to 1 if you have the <mach/mach.h> header file. */ + /* #undef HAVE_MACH_MACH_H */ +  + /* Define to 1 if you have the `mallctl' function. */ +-/* #undef HAVE_MALLCTL */ ++#define HAVE_MALLCTL 1 +  + /* Define to 1 if you have the `mallinfo' function. */ +-#define HAVE_MALLINFO 1 ++/* #undef HAVE_MALLINFO */ +  + /* Define to 1 if you have the <malloc.h> header file. */ +-#define HAVE_MALLOC_H 1 ++/* #undef HAVE_MALLOC_H */ +  + /* Define to 1 if you have the <malloc/malloc.h> header file. */ + /* #undef HAVE_MALLOC_MALLOC_H */ +@@ -137,7 +137,7 @@ + #define HAVE_POSIX_FALLOCATE 1 +  + /* Define to 1 if you have the `posix_spawn' function. */ +-/* #undef HAVE_POSIX_SPAWN */ ++#define HAVE_POSIX_SPAWN 1 +  + /* Define to 1 if you have the `pread' function. */ + #define HAVE_PREAD 1 +@@ -158,16 +158,16 @@ + #define HAVE_REALPATH 1 +  + /* Define to 1 if you have the `sbrk' function. */ +-#define HAVE_SBRK 1 ++/* #undef HAVE_SBRK */ +  + /* Define to 1 if you have the `setenv' function. */ + #define HAVE_SETENV 1 +  + /* Define to 1 if you have the `sched_getaffinity' function. */ +-#define HAVE_SCHED_GETAFFINITY 1 ++/* #undef HAVE_SCHED_GETAFFINITY */ +  + /* Define to 1 if you have the `CPU_COUNT' macro. */ +-#define HAVE_CPU_COUNT 1 ++/* #undef HAVE_CPU_COUNT */ +  + /* Define to 1 if you have the `setrlimit' function. */ + #define HAVE_SETRLIMIT 1 +@@ -209,13 +209,13 @@ + #define HAVE_SYS_TYPES_H 1 +  + /* Define if the setupterm() function is supported this platform. */ +-/* #undef HAVE_TERMINFO */ ++#define HAVE_TERMINFO 1 +  + /* Define if the xar_open() function is supported this platform. */ + /* #undef HAVE_LIBXAR */ +  + /* Define to 1 if you have the <termios.h> header file. */ +-/* #undef HAVE_TERMIOS_H */ ++#define HAVE_TERMIOS_H 1 +  + /* Define to 1 if you have the <unistd.h> header file. */ + #define HAVE_UNISTD_H 1 +@@ -224,7 +224,7 @@ + /* #undef HAVE_VALGRIND_VALGRIND_H */ +  + /* Define to 1 if you have the <zlib.h> header file. */ +-/* #undef HAVE_ZLIB_H */ ++#define HAVE_ZLIB_H 1 +  + /* Have host's _alloca */ + /* #undef HAVE__ALLOCA */ +@@ -298,7 +298,7 @@ + #elif defined(__arm__) + #define LLVM_DEFAULT_TARGET_TRIPLE "armv7-linux-gnueabihf" + #elif defined(__aarch64__) +-#define LLVM_DEFAULT_TARGET_TRIPLE "aarch64-linux-gnu" ++#define LLVM_DEFAULT_TARGET_TRIPLE "aarch64-portbld-freebsd" + #elif defined(__mips__) + #define LLVM_DEFAULT_TARGET_TRIPLE "mipsel-linux-gnu" + #elif defined(__mips64) +@@ -308,7 +308,7 @@ + #endif +  + /* Define if zlib compression is available */ +-#define LLVM_ENABLE_ZLIB 0 ++#define LLVM_ENABLE_ZLIB 1 +  + /* Define if overriding target triple is enabled */ + /* #undef LLVM_TARGET_TRIPLE_ENV */ diff --git a/devel/electron6/files/patch-third__party_swiftshader_third__party_llvm-7.0_configs_linux_include_llvm_Config_llvm-config.h b/devel/electron6/files/patch-third__party_swiftshader_third__party_llvm-7.0_configs_linux_include_llvm_Config_llvm-config.h new file mode 100644 index 000000000000..d02dbe87dbbb --- /dev/null +++ b/devel/electron6/files/patch-third__party_swiftshader_third__party_llvm-7.0_configs_linux_include_llvm_Config_llvm-config.h @@ -0,0 +1,20 @@ +--- third_party/swiftshader/third_party/llvm-7.0/configs/linux/include/llvm/Config/llvm-config.h.orig	2019-09-10 11:17:37 UTC ++++ third_party/swiftshader/third_party/llvm-7.0/configs/linux/include/llvm/Config/llvm-config.h +@@ -28,7 +28,7 @@ + #elif defined(__arm__) + #define LLVM_DEFAULT_TARGET_TRIPLE "armv7-linux-gnueabihf" + #elif defined(__aarch64__) +-#define LLVM_DEFAULT_TARGET_TRIPLE "aarch64-linux-gnu" ++#define LLVM_DEFAULT_TARGET_TRIPLE "aarch64-portbld-freebsd" + #elif defined(__mips__) + #define LLVM_DEFAULT_TARGET_TRIPLE "mipsel-linux-gnu" + #elif defined(__mips64) +@@ -51,7 +51,7 @@ + #elif defined(__arm__) + #define LLVM_HOST_TRIPLE "armv7-linux-gnueabihf" + #elif defined(__aarch64__) +-#define LLVM_HOST_TRIPLE "aarch64-linux-gnu" ++#define LLVM_HOST_TRIPLE "aarch64-portbld-freebsd" + #elif defined(__mips__) + #define LLVM_HOST_TRIPLE "mipsel-linux-gnu" + #elif defined(__mips64) diff --git a/devel/electron6/files/patch-third__party_swiftshader_third__party_llvm-subzero_build_Linux_include_llvm_Config_config.h b/devel/electron6/files/patch-third__party_swiftshader_third__party_llvm-subzero_build_Linux_include_llvm_Config_config.h new file mode 100644 index 000000000000..e262bd37705a --- /dev/null +++ b/devel/electron6/files/patch-third__party_swiftshader_third__party_llvm-subzero_build_Linux_include_llvm_Config_config.h @@ -0,0 +1,29 @@ +--- third_party/swiftshader/third_party/llvm-subzero/build/Linux/include/llvm/Config/config.h.orig	2019-09-10 10:47:52 UTC ++++ third_party/swiftshader/third_party/llvm-subzero/build/Linux/include/llvm/Config/config.h +@@ -121,7 +121,7 @@ + #define HAVE_LINK_H 1 +  + /* Define to 1 if you have the `lseek64' function. */ +-#define HAVE_LSEEK64 1 ++/* #undef HAVE_LSEEK64 */ +  + /* Define to 1 if you have the <mach/mach.h> header file. */ + /* #undef HAVE_MACH_MACH_H */ +@@ -130,7 +130,7 @@ + /* #undef HAVE_MALLCTL */ +  + /* Define to 1 if you have the `mallinfo' function. */ +-#define HAVE_MALLINFO 1 ++/* #undef HAVE_MALLINFO */ +  + /* Define to 1 if you have the <malloc.h> header file. */ + #define HAVE_MALLOC_H 1 +@@ -154,7 +154,7 @@ + /* #undef HAVE_NDIR_H */ +  + /* Define to 1 if you have the `posix_fallocate' function. */ +-#define HAVE_POSIX_FALLOCATE 1 ++/* #undef HAVE_POSIX_FALLOCATE */ +  + /* Define to 1 if you have the `posix_spawn' function. */ + #define HAVE_POSIX_SPAWN 1 diff --git a/devel/electron6/files/patch-third__party_swiftshader_third__party_llvm-subzero_lib_Support_Unix_Process.inc b/devel/electron6/files/patch-third__party_swiftshader_third__party_llvm-subzero_lib_Support_Unix_Process.inc new file mode 100644 index 000000000000..21b5d0d88c75 --- /dev/null +++ b/devel/electron6/files/patch-third__party_swiftshader_third__party_llvm-subzero_lib_Support_Unix_Process.inc @@ -0,0 +1,11 @@ +--- third_party/swiftshader/third_party/llvm-subzero/lib/Support/Unix/Process.inc.orig	2019-09-10 10:47:53 UTC ++++ third_party/swiftshader/third_party/llvm-subzero/lib/Support/Unix/Process.inc +@@ -35,7 +35,7 @@ + // DragonFlyBSD, OpenBSD, and Bitrig have deprecated <malloc.h> for + // <stdlib.h> instead. Unix.h includes this for us already. + #if defined(HAVE_MALLOC_H) && !defined(__DragonFly__) && \ +-    !defined(__OpenBSD__) && !defined(__Bitrig__) ++    !defined(__FreeBSD__) && !defined(__OpenBSD__) && !defined(__Bitrig__) + #include <malloc.h> + #endif + #if defined(HAVE_MALLCTL) diff --git a/devel/electron6/files/patch-third__party_usrsctp_BUILD.gn b/devel/electron6/files/patch-third__party_usrsctp_BUILD.gn new file mode 100644 index 000000000000..282f37d16a21 --- /dev/null +++ b/devel/electron6/files/patch-third__party_usrsctp_BUILD.gn @@ -0,0 +1,20 @@ +--- third_party/usrsctp/BUILD.gn.orig	2019-09-10 10:43:21 UTC ++++ third_party/usrsctp/BUILD.gn +@@ -116,11 +116,16 @@ static_library("usrsctp") { +     "-UINET6", +   ] +  +-  if (is_linux || is_android) { ++  if ((is_linux && !is_bsd) || is_android ) { +     defines += [ +       "__Userspace_os_Linux", +       "_GNU_SOURCE", +     ] ++  } else if (is_bsd) { ++    defines += [ ++      "__Userspace_os_FreeBSD", ++    ] ++    cflags += [ "-U__FreeBSD__" ] +   } else if (is_mac || is_ios) { +     defines += [ +       "HAVE_SA_LEN", diff --git a/devel/electron6/files/patch-third__party_webrtc_BUILD.gn b/devel/electron6/files/patch-third__party_webrtc_BUILD.gn new file mode 100644 index 000000000000..597b53bd9077 --- /dev/null +++ b/devel/electron6/files/patch-third__party_webrtc_BUILD.gn @@ -0,0 +1,12 @@ +--- third_party/webrtc/BUILD.gn.orig	2019-09-10 11:17:42 UTC ++++ third_party/webrtc/BUILD.gn +@@ -152,6 +152,9 @@ config("common_inherited_config") { +   if (is_linux) { +     defines += [ "WEBRTC_LINUX" ] +   } ++  if (is_bsd) { ++    defines += [ "WEBRTC_BSD" ] ++  } +   if (is_mac) { +     defines += [ "WEBRTC_MAC" ] +   } diff --git a/devel/electron6/files/patch-third__party_webrtc_modules_audio__device_BUILD.gn b/devel/electron6/files/patch-third__party_webrtc_modules_audio__device_BUILD.gn new file mode 100644 index 000000000000..77ad41e20b7e --- /dev/null +++ b/devel/electron6/files/patch-third__party_webrtc_modules_audio__device_BUILD.gn @@ -0,0 +1,11 @@ +--- third_party/webrtc/modules/audio_device/BUILD.gn.orig	2019-09-10 11:17:42 UTC ++++ third_party/webrtc/modules/audio_device/BUILD.gn +@@ -265,7 +265,7 @@ rtc_source_set("audio_device_impl") { +     if (rtc_use_dummy_audio_file_devices) { +       defines += [ "WEBRTC_DUMMY_FILE_DEVICES" ] +     } else { +-      if (is_linux) { ++      if (is_linux && !is_bsd) { +         sources += [ +           "linux/alsasymboltable_linux.cc", +           "linux/alsasymboltable_linux.h", diff --git a/devel/electron6/files/patch-third__party_webrtc_modules_rtp__rtcp_source_forward__error__correction.cc b/devel/electron6/files/patch-third__party_webrtc_modules_rtp__rtcp_source_forward__error__correction.cc new file mode 100644 index 000000000000..481b5a52748c --- /dev/null +++ b/devel/electron6/files/patch-third__party_webrtc_modules_rtp__rtcp_source_forward__error__correction.cc @@ -0,0 +1,10 @@ +--- third_party/webrtc/modules/rtp_rtcp/source/forward_error_correction.cc.orig	2019-09-10 11:17:43 UTC ++++ third_party/webrtc/modules/rtp_rtcp/source/forward_error_correction.cc +@@ -12,6 +12,7 @@ +  + #include <string.h> + #include <algorithm> ++#include <cstdlib> + #include <utility> +  + #include "absl/algorithm/container.h" diff --git a/devel/electron6/files/patch-third__party_webrtc_rtc__base_BUILD.gn b/devel/electron6/files/patch-third__party_webrtc_rtc__base_BUILD.gn new file mode 100644 index 000000000000..2ddda49cbf39 --- /dev/null +++ b/devel/electron6/files/patch-third__party_webrtc_rtc__base_BUILD.gn @@ -0,0 +1,20 @@ +--- third_party/webrtc/rtc_base/BUILD.gn.orig	2019-09-10 11:17:44 UTC ++++ third_party/webrtc/rtc_base/BUILD.gn +@@ -952,8 +952,6 @@ rtc_static_library("rtc_base") { +  +   if (rtc_use_x11) { +     libs += [ +-      "dl", +-      "rt", +       "Xext", +       "X11", +       "Xcomposite", +@@ -961,7 +959,7 @@ rtc_static_library("rtc_base") { +     ] +   } +  +-  if (is_linux) { ++  if (is_linux && !is_bsd) { +     libs += [ +       "dl", +       "rt", diff --git a/devel/electron6/files/patch-third__party_webrtc_rtc__base_byte__order.h b/devel/electron6/files/patch-third__party_webrtc_rtc__base_byte__order.h new file mode 100644 index 000000000000..1be5134f8bb5 --- /dev/null +++ b/devel/electron6/files/patch-third__party_webrtc_rtc__base_byte__order.h @@ -0,0 +1,11 @@ +--- third_party/webrtc/rtc_base/byte_order.h.orig	2019-09-10 10:48:09 UTC ++++ third_party/webrtc/rtc_base/byte_order.h +@@ -89,7 +89,7 @@ + #endif  // defined(WEBRTC_ARCH_LITTLE_ENDIAN) +  + #elif defined(WEBRTC_POSIX) +-#include <endian.h> ++#include <sys/endian.h> + #else + #error "Missing byte order functions for this arch." + #endif  // defined(WEBRTC_MAC) diff --git a/devel/electron6/files/patch-third__party_webrtc_rtc__base_ifaddrs__converter.h b/devel/electron6/files/patch-third__party_webrtc_rtc__base_ifaddrs__converter.h new file mode 100644 index 000000000000..d2942a459a73 --- /dev/null +++ b/devel/electron6/files/patch-third__party_webrtc_rtc__base_ifaddrs__converter.h @@ -0,0 +1,11 @@ +--- third_party/webrtc/rtc_base/ifaddrs_converter.h.orig	2019-09-10 10:48:09 UTC ++++ third_party/webrtc/rtc_base/ifaddrs_converter.h +@@ -14,6 +14,8 @@ + #if defined(WEBRTC_ANDROID) + #include "rtc_base/ifaddrs_android.h" + #else ++#include <sys/types.h> ++#include <sys/socket.h> + #include <ifaddrs.h> + #endif  // WEBRTC_ANDROID +  diff --git a/devel/electron6/files/patch-third__party_webrtc_rtc__base_ip__address.cc b/devel/electron6/files/patch-third__party_webrtc_rtc__base_ip__address.cc new file mode 100644 index 000000000000..cc2b083db032 --- /dev/null +++ b/devel/electron6/files/patch-third__party_webrtc_rtc__base_ip__address.cc @@ -0,0 +1,12 @@ +--- third_party/webrtc/rtc_base/ip_address.cc.orig	2019-09-10 10:48:09 UTC ++++ third_party/webrtc/rtc_base/ip_address.cc +@@ -11,6 +11,9 @@ + #if defined(WEBRTC_POSIX) + #include <netinet/in.h> + #include <sys/socket.h> ++#if defined(WEBRTC_BSD) ++#include <sys/types.h> ++#endif + #ifdef OPENBSD + #include <netinet/in_systm.h> + #endif diff --git a/devel/electron6/files/patch-third__party_webrtc_rtc__base_ip__address.h b/devel/electron6/files/patch-third__party_webrtc_rtc__base_ip__address.h new file mode 100644 index 000000000000..27e32df29df1 --- /dev/null +++ b/devel/electron6/files/patch-third__party_webrtc_rtc__base_ip__address.h @@ -0,0 +1,13 @@ +--- third_party/webrtc/rtc_base/ip_address.h.orig	2019-09-10 10:48:09 UTC ++++ third_party/webrtc/rtc_base/ip_address.h +@@ -17,6 +17,10 @@ + #include <netinet/in.h> + #include <sys/socket.h> + #endif ++#if defined(WEBRTC_BSD) ++#include <sys/types.h> ++#include <sys/socket.h> ++#endif + #if defined(WEBRTC_WIN) + #include <winsock2.h> + #include <ws2tcpip.h> diff --git a/devel/electron6/files/patch-third__party_webrtc_rtc__base_network.cc b/devel/electron6/files/patch-third__party_webrtc_rtc__base_network.cc new file mode 100644 index 000000000000..3077966366d2 --- /dev/null +++ b/devel/electron6/files/patch-third__party_webrtc_rtc__base_network.cc @@ -0,0 +1,29 @@ +--- third_party/webrtc/rtc_base/network.cc.orig	2019-09-10 11:17:44 UTC ++++ third_party/webrtc/rtc_base/network.cc +@@ -14,7 +14,7 @@ + // linux/if.h can't be included at the same time as the posix sys/if.h, and + // it's transitively required by linux/route.h, so include that version on + // linux instead of the standard posix one. +-#if defined(WEBRTC_LINUX) ++#if defined(WEBRTC_LINUX) && !defined(WEBRTC_BSD) + #include <linux/if.h> + #include <linux/route.h> + #elif !defined(__native_client__) +@@ -764,7 +764,7 @@ bool BasicNetworkManager::CreateNetworks(bool include_ + } + #endif  // WEBRTC_WIN +  +-#if defined(WEBRTC_LINUX) ++#if defined(WEBRTC_LINUX) && !defined(WEBRTC_BSD) + bool IsDefaultRoute(const std::string& network_name) { +   FILE* f = fopen("/proc/net/route", "r"); +   if (!f) { +@@ -807,7 +807,7 @@ bool BasicNetworkManager::IsIgnoredNetwork(const Netwo +       strncmp(network.name().c_str(), "vboxnet", 7) == 0) { +     return true; +   } +-#if defined(WEBRTC_LINUX) ++#if defined(WEBRTC_LINUX) && !defined(WEBRTC_BSD) +   // Make sure this is a default route, if we're ignoring non-defaults. +   if (ignore_non_default_routes_ && !IsDefaultRoute(network.name())) { +     return true; diff --git a/devel/electron6/files/patch-third__party_webrtc_rtc__base_network.h b/devel/electron6/files/patch-third__party_webrtc_rtc__base_network.h new file mode 100644 index 000000000000..384f30338e67 --- /dev/null +++ b/devel/electron6/files/patch-third__party_webrtc_rtc__base_network.h @@ -0,0 +1,13 @@ +--- third_party/webrtc/rtc_base/network.h.orig	2019-09-10 10:48:09 UTC ++++ third_party/webrtc/rtc_base/network.h +@@ -25,6 +25,10 @@ + #include "rtc_base/network_monitor.h" + #include "rtc_base/third_party/sigslot/sigslot.h" +  ++#if defined(WEBRTC_BSD) ++#include <sys/types.h> ++#endif ++ + #if defined(WEBRTC_POSIX) + struct ifaddrs; + #endif  // defined(WEBRTC_POSIX) diff --git a/devel/electron6/files/patch-third__party_webrtc_rtc__base_physical__socket__server.cc b/devel/electron6/files/patch-third__party_webrtc_rtc__base_physical__socket__server.cc new file mode 100644 index 000000000000..2425a7903c09 --- /dev/null +++ b/devel/electron6/files/patch-third__party_webrtc_rtc__base_physical__socket__server.cc @@ -0,0 +1,65 @@ +--- third_party/webrtc/rtc_base/physical_socket_server.cc.orig	2019-09-10 11:17:44 UTC ++++ third_party/webrtc/rtc_base/physical_socket_server.cc +@@ -51,7 +51,7 @@ + #include "rtc_base/null_socket_server.h" + #include "rtc_base/time_utils.h" +  +-#if defined(WEBRTC_LINUX) ++#if defined(WEBRTC_LINUX) && !defined(WEBRTC_BSD) + #include <linux/sockios.h> + #endif +  +@@ -70,7 +70,7 @@ typedef void* SockOptArg; +  + #endif  // WEBRTC_POSIX +  +-#if defined(WEBRTC_POSIX) && !defined(WEBRTC_MAC) && !defined(__native_client__) ++#if defined(WEBRTC_POSIX) && !defined(WEBRTC_MAC) && !defined(WEBRTC_BSD) && !defined(__native_client__) +  + int64_t GetSocketRecvTimestamp(int socket) { +   struct timeval tv_ioctl; +@@ -290,7 +290,7 @@ int PhysicalSocket::GetOption(Option opt, int* value)  +   socklen_t optlen = sizeof(*value); +   int ret = ::getsockopt(s_, slevel, sopt, (SockOptArg)value, &optlen); +   if (ret != -1 && opt == OPT_DONTFRAGMENT) { +-#if defined(WEBRTC_LINUX) && !defined(WEBRTC_ANDROID) ++#if defined(WEBRTC_LINUX) && !defined(WEBRTC_ANDROID) && !defined(WEBRTC_BSD) +     *value = (*value != IP_PMTUDISC_DONT) ? 1 : 0; + #endif +   } +@@ -303,7 +303,7 @@ int PhysicalSocket::SetOption(Option opt, int value) { +   if (TranslateOption(opt, &slevel, &sopt) == -1) +     return -1; +   if (opt == OPT_DONTFRAGMENT) { +-#if defined(WEBRTC_LINUX) && !defined(WEBRTC_ANDROID) ++#if defined(WEBRTC_LINUX) && !defined(WEBRTC_ANDROID) && !defined(WEBRTC_BSD) +     value = (value) ? IP_PMTUDISC_DO : IP_PMTUDISC_DONT; + #endif +   } +@@ -313,7 +313,7 @@ int PhysicalSocket::SetOption(Option opt, int value) { + int PhysicalSocket::Send(const void* pv, size_t cb) { +   int sent = DoSend( +       s_, reinterpret_cast<const char*>(pv), static_cast<int>(cb), +-#if defined(WEBRTC_LINUX) && !defined(WEBRTC_ANDROID) ++#if defined(WEBRTC_LINUX) && !defined(WEBRTC_ANDROID) && !defined(WEBRTC_BSD) +       // Suppress SIGPIPE. Without this, attempting to send on a socket whose +       // other end is closed will result in a SIGPIPE signal being raised to +       // our process, which by default will terminate the process, which we +@@ -342,7 +342,7 @@ int PhysicalSocket::SendTo(const void* buffer, +   size_t len = addr.ToSockAddrStorage(&saddr); +   int sent = +       DoSendTo(s_, static_cast<const char*>(buffer), static_cast<int>(length), +-#if defined(WEBRTC_LINUX) && !defined(WEBRTC_ANDROID) ++#if defined(WEBRTC_LINUX) && !defined(WEBRTC_ANDROID) && !defined(WEBRTC_BSD) +                // Suppress SIGPIPE. See above for explanation. +                MSG_NOSIGNAL, + #else +@@ -533,7 +533,7 @@ int PhysicalSocket::TranslateOption(Option opt, int* s +       *slevel = IPPROTO_IP; +       *sopt = IP_DONTFRAGMENT; +       break; +-#elif defined(WEBRTC_MAC) || defined(BSD) || defined(__native_client__) ++#elif defined(WEBRTC_MAC) || defined(WEBRTC_BSD) || defined(__native_client__) +       RTC_LOG(LS_WARNING) << "Socket::OPT_DONTFRAGMENT not supported."; +       return -1; + #elif defined(WEBRTC_POSIX) diff --git a/devel/electron6/files/patch-third__party_webrtc_rtc__base_physical__socket__server.h b/devel/electron6/files/patch-third__party_webrtc_rtc__base_physical__socket__server.h new file mode 100644 index 000000000000..a942e0648aa1 --- /dev/null +++ b/devel/electron6/files/patch-third__party_webrtc_rtc__base_physical__socket__server.h @@ -0,0 +1,11 @@ +--- third_party/webrtc/rtc_base/physical_socket_server.h.orig	2019-09-10 10:48:10 UTC ++++ third_party/webrtc/rtc_base/physical_socket_server.h +@@ -11,7 +11,7 @@ + #ifndef RTC_BASE_PHYSICAL_SOCKET_SERVER_H_ + #define RTC_BASE_PHYSICAL_SOCKET_SERVER_H_ +  +-#if defined(WEBRTC_POSIX) && defined(WEBRTC_LINUX) ++#if defined(WEBRTC_POSIX) && defined(WEBRTC_LINUX) && !defined(WEBRTC_BSD) + #include <sys/epoll.h> + #define WEBRTC_USE_EPOLL 1 + #endif diff --git a/devel/electron6/files/patch-third__party_webrtc_rtc__base_platform__thread__types.cc b/devel/electron6/files/patch-third__party_webrtc_rtc__base_platform__thread__types.cc new file mode 100644 index 000000000000..c25501a86b6f --- /dev/null +++ b/devel/electron6/files/patch-third__party_webrtc_rtc__base_platform__thread__types.cc @@ -0,0 +1,40 @@ +--- third_party/webrtc/rtc_base/platform_thread_types.cc.orig	2019-09-10 11:17:44 UTC ++++ third_party/webrtc/rtc_base/platform_thread_types.cc +@@ -11,7 +11,9 @@ + #include "rtc_base/platform_thread_types.h" +  + #if defined(WEBRTC_LINUX) ++#if !defined(__FreeBSD__) + #include <sys/prctl.h> ++#endif + #include <sys/syscall.h> + #endif +  +@@ -27,8 +29,10 @@ PlatformThreadId CurrentThreadId() { +   return gettid(); + #elif defined(WEBRTC_FUCHSIA) +   return zx_thread_self(); +-#elif defined(WEBRTC_LINUX) ++#elif defined(WEBRTC_LINUX) && !defined(__FreeBSD__) +   return syscall(__NR_gettid); ++#elif defined(__FreeBSD__) ++  return reinterpret_cast<uint64_t>(pthread_self()); + #else +   // Default implementation for nacl and solaris. +   return reinterpret_cast<pid_t>(pthread_self()); +@@ -55,6 +59,7 @@ bool IsThreadRefEqual(const PlatformThreadRef& a, cons + } +  + void SetCurrentThreadName(const char* name) { ++#if !defined(__FreeBSD__) + #if defined(WEBRTC_WIN) +   struct { +     DWORD dwType; +@@ -72,6 +77,7 @@ void SetCurrentThreadName(const char* name) { +   prctl(PR_SET_NAME, reinterpret_cast<unsigned long>(name));  // NOLINT + #elif defined(WEBRTC_MAC) || defined(WEBRTC_IOS) +   pthread_setname_np(name); ++#endif + #endif + } +  diff --git a/devel/electron6/files/patch-third__party_webrtc_system__wrappers_BUILD.gn b/devel/electron6/files/patch-third__party_webrtc_system__wrappers_BUILD.gn new file mode 100644 index 000000000000..96afacf65759 --- /dev/null +++ b/devel/electron6/files/patch-third__party_webrtc_system__wrappers_BUILD.gn @@ -0,0 +1,11 @@ +--- third_party/webrtc/system_wrappers/BUILD.gn.orig	2019-09-10 11:17:44 UTC ++++ third_party/webrtc/system_wrappers/BUILD.gn +@@ -57,8 +57,6 @@ rtc_static_library("system_wrappers") { +     if (!build_with_chromium) { +       deps += [ ":cpu_features_linux" ] +     } +- +-    libs += [ "rt" ] +   } +  +   if (is_win) { diff --git a/devel/electron6/files/patch-third__party_yasm_yasm__assemble.gni b/devel/electron6/files/patch-third__party_yasm_yasm__assemble.gni new file mode 100644 index 000000000000..2a3e3fd1ecc4 --- /dev/null +++ b/devel/electron6/files/patch-third__party_yasm_yasm__assemble.gni @@ -0,0 +1,159 @@ +--- third_party/yasm/yasm_assemble.gni.orig	2019-09-10 10:43:21 UTC ++++ third_party/yasm/yasm_assemble.gni +@@ -1,105 +1,23 @@ +-# Copyright 2014 The Chromium Authors. All rights reserved. ++# Copyright 2016 The Chromium Authors. All rights reserved. + # Use of this source code is governed by a BSD-style license that can be + # found in the LICENSE file. +  +-# This provides the yasm_assemble() template which uses YASM to assemble +-# assembly files. +-# +-# Files to be assembled with YASM should have an extension of .asm. +-# +-# Parameters +-# +-#   yasm_flags (optional) +-#       [list of strings] Pass additional flags into YASM. These are appended +-#       to the command line. Note that the target machine type and system is +-#       already set up based on the current toolchain so you don't need to +-#       specify these things (see below). +-# +-#       Example: yasm_flags = [ "--force-strict" ] +-# +-#   include_dirs (optional) +-#       [list of dir names] List of additional include dirs. Note that the +-#       source root and the root generated file dir is always added, just like +-#       our C++ build sets up. +-# +-#       Example: include_dirs = [ "//some/other/path", target_gen_dir ] +-# +-#   defines (optional) +-#       [list of strings] List of defines, as with the native code defines. +-# +-#       Example: defines = [ "FOO", "BAR=1" ] +-# +-#   inputs, deps, visibility  (optional) +-#       These have the same meaning as in an action. +-# +-# Example +-# +-#   yasm_assemble("my_yasm_target") { +-#     sources = [ +-#       "ultra_optimized_awesome.asm", +-#     ] +-#     include_dirs = [ "assembly_include" ] +-#   } +- +-if (is_mac || is_ios) { +-  if (current_cpu == "x86") { +-    _yasm_flags = [ +-      "-fmacho32", +-      "-m", +-      "x86", +-    ] +-  } else if (current_cpu == "x64") { +-    _yasm_flags = [ +-      "-fmacho64", +-      "-m", +-      "amd64", +-    ] +-  } +-} else if (is_posix || is_fuchsia) { +-  if (current_cpu == "x86") { +-    _yasm_flags = [ +-      "-felf32", +-      "-m", +-      "x86", +-    ] +-  } else if (current_cpu == "x64") { +-    _yasm_flags = [ +-      "-DPIC", +-      "-felf64", +-      "-m", +-      "amd64", +-    ] +-  } +-} else if (is_win) { +-  if (current_cpu == "x86") { +-    _yasm_flags = [ +-      "-DPREFIX", +-      "-fwin32", +-      "-m", +-      "x86", +-    ] +-  } else if (current_cpu == "x64") { +-    _yasm_flags = [ +-      "-fwin64", +-      "-m", +-      "amd64", +-    ] +-  } ++if (current_cpu == "x86") { ++  _yasm_flags = [ ++    "-felf32", ++    "-m", ++    "x86", ++  ] ++} else if (current_cpu == "x64") { ++  _yasm_flags = [ ++    "-DPIC", ++    "-felf64", ++    "-m", ++    "amd64", ++  ] + } +  +-if (is_win) { +-  asm_obj_extension = "obj" +-} else { +-  asm_obj_extension = "o" +-} +- + template("yasm_assemble") { +-  assert(defined(invoker.sources), "Need sources defined for $target_name") +- +-  # Only depend on YASM on x86 systems. Force compilation of .asm files for +-  # ARM to fail. +-  assert(current_cpu == "x86" || current_cpu == "x64") +- +   action_name = "${target_name}_action" +   source_set_name = target_name +  +@@ -114,24 +32,12 @@ template("yasm_assemble") { +       inputs = invoker.inputs +     } +  +-    # Executable (first in the args). The binary might be in the root build dir +-    # (no cross-compiling) or in a toolchain-specific subdirectory of that +-    # (when cross-compiling). +-    yasm_label = "//third_party/yasm($host_toolchain)" +-    args = [ "./" +  # Force current dir. +-             rebase_path(get_label_info(yasm_label, "root_out_dir") + "/yasm", +-                         root_build_dir) ] +- +-    # Deps. +-    deps = [ +-      yasm_label, +-    ] ++    deps = [] +     if (defined(invoker.deps)) { +       deps += invoker.deps +     } +  +-    # Flags. +-    args += _yasm_flags ++    args = [ "yasm" ] + _yasm_flags +     if (defined(invoker.yasm_flags)) { +       args += invoker.yasm_flags +     } +@@ -188,9 +94,6 @@ template("yasm_assemble") { +     } +  +     sources = get_target_outputs(":$action_name") +- +-    # Do not publicize any header to remove build dependency. +-    public = [] +  +     deps = [ +       ":$action_name", diff --git a/devel/electron6/files/patch-third__party_zlib_arm__features.c b/devel/electron6/files/patch-third__party_zlib_arm__features.c new file mode 100644 index 000000000000..c7ff3cd5f2a0 --- /dev/null +++ b/devel/electron6/files/patch-third__party_zlib_arm__features.c @@ -0,0 +1,46 @@ +--- third_party/zlib/arm_features.c.orig	2019-09-10 10:43:21 UTC ++++ third_party/zlib/arm_features.c +@@ -16,6 +16,10 @@ int ZLIB_INTERNAL arm_cpu_enable_pmull = 0; + #include <pthread.h> + #endif +  ++#if defined(__FreeBSD__) ++#include <machine/armreg.h> ++#include <sys/types.h> ++#else + #if defined(ARMV8_OS_ANDROID) + #include <cpu-features.h> + #elif defined(ARMV8_OS_LINUX) +@@ -30,6 +34,7 @@ int ZLIB_INTERNAL arm_cpu_enable_pmull = 0; + #else + #error arm_features.c ARM feature detection in not defined for your platform + #endif ++#endif +  + static void _arm_check_features(void); +  +@@ -68,14 +73,24 @@ static void _arm_check_features(void) +     arm_cpu_enable_crc32 = !!(features & ANDROID_CPU_ARM_FEATURE_CRC32); +     arm_cpu_enable_pmull = !!(features & ANDROID_CPU_ARM_FEATURE_PMULL); + #elif defined(ARMV8_OS_LINUX) && defined(__aarch64__) ++#if defined(__FreeBSD__) ++    uint64_t id_aa64isar0 = READ_SPECIALREG(ID_AA64ISAR0_EL1); ++    if (ID_AA64ISAR0_AES(id_aa64isar0) == ID_AA64ISAR0_AES_PMULL) ++        arm_cpu_enable_pmull = 1; ++    if (ID_AA64ISAR0_CRC32(id_aa64isar0) == ID_AA64ISAR0_CRC32_BASE) ++        arm_cpu_enable_crc32 = 1; ++#else +     unsigned long features = getauxval(AT_HWCAP); +     arm_cpu_enable_crc32 = !!(features & HWCAP_CRC32); +     arm_cpu_enable_pmull = !!(features & HWCAP_PMULL); ++#endif + #elif defined(ARMV8_OS_LINUX) && (defined(__ARM_NEON) || defined(__ARM_NEON__)) ++#if !defined(__FreeBSD__) +     /* Query HWCAP2 for ARMV8-A SoCs running in aarch32 mode */ +     unsigned long features = getauxval(AT_HWCAP2); +     arm_cpu_enable_crc32 = !!(features & HWCAP2_CRC32); +     arm_cpu_enable_pmull = !!(features & HWCAP2_PMULL); ++#endif + #elif defined(ARMV8_OS_FUCHSIA) +     uint32_t features; +     zx_status_t rc = zx_system_get_features(ZX_FEATURE_KIND_CPU, &features); diff --git a/devel/electron6/files/patch-tools_gn_base_files_file__posix.cc b/devel/electron6/files/patch-tools_gn_base_files_file__posix.cc new file mode 100644 index 000000000000..cd67de1b31bf --- /dev/null +++ b/devel/electron6/files/patch-tools_gn_base_files_file__posix.cc @@ -0,0 +1,11 @@ +--- tools/gn/base/files/file_posix.cc.orig	2019-08-26 19:07:16 UTC ++++ tools/gn/base/files/file_posix.cc +@@ -414,7 +414,7 @@ void File::DoInitialize(const FilePath& path, uint32_t + bool File::Flush() { +   DCHECK(IsValid()); +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   return !HANDLE_EINTR(fdatasync(file_.get())); + #else +   return !HANDLE_EINTR(fsync(file_.get())); diff --git a/devel/electron6/files/patch-tools_gn_base_files_file__util.h b/devel/electron6/files/patch-tools_gn_base_files_file__util.h new file mode 100644 index 000000000000..50e6f6d47d46 --- /dev/null +++ b/devel/electron6/files/patch-tools_gn_base_files_file__util.h @@ -0,0 +1,11 @@ +--- tools/gn/base/files/file_util.h.orig	2019-08-26 19:07:16 UTC ++++ tools/gn/base/files/file_util.h +@@ -361,7 +361,7 @@ bool VerifyPathControlledByAdmin(const base::FilePath& + // the directory |path|, in the number of FilePath::CharType, or -1 on failure. + int GetMaximumPathComponentLength(const base::FilePath& path); +  +-#if defined(OS_LINUX) || defined(OS_AIX) ++#if defined(OS_LINUX) || defined(OS_AIX) || defined(OS_BSD) + // Broad categories of file systems as returned by statfs() on Linux. + enum FileSystemType { +   FILE_SYSTEM_UNKNOWN,   // statfs failed. diff --git a/devel/electron6/files/patch-tools_gn_base_files_file__util__posix.cc b/devel/electron6/files/patch-tools_gn_base_files_file__util__posix.cc new file mode 100644 index 000000000000..9371e261d354 --- /dev/null +++ b/devel/electron6/files/patch-tools_gn_base_files_file__util__posix.cc @@ -0,0 +1,11 @@ +--- tools/gn/base/files/file_util_posix.cc.orig	2019-08-26 19:07:16 UTC ++++ tools/gn/base/files/file_util_posix.cc +@@ -254,7 +254,7 @@ bool ReplaceFile(const FilePath& from_path, + #endif  // !defined(OS_NACL_NONSFI) +  + bool CreateLocalNonBlockingPipe(int fds[2]) { +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   return pipe2(fds, O_CLOEXEC | O_NONBLOCK) == 0; + #else +   int raw_fds[2]; diff --git a/devel/electron6/files/patch-tools_gn_base_files_scoped__file.cc b/devel/electron6/files/patch-tools_gn_base_files_scoped__file.cc new file mode 100644 index 000000000000..62938b8813c6 --- /dev/null +++ b/devel/electron6/files/patch-tools_gn_base_files_scoped__file.cc @@ -0,0 +1,11 @@ +--- tools/gn/base/files/scoped_file.cc.orig	2019-08-26 19:07:16 UTC ++++ tools/gn/base/files/scoped_file.cc +@@ -30,7 +30,7 @@ void ScopedFDCloseTraits::Free(int fd) { +   // a single open directory would bypass the entire security model. +   int ret = IGNORE_EINTR(close(fd)); +  +-#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_FUCHSIA) || \ ++#if defined(OS_LINUX) || defined(OS_MACOSX) || defined(OS_FUCHSIA) || defined(OS_BSD) || \ +     defined(OS_ANDROID) +   // NB: Some file descriptors can return errors from close() e.g. network +   // filesystems such as NFS and Linux input devices. On Linux, macOS, and diff --git a/devel/electron6/files/patch-tools_gn_build_gen.py b/devel/electron6/files/patch-tools_gn_build_gen.py new file mode 100644 index 000000000000..17c1d1dad583 --- /dev/null +++ b/devel/electron6/files/patch-tools_gn_build_gen.py @@ -0,0 +1,33 @@ +--- tools/gn/build/gen.py.orig	2019-08-26 19:07:16 UTC ++++ tools/gn/build/gen.py +@@ -46,7 +46,7 @@ class Platform(object): +  +   @staticmethod +   def known_platforms(): +-    return ['linux', 'darwin', 'msvc', 'aix', 'fuchsia', 'openbsd'] ++    return ['linux', 'darwin', 'msvc', 'aix', 'fuchsia', 'openbsd', 'freebsd'] +  +   def platform(self): +     return self._platform +@@ -69,6 +69,9 @@ class Platform(object): +   def is_aix(self): +     return self._platform == 'aix' +  ++  def is_freebsd(self): ++    return self._platform == 'freebsd' ++ +   def is_posix(self): +     return self._platform in ['linux', 'freebsd', 'darwin', 'aix', 'openbsd'] +  +@@ -335,6 +338,11 @@ def WriteGNNinja(path, platform, host, options): +     elif platform.is_aix(): +       cflags_cc.append('-maix64') +       ldflags.append('-maix64') ++    elif platform.is_freebsd(): ++      cflags.extend(['-Wno-deprecated-register', '-Wno-parentheses-equality']) ++      ldflags.extend(['-pthread']) ++      libs.extend(['-lexecinfo', '-lkvm', '-lutil']) ++      include_dirs += ['/usr/local/include'] +  +     if platform.is_posix(): +       ldflags.append('-pthread') diff --git a/devel/electron6/files/patch-tools_gn_tools_gn_exec__process.cc b/devel/electron6/files/patch-tools_gn_tools_gn_exec__process.cc new file mode 100644 index 000000000000..db7042144c3f --- /dev/null +++ b/devel/electron6/files/patch-tools_gn_tools_gn_exec__process.cc @@ -0,0 +1,13 @@ +--- tools/gn/tools/gn/exec_process.cc.orig	2019-08-26 19:07:16 UTC ++++ tools/gn/tools/gn/exec_process.cc +@@ -29,6 +29,10 @@ + #include "base/posix/file_descriptor_shuffle.h" + #endif +  ++#if defined(OS_BSD) ++#include <signal.h> ++#endif ++ + namespace internal { +  + #if defined(OS_WIN) diff --git a/devel/electron6/files/patch-tools_gn_util_sys__info.cc b/devel/electron6/files/patch-tools_gn_util_sys__info.cc new file mode 100644 index 000000000000..408fd97444a1 --- /dev/null +++ b/devel/electron6/files/patch-tools_gn_util_sys__info.cc @@ -0,0 +1,11 @@ +--- tools/gn/util/sys_info.cc.orig	2019-08-26 19:07:16 UTC ++++ tools/gn/util/sys_info.cc +@@ -28,6 +28,8 @@ std::string OperatingSystemArchitecture() { +     arch = "x86"; +   } else if (arch == "amd64") { +     arch = "x86_64"; ++  } else if (arch == "arm64") { ++    arch = "aarch64"; +   } else if (std::string(info.sysname) == "AIX") { +     arch = "ppc64"; +   } diff --git a/devel/electron6/files/patch-tools_json__schema__compiler_feature__compiler.py b/devel/electron6/files/patch-tools_json__schema__compiler_feature__compiler.py new file mode 100644 index 000000000000..b236a8307306 --- /dev/null +++ b/devel/electron6/files/patch-tools_json__schema__compiler_feature__compiler.py @@ -0,0 +1,10 @@ +--- tools/json_schema_compiler/feature_compiler.py.orig	2019-09-10 11:14:38 UTC ++++ tools/json_schema_compiler/feature_compiler.py +@@ -213,6 +213,7 @@ FEATURE_GRAMMAR = ( +         'enum_map': { +           'chromeos': 'Feature::CHROMEOS_PLATFORM', +           'linux': 'Feature::LINUX_PLATFORM', ++          'bsd': 'Feature::LINUX_PLATFORM', +           'mac': 'Feature::MACOSX_PLATFORM', +           'win': 'Feature::WIN_PLATFORM', +         } diff --git a/devel/electron6/files/patch-tools_json__schema__compiler_model.py b/devel/electron6/files/patch-tools_json__schema__compiler_model.py new file mode 100644 index 000000000000..968194f234fe --- /dev/null +++ b/devel/electron6/files/patch-tools_json__schema__compiler_model.py @@ -0,0 +1,11 @@ +--- tools/json_schema_compiler/model.py.orig	2019-09-10 11:14:38 UTC ++++ tools/json_schema_compiler/model.py +@@ -605,7 +605,7 @@ class Platforms(object): +   """ +   CHROMEOS = _PlatformInfo("chromeos") +   CHROMEOS_TOUCH = _PlatformInfo("chromeos_touch") +-  LINUX = _PlatformInfo("linux") ++  LINUX = _PlatformInfo("bsd") +   MAC = _PlatformInfo("mac") +   WIN = _PlatformInfo("win") +  diff --git a/devel/electron6/files/patch-tools_perf_chrome__telemetry__build_BUILD.gn b/devel/electron6/files/patch-tools_perf_chrome__telemetry__build_BUILD.gn new file mode 100644 index 000000000000..fb5992528e9e --- /dev/null +++ b/devel/electron6/files/patch-tools_perf_chrome__telemetry__build_BUILD.gn @@ -0,0 +1,11 @@ +--- tools/perf/chrome_telemetry_build/BUILD.gn.orig	2019-09-10 11:14:38 UTC ++++ tools/perf/chrome_telemetry_build/BUILD.gn +@@ -43,7 +43,7 @@ group("telemetry_chrome_test") { +     data_deps += [ "//chrome:reorder_imports" ] +   } +  +-  if (is_linux) { ++  if (is_linux && !is_bsd) { +     data_deps += [ "//third_party/breakpad:dump_syms($host_toolchain)" ] +   } +  diff --git a/devel/electron6/files/patch-tools_variations_fieldtrial__to__struct.py b/devel/electron6/files/patch-tools_variations_fieldtrial__to__struct.py new file mode 100644 index 000000000000..586b254a5223 --- /dev/null +++ b/devel/electron6/files/patch-tools_variations_fieldtrial__to__struct.py @@ -0,0 +1,10 @@ +--- tools/variations/fieldtrial_to_struct.py.orig	2019-09-10 10:43:22 UTC ++++ tools/variations/fieldtrial_to_struct.py +@@ -33,6 +33,7 @@ finally: + _platforms = [ +   'android', +   'android_webview', ++  'freebsd', +   'chromeos', +   'fuchsia', +   'ios', diff --git a/devel/electron6/files/patch-ui_base_dragdrop_os__exchange__data__provider__factory.cc b/devel/electron6/files/patch-ui_base_dragdrop_os__exchange__data__provider__factory.cc new file mode 100644 index 000000000000..5ebd5c47cd43 --- /dev/null +++ b/devel/electron6/files/patch-ui_base_dragdrop_os__exchange__data__provider__factory.cc @@ -0,0 +1,20 @@ +--- ui/base/dragdrop/os_exchange_data_provider_factory.cc.orig	2019-09-10 11:14:39 UTC ++++ ui/base/dragdrop/os_exchange_data_provider_factory.cc +@@ -8,7 +8,7 @@ +  + #if defined(USE_X11) + #include "ui/base/dragdrop/os_exchange_data_provider_aurax11.h" +-#elif defined(OS_LINUX) ++#elif defined(OS_LINUX) || defined(OS_BSD) + #include "ui/base/dragdrop/os_exchange_data_provider_aura.h" + #elif defined(OS_MACOSX) + #include "ui/base/dragdrop/os_exchange_data_provider_builder_mac.h" +@@ -23,7 +23,7 @@ std::unique_ptr<OSExchangeData::Provider> + OSExchangeDataProviderFactory::CreateProvider() { + #if defined(USE_X11) +   return std::make_unique<OSExchangeDataProviderAuraX11>(); +-#elif defined(OS_LINUX) ++#elif defined(OS_LINUX) || defined(OS_BSD) +   return std::make_unique<OSExchangeDataProviderAura>(); + #elif defined(OS_MACOSX) +   return ui::BuildOSExchangeDataProviderMac(); diff --git a/devel/electron6/files/patch-ui_base_ime_init_input__method__initializer.cc b/devel/electron6/files/patch-ui_base_ime_init_input__method__initializer.cc new file mode 100644 index 000000000000..245a232998a5 --- /dev/null +++ b/devel/electron6/files/patch-ui_base_ime_init_input__method__initializer.cc @@ -0,0 +1,38 @@ +--- ui/base/ime/init/input_method_initializer.cc.orig	2019-09-10 10:43:22 UTC ++++ ui/base/ime/init/input_method_initializer.cc +@@ -8,7 +8,7 @@ +  + #if defined(OS_CHROMEOS) + #include "ui/base/ime/ime_bridge.h" +-#elif defined(USE_AURA) && defined(OS_LINUX) ++#elif defined(USE_AURA) && (defined(OS_LINUX) || defined(OS_BSD)) + #include "base/logging.h" + #include "ui/base/ime/linux/fake_input_method_context_factory.h" + #elif defined(OS_WIN) +@@ -18,7 +18,7 @@ +  + namespace { +  +-#if !defined(OS_CHROMEOS) && defined(USE_AURA) && defined(OS_LINUX) ++#if !defined(OS_CHROMEOS) && defined(USE_AURA) && (defined(OS_LINUX) || defined(OS_BSD)) + const ui::LinuxInputMethodContextFactory* +     g_linux_input_method_context_factory_for_testing; + #endif +@@ -46,7 +46,7 @@ void ShutdownInputMethod() { + void InitializeInputMethodForTesting() { + #if defined(OS_CHROMEOS) +   IMEBridge::Initialize(); +-#elif defined(USE_AURA) && defined(OS_LINUX) ++#elif defined(USE_AURA) && (defined(OS_LINUX) || defined(OS_BSD)) +   if (!g_linux_input_method_context_factory_for_testing) +     g_linux_input_method_context_factory_for_testing = +         new FakeInputMethodContextFactory(); +@@ -67,7 +67,7 @@ void InitializeInputMethodForTesting() { + void ShutdownInputMethodForTesting() { + #if defined(OS_CHROMEOS) +   IMEBridge::Shutdown(); +-#elif defined(USE_AURA) && defined(OS_LINUX) ++#elif defined(USE_AURA) && (defined(OS_LINUX) || defined(OS_BSD)) +   const LinuxInputMethodContextFactory* factory = +       LinuxInputMethodContextFactory::instance(); +   CHECK(!factory || factory == g_linux_input_method_context_factory_for_testing) diff --git a/devel/electron6/files/patch-ui_base_resource_resource__bundle.cc b/devel/electron6/files/patch-ui_base_resource_resource__bundle.cc new file mode 100644 index 000000000000..4ccbc9fd46df --- /dev/null +++ b/devel/electron6/files/patch-ui_base_resource_resource__bundle.cc @@ -0,0 +1,20 @@ +--- ui/base/resource/resource_bundle.cc.orig	2019-09-10 11:14:39 UTC ++++ ui/base/resource/resource_bundle.cc +@@ -701,7 +701,7 @@ void ResourceBundle::ReloadFonts() { + } +  + ScaleFactor ResourceBundle::GetMaxScaleFactor() const { +-#if defined(OS_WIN) || defined(OS_LINUX) ++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_BSD) +   return max_scale_factor_; + #else +   return GetSupportedScaleFactors().back(); +@@ -754,7 +754,7 @@ void ResourceBundle::InitSharedInstance(Delegate* dele +   // On platforms other than iOS, 100P is always a supported scale factor. +   // For Windows we have a separate case in this function. +   supported_scale_factors.push_back(SCALE_FACTOR_100P); +-#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_WIN) ++#if defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_WIN) || defined(OS_BSD) +   supported_scale_factors.push_back(SCALE_FACTOR_200P); + #endif + #endif diff --git a/devel/electron6/files/patch-ui_base_resource_resource__bundle__freebsd.cc b/devel/electron6/files/patch-ui_base_resource_resource__bundle__freebsd.cc new file mode 100644 index 000000000000..be6d1ee45f7a --- /dev/null +++ b/devel/electron6/files/patch-ui_base_resource_resource__bundle__freebsd.cc @@ -0,0 +1,24 @@ +--- ui/base/resource/resource_bundle_freebsd.cc.orig	2019-09-16 09:25:25 UTC ++++ ui/base/resource/resource_bundle_freebsd.cc +@@ -0,0 +1,21 @@ ++// Copyright 2017 The Chromium Authors. All rights reserved. ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++ ++#include "ui/base/resource/resource_bundle.h" ++ ++#include "base/logging.h" ++#include "base/macros.h" ++#include "ui/gfx/image/image.h" ++ ++namespace ui { ++ ++void ResourceBundle::LoadCommonResources() { ++  LoadChromeResources(); ++} ++ ++gfx::Image& ResourceBundle::GetNativeImageNamed(int resource_id) { ++  return GetImageNamed(resource_id); ++} ++ ++}  // namespace ui diff --git a/devel/electron6/files/patch-ui_base_ui__base__features.cc b/devel/electron6/files/patch-ui_base_ui__base__features.cc new file mode 100644 index 000000000000..b577c3f28576 --- /dev/null +++ b/devel/electron6/files/patch-ui_base_ui__base__features.cc @@ -0,0 +1,20 @@ +--- ui/base/ui_base_features.cc.orig	2019-09-10 11:14:39 UTC ++++ ui/base/ui_base_features.cc +@@ -108,7 +108,7 @@ const base::Feature kEnableAutomaticUiAdjustmentsForTo +     "EnableAutomaticUiAdjustmentsForTouch", base::FEATURE_ENABLED_BY_DEFAULT}; + #endif  // defined(OS_WIN) || defined(OS_CHROMEOS) +  +-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) ++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) + // Enables stylus appearing as touch when in contact with digitizer. + const base::Feature kDirectManipulationStylus = { +     "DirectManipulationStylus", +@@ -118,7 +118,7 @@ const base::Feature kDirectManipulationStylus = { +     base::FEATURE_DISABLED_BY_DEFAULT + #endif + }; +-#endif  // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) ++#endif  // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) +  + const base::Feature kMash = {"Mash", base::FEATURE_DISABLED_BY_DEFAULT}; +  diff --git a/devel/electron6/files/patch-ui_base_ui__base__features.h b/devel/electron6/files/patch-ui_base_ui__base__features.h new file mode 100644 index 000000000000..b0ff90b22835 --- /dev/null +++ b/devel/electron6/files/patch-ui_base_ui__base__features.h @@ -0,0 +1,15 @@ +--- ui/base/ui_base_features.h.orig	2019-09-10 11:14:39 UTC ++++ ui/base/ui_base_features.h +@@ -59,10 +59,10 @@ COMPONENT_EXPORT(UI_BASE_FEATURES) + extern const base::Feature kEnableAutomaticUiAdjustmentsForTouch; + #endif  // defined(OS_WIN) || defined(OS_CHROMEOS) +  +-#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) ++#if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) + COMPONENT_EXPORT(UI_BASE_FEATURES) + extern const base::Feature kDirectManipulationStylus; +-#endif  // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) ++#endif  // defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) || defined(OS_BSD) +  + // Used to have ash (Chrome OS system UI) run in its own process. + // TODO(jamescook): Make flag only available in Chrome OS. diff --git a/devel/electron6/files/patch-ui_base_webui_web__ui__util.cc b/devel/electron6/files/patch-ui_base_webui_web__ui__util.cc new file mode 100644 index 000000000000..ef473e4ccc07 --- /dev/null +++ b/devel/electron6/files/patch-ui_base_webui_web__ui__util.cc @@ -0,0 +1,11 @@ +--- ui/base/webui/web_ui_util.cc.orig	2019-09-10 10:43:22 UTC ++++ ui/base/webui/web_ui_util.cc +@@ -215,7 +215,7 @@ std::string GetFontFamily() { +  + // TODO(dnicoara) Remove Ozone check when PlatformFont support is introduced + // into Ozone: crbug.com/320050 +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) && !defined(USE_OZONE) ++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS) && !defined(USE_OZONE) +   font_family = ui::ResourceBundle::GetSharedInstance().GetFont( +       ui::ResourceBundle::BaseFont).GetFontName() + ", " + font_family; + #endif diff --git a/devel/electron6/files/patch-ui_events_devices_x11_device__data__manager__x11.cc b/devel/electron6/files/patch-ui_events_devices_x11_device__data__manager__x11.cc new file mode 100644 index 000000000000..aa4ee819a444 --- /dev/null +++ b/devel/electron6/files/patch-ui_events_devices_x11_device__data__manager__x11.cc @@ -0,0 +1,19 @@ +--- ui/events/devices/x11/device_data_manager_x11.cc.orig	2019-09-10 11:14:39 UTC ++++ ui/events/devices/x11/device_data_manager_x11.cc +@@ -828,6 +828,8 @@ void DeviceDataManagerX11::SetDisabledKeyboardAllowedK + } +  + void DeviceDataManagerX11::DisableDevice(int deviceid) { ++  NOTIMPLEMENTED(); ++#if !defined(OS_BSD) +   blocked_devices_.set(deviceid, true); +   // TODO(rsadam@): Support blocking touchscreen devices. +   std::vector<InputDevice> keyboards = GetKeyboardDevices(); +@@ -838,6 +840,7 @@ void DeviceDataManagerX11::DisableDevice(int deviceid) +     keyboards.erase(it); +     DeviceDataManager::OnKeyboardDevicesUpdated(keyboards); +   } ++#endif + } +  + void DeviceDataManagerX11::EnableDevice(int deviceid) { diff --git a/devel/electron6/files/patch-ui_events_event__switches.cc b/devel/electron6/files/patch-ui_events_event__switches.cc new file mode 100644 index 000000000000..fae80f473451 --- /dev/null +++ b/devel/electron6/files/patch-ui_events_event__switches.cc @@ -0,0 +1,11 @@ +--- ui/events/event_switches.cc.orig	2019-09-10 10:43:23 UTC ++++ ui/events/event_switches.cc +@@ -14,7 +14,7 @@ namespace switches { + const char kCompensateForUnstablePinchZoom[] = +     "compensate-for-unstable-pinch-zoom"; +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_FREEBSD) + // Tells chrome to interpret events from these devices as touch events. Only + // available with XInput 2 (i.e. X server 1.8 or above). The id's of the + // devices can be retrieved from 'xinput list'. diff --git a/devel/electron6/files/patch-ui_events_event__switches.h b/devel/electron6/files/patch-ui_events_event__switches.h new file mode 100644 index 000000000000..816e9406f754 --- /dev/null +++ b/devel/electron6/files/patch-ui_events_event__switches.h @@ -0,0 +1,11 @@ +--- ui/events/event_switches.h.orig	2019-09-10 10:43:23 UTC ++++ ui/events/event_switches.h +@@ -13,7 +13,7 @@ namespace switches { +  + EVENTS_BASE_EXPORT extern const char kCompensateForUnstablePinchZoom[]; +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_FREEBSD) + EVENTS_BASE_EXPORT extern const char kTouchDevices[]; + EVENTS_BASE_EXPORT extern const char kPenDevices[]; + #endif diff --git a/devel/electron6/files/patch-ui_events_keycodes_dom_keycode__converter.cc b/devel/electron6/files/patch-ui_events_keycodes_dom_keycode__converter.cc new file mode 100644 index 000000000000..d36eda41e9fd --- /dev/null +++ b/devel/electron6/files/patch-ui_events_keycodes_dom_keycode__converter.cc @@ -0,0 +1,11 @@ +--- ui/events/keycodes/dom/keycode_converter.cc.orig	2019-09-10 10:43:23 UTC ++++ ui/events/keycodes/dom/keycode_converter.cc +@@ -19,7 +19,7 @@ namespace { + // and DOM Level 3 |code| strings. + #if defined(OS_WIN) + #define USB_KEYMAP(usb, evdev, xkb, win, mac, code, id) {usb, win, code} +-#elif defined(OS_LINUX) ++#elif defined(OS_LINUX) || defined(OS_BSD) + #define USB_KEYMAP(usb, evdev, xkb, win, mac, code, id) {usb, xkb, code} + #elif defined(OS_MACOSX) + #define USB_KEYMAP(usb, evdev, xkb, win, mac, code, id) {usb, mac, code} diff --git a/devel/electron6/files/patch-ui_gfx_BUILD.gn b/devel/electron6/files/patch-ui_gfx_BUILD.gn new file mode 100644 index 000000000000..3e207423f96b --- /dev/null +++ b/devel/electron6/files/patch-ui_gfx_BUILD.gn @@ -0,0 +1,11 @@ +--- ui/gfx/BUILD.gn.orig	2019-09-10 11:14:39 UTC ++++ ui/gfx/BUILD.gn +@@ -550,7 +550,7 @@ jumbo_source_set("memory_buffer_sources") { +     deps += [ "//build/config/linux/libdrm" ] +   } +  +-  if (is_linux || is_android) { ++  if ((is_linux || is_android) && !is_bsd) { +     deps += [ "//third_party/libsync" ] +   } +  diff --git a/devel/electron6/files/patch-ui_gfx_canvas__skia.cc b/devel/electron6/files/patch-ui_gfx_canvas__skia.cc new file mode 100644 index 000000000000..ab60d027901b --- /dev/null +++ b/devel/electron6/files/patch-ui_gfx_canvas__skia.cc @@ -0,0 +1,11 @@ +--- ui/gfx/canvas_skia.cc.orig	2019-09-10 10:43:23 UTC ++++ ui/gfx/canvas_skia.cc +@@ -209,7 +209,7 @@ void Canvas::DrawStringRectWithFlags(const base::strin +     Range range = StripAcceleratorChars(flags, &adjusted_text); +     bool elide_text = ((flags & NO_ELLIPSIS) == 0); +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +     // On Linux, eliding really means fading the end of the string. But only +     // for LTR text. RTL text is still elided (on the left) with "...". +     if (elide_text) { diff --git a/devel/electron6/files/patch-ui_gfx_codec_jpeg__codec.cc b/devel/electron6/files/patch-ui_gfx_codec_jpeg__codec.cc new file mode 100644 index 000000000000..99439931118b --- /dev/null +++ b/devel/electron6/files/patch-ui_gfx_codec_jpeg__codec.cc @@ -0,0 +1,20 @@ +--- ui/gfx/codec/jpeg_codec.cc.orig	2019-09-10 10:43:23 UTC ++++ ui/gfx/codec/jpeg_codec.cc +@@ -207,6 +207,7 @@ bool JPEGCodec::Decode(const unsigned char* input, siz +     case JCS_GRAYSCALE: +     case JCS_RGB: +     case JCS_YCbCr: ++#ifdef JCS_EXTENSIONS +       // Choose an output colorspace and return if it is an unsupported one. +       // Same as JPEGCodec::Encode(), libjpeg-turbo supports all input formats +       // used by Chromium (i.e. RGBA and BGRA) and we just map the input +@@ -223,6 +224,9 @@ bool JPEGCodec::Decode(const unsigned char* input, siz +         NOTREACHED() << "Invalid pixel format"; +         return false; +       } ++#else ++      cinfo.out_color_space = JCS_RGB; ++#endif +       break; +     case JCS_CMYK: +     case JCS_YCCK: diff --git a/devel/electron6/files/patch-ui_gfx_font__fallback__linux.cc b/devel/electron6/files/patch-ui_gfx_font__fallback__linux.cc new file mode 100644 index 000000000000..c80f6192a310 --- /dev/null +++ b/devel/electron6/files/patch-ui_gfx_font__fallback__linux.cc @@ -0,0 +1,13 @@ +--- ui/gfx/font_fallback_linux.cc.orig	2019-09-10 11:14:39 UTC ++++ ui/gfx/font_fallback_linux.cc +@@ -16,6 +16,10 @@ + #include "base/trace_event/trace_event.h" + #include "ui/gfx/font.h" +  ++#if defined(OS_BSD) ++#include <unistd.h> ++#endif ++ + namespace gfx { +  + namespace { diff --git a/devel/electron6/files/patch-ui_gfx_font__list.cc b/devel/electron6/files/patch-ui_gfx_font__list.cc new file mode 100644 index 000000000000..36714e57b69e --- /dev/null +++ b/devel/electron6/files/patch-ui_gfx_font__list.cc @@ -0,0 +1,11 @@ +--- ui/gfx/font_list.cc.orig	2019-09-10 10:43:23 UTC ++++ ui/gfx/font_list.cc +@@ -24,7 +24,7 @@ base::LazyInstance<scoped_refptr<gfx::FontListImpl>>:: + bool g_default_impl_initialized = false; +  + bool IsFontFamilyAvailable(const std::string& family, SkFontMgr* fontManager) { +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   return !!fontManager->legacyMakeTypeface(family.c_str(), SkFontStyle()); + #else +   sk_sp<SkFontStyleSet> set(fontManager->matchFamily(family.c_str())); diff --git a/devel/electron6/files/patch-ui_gfx_font__render__params.h b/devel/electron6/files/patch-ui_gfx_font__render__params.h new file mode 100644 index 000000000000..1e58547bab1f --- /dev/null +++ b/devel/electron6/files/patch-ui_gfx_font__render__params.h @@ -0,0 +1,18 @@ +--- ui/gfx/font_render_params.h.orig	2019-09-10 10:43:23 UTC ++++ ui/gfx/font_render_params.h +@@ -111,13 +111,13 @@ GFX_EXPORT FontRenderParams GetFontRenderParams( +     const FontRenderParamsQuery& query, +     std::string* family_out); +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + // Clears GetFontRenderParams()'s cache. Intended to be called by tests that are + // changing Fontconfig's configuration. + GFX_EXPORT void ClearFontRenderParamsCacheForTest(); + #endif +  +-#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_ANDROID) || \ ++#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_ANDROID) || defined(OS_BSD) || \ +     defined(OS_FUCHSIA) + // Gets the device scale factor to query the FontRenderParams. + GFX_EXPORT float GetFontRenderParamsDeviceScaleFactor(); diff --git a/devel/electron6/files/patch-ui_gfx_gpu__memory__buffer.h b/devel/electron6/files/patch-ui_gfx_gpu__memory__buffer.h new file mode 100644 index 000000000000..4603dbaa65b2 --- /dev/null +++ b/devel/electron6/files/patch-ui_gfx_gpu__memory__buffer.h @@ -0,0 +1,20 @@ +--- ui/gfx/gpu_memory_buffer.h.orig	2019-09-10 10:43:23 UTC ++++ ui/gfx/gpu_memory_buffer.h +@@ -16,7 +16,7 @@ + #include "ui/gfx/geometry/rect.h" + #include "ui/gfx/gfx_export.h" +  +-#if defined(USE_OZONE) || defined(OS_LINUX) ++#if defined(USE_OZONE) || defined(OS_LINUX) || defined(OS_BSD) + #include "ui/gfx/native_pixmap_handle.h" + #elif defined(OS_MACOSX) && !defined(OS_IOS) + #include "ui/gfx/mac/io_surface.h" +@@ -65,7 +65,7 @@ struct GFX_EXPORT GpuMemoryBufferHandle { +   base::UnsafeSharedMemoryRegion region; +   uint32_t offset; +   int32_t stride; +-#if defined(OS_LINUX) || defined(OS_FUCHSIA) ++#if defined(OS_LINUX) || defined(OS_FUCHSIA) || defined(OS_BSD) +   NativePixmapHandle native_pixmap_handle; + #elif defined(OS_MACOSX) && !defined(OS_IOS) +   ScopedRefCountedIOSurfaceMachPort mach_port; diff --git a/devel/electron6/files/patch-ui_gfx_ipc_gfx__param__traits__macros.h b/devel/electron6/files/patch-ui_gfx_ipc_gfx__param__traits__macros.h new file mode 100644 index 000000000000..fd179ec18f00 --- /dev/null +++ b/devel/electron6/files/patch-ui_gfx_ipc_gfx__param__traits__macros.h @@ -0,0 +1,35 @@ +--- ui/gfx/ipc/gfx_param_traits_macros.h.orig	2019-09-10 11:14:39 UTC ++++ ui/gfx/ipc/gfx_param_traits_macros.h +@@ -18,7 +18,7 @@ + #include "ui/gfx/selection_bound.h" + #include "ui/gfx/swap_result.h" +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + #include "ui/gfx/native_pixmap_handle.h" + #endif +  +@@ -51,7 +51,7 @@ IPC_STRUCT_TRAITS_BEGIN(gfx::GpuMemoryBufferHandle) +   IPC_STRUCT_TRAITS_MEMBER(region) +   IPC_STRUCT_TRAITS_MEMBER(offset) +   IPC_STRUCT_TRAITS_MEMBER(stride) +-#if defined(OS_LINUX) || defined(OS_FUCHSIA) ++#if defined(OS_LINUX) || defined(OS_FUCHSIA) || defined(OS_BSD) +   IPC_STRUCT_TRAITS_MEMBER(native_pixmap_handle) + #elif defined(OS_MACOSX) +   IPC_STRUCT_TRAITS_MEMBER(mach_port) +@@ -66,12 +66,12 @@ IPC_STRUCT_TRAITS_BEGIN(gfx::GpuMemoryBufferId) +   IPC_STRUCT_TRAITS_MEMBER(id) + IPC_STRUCT_TRAITS_END() +  +-#if defined(OS_LINUX) || defined(OS_FUCHSIA) ++#if defined(OS_LINUX) || defined(OS_FUCHSIA) || defined(OS_BSD) + IPC_STRUCT_TRAITS_BEGIN(gfx::NativePixmapPlane) +   IPC_STRUCT_TRAITS_MEMBER(stride) +   IPC_STRUCT_TRAITS_MEMBER(offset) +   IPC_STRUCT_TRAITS_MEMBER(size) +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   IPC_STRUCT_TRAITS_MEMBER(fd) + #elif defined(OS_FUCHSIA) +   IPC_STRUCT_TRAITS_MEMBER(vmo) diff --git a/devel/electron6/files/patch-ui_gfx_linux_client__native__pixmap__dmabuf.cc b/devel/electron6/files/patch-ui_gfx_linux_client__native__pixmap__dmabuf.cc new file mode 100644 index 000000000000..3cae7d9d9435 --- /dev/null +++ b/devel/electron6/files/patch-ui_gfx_linux_client__native__pixmap__dmabuf.cc @@ -0,0 +1,25 @@ +--- ui/gfx/linux/client_native_pixmap_dmabuf.cc.orig	2019-09-10 11:14:39 UTC ++++ ui/gfx/linux/client_native_pixmap_dmabuf.cc +@@ -5,7 +5,9 @@ + #include "ui/gfx/linux/client_native_pixmap_dmabuf.h" +  + #include <fcntl.h> ++#if !defined(__FreeBSD__) + #include <linux/version.h> ++#endif + #include <stddef.h> + #include <sys/ioctl.h> + #include <sys/mman.h> +@@ -24,11 +26,7 @@ + #include "build/build_config.h" + #include "ui/gfx/switches.h" +  +-#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 11, 0) +-#include <linux/dma-buf.h> +-#else +-#include <linux/types.h> +- ++#if defined(__FreeBSD__) + struct dma_buf_sync { +   __u64 flags; + }; diff --git a/devel/electron6/files/patch-ui_gfx_mojo_buffer__types__struct__traits.cc b/devel/electron6/files/patch-ui_gfx_mojo_buffer__types__struct__traits.cc new file mode 100644 index 000000000000..881c9034fc75 --- /dev/null +++ b/devel/electron6/files/patch-ui_gfx_mojo_buffer__types__struct__traits.cc @@ -0,0 +1,66 @@ +--- ui/gfx/mojo/buffer_types_struct_traits.cc.orig	2019-09-10 11:14:39 UTC ++++ ui/gfx/mojo/buffer_types_struct_traits.cc +@@ -24,15 +24,15 @@ bool StructTraits<gfx::mojom::BufferUsageAndFormatData +   return data.ReadUsage(&out->usage) && data.ReadFormat(&out->format); + } +  +-#if defined(OS_LINUX) || defined(USE_OZONE) ++#if defined(OS_LINUX) || defined(USE_OZONE) || defined(OS_BSD) + mojo::ScopedHandle StructTraits< +     gfx::mojom::NativePixmapPlaneDataView, +     gfx::NativePixmapPlane>::buffer_handle(gfx::NativePixmapPlane& plane) { +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   return mojo::WrapPlatformFile(plane.fd.release()); + #elif defined(OS_FUCHSIA) +   return mojo::WrapPlatformHandle(mojo::PlatformHandle(std::move(plane.vmo))); +-#endif  // defined(OS_LINUX) ++#endif  // defined(OS_LINUX) || defined(OS_BSD) + } +  + bool StructTraits< +@@ -45,7 +45,7 @@ bool StructTraits< +  +   mojo::PlatformHandle handle = +       mojo::UnwrapPlatformHandle(data.TakeBufferHandle()); +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   if (!handle.is_fd()) +     return false; +   out->fd = handle.TakeFD(); +@@ -53,7 +53,7 @@ bool StructTraits< +   if (!handle.is_handle()) +     return false; +   out->vmo = zx::vmo(handle.TakeHandle()); +-#endif  // defined(OS_LINUX) ++#endif  // defined(OS_LINUX) || defined(OS_BSD) +  +   return true; + } +@@ -71,7 +71,7 @@ bool StructTraits< +   out->modifier = data.modifier(); +   return data.ReadPlanes(&out->planes); + } +-#endif  // defined(OS_LINUX) || defined(USE_OZONE) ++#endif  // defined(OS_LINUX) || defined(USE_OZONE) || defined(OS_BSD) +  + gfx::mojom::GpuMemoryBufferPlatformHandlePtr StructTraits< +     gfx::mojom::GpuMemoryBufferHandleDataView, +@@ -84,7 +84,7 @@ gfx::mojom::GpuMemoryBufferPlatformHandlePtr StructTra +       return gfx::mojom::GpuMemoryBufferPlatformHandle::NewSharedMemoryHandle( +           std::move(handle.region)); +     case gfx::NATIVE_PIXMAP: +-#if defined(OS_LINUX) || defined(USE_OZONE) ++#if defined(OS_LINUX) || defined(USE_OZONE) || defined(OS_BSD) +       return gfx::mojom::GpuMemoryBufferPlatformHandle::NewNativePixmapHandle( +           std::move(handle.native_pixmap_handle)); + #else +@@ -160,7 +160,7 @@ bool StructTraits<gfx::mojom::GpuMemoryBufferHandleDat +       out->type = gfx::SHARED_MEMORY_BUFFER; +       out->region = std::move(platform_handle->get_shared_memory_handle()); +       return true; +-#if defined(OS_LINUX) || defined(USE_OZONE) ++#if defined(OS_LINUX) || defined(USE_OZONE) || defined(OS_BSD) +     case gfx::mojom::GpuMemoryBufferPlatformHandleDataView::Tag:: +         NATIVE_PIXMAP_HANDLE: +       out->type = gfx::NATIVE_PIXMAP; diff --git a/devel/electron6/files/patch-ui_gfx_mojo_buffer__types__struct__traits.h b/devel/electron6/files/patch-ui_gfx_mojo_buffer__types__struct__traits.h new file mode 100644 index 000000000000..cd1776fe990c --- /dev/null +++ b/devel/electron6/files/patch-ui_gfx_mojo_buffer__types__struct__traits.h @@ -0,0 +1,20 @@ +--- ui/gfx/mojo/buffer_types_struct_traits.h.orig	2019-09-10 11:14:39 UTC ++++ ui/gfx/mojo/buffer_types_struct_traits.h +@@ -188,7 +188,7 @@ struct StructTraits<gfx::mojom::GpuMemoryBufferIdDataV +   } + }; +  +-#if defined(OS_LINUX) || defined(USE_OZONE) ++#if defined(OS_LINUX) || defined(USE_OZONE) || defined(OS_BSD) + template <> + struct StructTraits<gfx::mojom::NativePixmapPlaneDataView, +                     gfx::NativePixmapPlane> { +@@ -232,7 +232,7 @@ struct StructTraits<gfx::mojom::NativePixmapHandleData +   static bool Read(gfx::mojom::NativePixmapHandleDataView data, +                    gfx::NativePixmapHandle* out); + }; +-#endif  // defined(OS_LINUX) || defined(USE_OZONE) ++#endif  // defined(OS_LINUX) || defined(USE_OZONE) || defined(OS_BSD) +  + template <> + struct StructTraits<gfx::mojom::GpuMemoryBufferHandleDataView, diff --git a/devel/electron6/files/patch-ui_gfx_native__pixmap__handle.cc b/devel/electron6/files/patch-ui_gfx_native__pixmap__handle.cc new file mode 100644 index 000000000000..66011b5a562e --- /dev/null +++ b/devel/electron6/files/patch-ui_gfx_native__pixmap__handle.cc @@ -0,0 +1,47 @@ +--- ui/gfx/native_pixmap_handle.cc.orig	2019-09-10 11:14:39 UTC ++++ ui/gfx/native_pixmap_handle.cc +@@ -8,7 +8,7 @@ +  + #include "build/build_config.h" +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + #include <drm_fourcc.h> + #include "base/posix/eintr_wrapper.h" + #endif +@@ -20,7 +20,7 @@ +  + namespace gfx { +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + static_assert(NativePixmapHandle::kNoModifier == DRM_FORMAT_MOD_INVALID, +               "gfx::NativePixmapHandle::kNoModifier should be an alias for" +               "DRM_FORMAT_MOD_INVALID"); +@@ -31,7 +31,7 @@ NativePixmapPlane::NativePixmapPlane() : stride(0), of + NativePixmapPlane::NativePixmapPlane(int stride, +                                      int offset, +                                      uint64_t size +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +                                      , +                                      base::ScopedFD fd + #elif defined(OS_FUCHSIA) +@@ -42,7 +42,7 @@ NativePixmapPlane::NativePixmapPlane(int stride, +     : stride(stride), +       offset(offset), +       size(size) +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +       , +       fd(std::move(fd)) + #elif defined(OS_FUCHSIA) +@@ -70,7 +70,7 @@ NativePixmapHandle& NativePixmapHandle::operator=(Nati + NativePixmapHandle CloneHandleForIPC(const NativePixmapHandle& handle) { +   NativePixmapHandle clone; +   for (auto& plane : handle.planes) { +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +     DCHECK(plane.fd.is_valid()); +     base::ScopedFD fd_dup(HANDLE_EINTR(dup(plane.fd.get()))); +     if (!fd_dup.is_valid()) { diff --git a/devel/electron6/files/patch-ui_gfx_native__pixmap__handle.h b/devel/electron6/files/patch-ui_gfx_native__pixmap__handle.h new file mode 100644 index 000000000000..4925f0162352 --- /dev/null +++ b/devel/electron6/files/patch-ui_gfx_native__pixmap__handle.h @@ -0,0 +1,29 @@ +--- ui/gfx/native_pixmap_handle.h.orig	2019-09-10 11:14:39 UTC ++++ ui/gfx/native_pixmap_handle.h +@@ -15,7 +15,7 @@ + #include "build/build_config.h" + #include "ui/gfx/gfx_export.h" +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + #include "base/files/scoped_file.h" + #endif +  +@@ -32,7 +32,7 @@ struct GFX_EXPORT NativePixmapPlane { +   NativePixmapPlane(int stride, +                     int offset, +                     uint64_t size +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +                     , +                     base::ScopedFD fd + #elif defined(OS_FUCHSIA) +@@ -53,7 +53,7 @@ struct GFX_EXPORT NativePixmapPlane { +   // This is necessary to map the buffers. +   uint64_t size; +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   // File descriptor for the underlying memory object (usually dmabuf). +   base::ScopedFD fd; + #elif defined(OS_FUCHSIA) diff --git a/devel/electron6/files/patch-ui_gfx_render__text.cc b/devel/electron6/files/patch-ui_gfx_render__text.cc new file mode 100644 index 000000000000..6a7e766d6615 --- /dev/null +++ b/devel/electron6/files/patch-ui_gfx_render__text.cc @@ -0,0 +1,46 @@ +--- ui/gfx/render_text.cc.orig	2019-09-10 11:14:39 UTC ++++ ui/gfx/render_text.cc +@@ -976,32 +976,33 @@ void RenderText::SetDisplayOffset(int horizontal_offse +   const int extra_content = GetContentWidth() - display_rect_.width(); +   const int cursor_width = cursor_enabled_ ? 1 : 0; +  +-  int min_offset = 0; +-  int max_offset = 0; ++  // avoid collisions with vm_map.h on FreeBSD --cmt ++  int _min_offset = 0; ++  int _max_offset = 0; +   if (extra_content > 0) { +     switch (GetCurrentHorizontalAlignment()) { +       case ALIGN_LEFT: +-        min_offset = -extra_content; ++        _min_offset = -extra_content; +         break; +       case ALIGN_RIGHT: +-        max_offset = extra_content; ++        _max_offset = extra_content; +         break; +       case ALIGN_CENTER: +         // The extra space reserved for cursor at the end of the text is ignored +         // when centering text. So, to calculate the valid range for offset, we +         // exclude that extra space, calculate the range, and add it back to the +         // range (if cursor is enabled). +-        min_offset = -(extra_content - cursor_width + 1) / 2 - cursor_width; +-        max_offset = (extra_content - cursor_width) / 2; ++        _min_offset = -(extra_content - cursor_width + 1) / 2 - cursor_width; ++        _max_offset = (extra_content - cursor_width) / 2; +         break; +       default: +         break; +     } +   } +-  if (horizontal_offset < min_offset) +-    horizontal_offset = min_offset; +-  else if (horizontal_offset > max_offset) +-    horizontal_offset = max_offset; ++  if (horizontal_offset < _min_offset) ++    horizontal_offset = _min_offset; ++  else if (horizontal_offset > _max_offset) ++    horizontal_offset = _max_offset; +  +   cached_bounds_and_offset_valid_ = true; +   display_offset_.set_x(horizontal_offset); diff --git a/devel/electron6/files/patch-ui_gl_BUILD.gn b/devel/electron6/files/patch-ui_gl_BUILD.gn new file mode 100644 index 000000000000..8be8cd51531a --- /dev/null +++ b/devel/electron6/files/patch-ui_gl_BUILD.gn @@ -0,0 +1,11 @@ +--- ui/gl/BUILD.gn.orig	2019-09-16 09:24:25 UTC ++++ ui/gl/BUILD.gn +@@ -215,7 +215,7 @@ jumbo_component("gl") { +       ] +     } +  +-    if (is_posix && !is_fuchsia && !is_mac) { ++    if (is_posix && !is_fuchsia && !is_mac && !is_bsd) { +       # Windows has USE_EGL but doesn't support base::FileDescriptor. +       # libsync isn't supported or needed on MacOSX. +       # Fuchsia is excluded due to a libsync dependency and because it's diff --git a/devel/electron6/files/patch-ui_gl_generate__bindings.py b/devel/electron6/files/patch-ui_gl_generate__bindings.py new file mode 100644 index 000000000000..f93036f8a4f6 --- /dev/null +++ b/devel/electron6/files/patch-ui_gl_generate__bindings.py @@ -0,0 +1,12 @@ +--- ui/gl/generate_bindings.py.orig	2019-09-10 11:14:39 UTC ++++ ui/gl/generate_bindings.py +@@ -2684,6 +2684,9 @@ GLX_FUNCTIONS = [ +   'arguments': +       'Display* dpy, GLXDrawable drawable, int32_t* numerator, ' +       'int32_t* denominator' }, ++{ 'return_type': '__GLXextFuncPtr', ++  'names': ['glXGetProcAddressARB'], ++  'arguments': 'const GLubyte* procName', }, + { 'return_type': 'void', +   'names': ['glXGetSelectedEvent'], +   'arguments': 'Display* dpy, GLXDrawable drawable, unsigned long* mask', }, diff --git a/devel/electron6/files/patch-ui_gl_gl__bindings__api__autogen__glx.h b/devel/electron6/files/patch-ui_gl_gl__bindings__api__autogen__glx.h new file mode 100644 index 000000000000..1efd39eb675d --- /dev/null +++ b/devel/electron6/files/patch-ui_gl_gl__bindings__api__autogen__glx.h @@ -0,0 +1,10 @@ +--- ui/gl/gl_bindings_api_autogen_glx.h.orig	2019-09-10 10:43:23 UTC ++++ ui/gl/gl_bindings_api_autogen_glx.h +@@ -88,6 +88,7 @@ bool glXGetMscRateOMLFn(Display* dpy, +                         GLXDrawable drawable, +                         int32_t* numerator, +                         int32_t* denominator) override; ++__GLXextFuncPtr glXGetProcAddressARBFn(const GLubyte* procName) override; + void glXGetSelectedEventFn(Display* dpy, +                            GLXDrawable drawable, +                            unsigned long* mask) override; diff --git a/devel/electron6/files/patch-ui_gl_gl__bindings__autogen__glx.cc b/devel/electron6/files/patch-ui_gl_gl__bindings__autogen__glx.cc new file mode 100644 index 000000000000..ed993fd7b654 --- /dev/null +++ b/devel/electron6/files/patch-ui_gl_gl__bindings__autogen__glx.cc @@ -0,0 +1,61 @@ +--- ui/gl/gl_bindings_autogen_glx.cc.orig	2019-09-10 10:43:23 UTC ++++ ui/gl/gl_bindings_autogen_glx.cc +@@ -115,6 +115,8 @@ void DriverGLX::InitializeExtensionBindings() { +  +   ext.b_GLX_ARB_create_context = +       gfx::HasExtension(extensions, "GLX_ARB_create_context"); ++  ext.b_GLX_ARB_get_proc_address = ++      gfx::HasExtension(extensions, "GLX_ARB_get_proc_address"); +   ext.b_GLX_EXT_swap_control = +       gfx::HasExtension(extensions, "GLX_EXT_swap_control"); +   ext.b_GLX_EXT_texture_from_pixmap = +@@ -145,6 +147,11 @@ void DriverGLX::InitializeExtensionBindings() { +             GetGLProcAddress("glXCreateContextAttribsARB")); +   } +  ++  if (ext.b_GLX_ARB_get_proc_address) { ++    fn.glXGetProcAddressARBFn = reinterpret_cast<glXGetProcAddressARBProc>( ++        GetGLProcAddress("glXGetProcAddressARB")); ++  } ++ +   if (ext.b_GLX_SGIX_fbconfig) { +     fn.glXGetFBConfigFromVisualSGIXFn = +         reinterpret_cast<glXGetFBConfigFromVisualSGIXProc>( +@@ -346,6 +353,10 @@ bool GLXApiBase::glXGetMscRateOMLFn(Display* dpy, +   return driver_->fn.glXGetMscRateOMLFn(dpy, drawable, numerator, denominator); + } +  ++__GLXextFuncPtr GLXApiBase::glXGetProcAddressARBFn(const GLubyte* procName) { ++  return driver_->fn.glXGetProcAddressARBFn(procName); ++} ++ + void GLXApiBase::glXGetSelectedEventFn(Display* dpy, +                                        GLXDrawable drawable, +                                        unsigned long* mask) { +@@ -646,6 +657,11 @@ bool TraceGLXApi::glXGetMscRateOMLFn(Display* dpy, +   return glx_api_->glXGetMscRateOMLFn(dpy, drawable, numerator, denominator); + } +  ++__GLXextFuncPtr TraceGLXApi::glXGetProcAddressARBFn(const GLubyte* procName) { ++  TRACE_EVENT_BINARY_EFFICIENT0("gpu", "TraceGLAPI::glXGetProcAddressARB") ++  return glx_api_->glXGetProcAddressARBFn(procName); ++} ++ + void TraceGLXApi::glXGetSelectedEventFn(Display* dpy, +                                         GLXDrawable drawable, +                                         unsigned long* mask) { +@@ -1068,6 +1084,14 @@ bool DebugGLXApi::glXGetMscRateOMLFn(Display* dpy, +                  << static_cast<const void*>(denominator) << ")"); +   bool result = +       glx_api_->glXGetMscRateOMLFn(dpy, drawable, numerator, denominator); ++  GL_SERVICE_LOG("GL_RESULT: " << result); ++  return result; ++} ++ ++__GLXextFuncPtr DebugGLXApi::glXGetProcAddressARBFn(const GLubyte* procName) { ++  GL_SERVICE_LOG("glXGetProcAddressARB" ++                 << "(" << static_cast<const void*>(procName) << ")"); ++  __GLXextFuncPtr result = glx_api_->glXGetProcAddressARBFn(procName); +   GL_SERVICE_LOG("GL_RESULT: " << result); +   return result; + } diff --git a/devel/electron6/files/patch-ui_gl_gl__bindings__autogen__glx.h b/devel/electron6/files/patch-ui_gl_gl__bindings__autogen__glx.h new file mode 100644 index 000000000000..053c6420cd32 --- /dev/null +++ b/devel/electron6/files/patch-ui_gl_gl__bindings__autogen__glx.h @@ -0,0 +1,43 @@ +--- ui/gl/gl_bindings_autogen_glx.h.orig	2019-09-10 10:43:23 UTC ++++ ui/gl/gl_bindings_autogen_glx.h +@@ -104,6 +104,8 @@ typedef bool(GL_BINDING_CALL* glXGetMscRateOMLProc)(Di +                                                     GLXDrawable drawable, +                                                     int32_t* numerator, +                                                     int32_t* denominator); ++typedef __GLXextFuncPtr(GL_BINDING_CALL* glXGetProcAddressARBProc)( ++    const GLubyte* procName); + typedef void(GL_BINDING_CALL* glXGetSelectedEventProc)(Display* dpy, +                                                        GLXDrawable drawable, +                                                        unsigned long* mask); +@@ -166,6 +168,7 @@ typedef void(GL_BINDING_CALL* glXWaitXProc)(void); +  + struct ExtensionsGLX { +   bool b_GLX_ARB_create_context; ++  bool b_GLX_ARB_get_proc_address; +   bool b_GLX_EXT_swap_control; +   bool b_GLX_EXT_texture_from_pixmap; +   bool b_GLX_MESA_copy_sub_buffer; +@@ -203,6 +206,7 @@ struct ProcsGLX { +   glXGetFBConfigFromVisualSGIXProc glXGetFBConfigFromVisualSGIXFn; +   glXGetFBConfigsProc glXGetFBConfigsFn; +   glXGetMscRateOMLProc glXGetMscRateOMLFn; ++  glXGetProcAddressARBProc glXGetProcAddressARBFn; +   glXGetSelectedEventProc glXGetSelectedEventFn; +   glXGetSyncValuesOMLProc glXGetSyncValuesOMLFn; +   glXGetVisualFromFBConfigProc glXGetVisualFromFBConfigFn; +@@ -310,6 +314,7 @@ class GL_EXPORT GLXApi { +                                   GLXDrawable drawable, +                                   int32_t* numerator, +                                   int32_t* denominator) = 0; ++  virtual __GLXextFuncPtr glXGetProcAddressARBFn(const GLubyte* procName) = 0; +   virtual void glXGetSelectedEventFn(Display* dpy, +                                      GLXDrawable drawable, +                                      unsigned long* mask) = 0; +@@ -394,6 +399,7 @@ class GL_EXPORT GLXApi { +   ::gl::g_current_glx_context->glXGetFBConfigFromVisualSGIXFn + #define glXGetFBConfigs ::gl::g_current_glx_context->glXGetFBConfigsFn + #define glXGetMscRateOML ::gl::g_current_glx_context->glXGetMscRateOMLFn ++#define glXGetProcAddressARB ::gl::g_current_glx_context->glXGetProcAddressARBFn + #define glXGetSelectedEvent ::gl::g_current_glx_context->glXGetSelectedEventFn + #define glXGetSyncValuesOML ::gl::g_current_glx_context->glXGetSyncValuesOMLFn + #define glXGetVisualFromFBConfig \ diff --git a/devel/electron6/files/patch-ui_gl_gl__fence.cc b/devel/electron6/files/patch-ui_gl_gl__fence.cc new file mode 100644 index 000000000000..e3d5c412fda8 --- /dev/null +++ b/devel/electron6/files/patch-ui_gl_gl__fence.cc @@ -0,0 +1,11 @@ +--- ui/gl/gl_fence.cc.orig	2019-09-10 11:14:39 UTC ++++ ui/gl/gl_fence.cc +@@ -18,7 +18,7 @@ + #include "ui/gl/gl_fence_apple.h" + #endif +  +-#if defined(USE_EGL) && defined(OS_POSIX) && !defined(OS_MACOSX) ++#if defined(USE_EGL) && defined(OS_POSIX) && !defined(OS_MACOSX) && !defined(OS_FREEBSD) + #define USE_GL_FENCE_ANDROID_NATIVE_FENCE_SYNC + #include "ui/gl/gl_fence_android_native_fence_sync.h" + #include "ui/gl/gl_surface_egl.h" diff --git a/devel/electron6/files/patch-ui_gl_gl__surface__glx.cc b/devel/electron6/files/patch-ui_gl_gl__surface__glx.cc new file mode 100644 index 000000000000..1bebd46a50a6 --- /dev/null +++ b/devel/electron6/files/patch-ui_gl_gl__surface__glx.cc @@ -0,0 +1,14 @@ +--- ui/gl/gl_surface_glx.cc.orig	2019-09-10 11:14:39 UTC ++++ ui/gl/gl_surface_glx.cc +@@ -431,7 +431,10 @@ bool GLSurfaceGLX::InitializeOneOff() { +     return false; +   } +  +-  const auto& visual_info = gl::GLVisualPickerGLX::GetInstance()->rgba_visual(); ++  const auto& visual_info =  ++    ui::IsCompositingManagerPresent() ++      ? gl::GLVisualPickerGLX::GetInstance()->rgba_visual() ++      : gl::GLVisualPickerGLX::GetInstance()->system_visual(); +   g_visual = visual_info.visual; +   g_depth = visual_info.depth; +   g_colormap = diff --git a/devel/electron6/files/patch-ui_gl_sync__control__vsync__provider.cc b/devel/electron6/files/patch-ui_gl_sync__control__vsync__provider.cc new file mode 100644 index 000000000000..b1edf23517ed --- /dev/null +++ b/devel/electron6/files/patch-ui_gl_sync__control__vsync__provider.cc @@ -0,0 +1,43 @@ +--- ui/gl/sync_control_vsync_provider.cc.orig	2019-09-10 10:43:23 UTC ++++ ui/gl/sync_control_vsync_provider.cc +@@ -11,7 +11,7 @@ + #include "base/trace_event/trace_event.h" + #include "build/build_config.h" +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) + // These constants define a reasonable range for a calculated refresh interval. + // Calculating refreshes out of this range will be considered a fatal error. + const int64_t kMinVsyncIntervalUs = base::Time::kMicrosecondsPerSecond / 400; +@@ -26,7 +26,7 @@ const double kRelativeIntervalDifferenceThreshold = 0. + namespace gl { +  + SyncControlVSyncProvider::SyncControlVSyncProvider() : gfx::VSyncProvider() { +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   // On platforms where we can't get an accurate reading on the refresh +   // rate we fall back to the assumption that we're displaying 60 frames +   // per second. +@@ -48,7 +48,7 @@ bool SyncControlVSyncProvider::GetVSyncParametersIfAva +     base::TimeTicks* timebase_out, +     base::TimeDelta* interval_out) { +   TRACE_EVENT0("gpu", "SyncControlVSyncProvider::GetVSyncParameters"); +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   // The actual clock used for the system time returned by glXGetSyncValuesOML +   // is unspecified. In practice, the clock used is likely to be either +   // CLOCK_REALTIME or CLOCK_MONOTONIC, so we compare the returned time to the +@@ -156,11 +156,11 @@ bool SyncControlVSyncProvider::GetVSyncParametersIfAva +   return true; + #else +   return false; +-#endif  // defined(OS_LINUX) ++#endif  // defined(OS_LINUX) || defined(OS_BSD) + } +  + bool SyncControlVSyncProvider::SupportGetVSyncParametersIfAvailable() const { +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   return true; + #else +   return false; diff --git a/devel/electron6/files/patch-ui_gl_sync__control__vsync__provider.h b/devel/electron6/files/patch-ui_gl_sync__control__vsync__provider.h new file mode 100644 index 000000000000..7442bcaf6ca8 --- /dev/null +++ b/devel/electron6/files/patch-ui_gl_sync__control__vsync__provider.h @@ -0,0 +1,34 @@ +--- ui/gl/sync_control_vsync_provider.h.orig	2019-09-10 10:43:23 UTC ++++ ui/gl/sync_control_vsync_provider.h +@@ -26,11 +26,11 @@ class SyncControlVSyncProvider : public gfx::VSyncProv +   bool SupportGetVSyncParametersIfAvailable() const override; +  +   static constexpr bool IsSupported() { +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +     return true; + #else +     return false; +-#endif  // defined(OS_LINUX) ++#endif  // defined(OS_LINUX) || defined(OS_BSD) +   } +  +  protected: +@@ -41,7 +41,7 @@ class SyncControlVSyncProvider : public gfx::VSyncProv +   virtual bool GetMscRate(int32_t* numerator, int32_t* denominator) = 0; +  +  private: +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   base::TimeTicks last_timebase_; +   uint64_t last_media_stream_counter_ = 0; +   base::TimeDelta last_good_interval_; +@@ -52,7 +52,7 @@ class SyncControlVSyncProvider : public gfx::VSyncProv +   // from configuration change (monitor reconfiguration, moving windows +   // between monitors, suspend and resume, etc.). +   base::queue<base::TimeDelta> last_computed_intervals_; +-#endif  // defined(OS_LINUX) ++#endif  // defined(OS_LINUX) || defined(OS_BSD) +  +   DISALLOW_COPY_AND_ASSIGN(SyncControlVSyncProvider); + }; diff --git a/devel/electron6/files/patch-ui_message__center_public_cpp_message__center__constants.h b/devel/electron6/files/patch-ui_message__center_public_cpp_message__center__constants.h new file mode 100644 index 000000000000..7b51854976da --- /dev/null +++ b/devel/electron6/files/patch-ui_message__center_public_cpp_message__center__constants.h @@ -0,0 +1,11 @@ +--- ui/message_center/public/cpp/message_center_constants.h.orig	2019-09-10 10:43:23 UTC ++++ ui/message_center/public/cpp/message_center_constants.h +@@ -105,7 +105,7 @@ const int kButtonHorizontalPadding = 16;   // In DIPs. + const int kButtonIconTopPadding = 11;      // In DIPs. + const int kButtonIconToTitlePadding = 16;  // In DIPs. +  +-#if !defined(OS_LINUX) || defined(USE_AURA) ++#if (!defined(OS_LINUX) && !defined(OS_BSD)) || defined(USE_AURA) + constexpr SkColor kButtonSeparatorColor = SkColorSetRGB(234, 234, 234); + constexpr SkColor kHoveredButtonBackgroundColor = SkColorSetRGB(243, 243, 243); + #endif diff --git a/devel/electron6/files/patch-ui_message__center_views_message__popup__view.cc b/devel/electron6/files/patch-ui_message__center_views_message__popup__view.cc new file mode 100644 index 000000000000..079de141b563 --- /dev/null +++ b/devel/electron6/files/patch-ui_message__center_views_message__popup__view.cc @@ -0,0 +1,11 @@ +--- ui/message_center/views/message_popup_view.cc.orig	2019-09-10 11:14:39 UTC ++++ ui/message_center/views/message_popup_view.cc +@@ -103,7 +103,7 @@ void MessagePopupView::AutoCollapse() { + void MessagePopupView::Show() { +   views::Widget::InitParams params(views::Widget::InitParams::TYPE_POPUP); +   params.keep_on_top = true; +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_BSD) +   // Make the widget explicitly activatable as TYPE_POPUP is not activatable by +   // default but we need focus for the inline reply textarea. +   params.activatable = views::Widget::InitParams::ACTIVATABLE_YES; diff --git a/devel/electron6/files/patch-ui_native__theme_native__theme.h b/devel/electron6/files/patch-ui_native__theme_native__theme.h new file mode 100644 index 000000000000..4e89d3c0d190 --- /dev/null +++ b/devel/electron6/files/patch-ui_native__theme_native__theme.h @@ -0,0 +1,11 @@ +--- ui/native_theme/native_theme.h.orig	2019-09-10 11:14:39 UTC ++++ ui/native_theme/native_theme.h +@@ -48,7 +48,7 @@ class NATIVE_THEME_EXPORT NativeTheme { +   // The part to be painted / sized. +   enum Part { +     kCheckbox, +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS) +     kFrameTopArea, + #endif +     kInnerSpinButton, diff --git a/devel/electron6/files/patch-ui_native__theme_native__theme__base.cc b/devel/electron6/files/patch-ui_native__theme_native__theme__base.cc new file mode 100644 index 000000000000..21e53f527051 --- /dev/null +++ b/devel/electron6/files/patch-ui_native__theme_native__theme__base.cc @@ -0,0 +1,11 @@ +--- ui/native_theme/native_theme_base.cc.orig	2019-09-10 11:14:39 UTC ++++ ui/native_theme/native_theme_base.cc +@@ -172,7 +172,7 @@ void NativeThemeBase::Paint(cc::PaintCanvas* canvas, +     case kCheckbox: +       PaintCheckbox(canvas, state, rect, extra.button); +       break; +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS) +     case kFrameTopArea: +       PaintFrameTopArea(canvas, state, rect, extra.frame_top_area); +       break; diff --git a/devel/electron6/files/patch-ui_strings_app__locale__settings.grd b/devel/electron6/files/patch-ui_strings_app__locale__settings.grd new file mode 100644 index 000000000000..c57ead4e5c06 --- /dev/null +++ b/devel/electron6/files/patch-ui_strings_app__locale__settings.grd @@ -0,0 +1,11 @@ +--- ui/strings/app_locale_settings.grd.orig	2019-09-10 10:43:23 UTC ++++ ui/strings/app_locale_settings.grd +@@ -187,7 +187,7 @@ +           75% +         </message> +       </if> +-      <if expr="(is_linux or is_android or is_bsd) and not chromeos"> ++      <if expr="is_posix and not chromeos"> +         <!-- The font used in Web UI (e.g. History). Note that these are only +              backups. We try to use the system font if possible. --> +         <message name="IDS_WEB_FONT_FAMILY" use_name_for_id="true"> diff --git a/devel/electron6/files/patch-ui_views_bubble_bubble__dialog__delegate__view.cc b/devel/electron6/files/patch-ui_views_bubble_bubble__dialog__delegate__view.cc new file mode 100644 index 000000000000..45643a5bc2c0 --- /dev/null +++ b/devel/electron6/files/patch-ui_views_bubble_bubble__dialog__delegate__view.cc @@ -0,0 +1,11 @@ +--- ui/views/bubble/bubble_dialog_delegate_view.cc.orig	2019-09-10 11:14:40 UTC ++++ ui/views/bubble/bubble_dialog_delegate_view.cc +@@ -135,7 +135,7 @@ Widget* BubbleDialogDelegateView::CreateBubble( +   bubble_delegate->SetAnchorView(bubble_delegate->GetAnchorView()); +   Widget* bubble_widget = CreateBubbleWidget(bubble_delegate); +  +-#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_MACOSX) ++#if (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_MACOSX) || defined(OS_BSD) +   // Linux clips bubble windows that extend outside their parent window bounds. +   // Mac never adjusts. +   bubble_delegate->set_adjust_if_offscreen(false); diff --git a/devel/electron6/files/patch-ui_views_controls_label.cc b/devel/electron6/files/patch-ui_views_controls_label.cc new file mode 100644 index 000000000000..62fb063f7e96 --- /dev/null +++ b/devel/electron6/files/patch-ui_views_controls_label.cc @@ -0,0 +1,20 @@ +--- ui/views/controls/label.cc.orig	2019-09-10 11:14:40 UTC ++++ ui/views/controls/label.cc +@@ -548,7 +548,7 @@ bool Label::OnMousePressed(const ui::MouseEvent& event +     GetFocusManager()->SetFocusedView(this); +   } +  +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS) +   if (event.IsOnlyMiddleMouseButton() && GetFocusManager() && !had_focus) +     GetFocusManager()->SetFocusedView(this); + #endif +@@ -733,7 +733,7 @@ bool Label::PasteSelectionClipboard() { + } +  + void Label::UpdateSelectionClipboard() { +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS) +   if (!obscured()) { +     ui::ScopedClipboardWriter(ui::CLIPBOARD_TYPE_SELECTION) +         .WriteText(GetSelectedText()); diff --git a/devel/electron6/files/patch-ui_views_controls_textfield_textfield.cc b/devel/electron6/files/patch-ui_views_controls_textfield_textfield.cc new file mode 100644 index 000000000000..65eb1c0d1fad --- /dev/null +++ b/devel/electron6/files/patch-ui_views_controls_textfield_textfield.cc @@ -0,0 +1,73 @@ +--- ui/views/controls/textfield/textfield.cc.orig	2019-09-10 11:14:40 UTC ++++ ui/views/controls/textfield/textfield.cc +@@ -62,7 +62,7 @@ + #include "base/win/win_util.h" + #endif +  +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS) + #include "base/strings/utf_string_conversions.h" + #include "ui/base/ime/linux/text_edit_command_auralinux.h" + #include "ui/base/ime/linux/text_edit_key_bindings_delegate_auralinux.h" +@@ -165,14 +165,14 @@ ui::TextEditCommand GetCommandForKeyEvent(const ui::Ke +     case ui::VKEY_BACK: +       if (!control) +         return ui::TextEditCommand::DELETE_BACKWARD; +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +       // Only erase by line break on Linux and ChromeOS. +       if (shift) +         return ui::TextEditCommand::DELETE_TO_BEGINNING_OF_LINE; + #endif +       return ui::TextEditCommand::DELETE_WORD_BACKWARD; +     case ui::VKEY_DELETE: +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +       // Only erase by line break on Linux and ChromeOS. +       if (shift && control) +         return ui::TextEditCommand::DELETE_TO_END_OF_LINE; +@@ -240,7 +240,7 @@ bool IsControlKeyModifier(int flags) { + // Control-modified key combination, but we cannot extend it to other platforms + // as Control has different meanings and behaviors. + // https://crrev.com/2580483002/#msg46 +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   return flags & ui::EF_CONTROL_DOWN; + #else +   return false; +@@ -675,7 +675,7 @@ bool Textfield::OnMousePressed(const ui::MouseEvent& e + #endif +   } +  +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS) +   if (!handled && !had_focus && event.IsOnlyMiddleMouseButton()) +     RequestFocusWithPointer(ui::EventPointerType::POINTER_TYPE_MOUSE); + #endif +@@ -721,7 +721,7 @@ bool Textfield::OnKeyPressed(const ui::KeyEvent& event +   if (!textfield) +     return handled; +  +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS) +   ui::TextEditKeyBindingsDelegateAuraLinux* delegate = +       ui::GetTextEditKeyBindingsDelegate(); +   std::vector<ui::TextEditCommandAuraLinux> commands; +@@ -890,7 +890,7 @@ void Textfield::AboutToRequestFocusFromTabTraversal(bo + } +  + bool Textfield::SkipDefaultKeyEventProcessing(const ui::KeyEvent& event) { +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS) +   // Skip any accelerator handling that conflicts with custom keybindings. +   ui::TextEditKeyBindingsDelegateAuraLinux* delegate = +       ui::GetTextEditKeyBindingsDelegate(); +@@ -2109,7 +2109,7 @@ bool Textfield::PasteSelectionClipboard() { + } +  + void Textfield::UpdateSelectionClipboard() { +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS) +   if (text_input_type_ != ui::TEXT_INPUT_TYPE_PASSWORD) { +     ui::ScopedClipboardWriter(ui::CLIPBOARD_TYPE_SELECTION) +         .WriteText(GetSelectedText()); diff --git a/devel/electron6/files/patch-ui_views_corewm_tooltip__aura.cc b/devel/electron6/files/patch-ui_views_corewm_tooltip__aura.cc new file mode 100644 index 000000000000..63a1b2a4defd --- /dev/null +++ b/devel/electron6/files/patch-ui_views_corewm_tooltip__aura.cc @@ -0,0 +1,11 @@ +--- ui/views/corewm/tooltip_aura.cc.orig	2019-09-10 11:14:40 UTC ++++ ui/views/corewm/tooltip_aura.cc +@@ -35,7 +35,7 @@ constexpr int kCursorOffsetY = 15; +  + // TODO(varkha): Update if native widget can be transparent on Linux. + bool CanUseTranslucentTooltipWidget() { +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS) +   return false; + #else +   return true; diff --git a/devel/electron6/files/patch-ui_views_examples_widget__example.cc b/devel/electron6/files/patch-ui_views_examples_widget__example.cc new file mode 100644 index 000000000000..26ab8af44e5b --- /dev/null +++ b/devel/electron6/files/patch-ui_views_examples_widget__example.cc @@ -0,0 +1,11 @@ +--- ui/views/examples/widget_example.cc.orig	2019-09-10 11:14:40 UTC ++++ ui/views/examples/widget_example.cc +@@ -80,7 +80,7 @@ void WidgetExample::CreateExampleView(View* container) +   BuildButton(container, "Popup widget", POPUP); +   BuildButton(container, "Dialog widget", DIALOG); +   BuildButton(container, "Modal Dialog", MODAL_DIALOG); +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   // Windows does not support TYPE_CONTROL top-level widgets. +   BuildButton(container, "Child widget", CHILD); + #endif diff --git a/devel/electron6/files/patch-ui_views_selection__controller.cc b/devel/electron6/files/patch-ui_views_selection__controller.cc new file mode 100644 index 000000000000..7924962bedf8 --- /dev/null +++ b/devel/electron6/files/patch-ui_views_selection__controller.cc @@ -0,0 +1,11 @@ +--- ui/views/selection_controller.cc.orig	2019-09-10 10:43:23 UTC ++++ ui/views/selection_controller.cc +@@ -21,7 +21,7 @@ SelectionController::SelectionController(SelectionCont +       delegate_(delegate), +       handles_selection_clipboard_(false) { + // On Linux, update the selection clipboard on a text selection. +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS) +   set_handles_selection_clipboard(true); + #endif +  diff --git a/devel/electron6/files/patch-ui_views_style_platform__style.cc b/devel/electron6/files/patch-ui_views_style_platform__style.cc new file mode 100644 index 000000000000..b0ef3640e7b9 --- /dev/null +++ b/devel/electron6/files/patch-ui_views_style_platform__style.cc @@ -0,0 +1,11 @@ +--- ui/views/style/platform_style.cc.orig	2019-09-10 11:14:40 UTC ++++ ui/views/style/platform_style.cc +@@ -17,7 +17,7 @@ +  + #if defined(OS_CHROMEOS) + #include "ui/views/controls/scrollbar/overlay_scroll_bar.h" +-#elif defined(OS_LINUX) ++#elif defined(OS_LINUX) || defined(OS_BSD) + #define DESKTOP_LINUX + #endif +  diff --git a/devel/electron6/files/patch-ui_views_views__delegate.cc b/devel/electron6/files/patch-ui_views_views__delegate.cc new file mode 100644 index 000000000000..6b8ccfa91db4 --- /dev/null +++ b/devel/electron6/files/patch-ui_views_views__delegate.cc @@ -0,0 +1,11 @@ +--- ui/views/views_delegate.cc.orig	2019-09-10 10:43:23 UTC ++++ ui/views/views_delegate.cc +@@ -85,7 +85,7 @@ HICON ViewsDelegate::GetSmallWindowIcon() const { + bool ViewsDelegate::IsWindowInMetro(gfx::NativeWindow window) const { +   return false; + } +-#elif defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#elif (defined(OS_LINUX) && !defined(OS_CHROMEOS)) || defined(OS_FREEBSD) + gfx::ImageSkia* ViewsDelegate::GetDefaultWindowIcon() const { +   return nullptr; + } diff --git a/devel/electron6/files/patch-ui_views_views__delegate.h b/devel/electron6/files/patch-ui_views_views__delegate.h new file mode 100644 index 000000000000..afd71b19812c --- /dev/null +++ b/devel/electron6/files/patch-ui_views_views__delegate.h @@ -0,0 +1,11 @@ +--- ui/views/views_delegate.h.orig	2019-09-10 11:14:40 UTC ++++ ui/views/views_delegate.h +@@ -130,7 +130,7 @@ class VIEWS_EXPORT ViewsDelegate { +   // Returns true if the window passed in is in the Windows 8 metro +   // environment. +   virtual bool IsWindowInMetro(gfx::NativeWindow window) const; +-#elif defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#elif defined(OS_LINUX) && !defined(OS_CHROMEOS) || defined(OS_FREEBSD) +   virtual gfx::ImageSkia* GetDefaultWindowIcon() const; + #endif +  diff --git a/devel/electron6/files/patch-ui_views_widget_desktop__aura_desktop__window__tree__host__platform.cc b/devel/electron6/files/patch-ui_views_widget_desktop__aura_desktop__window__tree__host__platform.cc new file mode 100644 index 000000000000..1a1a3b83ef48 --- /dev/null +++ b/devel/electron6/files/patch-ui_views_widget_desktop__aura_desktop__window__tree__host__platform.cc @@ -0,0 +1,20 @@ +--- ui/views/widget/desktop_aura/desktop_window_tree_host_platform.cc.orig	2019-09-10 11:14:40 UTC ++++ ui/views/widget/desktop_aura/desktop_window_tree_host_platform.cc +@@ -102,7 +102,7 @@ void DesktopWindowTreeHostPlatform::OnNativeWidgetCrea +     const Widget::InitParams& params) { +   native_widget_delegate_->OnNativeWidgetCreated(); +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   // Setup a non_client_window_event_filter, which handles resize/move, double +   // click and other events. +   DCHECK(!non_client_window_event_filter_); +@@ -552,7 +552,7 @@ void DesktopWindowTreeHostPlatform::Relayout() { + } +  + void DesktopWindowTreeHostPlatform::RemoveNonClientEventFilter() { +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   if (!non_client_window_event_filter_) +     return; +  diff --git a/devel/electron6/files/patch-ui_views_widget_desktop__aura_desktop__window__tree__host__platform.h b/devel/electron6/files/patch-ui_views_widget_desktop__aura_desktop__window__tree__host__platform.h new file mode 100644 index 000000000000..66cc17c1800a --- /dev/null +++ b/devel/electron6/files/patch-ui_views_widget_desktop__aura_desktop__window__tree__host__platform.h @@ -0,0 +1,11 @@ +--- ui/views/widget/desktop_aura/desktop_window_tree_host_platform.h.orig	2019-09-10 11:14:40 UTC ++++ ui/views/widget/desktop_aura/desktop_window_tree_host_platform.h +@@ -119,7 +119,7 @@ class VIEWS_EXPORT DesktopWindowTreeHostPlatform +  +   bool is_active_ = false; +  +-#if defined(OS_LINUX) ++#if defined(OS_LINUX) || defined(OS_BSD) +   // A handler for events intended for non client area. +   std::unique_ptr<WindowEventFilter> non_client_window_event_filter_; + #endif diff --git a/devel/electron6/files/patch-ui_views_widget_desktop__aura_desktop__window__tree__host__x11.cc b/devel/electron6/files/patch-ui_views_widget_desktop__aura_desktop__window__tree__host__x11.cc new file mode 100644 index 000000000000..69b064ab141b --- /dev/null +++ b/devel/electron6/files/patch-ui_views_widget_desktop__aura_desktop__window__tree__host__x11.cc @@ -0,0 +1,32 @@ +--- ui/views/widget/desktop_aura/desktop_window_tree_host_x11.cc.orig	2019-09-10 11:14:40 UTC ++++ ui/views/widget/desktop_aura/desktop_window_tree_host_x11.cc +@@ -1463,24 +1463,15 @@ void DesktopWindowTreeHostX11::InitX11Window( +   if (override_redirect_) +     attribute_mask |= CWOverrideRedirect; +  +-  bool enable_transparent_visuals; +-  switch (params.opacity) { +-    case Widget::InitParams::OPAQUE_WINDOW: +-      enable_transparent_visuals = false; +-      break; +-    case Widget::InitParams::TRANSLUCENT_WINDOW: +-      enable_transparent_visuals = true; +-      break; +-    case Widget::InitParams::INFER_OPACITY: +-    default: +-      enable_transparent_visuals = params.type == Widget::InitParams::TYPE_DRAG; +-  } +- +   Visual* visual = CopyFromParent; +   int depth = CopyFromParent; +   Colormap colormap = CopyFromParent; ++ ++  // GLSurfaceGLX always create child window with alpha channel. If the parent ++  // window doesn't have alpha channel, it causes flash, so always request argb ++  // visual. +   ui::XVisualManager::GetInstance()->ChooseVisualForWindow( +-      enable_transparent_visuals, &visual, &depth, &colormap, ++      true /* want_argb_visual */, &visual, &depth, &colormap, +       &use_argb_visual_); +  +   if (colormap != CopyFromParent) { diff --git a/devel/electron6/files/patch-ui_views_window_custom__frame__view.cc b/devel/electron6/files/patch-ui_views_window_custom__frame__view.cc new file mode 100644 index 000000000000..8b8dd6c5ca7a --- /dev/null +++ b/devel/electron6/files/patch-ui_views_window_custom__frame__view.cc @@ -0,0 +1,11 @@ +--- ui/views/window/custom_frame_view.cc.orig	2019-09-10 11:14:40 UTC ++++ ui/views/window/custom_frame_view.cc +@@ -291,7 +291,7 @@ int CustomFrameView::NonClientTopBorderHeight() const  + int CustomFrameView::CaptionButtonY() const { +   // Maximized buttons start at window top so that even if their images aren't +   // drawn flush with the screen edge, they still obey Fitts' Law. +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if defined(OS_LINUX) && !defined(OS_CHROMEOS) || defined(OS_BSD) +   return FrameBorderThickness(); + #else +   return frame_->IsMaximized() ? FrameBorderThickness() : kFrameShadowThickness; diff --git a/devel/electron6/files/patch-ui_views_window_dialog__delegate.cc b/devel/electron6/files/patch-ui_views_window_dialog__delegate.cc new file mode 100644 index 000000000000..b7da6f031a24 --- /dev/null +++ b/devel/electron6/files/patch-ui_views_window_dialog__delegate.cc @@ -0,0 +1,11 @@ +--- ui/views/window/dialog_delegate.cc.orig	2019-09-10 11:14:40 UTC ++++ ui/views/window/dialog_delegate.cc +@@ -61,7 +61,7 @@ Widget::InitParams DialogDelegate::GetDialogWidgetInit +   params.bounds = bounds; +   DialogDelegate* dialog = delegate->AsDialogDelegate(); +  +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS) +   // The new style doesn't support unparented dialogs on Linux desktop. +   if (dialog) +     dialog->supports_custom_frame_ &= parent != nullptr; diff --git a/devel/electron6/files/patch-ui_views_window_frame__background.cc b/devel/electron6/files/patch-ui_views_window_frame__background.cc new file mode 100644 index 000000000000..0772e18b200a --- /dev/null +++ b/devel/electron6/files/patch-ui_views_window_frame__background.cc @@ -0,0 +1,11 @@ +--- ui/views/window/frame_background.cc.orig	2019-09-10 10:43:23 UTC ++++ ui/views/window/frame_background.cc +@@ -106,7 +106,7 @@ void FrameBackground::PaintMaximized(gfx::Canvas* canv +                                      const View* view) const { + // Fill the top with the frame color first so we have a constant background + // for areas not covered by the theme image. +-#if defined(OS_LINUX) && !defined(OS_CHROMEOS) ++#if (defined(OS_LINUX) || defined(OS_BSD)) && !defined(OS_CHROMEOS) +   auto* native_theme = view->GetNativeTheme(); +   ui::NativeTheme::ExtraParams params; +   params.frame_top_area.use_custom_frame = use_custom_frame_; diff --git a/devel/electron6/files/patch-ui_webui_resources_js_cr.js b/devel/electron6/files/patch-ui_webui_resources_js_cr.js new file mode 100644 index 000000000000..bdf12fb5c43b --- /dev/null +++ b/devel/electron6/files/patch-ui_webui_resources_js_cr.js @@ -0,0 +1,14 @@ +--- ui/webui/resources/js/cr.js.orig	2019-09-10 11:14:40 UTC ++++ ui/webui/resources/js/cr.js +@@ -425,6 +425,11 @@ var cr = cr || function(global) { +     get doc() { +       return document; +     }, ++     ++    /** Whether this is on *BSD. */ ++    get isBSD() { ++      return /BSD/.test(navigator.userAgent); ++    }, +  +     /** Whether we are using a Mac or not. */ +     get isMac() { diff --git a/devel/electron6/files/patch-ui_webui_resources_js_icon.js b/devel/electron6/files/patch-ui_webui_resources_js_icon.js new file mode 100644 index 000000000000..67a7df90fb63 --- /dev/null +++ b/devel/electron6/files/patch-ui_webui_resources_js_icon.js @@ -0,0 +1,11 @@ +--- ui/webui/resources/js/icon.js.orig	2019-09-10 11:14:40 UTC ++++ ui/webui/resources/js/icon.js +@@ -14,7 +14,7 @@ cr.define('cr.icon', function() { +       // supports SCALE_FACTOR_100P on all non-iOS platforms. +       supportedScaleFactors.push(1); +     } +-    if (cr.isMac || cr.isChromeOS || cr.isWindows || cr.isLinux) { ++    if (cr.isMac || cr.isChromeOS || cr.isWindows || cr.isLinux || cr.isBSD) { +       // All desktop platforms support zooming which also updates the renderer's +       // device scale factors (a.k.a devicePixelRatio), and these platforms have +       // high DPI assets for 2x.  Let the renderer pick the closest image for diff --git a/devel/electron6/files/patch-v8_BUILD.gn b/devel/electron6/files/patch-v8_BUILD.gn new file mode 100644 index 000000000000..3174c396bf0a --- /dev/null +++ b/devel/electron6/files/patch-v8_BUILD.gn @@ -0,0 +1,32 @@ +--- v8/BUILD.gn.orig	2019-09-16 09:24:25 UTC ++++ v8/BUILD.gn +@@ -3545,7 +3545,7 @@ v8_component("v8_libbase") { +     } +   } +  +-  if (is_linux) { ++  if (is_linux && !is_bsd) { +     sources += [ +       "src/base/debug/stack_trace_posix.cc", +       "src/base/platform/platform-linux.cc", +@@ -3565,6 +3565,12 @@ v8_component("v8_libbase") { +       "dl", +       "rt", +     ] ++  } else if (is_bsd) { ++    sources += [ ++      "src/base/debug/stack_trace_posix.cc", ++      "src/base/platform/platform-freebsd.cc", ++    ] ++    libs = [ "rt", "execinfo" ] +   } else if (is_android) { +     if (current_toolchain == host_toolchain) { +       libs = [ +@@ -3820,6 +3826,7 @@ if (v8_use_snapshot && current_toolchain == v8_snapsho +       "src/snapshot/embedded/platform-embedded-file-writer-win.h", +       "src/snapshot/mksnapshot.cc", +     ] ++    libs = ["execinfo"] +  +     configs = [ ":internal_config" ] +  diff --git a/devel/electron6/files/patch-v8_src_api_api.cc b/devel/electron6/files/patch-v8_src_api_api.cc new file mode 100644 index 000000000000..19569e953796 --- /dev/null +++ b/devel/electron6/files/patch-v8_src_api_api.cc @@ -0,0 +1,20 @@ +--- v8/src/api/api.cc.orig	2019-09-16 09:24:25 UTC ++++ v8/src/api/api.cc +@@ -110,7 +110,7 @@ + #include "src/wasm/wasm-result.h" + #include "src/wasm/wasm-serialization.h" +  +-#if V8_OS_LINUX || V8_OS_MACOSX ++#if V8_OS_LINUX || V8_OS_MACOSX || V8_OS_OPENBSD || V8_OS_FREEBSD + #include <signal.h> + #include "include/v8-wasm-trap-handler-posix.h" + #include "src/trap-handler/handler-inside-posix.h" +@@ -5577,7 +5577,7 @@ bool v8::V8::Initialize() { +   return true; + } +  +-#if V8_OS_LINUX || V8_OS_MACOSX ++#if V8_OS_LINUX || V8_OS_MACOSX || V8_OS_OPENBSD || V8_OS_FREEBSD + bool TryHandleWebAssemblyTrapPosix(int sig_code, siginfo_t* info, +                                    void* context) { + #if V8_TARGET_ARCH_X64 && !V8_OS_ANDROID diff --git a/devel/electron6/files/patch-v8_src_base_cpu.cc b/devel/electron6/files/patch-v8_src_base_cpu.cc new file mode 100644 index 000000000000..3b1bef3c222d --- /dev/null +++ b/devel/electron6/files/patch-v8_src_base_cpu.cc @@ -0,0 +1,18 @@ +--- v8/src/base/cpu.cc.orig	2019-09-10 10:51:03 UTC ++++ v8/src/base/cpu.cc +@@ -424,6 +424,7 @@ CPU::CPU() +  + #if V8_OS_LINUX +  ++#if V8_OS_LINUX +   CPUInfo cpu_info; +  +   // Extract implementor from the "CPU implementer" field. +@@ -457,6 +458,7 @@ CPU::CPU() +     } +     delete[] part; +   } ++#endif +  +   // Extract architecture from the "CPU Architecture" field. +   // The list is well-known, unlike the the output of diff --git a/devel/electron6/files/patch-v8_src_base_platform_platform-posix.cc b/devel/electron6/files/patch-v8_src_base_platform_platform-posix.cc new file mode 100644 index 000000000000..e8a22626aa12 --- /dev/null +++ b/devel/electron6/files/patch-v8_src_base_platform_platform-posix.cc @@ -0,0 +1,24 @@ +--- v8/src/base/platform/platform-posix.cc.orig	2019-09-10 11:17:48 UTC ++++ v8/src/base/platform/platform-posix.cc +@@ -376,7 +376,7 @@ bool OS::DiscardSystemPages(void* address, size_t size +  + // static + bool OS::HasLazyCommits() { +-#if V8_OS_AIX || V8_OS_LINUX || V8_OS_MACOSX ++#if V8_OS_AIX || V8_OS_LINUX || V8_OS_MACOSX || V8_OS_FREEBSD +   return true; + #else +   // TODO(bbudge) Return true for all POSIX platforms. +@@ -507,6 +507,12 @@ int OS::GetCurrentThreadId() { +   return static_cast<int>(syscall(__NR_gettid)); + #elif V8_OS_ANDROID +   return static_cast<int>(gettid()); ++#elif V8_OS_DRAGONFLYBSD || defined(__DragonFly__) ++  return static_cast<int>(lwp_gettid()); ++#elif V8_OS_FREEBSD ++  return static_cast<int>(pthread_getthreadid_np()); ++#elif V8_OS_NETBSD ++  return static_cast<int>(_lwp_self()); + #elif V8_OS_AIX +   return static_cast<int>(thread_self()); + #elif V8_OS_FUCHSIA diff --git a/devel/electron6/files/patch-v8_src_trap-handler_handler-inside-posix.cc b/devel/electron6/files/patch-v8_src_trap-handler_handler-inside-posix.cc new file mode 100644 index 000000000000..b0402acc8511 --- /dev/null +++ b/devel/electron6/files/patch-v8_src_trap-handler_handler-inside-posix.cc @@ -0,0 +1,20 @@ +--- v8/src/trap-handler/handler-inside-posix.cc.orig	2019-09-10 10:51:04 UTC ++++ v8/src/trap-handler/handler-inside-posix.cc +@@ -27,7 +27,7 @@ +  + #include <signal.h> +  +-#ifdef V8_OS_LINUX ++#if defined(V8_OS_LINUX) || defined(V8_OS_FREEBSD) + #include <ucontext.h> + #elif V8_OS_MACOSX + #include <sys/ucontext.h> +@@ -112,6 +112,8 @@ bool TryHandleSignal(int signum, siginfo_t* info, void +     auto* context_rip = &uc->uc_mcontext.gregs[REG_RIP]; + #elif V8_OS_MACOSX +     auto* context_rip = &uc->uc_mcontext->__ss.__rip; ++#elif V8_OS_FREEBSD ++    auto* context_rip = &uc->uc_mcontext.mc_rip; + #else + #error Unsupported platform + #endif diff --git a/devel/electron6/files/patch-v8_src_trap-handler_handler-inside-posix.h b/devel/electron6/files/patch-v8_src_trap-handler_handler-inside-posix.h new file mode 100644 index 000000000000..f6bf9d12fa84 --- /dev/null +++ b/devel/electron6/files/patch-v8_src_trap-handler_handler-inside-posix.h @@ -0,0 +1,11 @@ +--- v8/src/trap-handler/handler-inside-posix.h.orig	2019-09-10 10:51:04 UTC ++++ v8/src/trap-handler/handler-inside-posix.h +@@ -12,7 +12,7 @@ namespace v8 { + namespace internal { + namespace trap_handler { +  +-#if V8_OS_LINUX ++#if defined(V8_OS_LINUX) || defined(V8_OS_FREEBSD) + constexpr int kOobSignal = SIGSEGV; + #elif V8_OS_MACOSX + constexpr int kOobSignal = SIGBUS; diff --git a/devel/electron6/files/patch-v8_src_trap-handler_trap-handler.h b/devel/electron6/files/patch-v8_src_trap-handler_trap-handler.h new file mode 100644 index 000000000000..b545bbb721e8 --- /dev/null +++ b/devel/electron6/files/patch-v8_src_trap-handler_trap-handler.h @@ -0,0 +1,11 @@ +--- v8/src/trap-handler/trap-handler.h.orig	2019-09-10 10:51:04 UTC ++++ v8/src/trap-handler/trap-handler.h +@@ -23,6 +23,8 @@ namespace trap_handler { + #define V8_TRAP_HANDLER_SUPPORTED true + #elif V8_TARGET_ARCH_X64 && V8_OS_MACOSX + #define V8_TRAP_HANDLER_SUPPORTED true ++#elif V8_TARGET_ARCH_X64 && V8_OS_FREEBSD ++#define V8_TRAP_HANDLER_SUPPORTED true + #else + #define V8_TRAP_HANDLER_SUPPORTED false + #endif diff --git a/devel/electron6/files/yarn.lock b/devel/electron6/files/yarn.lock new file mode 100644 index 000000000000..b1ec75e3d541 --- /dev/null +++ b/devel/electron6/files/yarn.lock @@ -0,0 +1,8581 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@babel/code-frame@^7.0.0": +  version "7.0.0" +  resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0.tgz#06e2ab19bdb535385559aabb5ba59729482800f8" +  integrity sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA== +  dependencies: +    "@babel/highlight" "^7.0.0" + +"@babel/highlight@^7.0.0": +  version "7.0.0" +  resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0.tgz#f710c38c8d458e6dd9a201afb637fcb781ce99e4" +  integrity sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw== +  dependencies: +    chalk "^2.0.0" +    esutils "^2.0.2" +    js-tokens "^4.0.0" + +"@babel/runtime@7.0.0": +  version "7.0.0" +  resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.0.0.tgz#adeb78fedfc855aa05bc041640f3f6f98e85424c" +  integrity sha512-7hGhzlcmg01CvH1EHdSPVXYX1aJ8KCEyz6I9xYIi/asDtzBPMyMhVibhM/K6g/5qnKBwjZtp10bNZIEFTRW1MA== +  dependencies: +    regenerator-runtime "^0.12.0" + +"@mrmlnc/readdir-enhanced@^2.2.1": +  version "2.2.1" +  resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde" +  integrity sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g== +  dependencies: +    call-me-maybe "^1.0.1" +    glob-to-regexp "^0.3.0" + +"@nodelib/fs.stat@^1.1.2": +  version "1.1.3" +  resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b" +  integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw== + +"@octokit/endpoint@^4.0.0": +  version "4.2.0" +  resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-4.2.0.tgz#9e36aa6471a7b4a9f2e521549cd2b1d63090187b" +  integrity sha512-0GUrn0Lr4k8EQpbKLiNzY4gWkx98UuiEFggvk6IqJCHJawUicg2z8XiKvbCZXJbC26T9XJBZ+xURaYhNc5n3dw== +  dependencies: +    deepmerge "3.2.0" +    is-plain-object "^2.0.4" +    universal-user-agent "^2.0.1" +    url-template "^2.0.8" + +"@octokit/request@3.0.0": +  version "3.0.0" +  resolved "https://registry.yarnpkg.com/@octokit/request/-/request-3.0.0.tgz#304a279036b2dc89e7fba7cb30c9e6a9b1f4d2df" +  integrity sha512-DZqmbm66tq+a9FtcKrn0sjrUpi0UaZ9QPUCxxyk/4CJ2rseTMpAWRf6gCwOSUCzZcx/4XVIsDk+kz5BVdaeenA== +  dependencies: +    "@octokit/endpoint" "^4.0.0" +    deprecation "^1.0.1" +    is-plain-object "^2.0.4" +    node-fetch "^2.3.0" +    once "^1.4.0" +    universal-user-agent "^2.0.1" + +"@octokit/rest@^16.3.2": +  version "16.25.0" +  resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-16.25.0.tgz#1111dc2b2058bc77442fd7fbd295dab3991b62bf" +  integrity sha512-QKIzP0gNYjyIGmY3Gpm3beof0WFwxFR+HhRZ+Wi0fYYhkEUvkJiXqKF56Pf5glzzfhEwOrggfluEld5F/ZxsKw== +  dependencies: +    "@octokit/request" "3.0.0" +    atob-lite "^2.0.0" +    before-after-hook "^1.4.0" +    btoa-lite "^1.0.0" +    deprecation "^1.0.1" +    lodash.get "^4.4.2" +    lodash.set "^4.3.2" +    lodash.uniq "^4.5.0" +    octokit-pagination-methods "^1.1.0" +    once "^1.4.0" +    universal-user-agent "^2.0.0" +    url-template "^2.0.8" + +"@samverschueren/stream-to-observable@^0.3.0": +  version "0.3.0" +  resolved "https://registry.yarnpkg.com/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.0.tgz#ecdf48d532c58ea477acfcab80348424f8d0662f" +  integrity sha512-MI4Xx6LHs4Webyvi6EbspgyAb4D2Q2VtnCQ1blOJcoLS6mVa8lNN2rkIy1CVxfTUpoyIbCTkXES1rLXztFD1lg== +  dependencies: +    any-observable "^0.3.0" + +"@types/body-parser@*": +  version "1.17.0" +  resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.17.0.tgz#9f5c9d9bd04bb54be32d5eb9fc0d8c974e6cf58c" +  integrity sha512-a2+YeUjPkztKJu5aIF2yArYFQQp8d51wZ7DavSHjFuY1mqVgidGyzEQ41JIVNy82fXj8yPgy2vJmfIywgESW6w== +  dependencies: +    "@types/connect" "*" +    "@types/node" "*" + +"@types/chai-as-promised@^7.1.0": +  version "7.1.0" +  resolved "https://registry.yarnpkg.com/@types/chai-as-promised/-/chai-as-promised-7.1.0.tgz#010b04cde78eacfb6e72bfddb3e58fe23c2e78b9" +  integrity sha512-MFiW54UOSt+f2bRw8J7LgQeIvE/9b4oGvwU7XW30S9QGAiHGnU/fmiOprsyMkdmH2rl8xSPc0/yrQw8juXU6bQ== +  dependencies: +    "@types/chai" "*" + +"@types/chai@*", "@types/chai@^4.1.7": +  version "4.1.7" +  resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.1.7.tgz#1b8e33b61a8c09cbe1f85133071baa0dbf9fa71a" +  integrity sha512-2Y8uPt0/jwjhQ6EiluT0XCri1Dbplr0ZxfFXUz+ye13gaqE8u5gL5ppao1JrUYr9cIip5S6MvQzBS7Kke7U9VA== + +"@types/connect@*": +  version "3.4.32" +  resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.32.tgz#aa0e9616b9435ccad02bc52b5b454ffc2c70ba28" +  integrity sha512-4r8qa0quOvh7lGD0pre62CAb1oni1OO6ecJLGCezTmhQ8Fz50Arx9RUszryR8KlgK6avuSXvviL6yWyViQABOg== +  dependencies: +    "@types/node" "*" + +"@types/express-serve-static-core@*": +  version "4.16.4" +  resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.16.4.tgz#56bb8be4559401d68af4a3624ae9dd3166103e60" +  integrity sha512-x/8h6FHm14rPWnW2HP5likD/rsqJ3t/77OWx2PLxym0hXbeBWQmcPyHmwX+CtCQpjIfgrUdEoDFcLPwPZWiqzQ== +  dependencies: +    "@types/node" "*" +    "@types/range-parser" "*" + +"@types/express@^4.16.1": +  version "4.16.1" +  resolved "https://registry.yarnpkg.com/@types/express/-/express-4.16.1.tgz#d756bd1a85c34d87eaf44c888bad27ba8a4b7cf0" +  integrity sha512-V0clmJow23WeyblmACoxbHBu2JKlE5TiIme6Lem14FnPW9gsttyHtk6wq7njcdIWH1njAaFgR8gW09lgY98gQg== +  dependencies: +    "@types/body-parser" "*" +    "@types/express-serve-static-core" "*" +    "@types/serve-static" "*" + +"@types/fs-extra@^5.0.5": +  version "5.0.5" +  resolved "https://registry.yarnpkg.com/@types/fs-extra/-/fs-extra-5.0.5.tgz#080d90a792f3fa2c5559eb44bd8ef840aae9104b" +  integrity sha512-w7iqhDH9mN8eLClQOYTkhdYUOSpp25eXxfc6VbFOGtzxW34JcvctH2bKjj4jD4++z4R5iO5D+pg48W2e03I65A== +  dependencies: +    "@types/node" "*" + +"@types/mime@*": +  version "2.0.1" +  resolved "https://registry.yarnpkg.com/@types/mime/-/mime-2.0.1.tgz#dc488842312a7f075149312905b5e3c0b054c79d" +  integrity sha512-FwI9gX75FgVBJ7ywgnq/P7tw+/o1GUbtP0KzbtusLigAOgIgNISRK0ZPl4qertvXSIE8YbsVJueQ90cDt9YYyw== + +"@types/mocha@^5.2.6": +  version "5.2.6" +  resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-5.2.6.tgz#b8622d50557dd155e9f2f634b7d68fd38de5e94b" +  integrity sha512-1axi39YdtBI7z957vdqXI4Ac25e7YihYQtJa+Clnxg1zTJEaIRbndt71O3sP4GAMgiAm0pY26/b9BrY4MR/PMw== + +"@types/node@*": +  version "11.13.8" +  resolved "https://registry.yarnpkg.com/@types/node/-/node-11.13.8.tgz#e5d71173c95533be9842b2c798978f095f912aab" +  integrity sha512-szA3x/3miL90ZJxUCzx9haNbK5/zmPieGraZEe4WI+3srN0eGLiT22NXeMHmyhNEopn+IrxqMc7wdVwvPl8meg== + +"@types/node@^10.12.21": +  version "10.14.6" +  resolved "https://registry.yarnpkg.com/@types/node/-/node-10.14.6.tgz#9cbfcb62c50947217f4d88d4d274cc40c22625a9" +  integrity sha512-Fvm24+u85lGmV4hT5G++aht2C5I4Z4dYlWZIh62FAfFO/TfzXtPpoLI6I7AuBWkIFqZCnhFOoTT7RjjaIL5Fjg== + +"@types/node@^7.0.18": +  version "7.10.5" +  resolved "https://registry.yarnpkg.com/@types/node/-/node-7.10.5.tgz#6831006b2c87441d69e79b37ae9bc03246dfb379" +  integrity sha512-RYkagUUbxQBss46ElbEa+j4q4X3GR12QwB7a/PM5hmVuVkYoW1jENT1+taspKUv8ibwW8cw+kRFbOaTc/Key3w== + +"@types/range-parser@*": +  version "1.2.3" +  resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.3.tgz#7ee330ba7caafb98090bece86a5ee44115904c2c" +  integrity sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA== + +"@types/serve-static@*": +  version "1.13.2" +  resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.13.2.tgz#f5ac4d7a6420a99a6a45af4719f4dcd8cd907a48" +  integrity sha512-/BZ4QRLpH/bNYgZgwhKEh+5AsboDBcUdlBYgzoLX0fpj3Y2gp6EApyOlM3bK53wQS/OE1SrdSYBAbux2D1528Q== +  dependencies: +    "@types/express-serve-static-core" "*" +    "@types/mime" "*" + +"@types/split@^1.0.0": +  version "1.0.0" +  resolved "https://registry.yarnpkg.com/@types/split/-/split-1.0.0.tgz#24f7c35707450b002f203383228f5a2bc1e6c228" +  integrity sha512-pm9S1mkr+av0j7D6pFyqhBxXDbnbO9gqj4nb8DtGtCewvj0XhIv089SSwXrjrIizT1UquO8/h83hCut0pa3u8A== +  dependencies: +    "@types/node" "*" +    "@types/through" "*" + +"@types/through@*": +  version "0.0.29" +  resolved "https://registry.yarnpkg.com/@types/through/-/through-0.0.29.tgz#72943aac922e179339c651fa34a4428a4d722f93" +  integrity sha512-9a7C5VHh+1BKblaYiq+7Tfc+EOmjMdZaD1MYtkQjSoxgB69tBjW98ry6SKsi4zEIWztLOMRuL87A3bdT/Fc/4w== +  dependencies: +    "@types/node" "*" + +"@typescript-eslint/eslint-plugin@^1.4.2": +  version "1.7.0" +  resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-1.7.0.tgz#570e45dc84fb97852e363f1e00f47e604a0b8bcc" +  integrity sha512-NUSz1aTlIzzTjFFVFyzrbo8oFjHg3K/M9MzYByqbMCxeFdErhLAcGITVfXzSz+Yvp5OOpMu3HkIttB0NyKl54Q== +  dependencies: +    "@typescript-eslint/parser" "1.7.0" +    "@typescript-eslint/typescript-estree" "1.7.0" +    eslint-utils "^1.3.1" +    regexpp "^2.0.1" +    requireindex "^1.2.0" +    tsutils "^3.7.0" + +"@typescript-eslint/parser@1.7.0", "@typescript-eslint/parser@^1.4.2": +  version "1.7.0" +  resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-1.7.0.tgz#c3ea0d158349ceefbb6da95b5b09924b75357851" +  integrity sha512-1QFKxs2V940372srm12ovSE683afqc1jB6zF/f8iKhgLz1yoSjYeGHipasao33VXKI+0a/ob9okeogGdKGvvlg== +  dependencies: +    "@typescript-eslint/typescript-estree" "1.7.0" +    eslint-scope "^4.0.0" +    eslint-visitor-keys "^1.0.0" + +"@typescript-eslint/typescript-estree@1.7.0": +  version "1.7.0" +  resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-1.7.0.tgz#59ec02f5371964da1cc679dba7b878a417bc8c60" +  integrity sha512-K5uedUxVmlYrVkFbyV3htDipvLqTE3QMOUQEHYJaKtgzxj6r7c5Ca/DG1tGgFxX+fsbi9nDIrf4arq7Ib7H/Yw== +  dependencies: +    lodash.unescape "4.0.1" +    semver "5.5.0" + +JSONStream@^1.0.3, JSONStream@^1.0.4: +  version "1.3.5" +  resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" +  integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ== +  dependencies: +    jsonparse "^1.2.0" +    through ">=2.2.7 <3" + +abab@^1.0.0: +  version "1.0.4" +  resolved "https://registry.yarnpkg.com/abab/-/abab-1.0.4.tgz#5faad9c2c07f60dd76770f71cf025b62a63cfd4e" +  integrity sha1-X6rZwsB/YN12dw9xzwJbYqY8/U4= + +abbrev@1: +  version "1.1.1" +  resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" +  integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== + +accepts@~1.3.5: +  version "1.3.6" +  resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.6.tgz#27de8682f0833e966dde5c5d7a63ec8523106e4b" +  integrity sha512-QsaoUD2dpVpjENy8JFpQnXP9vyzoZPmAoKrE3S6HtSB7qzSebkJNnmdY4p004FQUSSiHXPueENpoeuUW/7a8Ig== +  dependencies: +    mime-types "~2.1.24" +    negotiator "0.6.1" + +acorn-dynamic-import@^4.0.0: +  version "4.0.0" +  resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz#482210140582a36b83c3e342e1cfebcaa9240948" +  integrity sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw== + +acorn-globals@^1.0.4: +  version "1.0.9" +  resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-1.0.9.tgz#55bb5e98691507b74579d0513413217c380c54cf" +  integrity sha1-VbtemGkVB7dFedBRNBMhfDgMVM8= +  dependencies: +    acorn "^2.1.0" + +acorn-jsx@^5.0.0: +  version "5.0.1" +  resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.0.1.tgz#32a064fd925429216a09b141102bfdd185fae40e" +  integrity sha512-HJ7CfNHrfJLlNTzIEUTj43LNWGkqpRLxm3YjAlcD0ACydk9XynzYsCBHxut+iqt+1aBXkx9UP/w/ZqMr13XIzg== + +acorn-node@^1.2.0, acorn-node@^1.3.0, acorn-node@^1.5.2, acorn-node@^1.6.1: +  version "1.6.2" +  resolved "https://registry.yarnpkg.com/acorn-node/-/acorn-node-1.6.2.tgz#b7d7ceca6f22e6417af933a62cad4de01048d5d2" +  integrity sha512-rIhNEZuNI8ibQcL7ANm/mGyPukIaZsRNX9psFNQURyJW0nu6k8wjSDld20z6v2mDBWqX13pIEnk9gGZJHIlEXg== +  dependencies: +    acorn "^6.0.2" +    acorn-dynamic-import "^4.0.0" +    acorn-walk "^6.1.0" +    xtend "^4.0.1" + +acorn-walk@^6.1.0: +  version "6.1.1" +  resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.1.1.tgz#d363b66f5fac5f018ff9c3a1e7b6f8e310cc3913" +  integrity sha512-OtUw6JUTgxA2QoqqmrmQ7F2NYqiBPi/L2jqHyFtllhOUvXYQXf0Z1CYUinIfyT4bTCGmrA7gX9FvHA81uzCoVw== + +acorn@^2.1.0, acorn@^2.4.0: +  version "2.7.0" +  resolved "https://registry.yarnpkg.com/acorn/-/acorn-2.7.0.tgz#ab6e7d9d886aaca8b085bc3312b79a198433f0e7" +  integrity sha1-q259nYhqrKiwhbwzEreaGYQz8Oc= + +acorn@^5.0.0: +  version "5.7.3" +  resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.3.tgz#67aa231bf8812974b85235a96771eb6bd07ea279" +  integrity sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw== + +acorn@^6.0.2, acorn@^6.0.7: +  version "6.1.1" +  resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.1.1.tgz#7d25ae05bb8ad1f9b699108e1094ecd7884adc1f" +  integrity sha512-jPTiwtOxaHNaAPg/dmrJ/beuzLRnXtB0kQPQ8JpotKJgTB6rX6c8mlf315941pyjBSaPg8NHXS9fhP4u17DpGA== + +add-stream@^1.0.0: +  version "1.0.0" +  resolved "https://registry.yarnpkg.com/add-stream/-/add-stream-1.0.0.tgz#6a7990437ca736d5e1288db92bd3266d5f5cb2aa" +  integrity sha1-anmQQ3ynNtXhKI25K9MmbV9csqo= + +address@^1.0.1: +  version "1.1.0" +  resolved "https://registry.yarnpkg.com/address/-/address-1.1.0.tgz#ef8e047847fcd2c5b6f50c16965f924fd99fe709" +  integrity sha512-4diPfzWbLEIElVG4AnqP+00SULlPzNuyJFNnmMrLgyaxG6tZXJ1sn7mjBu4fHrJE+Yp/jgylOweJn2xsLMFggQ== + +ajv-keywords@^3.0.0: +  version "3.4.0" +  resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.4.0.tgz#4b831e7b531415a7cc518cd404e73f6193c6349d" +  integrity sha512-aUjdRFISbuFOl0EIZc+9e4FfZp0bDZgAdOOf30bJmw8VM9v84SHyVyxDfbWxpGYbdZD/9XoKxfHVNmxPkhwyGw== + +ajv@^6.0.1, ajv@^6.5.0, ajv@^6.5.5, ajv@^6.9.1: +  version "6.10.0" +  resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.0.tgz#90d0d54439da587cd7e843bfb7045f50bd22bdf1" +  integrity sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg== +  dependencies: +    fast-deep-equal "^2.0.1" +    fast-json-stable-stringify "^2.0.0" +    json-schema-traverse "^0.4.1" +    uri-js "^4.2.2" + +aliasify@^2.1.0: +  version "2.1.0" +  resolved "https://registry.yarnpkg.com/aliasify/-/aliasify-2.1.0.tgz#7c30825b9450b9e6185ba27533eaf6e2067d4b42" +  integrity sha1-fDCCW5RQueYYW6J1M+r24gZ9S0I= +  dependencies: +    browserify-transform-tools "~1.7.0" + +align-text@^0.1.1, align-text@^0.1.3: +  version "0.1.4" +  resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117" +  integrity sha1-DNkKVhCT810KmSVsIrcGlDP60Rc= +  dependencies: +    kind-of "^3.0.2" +    longest "^1.0.1" +    repeat-string "^1.5.2" + +amdefine@>=0.0.4: +  version "1.0.1" +  resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" +  integrity sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU= + +ansi-align@^2.0.0: +  version "2.0.0" +  resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-2.0.0.tgz#c36aeccba563b89ceb556f3690f0b1d9e3547f7f" +  integrity sha1-w2rsy6VjuJzrVW82kPCx2eNUf38= +  dependencies: +    string-width "^2.0.0" + +ansi-escapes@^3.0.0, ansi-escapes@^3.2.0: +  version "3.2.0" +  resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" +  integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== + +ansi-regex@^2.0.0: +  version "2.1.1" +  resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" +  integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= + +ansi-regex@^3.0.0: +  version "3.0.0" +  resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" +  integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= + +ansi-regex@^4.1.0: +  version "4.1.0" +  resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" +  integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== + +ansi-styles@^2.2.1: +  version "2.2.1" +  resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" +  integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= + +ansi-styles@^3.2.0, ansi-styles@^3.2.1: +  version "3.2.1" +  resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" +  integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== +  dependencies: +    color-convert "^1.9.0" + +any-observable@^0.3.0: +  version "0.3.0" +  resolved "https://registry.yarnpkg.com/any-observable/-/any-observable-0.3.0.tgz#af933475e5806a67d0d7df090dd5e8bef65d119b" +  integrity sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog== + +any-promise@^1.3.0: +  version "1.3.0" +  resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" +  integrity sha1-q8av7tzqUugJzcA3au0845Y10X8= + +anymatch@^1.3.0: +  version "1.3.2" +  resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.2.tgz#553dcb8f91e3c889845dfdba34c77721b90b9d7a" +  integrity sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA== +  dependencies: +    micromatch "^2.1.5" +    normalize-path "^2.0.0" + +aproba@^1.0.3: +  version "1.2.0" +  resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" +  integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== + +arch@^2.1.0: +  version "2.1.1" +  resolved "https://registry.yarnpkg.com/arch/-/arch-2.1.1.tgz#8f5c2731aa35a30929221bb0640eed65175ec84e" +  integrity sha512-BLM56aPo9vLLFVa8+/+pJLnrZ7QGGTVHWsCwieAWT9o9K8UeGaQbzZbGoabWLOo2ksBCztoXdqBZBplqLDDCSg== + +are-we-there-yet@~1.1.2: +  version "1.1.5" +  resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" +  integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w== +  dependencies: +    delegates "^1.0.0" +    readable-stream "^2.0.6" + +arg@2.0.0: +  version "2.0.0" +  resolved "https://registry.yarnpkg.com/arg/-/arg-2.0.0.tgz#c06e7ff69ab05b3a4a03ebe0407fac4cba657545" +  integrity sha512-XxNTUzKnz1ctK3ZIcI2XUPlD96wbHP2nGqkPKpvk/HNRlPveYrXIVSTk9m3LcqOgDPg3B1nMvdV/K8wZd7PG4w== + +argparse@^1.0.7: +  version "1.0.10" +  resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" +  integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== +  dependencies: +    sprintf-js "~1.0.2" + +args@4.0.0: +  version "4.0.0" +  resolved "https://registry.yarnpkg.com/args/-/args-4.0.0.tgz#5ca24cdba43d4b17111c56616f5f2e9d91933954" +  integrity sha512-4b7lVF58nlo7sNtq8s2OueroOY/UHn0Nt/NVjsx9zn28u6yDVb9bQ/uy/5jKtHCbUDil4MlMyDLF5+OHEgnTug== +  dependencies: +    camelcase "5.0.0" +    chalk "2.3.2" +    leven "2.1.0" +    mri "1.1.0" + +arr-diff@^2.0.0: +  version "2.0.0" +  resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" +  integrity sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8= +  dependencies: +    arr-flatten "^1.0.1" + +arr-diff@^4.0.0: +  version "4.0.0" +  resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" +  integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= + +arr-flatten@^1.0.1, arr-flatten@^1.1.0: +  version "1.1.0" +  resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" +  integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== + +arr-union@^3.1.0: +  version "3.1.0" +  resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" +  integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= + +array-filter@~0.0.0: +  version "0.0.1" +  resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-0.0.1.tgz#7da8cf2e26628ed732803581fd21f67cacd2eeec" +  integrity sha1-fajPLiZijtcygDWB/SH2fKzS7uw= + +array-find-index@^1.0.1: +  version "1.0.2" +  resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" +  integrity sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E= + +array-flatten@1.1.1: +  version "1.1.1" +  resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" +  integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= + +array-ify@^1.0.0: +  version "1.0.0" +  resolved "https://registry.yarnpkg.com/array-ify/-/array-ify-1.0.0.tgz#9e528762b4a9066ad163a6962a364418e9626ece" +  integrity sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4= + +array-includes@^3.0.3: +  version "3.0.3" +  resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.0.3.tgz#184b48f62d92d7452bb31b323165c7f8bd02266d" +  integrity sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0= +  dependencies: +    define-properties "^1.1.2" +    es-abstract "^1.7.0" + +array-map@~0.0.0: +  version "0.0.0" +  resolved "https://registry.yarnpkg.com/array-map/-/array-map-0.0.0.tgz#88a2bab73d1cf7bcd5c1b118a003f66f665fa662" +  integrity sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI= + +array-reduce@~0.0.0: +  version "0.0.0" +  resolved "https://registry.yarnpkg.com/array-reduce/-/array-reduce-0.0.0.tgz#173899d3ffd1c7d9383e4479525dbe278cab5f2b" +  integrity sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys= + +array-union@^1.0.1: +  version "1.0.2" +  resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" +  integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk= +  dependencies: +    array-uniq "^1.0.1" + +array-uniq@^1.0.1: +  version "1.0.3" +  resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" +  integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= + +array-unique@^0.2.1: +  version "0.2.1" +  resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" +  integrity sha1-odl8yvy8JiXMcPrc6zalDFiwGlM= + +array-unique@^0.3.2: +  version "0.3.2" +  resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" +  integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= + +arrify@^1.0.0, arrify@^1.0.1: +  version "1.0.1" +  resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" +  integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= + +asar@^1.0.0: +  version "1.0.0" +  resolved "https://registry.yarnpkg.com/asar/-/asar-1.0.0.tgz#5624ffa1369aa929871dfc036de02c20871bdc2e" +  integrity sha512-MBiDU5cDr9UWuY2F0zq2fZlnyRq1aOPmJGMas22Qa14K1odpRXL3xkMHPN3uw2hAK5mD89Q+/KidOUtpi4V0Cg== +  dependencies: +    chromium-pickle-js "^0.2.0" +    commander "^2.19.0" +    cuint "^0.2.2" +    glob "^7.1.3" +    minimatch "^3.0.4" +    mkdirp "^0.5.1" +    pify "^4.0.1" +    tmp-promise "^1.0.5" + +asn1.js@^4.0.0: +  version "4.10.1" +  resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0" +  integrity sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw== +  dependencies: +    bn.js "^4.0.0" +    inherits "^2.0.1" +    minimalistic-assert "^1.0.0" + +asn1@~0.2.3: +  version "0.2.4" +  resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" +  integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== +  dependencies: +    safer-buffer "~2.1.0" + +assert-plus@1.0.0, assert-plus@^1.0.0: +  version "1.0.0" +  resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" +  integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= + +assert@^1.4.0: +  version "1.4.1" +  resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91" +  integrity sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE= +  dependencies: +    util "0.10.3" + +assign-symbols@^1.0.0: +  version "1.0.0" +  resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" +  integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= + +astral-regex@^1.0.0: +  version "1.0.0" +  resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" +  integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== + +async-each@^1.0.0: +  version "1.0.3" +  resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" +  integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== + +async@^1.4.0, async@^1.5.2: +  version "1.5.2" +  resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" +  integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo= + +asynckit@^0.4.0: +  version "0.4.0" +  resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" +  integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= + +atob-lite@^2.0.0: +  version "2.0.0" +  resolved "https://registry.yarnpkg.com/atob-lite/-/atob-lite-2.0.0.tgz#0fef5ad46f1bd7a8502c65727f0367d5ee43d696" +  integrity sha1-D+9a1G8b16hQLGVyfwNn1e5D1pY= + +atob@^2.1.1: +  version "2.1.2" +  resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" +  integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== + +aws-sign2@~0.7.0: +  version "0.7.0" +  resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" +  integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= + +aws4@^1.8.0: +  version "1.8.0" +  resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f" +  integrity sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ== + +babel-code-frame@^6.20.0, babel-code-frame@^6.26.0: +  version "6.26.0" +  resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" +  integrity sha1-Y/1D99weO7fONZR9uP42mj9Yx0s= +  dependencies: +    chalk "^1.1.3" +    esutils "^2.0.2" +    js-tokens "^3.0.2" + +bail@^1.0.0: +  version "1.0.3" +  resolved "https://registry.yarnpkg.com/bail/-/bail-1.0.3.tgz#63cfb9ddbac829b02a3128cd53224be78e6c21a3" +  integrity sha512-1X8CnjFVQ+a+KW36uBNMTU5s8+v5FzeqrP7hTG5aTb4aPreSbZJlhwPon9VKMuEVgV++JM+SQrALY3kr7eswdg== + +balanced-match@^1.0.0: +  version "1.0.0" +  resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" +  integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= + +base64-js@^1.0.2, base64-js@^1.2.3: +  version "1.3.0" +  resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.0.tgz#cab1e6118f051095e58b5281aea8c1cd22bfc0e3" +  integrity sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw== + +base@^0.11.1: +  version "0.11.2" +  resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" +  integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== +  dependencies: +    cache-base "^1.0.1" +    class-utils "^0.3.5" +    component-emitter "^1.2.1" +    define-property "^1.0.0" +    isobject "^3.0.1" +    mixin-deep "^1.2.0" +    pascalcase "^0.1.1" + +basic-auth@2.0.0: +  version "2.0.0" +  resolved "https://registry.yarnpkg.com/basic-auth/-/basic-auth-2.0.0.tgz#015db3f353e02e56377755f962742e8981e7bbba" +  integrity sha1-AV2z81PgLlY3d1X5YnQuiYHnu7o= +  dependencies: +    safe-buffer "5.1.1" + +bcrypt-pbkdf@^1.0.0: +  version "1.0.2" +  resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" +  integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= +  dependencies: +    tweetnacl "^0.14.3" + +before-after-hook@^1.4.0: +  version "1.4.0" +  resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-1.4.0.tgz#2b6bf23dca4f32e628fd2747c10a37c74a4b484d" +  integrity sha512-l5r9ir56nda3qu14nAXIlyq1MmUSs0meCIaFAh8HwkFwP1F8eToOuS3ah2VAHHcY04jaYD7FpJC5JTXHYRbkzg== + +binary-extensions@^1.0.0: +  version "1.13.1" +  resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" +  integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== + +bl@^1.0.0: +  version "1.2.2" +  resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.2.tgz#a160911717103c07410cef63ef51b397c025af9c" +  integrity sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA== +  dependencies: +    readable-stream "^2.3.5" +    safe-buffer "^5.1.1" + +bluebird@3.5.1: +  version "3.5.1" +  resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.1.tgz#d9551f9de98f1fcda1e683d17ee91a0602ee2eb9" +  integrity sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA== + +bluebird@^3.5.0: +  version "3.5.4" +  resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.4.tgz#d6cc661595de30d5b3af5fcedd3c0b3ef6ec5714" +  integrity sha512-FG+nFEZChJrbQ9tIccIfZJBz3J7mLrAhxakAbnrJWn8d7aKOC+LWifa0G+p4ZqKp4y13T7juYvdhq9NzKdsrjw== + +bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0: +  version "4.11.8" +  resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" +  integrity sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA== + +body-parser@1.18.3: +  version "1.18.3" +  resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.3.tgz#5b292198ffdd553b3a0f20ded0592b956955c8b4" +  integrity sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ= +  dependencies: +    bytes "3.0.0" +    content-type "~1.0.4" +    debug "2.6.9" +    depd "~1.1.2" +    http-errors "~1.6.3" +    iconv-lite "0.4.23" +    on-finished "~2.3.0" +    qs "6.5.2" +    raw-body "2.3.3" +    type-is "~1.6.16" + +boolbase@~1.0.0: +  version "1.0.0" +  resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" +  integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= + +boxen@1.3.0, boxen@^1.2.1: +  version "1.3.0" +  resolved "https://registry.yarnpkg.com/boxen/-/boxen-1.3.0.tgz#55c6c39a8ba58d9c61ad22cd877532deb665a20b" +  integrity sha512-TNPjfTr432qx7yOjQyaXm3dSR0MH9vXp7eT1BFSl/C51g+EFnOR9hTg1IreahGBmDNCehscshe45f+C1TBZbLw== +  dependencies: +    ansi-align "^2.0.0" +    camelcase "^4.0.0" +    chalk "^2.0.1" +    cli-boxes "^1.0.0" +    string-width "^2.0.0" +    term-size "^1.2.0" +    widest-line "^2.0.0" + +brace-expansion@^1.1.7: +  version "1.1.11" +  resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" +  integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== +  dependencies: +    balanced-match "^1.0.0" +    concat-map "0.0.1" + +braces@^1.8.2: +  version "1.8.5" +  resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" +  integrity sha1-uneWLhLf+WnWt2cR6RS3N4V79qc= +  dependencies: +    expand-range "^1.8.1" +    preserve "^0.2.0" +    repeat-element "^1.1.2" + +braces@^2.3.1: +  version "2.3.2" +  resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" +  integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== +  dependencies: +    arr-flatten "^1.1.0" +    array-unique "^0.3.2" +    extend-shallow "^2.0.1" +    fill-range "^4.0.0" +    isobject "^3.0.1" +    repeat-element "^1.1.2" +    snapdragon "^0.8.1" +    snapdragon-node "^2.0.1" +    split-string "^3.0.2" +    to-regex "^3.0.1" + +brorand@^1.0.1: +  version "1.1.0" +  resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" +  integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= + +browser-pack@^6.0.1: +  version "6.1.0" +  resolved "https://registry.yarnpkg.com/browser-pack/-/browser-pack-6.1.0.tgz#c34ba10d0b9ce162b5af227c7131c92c2ecd5774" +  integrity sha512-erYug8XoqzU3IfcU8fUgyHqyOXqIE4tUTTQ+7mqUjQlvnXkOO6OlT9c/ZoJVHYoAaqGxr09CN53G7XIsO4KtWA== +  dependencies: +    JSONStream "^1.0.3" +    combine-source-map "~0.8.0" +    defined "^1.0.0" +    safe-buffer "^5.1.1" +    through2 "^2.0.0" +    umd "^3.0.0" + +browser-resolve@^1.11.0, browser-resolve@^1.7.0: +  version "1.11.3" +  resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.3.tgz#9b7cbb3d0f510e4cb86bdbd796124d28b5890af6" +  integrity sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ== +  dependencies: +    resolve "1.1.7" + +browserify-aes@^1.0.0, browserify-aes@^1.0.4: +  version "1.2.0" +  resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" +  integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== +  dependencies: +    buffer-xor "^1.0.3" +    cipher-base "^1.0.0" +    create-hash "^1.1.0" +    evp_bytestokey "^1.0.3" +    inherits "^2.0.1" +    safe-buffer "^5.0.1" + +browserify-cipher@^1.0.0: +  version "1.0.1" +  resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" +  integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== +  dependencies: +    browserify-aes "^1.0.4" +    browserify-des "^1.0.0" +    evp_bytestokey "^1.0.0" + +browserify-des@^1.0.0: +  version "1.0.2" +  resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" +  integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== +  dependencies: +    cipher-base "^1.0.1" +    des.js "^1.0.0" +    inherits "^2.0.1" +    safe-buffer "^5.1.2" + +browserify-rsa@^4.0.0: +  version "4.0.1" +  resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524" +  integrity sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ= +  dependencies: +    bn.js "^4.1.0" +    randombytes "^2.0.1" + +browserify-sign@^4.0.0: +  version "4.0.4" +  resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.0.4.tgz#aa4eb68e5d7b658baa6bf6a57e630cbd7a93d298" +  integrity sha1-qk62jl17ZYuqa/alfmMMvXqT0pg= +  dependencies: +    bn.js "^4.1.1" +    browserify-rsa "^4.0.0" +    create-hash "^1.1.0" +    create-hmac "^1.1.2" +    elliptic "^6.0.0" +    inherits "^2.0.1" +    parse-asn1 "^5.0.0" + +browserify-transform-tools@~1.7.0: +  version "1.7.0" +  resolved "https://registry.yarnpkg.com/browserify-transform-tools/-/browserify-transform-tools-1.7.0.tgz#83e277221f63259bed2e7eb2a283a970a501f4c4" +  integrity sha1-g+J3Ih9jJZvtLn6yooOpcKUB9MQ= +  dependencies: +    falafel "^2.0.0" +    through "^2.3.7" + +browserify-zlib@^0.1.4: +  version "0.1.4" +  resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.1.4.tgz#bb35f8a519f600e0fa6b8485241c979d0141fb2d" +  integrity sha1-uzX4pRn2AOD6a4SFJByXnQFB+y0= +  dependencies: +    pako "~0.2.0" + +browserify-zlib@~0.2.0: +  version "0.2.0" +  resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" +  integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== +  dependencies: +    pako "~1.0.5" + +browserify@^16.2.3: +  version "16.2.3" +  resolved "https://registry.yarnpkg.com/browserify/-/browserify-16.2.3.tgz#7ee6e654ba4f92bce6ab3599c3485b1cc7a0ad0b" +  integrity sha512-zQt/Gd1+W+IY+h/xX2NYMW4orQWhqSwyV+xsblycTtpOuB27h1fZhhNQuipJ4t79ohw4P4mMem0jp/ZkISQtjQ== +  dependencies: +    JSONStream "^1.0.3" +    assert "^1.4.0" +    browser-pack "^6.0.1" +    browser-resolve "^1.11.0" +    browserify-zlib "~0.2.0" +    buffer "^5.0.2" +    cached-path-relative "^1.0.0" +    concat-stream "^1.6.0" +    console-browserify "^1.1.0" +    constants-browserify "~1.0.0" +    crypto-browserify "^3.0.0" +    defined "^1.0.0" +    deps-sort "^2.0.0" +    domain-browser "^1.2.0" +    duplexer2 "~0.1.2" +    events "^2.0.0" +    glob "^7.1.0" +    has "^1.0.0" +    htmlescape "^1.1.0" +    https-browserify "^1.0.0" +    inherits "~2.0.1" +    insert-module-globals "^7.0.0" +    labeled-stream-splicer "^2.0.0" +    mkdirp "^0.5.0" +    module-deps "^6.0.0" +    os-browserify "~0.3.0" +    parents "^1.0.1" +    path-browserify "~0.0.0" +    process "~0.11.0" +    punycode "^1.3.2" +    querystring-es3 "~0.2.0" +    read-only-stream "^2.0.0" +    readable-stream "^2.0.2" +    resolve "^1.1.4" +    shasum "^1.0.0" +    shell-quote "^1.6.1" +    stream-browserify "^2.0.0" +    stream-http "^2.0.0" +    string_decoder "^1.1.1" +    subarg "^1.0.0" +    syntax-error "^1.1.1" +    through2 "^2.0.0" +    timers-browserify "^1.0.1" +    tty-browserify "0.0.1" +    url "~0.11.0" +    util "~0.10.1" +    vm-browserify "^1.0.0" +    xtend "^4.0.0" + +btoa-lite@^1.0.0: +  version "1.0.0" +  resolved "https://registry.yarnpkg.com/btoa-lite/-/btoa-lite-1.0.0.tgz#337766da15801210fdd956c22e9c6891ab9d0337" +  integrity sha1-M3dm2hWAEhD92VbCLpxokaudAzc= + +buffer-alloc-unsafe@^1.1.0: +  version "1.1.0" +  resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0" +  integrity sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg== + +buffer-alloc@^1.2.0: +  version "1.2.0" +  resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec" +  integrity sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow== +  dependencies: +    buffer-alloc-unsafe "^1.1.0" +    buffer-fill "^1.0.0" + +buffer-fill@^1.0.0: +  version "1.0.0" +  resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" +  integrity sha1-+PeLdniYiO858gXNY39o5wISKyw= + +buffer-from@^1.0.0, buffer-from@^1.1.0: +  version "1.1.1" +  resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" +  integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== + +buffer-xor@^1.0.3: +  version "1.0.3" +  resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" +  integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= + +buffer@^5.0.2: +  version "5.2.1" +  resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.2.1.tgz#dd57fa0f109ac59c602479044dca7b8b3d0b71d6" +  integrity sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg== +  dependencies: +    base64-js "^1.0.2" +    ieee754 "^1.1.4" + +builtin-status-codes@^3.0.0: +  version "3.0.0" +  resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" +  integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= + +bytes@3.0.0: +  version "3.0.0" +  resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" +  integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= + +cache-base@^1.0.1: +  version "1.0.1" +  resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" +  integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== +  dependencies: +    collection-visit "^1.0.0" +    component-emitter "^1.2.1" +    get-value "^2.0.6" +    has-value "^1.0.0" +    isobject "^3.0.1" +    set-value "^2.0.0" +    to-object-path "^0.3.0" +    union-value "^1.0.0" +    unset-value "^1.0.0" + +cached-path-relative@^1.0.0: +  version "1.0.2" +  resolved "https://registry.yarnpkg.com/cached-path-relative/-/cached-path-relative-1.0.2.tgz#a13df4196d26776220cc3356eb147a52dba2c6db" +  integrity sha512-5r2GqsoEb4qMTTN9J+WzXfjov+hjxT+j3u5K+kIVNIwAd99DLCJE9pBIMP1qVeybV6JiijL385Oz0DcYxfbOIg== + +call-me-maybe@^1.0.1: +  version "1.0.1" +  resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" +  integrity sha1-JtII6onje1y95gJQoV8DHBak1ms= + +caller-callsite@^2.0.0: +  version "2.0.0" +  resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134" +  integrity sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ= +  dependencies: +    callsites "^2.0.0" + +caller-path@^0.1.0: +  version "0.1.0" +  resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-0.1.0.tgz#94085ef63581ecd3daa92444a8fe94e82577751f" +  integrity sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8= +  dependencies: +    callsites "^0.2.0" + +caller-path@^2.0.0: +  version "2.0.0" +  resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-2.0.0.tgz#468f83044e369ab2010fac5f06ceee15bb2cb1f4" +  integrity sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ= +  dependencies: +    caller-callsite "^2.0.0" + +callsites@^0.2.0: +  version "0.2.0" +  resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca" +  integrity sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo= + +callsites@^2.0.0: +  version "2.0.0" +  resolved "https://registry.yarnpkg.com/callsites/-/callsites-2.0.0.tgz#06eb84f00eea413da86affefacbffb36093b3c50" +  integrity sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA= + +callsites@^3.0.0: +  version "3.1.0" +  resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" +  integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +camelcase-keys@^2.0.0: +  version "2.1.0" +  resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7" +  integrity sha1-MIvur/3ygRkFHvodkyITyRuPkuc= +  dependencies: +    camelcase "^2.0.0" +    map-obj "^1.0.0" + +camelcase-keys@^4.0.0: +  version "4.2.0" +  resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-4.2.0.tgz#a2aa5fb1af688758259c32c141426d78923b9b77" +  integrity sha1-oqpfsa9oh1glnDLBQUJteJI7m3c= +  dependencies: +    camelcase "^4.1.0" +    map-obj "^2.0.0" +    quick-lru "^1.0.0" + +camelcase@5.0.0: +  version "5.0.0" +  resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.0.0.tgz#03295527d58bd3cd4aa75363f35b2e8d97be2f42" +  integrity sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA== + +camelcase@^1.0.2: +  version "1.2.1" +  resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" +  integrity sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk= + +camelcase@^2.0.0: +  version "2.1.1" +  resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" +  integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8= + +camelcase@^4.0.0, camelcase@^4.1.0: +  version "4.1.0" +  resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" +  integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0= + +capture-stack-trace@^1.0.0: +  version "1.0.1" +  resolved "https://registry.yarnpkg.com/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz#a6c0bbe1f38f3aa0b92238ecb6ff42c344d4135d" +  integrity sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw== + +caseless@~0.12.0: +  version "0.12.0" +  resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" +  integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= + +ccount@^1.0.0: +  version "1.0.3" +  resolved "https://registry.yarnpkg.com/ccount/-/ccount-1.0.3.tgz#f1cec43f332e2ea5a569fd46f9f5bde4e6102aff" +  integrity sha512-Jt9tIBkRc9POUof7QA/VwWd+58fKkEEfI+/t1/eOlxKM7ZhrczNzMFefge7Ai+39y1pR/pP6cI19guHy3FSLmw== + +center-align@^0.1.1: +  version "0.1.3" +  resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad" +  integrity sha1-qg0yYptu6XIgBBHL1EYckHvCt60= +  dependencies: +    align-text "^0.1.3" +    lazy-cache "^1.0.3" + +chalk@2.3.2: +  version "2.3.2" +  resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.3.2.tgz#250dc96b07491bfd601e648d66ddf5f60c7a5c65" +  integrity sha512-ZM4j2/ld/YZDc3Ma8PgN7gyAk+kHMMMyzLNryCPGhWrsfAuDVeuid5bpRFTDgMH9JBK2lA4dyyAkkZYF/WcqDQ== +  dependencies: +    ansi-styles "^3.2.1" +    escape-string-regexp "^1.0.5" +    supports-color "^5.3.0" + +chalk@2.4.0: +  version "2.4.0" +  resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.0.tgz#a060a297a6b57e15b61ca63ce84995daa0fe6e52" +  integrity sha512-Wr/w0f4o9LuE7K53cD0qmbAMM+2XNLzR29vFn5hqko4sxGlUsyy363NvmyGIyk5tpe9cjTr9SJYbysEyPkRnFw== +  dependencies: +    ansi-styles "^3.2.1" +    escape-string-regexp "^1.0.5" +    supports-color "^5.3.0" + +chalk@2.4.1: +  version "2.4.1" +  resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.1.tgz#18c49ab16a037b6eb0152cc83e3471338215b66e" +  integrity sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ== +  dependencies: +    ansi-styles "^3.2.1" +    escape-string-regexp "^1.0.5" +    supports-color "^5.3.0" + +chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3: +  version "1.1.3" +  resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" +  integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= +  dependencies: +    ansi-styles "^2.2.1" +    escape-string-regexp "^1.0.2" +    has-ansi "^2.0.0" +    strip-ansi "^3.0.0" +    supports-color "^2.0.0" + +chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.3.1, chalk@^2.4.1, chalk@^2.4.2: +  version "2.4.2" +  resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" +  integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== +  dependencies: +    ansi-styles "^3.2.1" +    escape-string-regexp "^1.0.5" +    supports-color "^5.3.0" + +character-entities-html4@^1.0.0: +  version "1.1.2" +  resolved "https://registry.yarnpkg.com/character-entities-html4/-/character-entities-html4-1.1.2.tgz#c44fdde3ce66b52e8d321d6c1bf46101f0150610" +  integrity sha512-sIrXwyna2+5b0eB9W149izTPJk/KkJTg6mEzDGibwBUkyH1SbDa+nf515Ppdi3MaH35lW0JFJDWeq9Luzes1Iw== + +character-entities-legacy@^1.0.0: +  version "1.1.2" +  resolved "https://registry.yarnpkg.com/character-entities-legacy/-/character-entities-legacy-1.1.2.tgz#7c6defb81648498222c9855309953d05f4d63a9c" +  integrity sha512-9NB2VbXtXYWdXzqrvAHykE/f0QJxzaKIpZ5QzNZrrgQ7Iyxr2vnfS8fCBNVW9nUEZE0lo57nxKRqnzY/dKrwlA== + +character-entities@^1.0.0: +  version "1.2.2" +  resolved "https://registry.yarnpkg.com/character-entities/-/character-entities-1.2.2.tgz#58c8f371c0774ef0ba9b2aca5f00d8f100e6e363" +  integrity sha512-sMoHX6/nBiy3KKfC78dnEalnpn0Az0oSNvqUWYTtYrhRI5iUIYsROU48G+E+kMFQzqXaJ8kHJZ85n7y6/PHgwQ== + +character-reference-invalid@^1.0.0: +  version "1.1.2" +  resolved "https://registry.yarnpkg.com/character-reference-invalid/-/character-reference-invalid-1.1.2.tgz#21e421ad3d84055952dab4a43a04e73cd425d3ed" +  integrity sha512-7I/xceXfKyUJmSAn/jw8ve/9DyOP7XxufNYLI9Px7CmsKgEUaZLUTax6nZxGQtaoiZCjpu6cHPj20xC/vqRReQ== + +chardet@^0.4.0: +  version "0.4.2" +  resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.4.2.tgz#b5473b33dc97c424e5d98dc87d55d4d8a29c8bf2" +  integrity sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I= + +chardet@^0.7.0: +  version "0.7.0" +  resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" +  integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== + +check-for-leaks@^1.0.2: +  version "1.2.0" +  resolved "https://registry.yarnpkg.com/check-for-leaks/-/check-for-leaks-1.2.0.tgz#ea3b50164e975779332c62813195ff8c6af826cc" +  integrity sha512-bJ2Bzo6RtsYqamMnsjtVzowGvBNVrR5IPK8Bd+lx5W1TNgOKMsF+AyNHVkqFqO7cpDZNfny5SaqH6gEovpV5Gw== +  dependencies: +    anymatch "^1.3.0" +    minimist "^1.2.0" +    parse-gitignore "^0.4.0" +    walk-sync "^0.3.2" + +checksum@^0.1.1: +  version "0.1.1" +  resolved "https://registry.yarnpkg.com/checksum/-/checksum-0.1.1.tgz#dc6527d4c90be8560dbd1ed4cecf3297d528e9e9" +  integrity sha1-3GUn1MkL6FYNvR7Uzs8yl9Uo6ek= +  dependencies: +    optimist "~0.3.5" + +cheerio@^0.20.0: +  version "0.20.0" +  resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-0.20.0.tgz#5c710f2bab95653272842ba01c6ea61b3545ec35" +  integrity sha1-XHEPK6uVZTJyhCugHG6mGzVF7DU= +  dependencies: +    css-select "~1.2.0" +    dom-serializer "~0.1.0" +    entities "~1.1.1" +    htmlparser2 "~3.8.1" +    lodash "^4.1.0" +  optionalDependencies: +    jsdom "^7.0.2" + +cheerio@^1.0.0-rc.2: +  version "1.0.0-rc.3" +  resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.3.tgz#094636d425b2e9c0f4eb91a46c05630c9a1a8bf6" +  integrity sha512-0td5ijfUPuubwLUu0OBoe98gZj8C/AA+RW3v67GPlGOrvxWjZmBXiBCRU+I8VEiNyJzjth40POfHiz2RB3gImA== +  dependencies: +    css-select "~1.2.0" +    dom-serializer "~0.1.1" +    entities "~1.1.1" +    htmlparser2 "^3.9.1" +    lodash "^4.15.0" +    parse5 "^3.0.1" + +chokidar@^1.5.1: +  version "1.7.0" +  resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468" +  integrity sha1-eY5ol3gVHIB2tLNg5e3SjNortGg= +  dependencies: +    anymatch "^1.3.0" +    async-each "^1.0.0" +    glob-parent "^2.0.0" +    inherits "^2.0.1" +    is-binary-path "^1.0.0" +    is-glob "^2.0.0" +    path-is-absolute "^1.0.0" +    readdirp "^2.0.0" +  optionalDependencies: +    fsevents "^1.0.0" + +chownr@^1.0.1, chownr@^1.1.1: +  version "1.1.1" +  resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.1.tgz#54726b8b8fff4df053c42187e801fb4412df1494" +  integrity sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g== + +chromium-pickle-js@^0.2.0: +  version "0.2.0" +  resolved "https://registry.yarnpkg.com/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz#04a106672c18b085ab774d983dfa3ea138f22205" +  integrity sha1-BKEGZywYsIWrd02YPfo+oTjyIgU= + +ci-info@^1.5.0: +  version "1.6.0" +  resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.6.0.tgz#2ca20dbb9ceb32d4524a683303313f0304b1e497" +  integrity sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A== + +cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: +  version "1.0.4" +  resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" +  integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== +  dependencies: +    inherits "^2.0.1" +    safe-buffer "^5.0.1" + +circular-json@^0.3.1: +  version "0.3.3" +  resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.3.tgz#815c99ea84f6809529d2f45791bdf82711352d66" +  integrity sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A== + +clang-format@^1.2.3: +  version "1.2.4" +  resolved "https://registry.yarnpkg.com/clang-format/-/clang-format-1.2.4.tgz#4bb4b0a98180428deb093cf20982e9fc1af20b6c" +  integrity sha512-sw+nrGUp3hvmANd1qF8vZPuezSYQAiXgGBiEtkXTtJnnu6b00fCqkkDIsnRKrNgg4nv6NYZE92ejvOMIXZoejw== +  dependencies: +    async "^1.5.2" +    glob "^7.0.0" +    resolve "^1.1.6" + +class-utils@^0.3.5: +  version "0.3.6" +  resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" +  integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== +  dependencies: +    arr-union "^3.1.0" +    define-property "^0.2.5" +    isobject "^3.0.0" +    static-extend "^0.1.1" + +clean-deep@^2.0.1: +  version "2.0.2" +  resolved "https://registry.yarnpkg.com/clean-deep/-/clean-deep-2.0.2.tgz#77cdd94e6b266644f0f790b2f576cbef038e27c1" +  integrity sha1-d83ZTmsmZkTw95Cy9XbL7wOOJ8E= +  dependencies: +    lodash.isempty "^4.4.0" +    lodash.isplainobject "^4.0.6" +    lodash.transform "^4.6.0" + +cli-boxes@^1.0.0: +  version "1.0.0" +  resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-1.0.0.tgz#4fa917c3e59c94a004cd61f8ee509da651687143" +  integrity sha1-T6kXw+WclKAEzWH47lCdplFocUM= + +cli-cursor@^1.0.2: +  version "1.0.2" +  resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-1.0.2.tgz#64da3f7d56a54412e59794bd62dc35295e8f2987" +  integrity sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc= +  dependencies: +    restore-cursor "^1.0.1" + +cli-cursor@^2.0.0, cli-cursor@^2.1.0: +  version "2.1.0" +  resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" +  integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU= +  dependencies: +    restore-cursor "^2.0.0" + +cli-spinners@^0.1.2: +  version "0.1.2" +  resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-0.1.2.tgz#bb764d88e185fb9e1e6a2a1f19772318f605e31c" +  integrity sha1-u3ZNiOGF+54eaiofGXcjGPYF4xw= + +cli-spinners@^2.0.0: +  version "2.1.0" +  resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.1.0.tgz#22c34b4d51f573240885b201efda4e4ec9fff3c7" +  integrity sha512-8B00fJOEh1HPrx4fo5eW16XmE1PcL1tGpGrxy63CXGP9nHdPBN63X75hA1zhvQuhVztJWLqV58Roj2qlNM7cAA== + +cli-truncate@^0.2.1: +  version "0.2.1" +  resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-0.2.1.tgz#9f15cfbb0705005369216c626ac7d05ab90dd574" +  integrity sha1-nxXPuwcFAFNpIWxiasfQWrkN1XQ= +  dependencies: +    slice-ansi "0.0.4" +    string-width "^1.0.1" + +cli-width@^2.0.0: +  version "2.2.0" +  resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" +  integrity sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk= + +clipboardy@1.2.3: +  version "1.2.3" +  resolved "https://registry.yarnpkg.com/clipboardy/-/clipboardy-1.2.3.tgz#0526361bf78724c1f20be248d428e365433c07ef" +  integrity sha512-2WNImOvCRe6r63Gk9pShfkwXsVtKCroMAevIbiae021mS850UkWPbevxsBz3tnvjZIEGvlwaqCPsw+4ulzNgJA== +  dependencies: +    arch "^2.1.0" +    execa "^0.8.0" + +cliui@^2.1.0: +  version "2.1.0" +  resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1" +  integrity sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE= +  dependencies: +    center-align "^0.1.1" +    right-align "^0.1.1" +    wordwrap "0.0.2" + +clone@^1.0.2: +  version "1.0.4" +  resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" +  integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4= + +co@3.1.0: +  version "3.1.0" +  resolved "https://registry.yarnpkg.com/co/-/co-3.1.0.tgz#4ea54ea5a08938153185e15210c68d9092bc1b78" +  integrity sha1-TqVOpaCJOBUxheFSEMaNkJK8G3g= + +code-point-at@^1.0.0: +  version "1.1.0" +  resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" +  integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= + +collapse-white-space@^1.0.2: +  version "1.0.4" +  resolved "https://registry.yarnpkg.com/collapse-white-space/-/collapse-white-space-1.0.4.tgz#ce05cf49e54c3277ae573036a26851ba430a0091" +  integrity sha512-YfQ1tAUZm561vpYD+5eyWN8+UsceQbSrqqlc/6zDY2gtAE+uZLSdkkovhnGpmCThsvKBFakq4EdY/FF93E8XIw== + +collection-visit@^1.0.0: +  version "1.0.0" +  resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" +  integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= +  dependencies: +    map-visit "^1.0.0" +    object-visit "^1.0.0" + +color-convert@^1.9.0: +  version "1.9.3" +  resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" +  integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== +  dependencies: +    color-name "1.1.3" + +color-name@1.1.3: +  version "1.1.3" +  resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" +  integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= + +colors@^1.1.2: +  version "1.3.3" +  resolved "https://registry.yarnpkg.com/colors/-/colors-1.3.3.tgz#39e005d546afe01e01f9c4ca8fa50f686a01205d" +  integrity sha512-mmGt/1pZqYRjMxB1axhTo16/snVZ5krrKkcmMeVKxzECMMXoCgnvTPp10QgHfcbQZw8Dq2jMNG6je4JlWU0gWg== + +combine-source-map@^0.8.0, combine-source-map@~0.8.0: +  version "0.8.0" +  resolved "https://registry.yarnpkg.com/combine-source-map/-/combine-source-map-0.8.0.tgz#a58d0df042c186fcf822a8e8015f5450d2d79a8b" +  integrity sha1-pY0N8ELBhvz4IqjoAV9UUNLXmos= +  dependencies: +    convert-source-map "~1.1.0" +    inline-source-map "~0.6.0" +    lodash.memoize "~3.0.3" +    source-map "~0.5.3" + +combined-stream@^1.0.6, combined-stream@~1.0.6: +  version "1.0.7" +  resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.7.tgz#2d1d24317afb8abe95d6d2c0b07b57813539d828" +  integrity sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w== +  dependencies: +    delayed-stream "~1.0.0" + +commander@^2.14.1, commander@^2.18.0, commander@^2.19.0, commander@^2.9.0, commander@~2.20.0: +  version "2.20.0" +  resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422" +  integrity sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ== + +compare-func@^1.3.1: +  version "1.3.2" +  resolved "https://registry.yarnpkg.com/compare-func/-/compare-func-1.3.2.tgz#99dd0ba457e1f9bc722b12c08ec33eeab31fa648" +  integrity sha1-md0LpFfh+bxyKxLAjsM+6rMfpkg= +  dependencies: +    array-ify "^1.0.0" +    dot-prop "^3.0.0" + +component-emitter@^1.2.1: +  version "1.3.0" +  resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" +  integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== + +compressible@~2.0.16: +  version "2.0.17" +  resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.17.tgz#6e8c108a16ad58384a977f3a482ca20bff2f38c1" +  integrity sha512-BGHeLCK1GV7j1bSmQQAi26X+GgWcTjLr/0tzSvMCl3LH1w1IJ4PFSPoV5316b30cneTziC+B1a+3OjoSUcQYmw== +  dependencies: +    mime-db ">= 1.40.0 < 2" + +compression@^1.6.2: +  version "1.7.4" +  resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f" +  integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ== +  dependencies: +    accepts "~1.3.5" +    bytes "3.0.0" +    compressible "~2.0.16" +    debug "2.6.9" +    on-headers "~1.0.2" +    safe-buffer "5.1.2" +    vary "~1.1.2" + +concat-map@0.0.1: +  version "0.0.1" +  resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" +  integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= + +concat-stream@^1.5.1, concat-stream@^1.6.0, concat-stream@^1.6.1, concat-stream@~1.6.0: +  version "1.6.2" +  resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" +  integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== +  dependencies: +    buffer-from "^1.0.0" +    inherits "^2.0.3" +    readable-stream "^2.2.2" +    typedarray "^0.0.6" + +configstore@^3.0.0: +  version "3.1.2" +  resolved "https://registry.yarnpkg.com/configstore/-/configstore-3.1.2.tgz#c6f25defaeef26df12dd33414b001fe81a543f8f" +  integrity sha512-vtv5HtGjcYUgFrXc6Kx747B83MRRVS5R1VTEQoXvuP+kMI+if6uywV0nDGoiydJRy4yk7h9od5Og0kxx4zUXmw== +  dependencies: +    dot-prop "^4.1.0" +    graceful-fs "^4.1.2" +    make-dir "^1.0.0" +    unique-string "^1.0.0" +    write-file-atomic "^2.0.0" +    xdg-basedir "^3.0.0" + +console-browserify@^1.1.0: +  version "1.1.0" +  resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10" +  integrity sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA= +  dependencies: +    date-now "^0.1.4" + +console-control-strings@^1.0.0, console-control-strings@~1.1.0: +  version "1.1.0" +  resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" +  integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= + +constants-browserify@~1.0.0: +  version "1.0.0" +  resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" +  integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= + +contains-path@^0.1.0: +  version "0.1.0" +  resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" +  integrity sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo= + +content-disposition@0.5.2: +  version "0.5.2" +  resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4" +  integrity sha1-DPaLud318r55YcOoUXjLhdunjLQ= + +content-type@1.0.4, content-type@~1.0.4: +  version "1.0.4" +  resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" +  integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== + +conventional-changelog-angular@^1.6.6: +  version "1.6.6" +  resolved "https://registry.yarnpkg.com/conventional-changelog-angular/-/conventional-changelog-angular-1.6.6.tgz#b27f2b315c16d0a1f23eb181309d0e6a4698ea0f" +  integrity sha512-suQnFSqCxRwyBxY68pYTsFkG0taIdinHLNEAX5ivtw8bCRnIgnpvcHmlR/yjUyZIrNPYAoXlY1WiEKWgSE4BNg== +  dependencies: +    compare-func "^1.3.1" +    q "^1.5.1" + +conventional-changelog-atom@^0.2.8: +  version "0.2.8" +  resolved "https://registry.yarnpkg.com/conventional-changelog-atom/-/conventional-changelog-atom-0.2.8.tgz#8037693455990e3256f297320a45fa47ee553a14" +  integrity sha512-8pPZqhMbrnltNBizjoDCb/Sz85KyUXNDQxuAEYAU5V/eHn0okMBVjqc8aHWYpHrytyZWvMGbayOlDv7i8kEf6g== +  dependencies: +    q "^1.5.1" + +conventional-changelog-cli@^1.2.0: +  version "1.3.22" +  resolved "https://registry.yarnpkg.com/conventional-changelog-cli/-/conventional-changelog-cli-1.3.22.tgz#13570fe1728f56f013ff7a88878ff49d5162a405" +  integrity sha512-pnjdIJbxjkZ5VdAX/H1wndr1G10CY8MuZgnXuJhIHglOXfIrXygb7KZC836GW9uo1u8PjEIvIw/bKX0lOmOzZg== +  dependencies: +    add-stream "^1.0.0" +    conventional-changelog "^1.1.24" +    lodash "^4.2.1" +    meow "^4.0.0" +    tempfile "^1.1.1" + +conventional-changelog-codemirror@^0.3.8: +  version "0.3.8" +  resolved "https://registry.yarnpkg.com/conventional-changelog-codemirror/-/conventional-changelog-codemirror-0.3.8.tgz#a1982c8291f4ee4d6f2f62817c6b2ecd2c4b7b47" +  integrity sha512-3HFZKtBXTaUCHvz7ai6nk2+psRIkldDoNzCsom0egDtVmPsvvHZkzjynhdQyULfacRSsBTaiQ0ol6nBOL4dDiQ== +  dependencies: +    q "^1.5.1" + +conventional-changelog-core@^2.0.11: +  version "2.0.11" +  resolved "https://registry.yarnpkg.com/conventional-changelog-core/-/conventional-changelog-core-2.0.11.tgz#19b5fbd55a9697773ed6661f4e32030ed7e30287" +  integrity sha512-HvTE6RlqeEZ/NFPtQeFLsIDOLrGP3bXYr7lFLMhCVsbduF1MXIe8OODkwMFyo1i9ku9NWBwVnVn0jDmIFXjDRg== +  dependencies: +    conventional-changelog-writer "^3.0.9" +    conventional-commits-parser "^2.1.7" +    dateformat "^3.0.0" +    get-pkg-repo "^1.0.0" +    git-raw-commits "^1.3.6" +    git-remote-origin-url "^2.0.0" +    git-semver-tags "^1.3.6" +    lodash "^4.2.1" +    normalize-package-data "^2.3.5" +    q "^1.5.1" +    read-pkg "^1.1.0" +    read-pkg-up "^1.0.1" +    through2 "^2.0.0" + +conventional-changelog-ember@^0.3.12: +  version "0.3.12" +  resolved "https://registry.yarnpkg.com/conventional-changelog-ember/-/conventional-changelog-ember-0.3.12.tgz#b7d31851756d0fcb49b031dffeb6afa93b202400" +  integrity sha512-mmJzA7uzbrOqeF89dMMi6z17O07ORTXlTMArnLG9ZTX4oLaKNolUlxFUFlFm9JUoVWajVpaHQWjxH1EOQ+ARoQ== +  dependencies: +    q "^1.5.1" + +conventional-changelog-eslint@^1.0.9: +  version "1.0.9" +  resolved "https://registry.yarnpkg.com/conventional-changelog-eslint/-/conventional-changelog-eslint-1.0.9.tgz#b13cc7e4b472c819450ede031ff1a75c0e3d07d3" +  integrity sha512-h87nfVh2fdk9fJIvz26wCBsbDC/KxqCc5wSlNMZbXcARtbgNbNDIF7Y7ctokFdnxkzVdaHsbINkh548T9eBA7Q== +  dependencies: +    q "^1.5.1" + +conventional-changelog-express@^0.3.6: +  version "0.3.6" +  resolved "https://registry.yarnpkg.com/conventional-changelog-express/-/conventional-changelog-express-0.3.6.tgz#4a6295cb11785059fb09202180d0e59c358b9c2c" +  integrity sha512-3iWVtBJZ9RnRnZveNDzOD8QRn6g6vUif0qVTWWyi5nUIAbuN1FfPVyKdAlJJfp5Im+dE8Kiy/d2SpaX/0X678Q== +  dependencies: +    q "^1.5.1" + +conventional-changelog-jquery@^0.1.0: +  version "0.1.0" +  resolved "https://registry.yarnpkg.com/conventional-changelog-jquery/-/conventional-changelog-jquery-0.1.0.tgz#0208397162e3846986e71273b6c79c5b5f80f510" +  integrity sha1-Agg5cWLjhGmG5xJztsecW1+A9RA= +  dependencies: +    q "^1.4.1" + +conventional-changelog-jscs@^0.1.0: +  version "0.1.0" +  resolved "https://registry.yarnpkg.com/conventional-changelog-jscs/-/conventional-changelog-jscs-0.1.0.tgz#0479eb443cc7d72c58bf0bcf0ef1d444a92f0e5c" +  integrity sha1-BHnrRDzH1yxYvwvPDvHURKkvDlw= +  dependencies: +    q "^1.4.1" + +conventional-changelog-jshint@^0.3.8: +  version "0.3.8" +  resolved "https://registry.yarnpkg.com/conventional-changelog-jshint/-/conventional-changelog-jshint-0.3.8.tgz#9051c1ac0767abaf62a31f74d2fe8790e8acc6c8" +  integrity sha512-hn9QU4ZI/5V50wKPJNPGT4gEWgiBFpV6adieILW4MaUFynuDYOvQ71EMSj3EznJyKi/KzuXpc9dGmX8njZMjig== +  dependencies: +    compare-func "^1.3.1" +    q "^1.5.1" + +conventional-changelog-preset-loader@^1.1.8: +  version "1.1.8" +  resolved "https://registry.yarnpkg.com/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-1.1.8.tgz#40bb0f142cd27d16839ec6c74ee8db418099b373" +  integrity sha512-MkksM4G4YdrMlT2MbTsV2F6LXu/hZR0Tc/yenRrDIKRwBl/SP7ER4ZDlglqJsCzLJi4UonBc52Bkm5hzrOVCcw== + +conventional-changelog-writer@^3.0.9: +  version "3.0.9" +  resolved "https://registry.yarnpkg.com/conventional-changelog-writer/-/conventional-changelog-writer-3.0.9.tgz#4aecdfef33ff2a53bb0cf3b8071ce21f0e994634" +  integrity sha512-n9KbsxlJxRQsUnK6wIBRnARacvNnN4C/nxnxCkH+B/R1JS2Fa+DiP1dU4I59mEDEjgnFaN2+9wr1P1s7GYB5/Q== +  dependencies: +    compare-func "^1.3.1" +    conventional-commits-filter "^1.1.6" +    dateformat "^3.0.0" +    handlebars "^4.0.2" +    json-stringify-safe "^5.0.1" +    lodash "^4.2.1" +    meow "^4.0.0" +    semver "^5.5.0" +    split "^1.0.0" +    through2 "^2.0.0" + +conventional-changelog@^1.1.24: +  version "1.1.24" +  resolved "https://registry.yarnpkg.com/conventional-changelog/-/conventional-changelog-1.1.24.tgz#3d94c29c960f5261c002678315b756cdd3d7d1f0" +  integrity sha512-2WcSUst4Y3Z4hHvoMTWXMJr/DmgVdLiMOVY1Kak2LfFz+GIz2KDp5naqbFesYbfXPmaZ5p491dO0FWZIJoJw1Q== +  dependencies: +    conventional-changelog-angular "^1.6.6" +    conventional-changelog-atom "^0.2.8" +    conventional-changelog-codemirror "^0.3.8" +    conventional-changelog-core "^2.0.11" +    conventional-changelog-ember "^0.3.12" +    conventional-changelog-eslint "^1.0.9" +    conventional-changelog-express "^0.3.6" +    conventional-changelog-jquery "^0.1.0" +    conventional-changelog-jscs "^0.1.0" +    conventional-changelog-jshint "^0.3.8" +    conventional-changelog-preset-loader "^1.1.8" + +conventional-commits-filter@^1.1.6: +  version "1.1.6" +  resolved "https://registry.yarnpkg.com/conventional-commits-filter/-/conventional-commits-filter-1.1.6.tgz#4389cd8e58fe89750c0b5fb58f1d7f0cc8ad3831" +  integrity sha512-KcDgtCRKJCQhyk6VLT7zR+ZOyCnerfemE/CsR3iQpzRRFbLEs0Y6rwk3mpDvtOh04X223z+1xyJ582Stfct/0Q== +  dependencies: +    is-subset "^0.1.1" +    modify-values "^1.0.0" + +conventional-commits-parser@^2.1.7: +  version "2.1.7" +  resolved "https://registry.yarnpkg.com/conventional-commits-parser/-/conventional-commits-parser-2.1.7.tgz#eca45ed6140d72ba9722ee4132674d639e644e8e" +  integrity sha512-BoMaddIEJ6B4QVMSDu9IkVImlGOSGA1I2BQyOZHeLQ6qVOJLcLKn97+fL6dGbzWEiqDzfH4OkcveULmeq2MHFQ== +  dependencies: +    JSONStream "^1.0.4" +    is-text-path "^1.0.0" +    lodash "^4.2.1" +    meow "^4.0.0" +    split2 "^2.0.0" +    through2 "^2.0.0" +    trim-off-newlines "^1.0.0" + +convert-source-map@^1.1.0: +  version "1.6.0" +  resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.6.0.tgz#51b537a8c43e0f04dec1993bffcdd504e758ac20" +  integrity sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A== +  dependencies: +    safe-buffer "~5.1.1" + +convert-source-map@~1.1.0: +  version "1.1.3" +  resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.1.3.tgz#4829c877e9fe49b3161f3bf3673888e204699860" +  integrity sha1-SCnId+n+SbMWHzvzZziI4gRpmGA= + +cookie-signature@1.0.6: +  version "1.0.6" +  resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" +  integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= + +cookie@0.3.1: +  version "0.3.1" +  resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" +  integrity sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s= + +copy-descriptor@^0.1.0: +  version "0.1.1" +  resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" +  integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= + +core-util-is@1.0.2, core-util-is@~1.0.0: +  version "1.0.2" +  resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" +  integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= + +cosmiconfig@^5.0.2: +  version "5.2.0" +  resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.0.tgz#45038e4d28a7fe787203aede9c25bca4a08b12c8" +  integrity sha512-nxt+Nfc3JAqf4WIWd0jXLjTJZmsPLrA9DDc4nRw2KFJQJK7DNooqSXrNI7tzLG50CF8axczly5UV929tBmh/7g== +  dependencies: +    import-fresh "^2.0.0" +    is-directory "^0.3.1" +    js-yaml "^3.13.0" +    parse-json "^4.0.0" + +create-ecdh@^4.0.0: +  version "4.0.3" +  resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff" +  integrity sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw== +  dependencies: +    bn.js "^4.1.0" +    elliptic "^6.0.0" + +create-error-class@^3.0.0: +  version "3.0.2" +  resolved "https://registry.yarnpkg.com/create-error-class/-/create-error-class-3.0.2.tgz#06be7abef947a3f14a30fd610671d401bca8b7b6" +  integrity sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y= +  dependencies: +    capture-stack-trace "^1.0.0" + +create-hash@^1.1.0, create-hash@^1.1.2: +  version "1.2.0" +  resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" +  integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== +  dependencies: +    cipher-base "^1.0.1" +    inherits "^2.0.1" +    md5.js "^1.3.4" +    ripemd160 "^2.0.1" +    sha.js "^2.4.0" + +create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: +  version "1.1.7" +  resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" +  integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== +  dependencies: +    cipher-base "^1.0.3" +    create-hash "^1.1.0" +    inherits "^2.0.1" +    ripemd160 "^2.0.0" +    safe-buffer "^5.0.1" +    sha.js "^2.4.8" + +cross-spawn@^5.0.1: +  version "5.1.0" +  resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" +  integrity sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk= +  dependencies: +    lru-cache "^4.0.1" +    shebang-command "^1.2.0" +    which "^1.2.9" + +cross-spawn@^6.0.0, cross-spawn@^6.0.5: +  version "6.0.5" +  resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" +  integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== +  dependencies: +    nice-try "^1.0.4" +    path-key "^2.0.1" +    semver "^5.5.0" +    shebang-command "^1.2.0" +    which "^1.2.9" + +crypto-browserify@^3.0.0: +  version "3.12.0" +  resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" +  integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== +  dependencies: +    browserify-cipher "^1.0.0" +    browserify-sign "^4.0.0" +    create-ecdh "^4.0.0" +    create-hash "^1.1.0" +    create-hmac "^1.1.0" +    diffie-hellman "^5.0.0" +    inherits "^2.0.1" +    pbkdf2 "^3.0.3" +    public-encrypt "^4.0.0" +    randombytes "^2.0.0" +    randomfill "^1.0.3" + +crypto-random-string@^1.0.0: +  version "1.0.0" +  resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e" +  integrity sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4= + +css-select@~1.2.0: +  version "1.2.0" +  resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858" +  integrity sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg= +  dependencies: +    boolbase "~1.0.0" +    css-what "2.1" +    domutils "1.5.1" +    nth-check "~1.0.1" + +css-what@2.1: +  version "2.1.3" +  resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.3.tgz#a6d7604573365fe74686c3f311c56513d88285f2" +  integrity sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg== + +cssom@0.3.x, "cssom@>= 0.3.0 < 0.4.0": +  version "0.3.6" +  resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.6.tgz#f85206cee04efa841f3c5982a74ba96ab20d65ad" +  integrity sha512-DtUeseGk9/GBW0hl0vVPpU22iHL6YB5BUX7ml1hB+GMpo0NX5G4voX3kdWiMSEguFtcW3Vh3djqNF4aIe6ne0A== + +"cssstyle@>= 0.2.29 < 0.3.0": +  version "0.2.37" +  resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-0.2.37.tgz#541097234cb2513c83ceed3acddc27ff27987d54" +  integrity sha1-VBCXI0yyUTyDzu06zdwn/yeYfVQ= +  dependencies: +    cssom "0.3.x" + +cuint@^0.2.2: +  version "0.2.2" +  resolved "https://registry.yarnpkg.com/cuint/-/cuint-0.2.2.tgz#408086d409550c2631155619e9fa7bcadc3b991b" +  integrity sha1-QICG1AlVDCYxFVYZ6fp7ytw7mRs= + +currently-unhandled@^0.4.1: +  version "0.4.1" +  resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" +  integrity sha1-mI3zP+qxke95mmE2nddsF635V+o= +  dependencies: +    array-find-index "^1.0.1" + +dargs@5.1.0: +  version "5.1.0" +  resolved "https://registry.yarnpkg.com/dargs/-/dargs-5.1.0.tgz#ec7ea50c78564cd36c9d5ec18f66329fade27829" +  integrity sha1-7H6lDHhWTNNsnV7Bj2Yyn63ieCk= + +dargs@^4.0.1: +  version "4.1.0" +  resolved "https://registry.yarnpkg.com/dargs/-/dargs-4.1.0.tgz#03a9dbb4b5c2f139bf14ae53f0b8a2a6a86f4e17" +  integrity sha1-A6nbtLXC8Tm/FK5T8LiipqhvThc= +  dependencies: +    number-is-nan "^1.0.0" + +dash-ast@^1.0.0: +  version "1.0.0" +  resolved "https://registry.yarnpkg.com/dash-ast/-/dash-ast-1.0.0.tgz#12029ba5fb2f8aa6f0a861795b23c1b4b6c27d37" +  integrity sha512-Vy4dx7gquTeMcQR/hDkYLGUnwVil6vk4FOOct+djUnHOUWt+zJPJAaRIXaAFkPXtJjvlY7o3rfRu0/3hpnwoUA== + +dashdash@^1.12.0: +  version "1.14.1" +  resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" +  integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= +  dependencies: +    assert-plus "^1.0.0" + +date-fns@^1.27.2: +  version "1.30.1" +  resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.30.1.tgz#2e71bf0b119153dbb4cc4e88d9ea5acfb50dc05c" +  integrity sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw== + +date-now@^0.1.4: +  version "0.1.4" +  resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b" +  integrity sha1-6vQ5/U1ISK105cx9vvIAZyueNFs= + +dateformat@^3.0.0: +  version "3.0.3" +  resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae" +  integrity sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q== + +debug-log@^1.0.0: +  version "1.0.1" +  resolved "https://registry.yarnpkg.com/debug-log/-/debug-log-1.0.1.tgz#2307632d4c04382b8df8a32f70b895046d52745f" +  integrity sha1-IwdjLUwEOCuN+KMvcLiVBG1SdF8= + +debug@2.6.9, debug@^2.1.3, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.3, debug@^2.6.8, debug@^2.6.9: +  version "2.6.9" +  resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" +  integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== +  dependencies: +    ms "2.0.0" + +debug@^3.1.0: +  version "3.2.6" +  resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" +  integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== +  dependencies: +    ms "^2.1.1" + +debug@^4.0.1, debug@^4.1.0: +  version "4.1.1" +  resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" +  integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== +  dependencies: +    ms "^2.1.1" + +decamelize-keys@^1.0.0: +  version "1.1.0" +  resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.0.tgz#d171a87933252807eb3cb61dc1c1445d078df2d9" +  integrity sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk= +  dependencies: +    decamelize "^1.1.0" +    map-obj "^1.0.0" + +decamelize@^1.0.0, decamelize@^1.1.0, decamelize@^1.1.2: +  version "1.2.0" +  resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" +  integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= + +decamelize@^2.0.0: +  version "2.0.0" +  resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-2.0.0.tgz#656d7bbc8094c4c788ea53c5840908c9c7d063c7" +  integrity sha512-Ikpp5scV3MSYxY39ymh45ZLEecsTdv/Xj2CaQfI8RLMuwi7XvjX9H/fhraiSuU+C5w5NTDu4ZU72xNiZnurBPg== +  dependencies: +    xregexp "4.0.0" + +decode-uri-component@^0.2.0: +  version "0.2.0" +  resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" +  integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= + +dedent@^0.7.0: +  version "0.7.0" +  resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" +  integrity sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw= + +deep-extend@^0.6.0: +  version "0.6.0" +  resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" +  integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== + +deep-is@~0.1.3: +  version "0.1.3" +  resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" +  integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= + +deepmerge@3.2.0: +  version "3.2.0" +  resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-3.2.0.tgz#58ef463a57c08d376547f8869fdc5bcee957f44e" +  integrity sha512-6+LuZGU7QCNUnAJyX8cIrlzoEgggTM6B7mm+znKOX4t5ltluT9KLjN6g61ECMS0LTsLW7yDpNoxhix5FZcrIow== + +defaults@^1.0.3: +  version "1.0.3" +  resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" +  integrity sha1-xlYFHpgX2f8I7YgUd/P+QBnz730= +  dependencies: +    clone "^1.0.2" + +define-properties@^1.1.2: +  version "1.1.3" +  resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" +  integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== +  dependencies: +    object-keys "^1.0.12" + +define-property@^0.2.5: +  version "0.2.5" +  resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" +  integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= +  dependencies: +    is-descriptor "^0.1.0" + +define-property@^1.0.0: +  version "1.0.0" +  resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" +  integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= +  dependencies: +    is-descriptor "^1.0.0" + +define-property@^2.0.2: +  version "2.0.2" +  resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" +  integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== +  dependencies: +    is-descriptor "^1.0.2" +    isobject "^3.0.1" + +defined@^1.0.0: +  version "1.0.0" +  resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" +  integrity sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM= + +deglob@^2.1.0: +  version "2.1.1" +  resolved "https://registry.yarnpkg.com/deglob/-/deglob-2.1.1.tgz#d268e168727799862e8eac07042e165957c1f3be" +  integrity sha512-2kjwuGGonL7gWE1XU4Fv79+vVzpoQCl0V+boMwWtOQJV2AGDabCwez++nB1Nli/8BabAfZQ/UuHPlp6AymKdWw== +  dependencies: +    find-root "^1.0.0" +    glob "^7.0.5" +    ignore "^3.0.9" +    pkg-config "^1.1.0" +    run-parallel "^1.1.2" +    uniq "^1.0.1" + +del@^3.0.0: +  version "3.0.0" +  resolved "https://registry.yarnpkg.com/del/-/del-3.0.0.tgz#53ecf699ffcbcb39637691ab13baf160819766e5" +  integrity sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU= +  dependencies: +    globby "^6.1.0" +    is-path-cwd "^1.0.0" +    is-path-in-cwd "^1.0.0" +    p-map "^1.1.1" +    pify "^3.0.0" +    rimraf "^2.2.8" + +delayed-stream@~1.0.0: +  version "1.0.0" +  resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" +  integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= + +delegates@^1.0.0: +  version "1.0.0" +  resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" +  integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= + +depd@1.1.1: +  version "1.1.1" +  resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.1.tgz#5783b4e1c459f06fa5ca27f991f3d06e7a310359" +  integrity sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k= + +depd@~1.1.2: +  version "1.1.2" +  resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" +  integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= + +deprecation@^1.0.1: +  version "1.0.1" +  resolved "https://registry.yarnpkg.com/deprecation/-/deprecation-1.0.1.tgz#2df79b79005752180816b7b6e079cbd80490d711" +  integrity sha512-ccVHpE72+tcIKaGMql33x5MAjKQIZrk+3x2GbJ7TeraUCZWHoT+KSZpoC+JQFsUBlSTXUrBaGiF0j6zVTepPLg== + +deps-sort@^2.0.0: +  version "2.0.0" +  resolved "https://registry.yarnpkg.com/deps-sort/-/deps-sort-2.0.0.tgz#091724902e84658260eb910748cccd1af6e21fb5" +  integrity sha1-CRckkC6EZYJg65EHSMzNGvbiH7U= +  dependencies: +    JSONStream "^1.0.3" +    shasum "^1.0.0" +    subarg "^1.0.0" +    through2 "^2.0.0" + +des.js@^1.0.0: +  version "1.0.0" +  resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc" +  integrity sha1-wHTS4qpqipoH29YfmhXCzYPsjsw= +  dependencies: +    inherits "^2.0.1" +    minimalistic-assert "^1.0.0" + +destroy@~1.0.4: +  version "1.0.4" +  resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" +  integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= + +detect-libc@^1.0.2: +  version "1.0.3" +  resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" +  integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= + +detect-port@1.2.3: +  version "1.2.3" +  resolved "https://registry.yarnpkg.com/detect-port/-/detect-port-1.2.3.tgz#15bf49820d02deb84bfee0a74876b32d791bf610" +  integrity sha512-IDbrX6PxqnYy8jV4wSHBaJlErYKTJvW8OQb9F7xivl1iQLqiUYHGa+nZ61Do6+N5uuOn/pReXKNqI9rUn04vug== +  dependencies: +    address "^1.0.1" +    debug "^2.6.0" + +detective@^5.0.2: +  version "5.2.0" +  resolved "https://registry.yarnpkg.com/detective/-/detective-5.2.0.tgz#feb2a77e85b904ecdea459ad897cc90a99bd2a7b" +  integrity sha512-6SsIx+nUUbuK0EthKjv0zrdnajCCXVYGmbYYiYjFVpzcjwEs/JMDZ8tPRG29J/HhN56t3GJp2cGSWDRjjot8Pg== +  dependencies: +    acorn-node "^1.6.1" +    defined "^1.0.0" +    minimist "^1.1.1" + +diff@^3.0.1, diff@^3.1.0: +  version "3.5.0" +  resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" +  integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA== + +diffie-hellman@^5.0.0: +  version "5.0.3" +  resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" +  integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== +  dependencies: +    bn.js "^4.1.0" +    miller-rabin "^4.0.0" +    randombytes "^2.0.0" + +dir-glob@2.0.0: +  version "2.0.0" +  resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.0.0.tgz#0b205d2b6aef98238ca286598a8204d29d0a0034" +  integrity sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag== +  dependencies: +    arrify "^1.0.1" +    path-type "^3.0.0" + +doctrine@1.5.0: +  version "1.5.0" +  resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" +  integrity sha1-N53Ocw9hZvds76TmcHoVmwLFpvo= +  dependencies: +    esutils "^2.0.2" +    isarray "^1.0.0" + +doctrine@^2.1.0: +  version "2.1.0" +  resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" +  integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== +  dependencies: +    esutils "^2.0.2" + +doctrine@^3.0.0: +  version "3.0.0" +  resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" +  integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== +  dependencies: +    esutils "^2.0.2" + +dom-serializer@0, dom-serializer@~0.1.0, dom-serializer@~0.1.1: +  version "0.1.1" +  resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.1.tgz#1ec4059e284babed36eec2941d4a970a189ce7c0" +  integrity sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA== +  dependencies: +    domelementtype "^1.3.0" +    entities "^1.1.1" + +domain-browser@^1.2.0: +  version "1.2.0" +  resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" +  integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== + +domelementtype@1, domelementtype@^1.3.0, domelementtype@^1.3.1: +  version "1.3.1" +  resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" +  integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== + +domhandler@2.3: +  version "2.3.0" +  resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.3.0.tgz#2de59a0822d5027fabff6f032c2b25a2a8abe738" +  integrity sha1-LeWaCCLVAn+r/28DLCsloqir5zg= +  dependencies: +    domelementtype "1" + +domhandler@^2.3.0: +  version "2.4.2" +  resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803" +  integrity sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA== +  dependencies: +    domelementtype "1" + +domutils@1.5, domutils@1.5.1: +  version "1.5.1" +  resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf" +  integrity sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8= +  dependencies: +    dom-serializer "0" +    domelementtype "1" + +domutils@^1.5.1: +  version "1.7.0" +  resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" +  integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== +  dependencies: +    dom-serializer "0" +    domelementtype "1" + +dot-prop@^3.0.0: +  version "3.0.0" +  resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-3.0.0.tgz#1b708af094a49c9a0e7dbcad790aba539dac1177" +  integrity sha1-G3CK8JSknJoOfbyteQq6U52sEXc= +  dependencies: +    is-obj "^1.0.0" + +dot-prop@^4.1.0: +  version "4.2.0" +  resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-4.2.0.tgz#1f19e0c2e1aa0e32797c49799f2837ac6af69c57" +  integrity sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ== +  dependencies: +    is-obj "^1.0.0" + +dotenv-safe@^4.0.4: +  version "4.0.4" +  resolved "https://registry.yarnpkg.com/dotenv-safe/-/dotenv-safe-4.0.4.tgz#8b0e7ced8e70b1d3c5d874ef9420e406f39425b3" +  integrity sha1-iw587Y5wsdPF2HTvlCDkBvOUJbM= +  dependencies: +    dotenv "^4.0.0" + +dotenv@^4.0.0: +  version "4.0.0" +  resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-4.0.0.tgz#864ef1379aced55ce6f95debecdce179f7a0cd1d" +  integrity sha1-hk7xN5rO1Vzm+V3r7NzhefegzR0= + +dugite@^1.45.0: +  version "1.87.0" +  resolved "https://registry.yarnpkg.com/dugite/-/dugite-1.87.0.tgz#ba42c25401420a92c6c8f0c71823ac54124b4b65" +  integrity sha512-+aW2Ql3yw1AEO8Z8nVbjOAEzsinMJMmAg4uf5lzTewFUAHd0danuMPXMP9uMuGuUYN/LQtt4kR2XLuWoD8wRSQ== +  dependencies: +    checksum "^0.1.1" +    mkdirp "^0.5.1" +    progress "^2.0.3" +    request "^2.88.0" +    rimraf "^2.5.4" +    tar "^4.4.7" + +duplexer2@^0.1.2, duplexer2@~0.1.0, duplexer2@~0.1.2: +  version "0.1.4" +  resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1" +  integrity sha1-ixLauHjA1p4+eJEFFmKjL8a93ME= +  dependencies: +    readable-stream "^2.0.2" + +duplexer3@^0.1.4: +  version "0.1.4" +  resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" +  integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= + +duplexify@^3.5.0, duplexify@^3.6.0: +  version "3.7.1" +  resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" +  integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== +  dependencies: +    end-of-stream "^1.0.0" +    inherits "^2.0.1" +    readable-stream "^2.0.0" +    stream-shift "^1.0.0" + +ecc-jsbn@~0.1.1: +  version "0.1.2" +  resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" +  integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= +  dependencies: +    jsbn "~0.1.0" +    safer-buffer "^2.1.0" + +ee-first@1.1.1: +  version "1.1.1" +  resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" +  integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= + +electron-docs-linter@^3.0.0, electron-docs-linter@^3.0.1: +  version "3.0.3" +  resolved "https://registry.yarnpkg.com/electron-docs-linter/-/electron-docs-linter-3.0.3.tgz#7da49f9b94e113f9ee8321818d9205220bc19975" +  integrity sha512-65HmaIH/i/jyxK6a+TPz1IBlUunnNtEb2juYNXrnP0bPusQyWvkkiyExwn5D5mukfkbobwqfIzTxu78xEGHSbQ== +  dependencies: +    cheerio "^1.0.0-rc.2" +    clean-deep "^2.0.1" +    decamelize "^2.0.0" +    dedent "^0.7.0" +    electron-docs "^3.0.2" +    entities "^1.1.2" +    keyed-array "^2.1.2" +    lodash.merge "^4.6.0" +    lodash.pick "^4.2.1" +    marky-markdown-lite "^1.2.0" +    minimist "^1.2.0" +    ora "^3.0.0" +    path-exists "^3.0.0" +    pify "^4.0.1" +    revalidator "^0.3.1" +    semver "^5.6.0" + +electron-docs@^2.0.0: +  version "2.0.1" +  resolved "https://registry.yarnpkg.com/electron-docs/-/electron-docs-2.0.1.tgz#01123a4fccb6be27acc1280027bfcb240c54b1d2" +  integrity sha1-ARI6T8y2vieswSgAJ7/LJAxUsdI= +  dependencies: +    got "^6.3.0" +    gunzip-maybe "^1.3.1" +    node-dir "^0.1.12" +    ora "^0.2.3" +    path-exists "^3.0.0" +    pify "^2.3.0" +    semver "^5.1.0" +    tar-fs "^1.13.0" + +electron-docs@^3.0.2: +  version "3.0.2" +  resolved "https://registry.yarnpkg.com/electron-docs/-/electron-docs-3.0.2.tgz#340d57e6c0dbf86a97249fd451dff6221021754a" +  integrity sha1-NA1X5sDb+GqXJJ/UUd/2IhAhdUo= +  dependencies: +    got "^6.3.0" +    gunzip-maybe "^1.3.1" +    node-dir "^0.1.12" +    ora "^0.2.3" +    path-exists "^3.0.0" +    pify "^2.3.0" +    semver "^5.1.0" +    tar-fs "^1.13.0" + +electron-typescript-definitions@^8.2.2: +  version "8.3.0" +  resolved "https://registry.yarnpkg.com/electron-typescript-definitions/-/electron-typescript-definitions-8.3.0.tgz#6f429aa7ddaeddfc6ffb1d178220070da4bf609c" +  integrity sha512-ihLjmUZQZPeYtb9qsiTvCX2oxETxfEorkb6cUlZrOKqxluaYFVDF8DCZiiaF9u44zuuVIj6yX3rgn9mfgjBF9A== +  dependencies: +    "@types/node" "^7.0.18" +    colors "^1.1.2" +    debug "^2.6.3" +    electron-docs "^2.0.0" +    electron-docs-linter "^3.0.0" +    lodash "^4.17.11" +    mkdirp "^0.5.1" +    rimraf "^2.5.4" +    tslint "^4.5.1" +    typescript "^2.2.1" + +elegant-spinner@^1.0.1: +  version "1.0.1" +  resolved "https://registry.yarnpkg.com/elegant-spinner/-/elegant-spinner-1.0.1.tgz#db043521c95d7e303fd8f345bedc3349cfb0729e" +  integrity sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4= + +elliptic@^6.0.0: +  version "6.4.1" +  resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.1.tgz#c2d0b7776911b86722c632c3c06c60f2f819939a" +  integrity sha512-BsXLz5sqX8OHcsh7CqBMztyXARmGQ3LWPtGjJi6DiJHq5C/qvi9P3OqgswKSDftbu8+IoI/QDTAm2fFnQ9SZSQ== +  dependencies: +    bn.js "^4.4.0" +    brorand "^1.0.1" +    hash.js "^1.0.0" +    hmac-drbg "^1.0.0" +    inherits "^2.0.1" +    minimalistic-assert "^1.0.0" +    minimalistic-crypto-utils "^1.0.0" + +emoji-regex@^7.0.1: +  version "7.0.3" +  resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" +  integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== + +encodeurl@~1.0.2: +  version "1.0.2" +  resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" +  integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= + +end-of-stream@^1.0.0, end-of-stream@^1.1.0: +  version "1.4.1" +  resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43" +  integrity sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q== +  dependencies: +    once "^1.4.0" + +ensure-posix-path@^1.0.0: +  version "1.1.1" +  resolved "https://registry.yarnpkg.com/ensure-posix-path/-/ensure-posix-path-1.1.1.tgz#3c62bdb19fa4681544289edb2b382adc029179ce" +  integrity sha512-VWU0/zXzVbeJNXvME/5EmLuEj2TauvoaTz6aFYK1Z92JCBlDlZ3Gu0tuGR42kpW1754ywTs+QB0g5TP0oj9Zaw== + +entities@1.0: +  version "1.0.0" +  resolved "https://registry.yarnpkg.com/entities/-/entities-1.0.0.tgz#b2987aa3821347fcde642b24fdfc9e4fb712bf26" +  integrity sha1-sph6o4ITR/zeZCsk/fyeT7cSvyY= + +entities@^1.1.1, entities@^1.1.2, entities@~1.1.1: +  version "1.1.2" +  resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" +  integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w== + +error-ex@^1.2.0, error-ex@^1.3.1: +  version "1.3.2" +  resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" +  integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== +  dependencies: +    is-arrayish "^0.2.1" + +es-abstract@^1.7.0: +  version "1.13.0" +  resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.13.0.tgz#ac86145fdd5099d8dd49558ccba2eaf9b88e24e9" +  integrity sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg== +  dependencies: +    es-to-primitive "^1.2.0" +    function-bind "^1.1.1" +    has "^1.0.3" +    is-callable "^1.1.4" +    is-regex "^1.0.4" +    object-keys "^1.0.12" + +es-to-primitive@^1.2.0: +  version "1.2.0" +  resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.0.tgz#edf72478033456e8dda8ef09e00ad9650707f377" +  integrity sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg== +  dependencies: +    is-callable "^1.1.4" +    is-date-object "^1.0.1" +    is-symbol "^1.0.2" + +es6-object-assign@^1.0.3: +  version "1.1.0" +  resolved "https://registry.yarnpkg.com/es6-object-assign/-/es6-object-assign-1.1.0.tgz#c2c3582656247c39ea107cb1e6652b6f9f24523c" +  integrity sha1-wsNYJlYkfDnqEHyx5mUrb58kUjw= + +escape-html@~1.0.3: +  version "1.0.3" +  resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" +  integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= + +escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.4, escape-string-regexp@^1.0.5: +  version "1.0.5" +  resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" +  integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= + +escodegen@^1.6.1: +  version "1.11.1" +  resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.11.1.tgz#c485ff8d6b4cdb89e27f4a856e91f118401ca510" +  integrity sha512-JwiqFD9KdGVVpeuRa68yU3zZnBEOcPs0nKW7wZzXky8Z7tffdYUHbe11bPCV5jYlK6DVdKLWLm0f5I/QlL0Kmw== +  dependencies: +    esprima "^3.1.3" +    estraverse "^4.2.0" +    esutils "^2.0.2" +    optionator "^0.8.1" +  optionalDependencies: +    source-map "~0.6.1" + +eslint-config-standard-jsx@6.0.2: +  version "6.0.2" +  resolved "https://registry.yarnpkg.com/eslint-config-standard-jsx/-/eslint-config-standard-jsx-6.0.2.tgz#90c9aa16ac2c4f8970c13fc7efc608bacd02da70" +  integrity sha512-D+YWAoXw+2GIdbMBRAzWwr1ZtvnSf4n4yL0gKGg7ShUOGXkSOLerI17K4F6LdQMJPNMoWYqepzQD/fKY+tXNSg== + +eslint-config-standard@12.0.0, eslint-config-standard@^12.0.0: +  version "12.0.0" +  resolved "https://registry.yarnpkg.com/eslint-config-standard/-/eslint-config-standard-12.0.0.tgz#638b4c65db0bd5a41319f96bba1f15ddad2107d9" +  integrity sha512-COUz8FnXhqFitYj4DTqHzidjIL/t4mumGZto5c7DrBpvWoie+Sn3P4sLEzUGeYhRElWuFEf8K1S1EfvD1vixCQ== + +eslint-import-resolver-node@^0.3.1, eslint-import-resolver-node@^0.3.2: +  version "0.3.2" +  resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.2.tgz#58f15fb839b8d0576ca980413476aab2472db66a" +  integrity sha512-sfmTqJfPSizWu4aymbPr4Iidp5yKm8yDkHp+Ir3YiTHiiDfxh69mOUsmiqW6RZ9zRXFaF64GtYmN7e+8GHBv6Q== +  dependencies: +    debug "^2.6.9" +    resolve "^1.5.0" + +eslint-module-utils@^2.2.0, eslint-module-utils@^2.4.0: +  version "2.4.0" +  resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.4.0.tgz#8b93499e9b00eab80ccb6614e69f03678e84e09a" +  integrity sha512-14tltLm38Eu3zS+mt0KvILC3q8jyIAH518MlG+HO0p+yK885Lb1UHTY/UgR91eOyGdmxAPb+OLoW4znqIT6Ndw== +  dependencies: +    debug "^2.6.8" +    pkg-dir "^2.0.0" + +eslint-plugin-es@^1.3.1: +  version "1.4.0" +  resolved "https://registry.yarnpkg.com/eslint-plugin-es/-/eslint-plugin-es-1.4.0.tgz#475f65bb20c993fc10e8c8fe77d1d60068072da6" +  integrity sha512-XfFmgFdIUDgvaRAlaXUkxrRg5JSADoRC8IkKLc/cISeR3yHVMefFHQZpcyXXEUUPHfy5DwviBcrfqlyqEwlQVw== +  dependencies: +    eslint-utils "^1.3.0" +    regexpp "^2.0.1" + +eslint-plugin-import@^2.17.2: +  version "2.17.2" +  resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.17.2.tgz#d227d5c6dc67eca71eb590d2bb62fb38d86e9fcb" +  integrity sha512-m+cSVxM7oLsIpmwNn2WXTJoReOF9f/CtLMo7qOVmKd1KntBy0hEcuNZ3erTmWjx+DxRO0Zcrm5KwAvI9wHcV5g== +  dependencies: +    array-includes "^3.0.3" +    contains-path "^0.1.0" +    debug "^2.6.9" +    doctrine "1.5.0" +    eslint-import-resolver-node "^0.3.2" +    eslint-module-utils "^2.4.0" +    has "^1.0.3" +    lodash "^4.17.11" +    minimatch "^3.0.4" +    read-pkg-up "^2.0.0" +    resolve "^1.10.0" + +eslint-plugin-import@~2.14.0: +  version "2.14.0" +  resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.14.0.tgz#6b17626d2e3e6ad52cfce8807a845d15e22111a8" +  integrity sha512-FpuRtniD/AY6sXByma2Wr0TXvXJ4nA/2/04VPlfpmUDPOpOY264x+ILiwnrk/k4RINgDAyFZByxqPUbSQ5YE7g== +  dependencies: +    contains-path "^0.1.0" +    debug "^2.6.8" +    doctrine "1.5.0" +    eslint-import-resolver-node "^0.3.1" +    eslint-module-utils "^2.2.0" +    has "^1.0.1" +    lodash "^4.17.4" +    minimatch "^3.0.3" +    read-pkg-up "^2.0.0" +    resolve "^1.6.0" + +eslint-plugin-mocha@^5.2.0: +  version "5.3.0" +  resolved "https://registry.yarnpkg.com/eslint-plugin-mocha/-/eslint-plugin-mocha-5.3.0.tgz#cf3eb18ae0e44e433aef7159637095a7cb19b15b" +  integrity sha512-3uwlJVLijjEmBeNyH60nzqgA1gacUWLUmcKV8PIGNvj1kwP/CTgAWQHn2ayyJVwziX+KETkr9opNwT1qD/RZ5A== +  dependencies: +    ramda "^0.26.1" + +eslint-plugin-node@^8.0.1: +  version "8.0.1" +  resolved "https://registry.yarnpkg.com/eslint-plugin-node/-/eslint-plugin-node-8.0.1.tgz#55ae3560022863d141fa7a11799532340a685964" +  integrity sha512-ZjOjbjEi6jd82rIpFSgagv4CHWzG9xsQAVp1ZPlhRnnYxcTgENUVBvhYmkQ7GvT1QFijUSo69RaiOJKhMu6i8w== +  dependencies: +    eslint-plugin-es "^1.3.1" +    eslint-utils "^1.3.1" +    ignore "^5.0.2" +    minimatch "^3.0.4" +    resolve "^1.8.1" +    semver "^5.5.0" + +eslint-plugin-node@~7.0.1: +  version "7.0.1" +  resolved "https://registry.yarnpkg.com/eslint-plugin-node/-/eslint-plugin-node-7.0.1.tgz#a6e054e50199b2edd85518b89b4e7b323c9f36db" +  integrity sha512-lfVw3TEqThwq0j2Ba/Ckn2ABdwmL5dkOgAux1rvOk6CO7A6yGyPI2+zIxN6FyNkp1X1X/BSvKOceD6mBWSj4Yw== +  dependencies: +    eslint-plugin-es "^1.3.1" +    eslint-utils "^1.3.1" +    ignore "^4.0.2" +    minimatch "^3.0.4" +    resolve "^1.8.1" +    semver "^5.5.0" + +eslint-plugin-promise@~4.0.0: +  version "4.0.1" +  resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-4.0.1.tgz#2d074b653f35a23d1ba89d8e976a985117d1c6a2" +  integrity sha512-Si16O0+Hqz1gDHsys6RtFRrW7cCTB6P7p3OJmKp3Y3dxpQE2qwOA7d3xnV+0mBmrPoi0RBnxlCKvqu70te6wjg== + +eslint-plugin-react@~7.11.1: +  version "7.11.1" +  resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.11.1.tgz#c01a7af6f17519457d6116aa94fc6d2ccad5443c" +  integrity sha512-cVVyMadRyW7qsIUh3FHp3u6QHNhOgVrLQYdQEB1bPWBsgbNCHdFAeNMquBMCcZJu59eNthX053L70l7gRt4SCw== +  dependencies: +    array-includes "^3.0.3" +    doctrine "^2.1.0" +    has "^1.0.3" +    jsx-ast-utils "^2.0.1" +    prop-types "^15.6.2" + +eslint-plugin-standard@^4.0.0, eslint-plugin-standard@~4.0.0: +  version "4.0.0" +  resolved "https://registry.yarnpkg.com/eslint-plugin-standard/-/eslint-plugin-standard-4.0.0.tgz#f845b45109c99cd90e77796940a344546c8f6b5c" +  integrity sha512-OwxJkR6TQiYMmt1EsNRMe5qG3GsbjlcOhbGUBY4LtavF9DsLaTcoR+j2Tdjqi23oUwKNUqX7qcn5fPStafMdlA== + +eslint-plugin-typescript@^0.14.0: +  version "0.14.0" +  resolved "https://registry.yarnpkg.com/eslint-plugin-typescript/-/eslint-plugin-typescript-0.14.0.tgz#068549c3f4c7f3f85d88d398c29fa96bf500884c" +  integrity sha512-2u1WnnDF2mkWWgU1lFQ2RjypUlmRoBEvQN02y9u+IL12mjWlkKFGEBnVsjs9Y8190bfPQCvWly1c2rYYUSOxWw== +  dependencies: +    requireindex "~1.1.0" + +eslint-scope@^4.0.0, eslint-scope@^4.0.3: +  version "4.0.3" +  resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" +  integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== +  dependencies: +    esrecurse "^4.1.0" +    estraverse "^4.1.1" + +eslint-utils@^1.3.0, eslint-utils@^1.3.1: +  version "1.3.1" +  resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.3.1.tgz#9a851ba89ee7c460346f97cf8939c7298827e512" +  integrity sha512-Z7YjnIldX+2XMcjr7ZkgEsOj/bREONV60qYeB/bjMAqqqZ4zxKyWX+BOUkdmRmA9riiIPVvo5x86m5elviOk0Q== + +eslint-visitor-keys@^1.0.0: +  version "1.0.0" +  resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz#3f3180fb2e291017716acb4c9d6d5b5c34a6a81d" +  integrity sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ== + +eslint@^5.13.0: +  version "5.16.0" +  resolved "https://registry.yarnpkg.com/eslint/-/eslint-5.16.0.tgz#a1e3ac1aae4a3fbd8296fcf8f7ab7314cbb6abea" +  integrity sha512-S3Rz11i7c8AA5JPv7xAH+dOyq/Cu/VXHiHXBPOU1k/JAM5dXqQPt3qcrhpHSorXmrpu2g0gkIBVXAqCpzfoZIg== +  dependencies: +    "@babel/code-frame" "^7.0.0" +    ajv "^6.9.1" +    chalk "^2.1.0" +    cross-spawn "^6.0.5" +    debug "^4.0.1" +    doctrine "^3.0.0" +    eslint-scope "^4.0.3" +    eslint-utils "^1.3.1" +    eslint-visitor-keys "^1.0.0" +    espree "^5.0.1" +    esquery "^1.0.1" +    esutils "^2.0.2" +    file-entry-cache "^5.0.1" +    functional-red-black-tree "^1.0.1" +    glob "^7.1.2" +    globals "^11.7.0" +    ignore "^4.0.6" +    import-fresh "^3.0.0" +    imurmurhash "^0.1.4" +    inquirer "^6.2.2" +    js-yaml "^3.13.0" +    json-stable-stringify-without-jsonify "^1.0.1" +    levn "^0.3.0" +    lodash "^4.17.11" +    minimatch "^3.0.4" +    mkdirp "^0.5.1" +    natural-compare "^1.4.0" +    optionator "^0.8.2" +    path-is-inside "^1.0.2" +    progress "^2.0.0" +    regexpp "^2.0.1" +    semver "^5.5.1" +    strip-ansi "^4.0.0" +    strip-json-comments "^2.0.1" +    table "^5.2.3" +    text-table "^0.2.0" + +eslint@~5.4.0: +  version "5.4.0" +  resolved "https://registry.yarnpkg.com/eslint/-/eslint-5.4.0.tgz#d068ec03006bb9e06b429dc85f7e46c1b69fac62" +  integrity sha512-UIpL91XGex3qtL6qwyCQJar2j3osKxK9e3ano3OcGEIRM4oWIpCkDg9x95AXEC2wMs7PnxzOkPZ2gq+tsMS9yg== +  dependencies: +    ajv "^6.5.0" +    babel-code-frame "^6.26.0" +    chalk "^2.1.0" +    cross-spawn "^6.0.5" +    debug "^3.1.0" +    doctrine "^2.1.0" +    eslint-scope "^4.0.0" +    eslint-utils "^1.3.1" +    eslint-visitor-keys "^1.0.0" +    espree "^4.0.0" +    esquery "^1.0.1" +    esutils "^2.0.2" +    file-entry-cache "^2.0.0" +    functional-red-black-tree "^1.0.1" +    glob "^7.1.2" +    globals "^11.7.0" +    ignore "^4.0.2" +    imurmurhash "^0.1.4" +    inquirer "^5.2.0" +    is-resolvable "^1.1.0" +    js-yaml "^3.11.0" +    json-stable-stringify-without-jsonify "^1.0.1" +    levn "^0.3.0" +    lodash "^4.17.5" +    minimatch "^3.0.4" +    mkdirp "^0.5.1" +    natural-compare "^1.4.0" +    optionator "^0.8.2" +    path-is-inside "^1.0.2" +    pluralize "^7.0.0" +    progress "^2.0.0" +    regexpp "^2.0.0" +    require-uncached "^1.0.3" +    semver "^5.5.0" +    strip-ansi "^4.0.0" +    strip-json-comments "^2.0.1" +    table "^4.0.3" +    text-table "^0.2.0" + +espree@^4.0.0: +  version "4.1.0" +  resolved "https://registry.yarnpkg.com/espree/-/espree-4.1.0.tgz#728d5451e0fd156c04384a7ad89ed51ff54eb25f" +  integrity sha512-I5BycZW6FCVIub93TeVY1s7vjhP9CY6cXCznIRfiig7nRviKZYdRnj/sHEWC6A7WE9RDWOFq9+7OsWSYz8qv2w== +  dependencies: +    acorn "^6.0.2" +    acorn-jsx "^5.0.0" +    eslint-visitor-keys "^1.0.0" + +espree@^5.0.1: +  version "5.0.1" +  resolved "https://registry.yarnpkg.com/espree/-/espree-5.0.1.tgz#5d6526fa4fc7f0788a5cf75b15f30323e2f81f7a" +  integrity sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A== +  dependencies: +    acorn "^6.0.7" +    acorn-jsx "^5.0.0" +    eslint-visitor-keys "^1.0.0" + +esprima@^3.1.3: +  version "3.1.3" +  resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" +  integrity sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM= + +esprima@^4.0.0: +  version "4.0.1" +  resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" +  integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +esquery@^1.0.1: +  version "1.0.1" +  resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.1.tgz#406c51658b1f5991a5f9b62b1dc25b00e3e5c708" +  integrity sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA== +  dependencies: +    estraverse "^4.0.0" + +esrecurse@^4.1.0: +  version "4.2.1" +  resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" +  integrity sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ== +  dependencies: +    estraverse "^4.1.0" + +estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1, estraverse@^4.2.0: +  version "4.2.0" +  resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" +  integrity sha1-De4/7TH81GlhjOc0IJn8GvoL2xM= + +esutils@^2.0.2: +  version "2.0.2" +  resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" +  integrity sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs= + +etag@~1.8.1: +  version "1.8.1" +  resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" +  integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= + +events@^2.0.0: +  version "2.1.0" +  resolved "https://registry.yarnpkg.com/events/-/events-2.1.0.tgz#2a9a1e18e6106e0e812aa9ebd4a819b3c29c0ba5" +  integrity sha512-3Zmiobend8P9DjmKAty0Era4jV8oJ0yGYe2nJJAxgymF9+N8F2m0hhZiMoWtcfepExzNKZumFU3ksdQbInGWCg== + +evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: +  version "1.0.3" +  resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" +  integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== +  dependencies: +    md5.js "^1.3.4" +    safe-buffer "^5.1.1" + +execa@^0.7.0: +  version "0.7.0" +  resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" +  integrity sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c= +  dependencies: +    cross-spawn "^5.0.1" +    get-stream "^3.0.0" +    is-stream "^1.1.0" +    npm-run-path "^2.0.0" +    p-finally "^1.0.0" +    signal-exit "^3.0.0" +    strip-eof "^1.0.0" + +execa@^0.8.0: +  version "0.8.0" +  resolved "https://registry.yarnpkg.com/execa/-/execa-0.8.0.tgz#d8d76bbc1b55217ed190fd6dd49d3c774ecfc8da" +  integrity sha1-2NdrvBtVIX7RkP1t1J08d07PyNo= +  dependencies: +    cross-spawn "^5.0.1" +    get-stream "^3.0.0" +    is-stream "^1.1.0" +    npm-run-path "^2.0.0" +    p-finally "^1.0.0" +    signal-exit "^3.0.0" +    strip-eof "^1.0.0" + +execa@^1.0.0: +  version "1.0.0" +  resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8" +  integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== +  dependencies: +    cross-spawn "^6.0.0" +    get-stream "^4.0.0" +    is-stream "^1.1.0" +    npm-run-path "^2.0.0" +    p-finally "^1.0.0" +    signal-exit "^3.0.0" +    strip-eof "^1.0.0" + +exit-hook@^1.0.0: +  version "1.1.1" +  resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-1.1.1.tgz#f05ca233b48c05d54fff07765df8507e95c02ff8" +  integrity sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g= + +expand-brackets@^0.1.4: +  version "0.1.5" +  resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" +  integrity sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s= +  dependencies: +    is-posix-bracket "^0.1.0" + +expand-brackets@^2.1.4: +  version "2.1.4" +  resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" +  integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= +  dependencies: +    debug "^2.3.3" +    define-property "^0.2.5" +    extend-shallow "^2.0.1" +    posix-character-classes "^0.1.0" +    regex-not "^1.0.0" +    snapdragon "^0.8.1" +    to-regex "^3.0.1" + +expand-range@^1.8.1: +  version "1.8.2" +  resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" +  integrity sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc= +  dependencies: +    fill-range "^2.1.0" + +express@^4.16.4: +  version "4.16.4" +  resolved "https://registry.yarnpkg.com/express/-/express-4.16.4.tgz#fddef61926109e24c515ea97fd2f1bdbf62df12e" +  integrity sha512-j12Uuyb4FMrd/qQAm6uCHAkPtO8FDTRJZBDd5D2KOL2eLaz1yUNdUB/NOIyq0iU4q4cFarsUCrnFDPBcnksuOg== +  dependencies: +    accepts "~1.3.5" +    array-flatten "1.1.1" +    body-parser "1.18.3" +    content-disposition "0.5.2" +    content-type "~1.0.4" +    cookie "0.3.1" +    cookie-signature "1.0.6" +    debug "2.6.9" +    depd "~1.1.2" +    encodeurl "~1.0.2" +    escape-html "~1.0.3" +    etag "~1.8.1" +    finalhandler "1.1.1" +    fresh "0.5.2" +    merge-descriptors "1.0.1" +    methods "~1.1.2" +    on-finished "~2.3.0" +    parseurl "~1.3.2" +    path-to-regexp "0.1.7" +    proxy-addr "~2.0.4" +    qs "6.5.2" +    range-parser "~1.2.0" +    safe-buffer "5.1.2" +    send "0.16.2" +    serve-static "1.13.2" +    setprototypeof "1.1.0" +    statuses "~1.4.0" +    type-is "~1.6.16" +    utils-merge "1.0.1" +    vary "~1.1.2" + +extend-shallow@^2.0.1: +  version "2.0.1" +  resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" +  integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= +  dependencies: +    is-extendable "^0.1.0" + +extend-shallow@^3.0.0, extend-shallow@^3.0.2: +  version "3.0.2" +  resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" +  integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= +  dependencies: +    assign-symbols "^1.0.0" +    is-extendable "^1.0.1" + +extend@^3.0.0, extend@~3.0.2: +  version "3.0.2" +  resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" +  integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + +external-editor@^2.1.0: +  version "2.2.0" +  resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.2.0.tgz#045511cfd8d133f3846673d1047c154e214ad3d5" +  integrity sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A== +  dependencies: +    chardet "^0.4.0" +    iconv-lite "^0.4.17" +    tmp "^0.0.33" + +external-editor@^3.0.3: +  version "3.0.3" +  resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.0.3.tgz#5866db29a97826dbe4bf3afd24070ead9ea43a27" +  integrity sha512-bn71H9+qWoOQKyZDo25mOMVpSmXROAsTJVVVYzrrtol3d4y+AsKjf4Iwl2Q+IuT0kFSQ1qo166UuIwqYq7mGnA== +  dependencies: +    chardet "^0.7.0" +    iconv-lite "^0.4.24" +    tmp "^0.0.33" + +extglob@^0.3.1: +  version "0.3.2" +  resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" +  integrity sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE= +  dependencies: +    is-extglob "^1.0.0" + +extglob@^2.0.4: +  version "2.0.4" +  resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" +  integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== +  dependencies: +    array-unique "^0.3.2" +    define-property "^1.0.0" +    expand-brackets "^2.1.4" +    extend-shallow "^2.0.1" +    fragment-cache "^0.2.1" +    regex-not "^1.0.0" +    snapdragon "^0.8.1" +    to-regex "^3.0.1" + +extsprintf@1.3.0: +  version "1.3.0" +  resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" +  integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= + +extsprintf@^1.2.0: +  version "1.4.0" +  resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" +  integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= + +falafel@^2.0.0: +  version "2.1.0" +  resolved "https://registry.yarnpkg.com/falafel/-/falafel-2.1.0.tgz#96bb17761daba94f46d001738b3cedf3a67fe06c" +  integrity sha1-lrsXdh2rqU9G0AFzizzt86Z/4Gw= +  dependencies: +    acorn "^5.0.0" +    foreach "^2.0.5" +    isarray "0.0.1" +    object-keys "^1.0.6" + +fast-deep-equal@^2.0.1: +  version "2.0.1" +  resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" +  integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk= + +fast-glob@^2.0.2: +  version "2.2.6" +  resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.6.tgz#a5d5b697ec8deda468d85a74035290a025a95295" +  integrity sha512-0BvMaZc1k9F+MeWWMe8pL6YltFzZYcJsYU7D4JyDA6PAczaXvxqQQ/z+mDF7/4Mw01DeUc+i3CTKajnkANkV4w== +  dependencies: +    "@mrmlnc/readdir-enhanced" "^2.2.1" +    "@nodelib/fs.stat" "^1.1.2" +    glob-parent "^3.1.0" +    is-glob "^4.0.0" +    merge2 "^1.2.3" +    micromatch "^3.1.10" + +fast-json-stable-stringify@^2.0.0: +  version "2.0.0" +  resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" +  integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I= + +fast-levenshtein@~2.0.4: +  version "2.0.6" +  resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" +  integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= + +fault@^1.0.0: +  version "1.0.2" +  resolved "https://registry.yarnpkg.com/fault/-/fault-1.0.2.tgz#c3d0fec202f172a3a4d414042ad2bb5e2a3ffbaa" +  integrity sha512-o2eo/X2syzzERAtN5LcGbiVQ0WwZSlN3qLtadwAz3X8Bu+XWD16dja/KMsjZLiQr+BLGPDnHGkc4yUJf1Xpkpw== +  dependencies: +    format "^0.2.2" + +figures@^1.7.0: +  version "1.7.0" +  resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" +  integrity sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4= +  dependencies: +    escape-string-regexp "^1.0.5" +    object-assign "^4.1.0" + +figures@^2.0.0: +  version "2.0.0" +  resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" +  integrity sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI= +  dependencies: +    escape-string-regexp "^1.0.5" + +file-entry-cache@^2.0.0: +  version "2.0.0" +  resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-2.0.0.tgz#c392990c3e684783d838b8c84a45d8a048458361" +  integrity sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E= +  dependencies: +    flat-cache "^1.2.1" +    object-assign "^4.0.1" + +file-entry-cache@^5.0.1: +  version "5.0.1" +  resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c" +  integrity sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g== +  dependencies: +    flat-cache "^2.0.1" + +filename-regex@^2.0.0: +  version "2.0.1" +  resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" +  integrity sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY= + +filesize@3.6.1: +  version "3.6.1" +  resolved "https://registry.yarnpkg.com/filesize/-/filesize-3.6.1.tgz#090bb3ee01b6f801a8a8be99d31710b3422bb317" +  integrity sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg== + +fill-range@^2.1.0: +  version "2.2.4" +  resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.4.tgz#eb1e773abb056dcd8df2bfdf6af59b8b3a936565" +  integrity sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q== +  dependencies: +    is-number "^2.1.0" +    isobject "^2.0.0" +    randomatic "^3.0.0" +    repeat-element "^1.1.2" +    repeat-string "^1.5.2" + +fill-range@^4.0.0: +  version "4.0.0" +  resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" +  integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= +  dependencies: +    extend-shallow "^2.0.1" +    is-number "^3.0.0" +    repeat-string "^1.6.1" +    to-regex-range "^2.1.0" + +finalhandler@1.1.1: +  version "1.1.1" +  resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.1.tgz#eebf4ed840079c83f4249038c9d703008301b105" +  integrity sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg== +  dependencies: +    debug "2.6.9" +    encodeurl "~1.0.2" +    escape-html "~1.0.3" +    on-finished "~2.3.0" +    parseurl "~1.3.2" +    statuses "~1.4.0" +    unpipe "~1.0.0" + +find-parent-dir@^0.3.0: +  version "0.3.0" +  resolved "https://registry.yarnpkg.com/find-parent-dir/-/find-parent-dir-0.3.0.tgz#33c44b429ab2b2f0646299c5f9f718f376ff8d54" +  integrity sha1-M8RLQpqysvBkYpnF+fcY83b/jVQ= + +find-root@^1.0.0: +  version "1.1.0" +  resolved "https://registry.yarnpkg.com/find-root/-/find-root-1.1.0.tgz#abcfc8ba76f708c42a97b3d685b7e9450bfb9ce4" +  integrity sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng== + +find-up@^1.0.0: +  version "1.1.2" +  resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" +  integrity sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8= +  dependencies: +    path-exists "^2.0.0" +    pinkie-promise "^2.0.0" + +find-up@^2.0.0, find-up@^2.1.0: +  version "2.1.0" +  resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" +  integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= +  dependencies: +    locate-path "^2.0.0" + +findup-sync@~0.3.0: +  version "0.3.0" +  resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-0.3.0.tgz#37930aa5d816b777c03445e1966cc6790a4c0b16" +  integrity sha1-N5MKpdgWt3fANEXhlmzGeQpMCxY= +  dependencies: +    glob "~5.0.0" + +flat-cache@^1.2.1: +  version "1.3.4" +  resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.3.4.tgz#2c2ef77525cc2929007dfffa1dd314aa9c9dee6f" +  integrity sha512-VwyB3Lkgacfik2vhqR4uv2rvebqmDvFu4jlN/C1RzWoJEo8I7z4Q404oiqYCkq41mni8EzQnm95emU9seckwtg== +  dependencies: +    circular-json "^0.3.1" +    graceful-fs "^4.1.2" +    rimraf "~2.6.2" +    write "^0.2.1" + +flat-cache@^2.0.1: +  version "2.0.1" +  resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" +  integrity sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA== +  dependencies: +    flatted "^2.0.0" +    rimraf "2.6.3" +    write "1.0.3" + +flatted@^2.0.0: +  version "2.0.0" +  resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.0.tgz#55122b6536ea496b4b44893ee2608141d10d9916" +  integrity sha512-R+H8IZclI8AAkSBRQJLVOsxwAoHd6WC40b4QTNWIjzAa6BXOBfQcM587MXDTVPeYaopFNWHUFLx7eNmHDSxMWg== + +fn-name@^2.0.1, fn-name@~2.0.1: +  version "2.0.1" +  resolved "https://registry.yarnpkg.com/fn-name/-/fn-name-2.0.1.tgz#5214d7537a4d06a4a301c0cc262feb84188002e7" +  integrity sha1-UhTXU3pNBqSjAcDMJi/rhBiAAuc= + +folder-hash@^2.1.1: +  version "2.1.2" +  resolved "https://registry.yarnpkg.com/folder-hash/-/folder-hash-2.1.2.tgz#7109f9cd0cbca271936d1b5544b156d6571e6cfd" +  integrity sha512-PmMwEZyNN96EMshf7sek4OIB7ADNsHOJ7VIw7pO0PBI0BNfEsi7U8U56TBjjqqwQ0WuBv8se0HEfmbw5b/Rk+w== +  dependencies: +    debug "^3.1.0" +    graceful-fs "~4.1.11" +    minimatch "~3.0.4" + +for-in@^1.0.1, for-in@^1.0.2: +  version "1.0.2" +  resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" +  integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= + +for-own@^0.1.4: +  version "0.1.5" +  resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" +  integrity sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4= +  dependencies: +    for-in "^1.0.1" + +foreach@^2.0.5: +  version "2.0.5" +  resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" +  integrity sha1-C+4AUBiusmDQo6865ljdATbsG5k= + +forever-agent@~0.6.1: +  version "0.6.1" +  resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" +  integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= + +form-data@~2.3.2: +  version "2.3.3" +  resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" +  integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== +  dependencies: +    asynckit "^0.4.0" +    combined-stream "^1.0.6" +    mime-types "^2.1.12" + +format@^0.2.2: +  version "0.2.2" +  resolved "https://registry.yarnpkg.com/format/-/format-0.2.2.tgz#d6170107e9efdc4ed30c9dc39016df942b5cb58b" +  integrity sha1-1hcBB+nv3E7TDJ3DkBbflCtctYs= + +forwarded@~0.1.2: +  version "0.1.2" +  resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" +  integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ= + +fragment-cache@^0.2.1: +  version "0.2.1" +  resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" +  integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= +  dependencies: +    map-cache "^0.2.2" + +fresh@0.5.2: +  version "0.5.2" +  resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" +  integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= + +fs-constants@^1.0.0: +  version "1.0.0" +  resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" +  integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== + +fs-extra@6.0.1: +  version "6.0.1" +  resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-6.0.1.tgz#8abc128f7946e310135ddc93b98bddb410e7a34b" +  integrity sha512-GnyIkKhhzXZUWFCaJzvyDLEEgDkPfb4/TPvJCJVuS8MWZgoSsErf++QpiAlDnKFcqhRlm+tIOcencCjyJE6ZCA== +  dependencies: +    graceful-fs "^4.1.2" +    jsonfile "^4.0.0" +    universalify "^0.1.0" + +fs-extra@^7.0.1: +  version "7.0.1" +  resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" +  integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== +  dependencies: +    graceful-fs "^4.1.2" +    jsonfile "^4.0.0" +    universalify "^0.1.0" + +fs-minipass@^1.2.5: +  version "1.2.5" +  resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.5.tgz#06c277218454ec288df77ada54a03b8702aacb9d" +  integrity sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ== +  dependencies: +    minipass "^2.2.1" + +fs.realpath@^1.0.0: +  version "1.0.0" +  resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" +  integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= + +fsevents@^1.0.0: +  version "1.2.9" +  resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.9.tgz#3f5ed66583ccd6f400b5a00db6f7e861363e388f" +  integrity sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw== +  dependencies: +    nan "^2.12.1" +    node-pre-gyp "^0.12.0" + +function-bind@^1.1.1: +  version "1.1.1" +  resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" +  integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +functional-red-black-tree@^1.0.1: +  version "1.0.1" +  resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" +  integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= + +g-status@^2.0.2: +  version "2.0.2" +  resolved "https://registry.yarnpkg.com/g-status/-/g-status-2.0.2.tgz#270fd32119e8fc9496f066fe5fe88e0a6bc78b97" +  integrity sha512-kQoE9qH+T1AHKgSSD0Hkv98bobE90ILQcXAF4wvGgsr7uFqNvwmh8j+Lq3l0RVt3E3HjSbv2B9biEGcEtpHLCA== +  dependencies: +    arrify "^1.0.1" +    matcher "^1.0.0" +    simple-git "^1.85.0" + +gauge@~2.7.3: +  version "2.7.4" +  resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" +  integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c= +  dependencies: +    aproba "^1.0.3" +    console-control-strings "^1.0.0" +    has-unicode "^2.0.0" +    object-assign "^4.1.0" +    signal-exit "^3.0.0" +    string-width "^1.0.1" +    strip-ansi "^3.0.1" +    wide-align "^1.1.0" + +get-assigned-identifiers@^1.2.0: +  version "1.2.0" +  resolved "https://registry.yarnpkg.com/get-assigned-identifiers/-/get-assigned-identifiers-1.2.0.tgz#6dbf411de648cbaf8d9169ebb0d2d576191e2ff1" +  integrity sha512-mBBwmeGTrxEMO4pMaaf/uUEFHnYtwr8FTe8Y/mer4rcV/bye0qGm6pw1bGZFGStxC5O76c5ZAVBGnqHmOaJpdQ== + +get-own-enumerable-property-symbols@^3.0.0: +  version "3.0.0" +  resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.0.tgz#b877b49a5c16aefac3655f2ed2ea5b684df8d203" +  integrity sha512-CIJYJC4GGF06TakLg8z4GQKvDsx9EMspVxOYih7LerEL/WosUnFIww45CGfxfeKHqlg3twgUrYRT1O3WQqjGCg== + +get-pkg-repo@^1.0.0: +  version "1.4.0" +  resolved "https://registry.yarnpkg.com/get-pkg-repo/-/get-pkg-repo-1.4.0.tgz#c73b489c06d80cc5536c2c853f9e05232056972d" +  integrity sha1-xztInAbYDMVTbCyFP54FIyBWly0= +  dependencies: +    hosted-git-info "^2.1.4" +    meow "^3.3.0" +    normalize-package-data "^2.3.0" +    parse-github-repo-url "^1.3.0" +    through2 "^2.0.0" + +get-stdin@^4.0.1: +  version "4.0.1" +  resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" +  integrity sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4= + +get-stdin@^6.0.0: +  version "6.0.0" +  resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-6.0.0.tgz#9e09bf712b360ab9225e812048f71fde9c89657b" +  integrity sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g== + +get-stream@^3.0.0: +  version "3.0.0" +  resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" +  integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ= + +get-stream@^4.0.0: +  version "4.1.0" +  resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" +  integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== +  dependencies: +    pump "^3.0.0" + +get-value@^2.0.3, get-value@^2.0.6: +  version "2.0.6" +  resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" +  integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= + +getpass@^0.1.1: +  version "0.1.7" +  resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" +  integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= +  dependencies: +    assert-plus "^1.0.0" + +git-raw-commits@^1.3.6: +  version "1.3.6" +  resolved "https://registry.yarnpkg.com/git-raw-commits/-/git-raw-commits-1.3.6.tgz#27c35a32a67777c1ecd412a239a6c19d71b95aff" +  integrity sha512-svsK26tQ8vEKnMshTDatSIQSMDdz8CxIIqKsvPqbtV23Etmw6VNaFAitu8zwZ0VrOne7FztwPyRLxK7/DIUTQg== +  dependencies: +    dargs "^4.0.1" +    lodash.template "^4.0.2" +    meow "^4.0.0" +    split2 "^2.0.0" +    through2 "^2.0.0" + +git-remote-origin-url@^2.0.0: +  version "2.0.0" +  resolved "https://registry.yarnpkg.com/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz#5282659dae2107145a11126112ad3216ec5fa65f" +  integrity sha1-UoJlna4hBxRaERJhEq0yFuxfpl8= +  dependencies: +    gitconfiglocal "^1.0.0" +    pify "^2.3.0" + +git-semver-tags@^1.3.6: +  version "1.3.6" +  resolved "https://registry.yarnpkg.com/git-semver-tags/-/git-semver-tags-1.3.6.tgz#357ea01f7280794fe0927f2806bee6414d2caba5" +  integrity sha512-2jHlJnln4D/ECk9FxGEBh3k44wgYdWjWDtMmJPaecjoRmxKo3Y1Lh8GMYuOPu04CHw86NTAODchYjC5pnpMQig== +  dependencies: +    meow "^4.0.0" +    semver "^5.5.0" + +gitconfiglocal@^1.0.0: +  version "1.0.0" +  resolved "https://registry.yarnpkg.com/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz#41d045f3851a5ea88f03f24ca1c6178114464b9b" +  integrity sha1-QdBF84UaXqiPA/JMocYXgRRGS5s= +  dependencies: +    ini "^1.3.2" + +glob-base@^0.3.0: +  version "0.3.0" +  resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" +  integrity sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q= +  dependencies: +    glob-parent "^2.0.0" +    is-glob "^2.0.0" + +glob-parent@^2.0.0: +  version "2.0.0" +  resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" +  integrity sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg= +  dependencies: +    is-glob "^2.0.0" + +glob-parent@^3.1.0: +  version "3.1.0" +  resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" +  integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= +  dependencies: +    is-glob "^3.1.0" +    path-dirname "^1.0.0" + +glob-to-regexp@^0.3.0: +  version "0.3.0" +  resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" +  integrity sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs= + +glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.0, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3: +  version "7.1.3" +  resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" +  integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== +  dependencies: +    fs.realpath "^1.0.0" +    inflight "^1.0.4" +    inherits "2" +    minimatch "^3.0.4" +    once "^1.3.0" +    path-is-absolute "^1.0.0" + +glob@~5.0.0: +  version "5.0.15" +  resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1" +  integrity sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E= +  dependencies: +    inflight "^1.0.4" +    inherits "2" +    minimatch "2 || 3" +    once "^1.3.0" +    path-is-absolute "^1.0.0" + +global-dirs@^0.1.0: +  version "0.1.1" +  resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-0.1.1.tgz#b319c0dd4607f353f3be9cca4c72fc148c49f445" +  integrity sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU= +  dependencies: +    ini "^1.3.4" + +globals@^11.7.0: +  version "11.11.0" +  resolved "https://registry.yarnpkg.com/globals/-/globals-11.11.0.tgz#dcf93757fa2de5486fbeed7118538adf789e9c2e" +  integrity sha512-WHq43gS+6ufNOEqlrDBxVEbb8ntfXrfAUU2ZOpCxrBdGKW3gyv8mCxAfIBD0DroPKGrJ2eSsXsLtY9MPntsyTw== + +globby@^6.1.0: +  version "6.1.0" +  resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" +  integrity sha1-9abXDoOV4hyFj7BInWTfAkJNUGw= +  dependencies: +    array-union "^1.0.1" +    glob "^7.0.3" +    object-assign "^4.0.1" +    pify "^2.0.0" +    pinkie-promise "^2.0.0" + +globby@^8.0.1: +  version "8.0.2" +  resolved "https://registry.yarnpkg.com/globby/-/globby-8.0.2.tgz#5697619ccd95c5275dbb2d6faa42087c1a941d8d" +  integrity sha512-yTzMmKygLp8RUpG1Ymu2VXPSJQZjNAZPD4ywgYEaG7e4tBJeUQBO8OpXrf1RCNcEs5alsoJYPAMiIHP0cmeC7w== +  dependencies: +    array-union "^1.0.1" +    dir-glob "2.0.0" +    fast-glob "^2.0.2" +    glob "^7.1.2" +    ignore "^3.3.5" +    pify "^3.0.0" +    slash "^1.0.0" + +got@^6.3.0, got@^6.7.1: +  version "6.7.1" +  resolved "https://registry.yarnpkg.com/got/-/got-6.7.1.tgz#240cd05785a9a18e561dc1b44b41c763ef1e8db0" +  integrity sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA= +  dependencies: +    create-error-class "^3.0.0" +    duplexer3 "^0.1.4" +    get-stream "^3.0.0" +    is-redirect "^1.0.0" +    is-retry-allowed "^1.0.0" +    is-stream "^1.0.0" +    lowercase-keys "^1.0.0" +    safe-buffer "^5.0.1" +    timed-out "^4.0.0" +    unzip-response "^2.0.1" +    url-parse-lax "^1.0.0" + +graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@~4.1.11: +  version "4.1.15" +  resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00" +  integrity sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA== + +gunzip-maybe@^1.3.1: +  version "1.4.1" +  resolved "https://registry.yarnpkg.com/gunzip-maybe/-/gunzip-maybe-1.4.1.tgz#39c72ed89d1b49ba708e18776500488902a52027" +  integrity sha512-qtutIKMthNJJgeHQS7kZ9FqDq59/Wn0G2HYCRNjpup7yKfVI6/eqwpmroyZGFoCYaG+sW6psNVb4zoLADHpp2g== +  dependencies: +    browserify-zlib "^0.1.4" +    is-deflate "^1.0.0" +    is-gzip "^1.0.0" +    peek-stream "^1.1.0" +    pumpify "^1.3.3" +    through2 "^2.0.3" + +handlebars@4.0.11: +  version "4.0.11" +  resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.11.tgz#630a35dfe0294bc281edae6ffc5d329fc7982dcc" +  integrity sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw= +  dependencies: +    async "^1.4.0" +    optimist "^0.6.1" +    source-map "^0.4.4" +  optionalDependencies: +    uglify-js "^2.6" + +handlebars@^4.0.2: +  version "4.1.2" +  resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.1.2.tgz#b6b37c1ced0306b221e094fc7aca3ec23b131b67" +  integrity sha512-nvfrjqvt9xQ8Z/w0ijewdD/vvWDTOweBUm96NTr66Wfvo1mJenBLwcYmPs3TIBP5ruzYGD7Hx/DaM9RmhroGPw== +  dependencies: +    neo-async "^2.6.0" +    optimist "^0.6.1" +    source-map "^0.6.1" +  optionalDependencies: +    uglify-js "^3.1.4" + +har-schema@^2.0.0: +  version "2.0.0" +  resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" +  integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= + +har-validator@~5.1.0: +  version "5.1.3" +  resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080" +  integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g== +  dependencies: +    ajv "^6.5.5" +    har-schema "^2.0.0" + +has-ansi@^2.0.0: +  version "2.0.0" +  resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" +  integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= +  dependencies: +    ansi-regex "^2.0.0" + +has-flag@^2.0.0: +  version "2.0.0" +  resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51" +  integrity sha1-6CB68cx7MNRGzHC3NLXovhj4jVE= + +has-flag@^3.0.0: +  version "3.0.0" +  resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" +  integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= + +has-symbols@^1.0.0: +  version "1.0.0" +  resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44" +  integrity sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q= + +has-unicode@^2.0.0: +  version "2.0.1" +  resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" +  integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= + +has-value@^0.3.1: +  version "0.3.1" +  resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" +  integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= +  dependencies: +    get-value "^2.0.3" +    has-values "^0.1.4" +    isobject "^2.0.0" + +has-value@^1.0.0: +  version "1.0.0" +  resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" +  integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= +  dependencies: +    get-value "^2.0.6" +    has-values "^1.0.0" +    isobject "^3.0.0" + +has-values@^0.1.4: +  version "0.1.4" +  resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" +  integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= + +has-values@^1.0.0: +  version "1.0.0" +  resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" +  integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= +  dependencies: +    is-number "^3.0.0" +    kind-of "^4.0.0" + +has@^1.0.0, has@^1.0.1, has@^1.0.3: +  version "1.0.3" +  resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" +  integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== +  dependencies: +    function-bind "^1.1.1" + +hash-base@^3.0.0: +  version "3.0.4" +  resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918" +  integrity sha1-X8hoaEfs1zSZQDMZprCj8/auSRg= +  dependencies: +    inherits "^2.0.1" +    safe-buffer "^5.0.1" + +hash.js@^1.0.0, hash.js@^1.0.3: +  version "1.1.7" +  resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" +  integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== +  dependencies: +    inherits "^2.0.3" +    minimalistic-assert "^1.0.1" + +hmac-drbg@^1.0.0: +  version "1.0.1" +  resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" +  integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= +  dependencies: +    hash.js "^1.0.3" +    minimalistic-assert "^1.0.0" +    minimalistic-crypto-utils "^1.0.1" + +hosted-git-info@^2.1.4: +  version "2.7.1" +  resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.7.1.tgz#97f236977bd6e125408930ff6de3eec6281ec047" +  integrity sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w== + +htmlescape@^1.1.0: +  version "1.1.1" +  resolved "https://registry.yarnpkg.com/htmlescape/-/htmlescape-1.1.1.tgz#3a03edc2214bca3b66424a3e7959349509cb0351" +  integrity sha1-OgPtwiFLyjtmQko+eVk0lQnLA1E= + +htmlparser2@^3.9.1: +  version "3.10.1" +  resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.1.tgz#bd679dc3f59897b6a34bb10749c855bb53a9392f" +  integrity sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ== +  dependencies: +    domelementtype "^1.3.1" +    domhandler "^2.3.0" +    domutils "^1.5.1" +    entities "^1.1.1" +    inherits "^2.0.1" +    readable-stream "^3.1.1" + +htmlparser2@~3.8.1: +  version "3.8.3" +  resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.8.3.tgz#996c28b191516a8be86501a7d79757e5c70c1068" +  integrity sha1-mWwosZFRaovoZQGn15dX5ccMEGg= +  dependencies: +    domelementtype "1" +    domhandler "2.3" +    domutils "1.5" +    entities "1.0" +    readable-stream "1.1" + +http-errors@1.6.2: +  version "1.6.2" +  resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.2.tgz#0a002cc85707192a7e7946ceedc11155f60ec736" +  integrity sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY= +  dependencies: +    depd "1.1.1" +    inherits "2.0.3" +    setprototypeof "1.0.3" +    statuses ">= 1.3.1 < 2" + +http-errors@1.6.3, http-errors@~1.6.2, http-errors@~1.6.3: +  version "1.6.3" +  resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" +  integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0= +  dependencies: +    depd "~1.1.2" +    inherits "2.0.3" +    setprototypeof "1.1.0" +    statuses ">= 1.4.0 < 2" + +http-signature@~1.2.0: +  version "1.2.0" +  resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" +  integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= +  dependencies: +    assert-plus "^1.0.0" +    jsprim "^1.2.2" +    sshpk "^1.7.0" + +https-browserify@^1.0.0: +  version "1.0.0" +  resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" +  integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= + +husky@^0.14.3: +  version "0.14.3" +  resolved "https://registry.yarnpkg.com/husky/-/husky-0.14.3.tgz#c69ed74e2d2779769a17ba8399b54ce0b63c12c3" +  integrity sha512-e21wivqHpstpoiWA/Yi8eFti8E+sQDSS53cpJsPptPs295QTOQR0ZwnHo2TXy1XOpZFD9rPOd3NpmqTK6uMLJA== +  dependencies: +    is-ci "^1.0.10" +    normalize-path "^1.0.0" +    strip-indent "^2.0.0" + +iconv-lite@0.4.19: +  version "0.4.19" +  resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b" +  integrity sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ== + +iconv-lite@0.4.23: +  version "0.4.23" +  resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz#297871f63be507adcfbfca715d0cd0eed84e9a63" +  integrity sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA== +  dependencies: +    safer-buffer ">= 2.1.2 < 3" + +iconv-lite@^0.4.17, iconv-lite@^0.4.24, iconv-lite@^0.4.4: +  version "0.4.24" +  resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" +  integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== +  dependencies: +    safer-buffer ">= 2.1.2 < 3" + +ieee754@^1.1.4: +  version "1.1.13" +  resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" +  integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg== + +ignore-walk@^3.0.1: +  version "3.0.1" +  resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.1.tgz#a83e62e7d272ac0e3b551aaa82831a19b69f82f8" +  integrity sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ== +  dependencies: +    minimatch "^3.0.4" + +ignore@^3.0.9, ignore@^3.2.0, ignore@^3.3.5: +  version "3.3.10" +  resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.10.tgz#0a97fb876986e8081c631160f8f9f389157f0043" +  integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug== + +ignore@^4.0.2, ignore@^4.0.6: +  version "4.0.6" +  resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" +  integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== + +ignore@^5.0.2: +  version "5.1.1" +  resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.1.tgz#2fc6b8f518aff48fef65a7f348ed85632448e4a5" +  integrity sha512-DWjnQIFLenVrwyRCKZT+7a7/U4Cqgar4WG8V++K3hw+lrW1hc/SIwdiGmtxKCVACmHULTuGeBbHJmbwW7/sAvA== + +import-fresh@^2.0.0: +  version "2.0.0" +  resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" +  integrity sha1-2BNVwVYS04bGH53dOSLUMEgipUY= +  dependencies: +    caller-path "^2.0.0" +    resolve-from "^3.0.0" + +import-fresh@^3.0.0: +  version "3.0.0" +  resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.0.0.tgz#a3d897f420cab0e671236897f75bc14b4885c390" +  integrity sha512-pOnA9tfM3Uwics+SaBLCNyZZZbK+4PTu0OPZtLlMIrv17EdBoC15S9Kn8ckJ9TZTyKb3ywNE5y1yeDxxGA7nTQ== +  dependencies: +    parent-module "^1.0.0" +    resolve-from "^4.0.0" + +import-lazy@^2.1.0: +  version "2.1.0" +  resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43" +  integrity sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM= + +imurmurhash@^0.1.4: +  version "0.1.4" +  resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" +  integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= + +indent-string@^2.1.0: +  version "2.1.0" +  resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80" +  integrity sha1-ji1INIdCEhtKghi3oTfppSBJ3IA= +  dependencies: +    repeating "^2.0.0" + +indent-string@^3.0.0: +  version "3.2.0" +  resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289" +  integrity sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok= + +inflight@^1.0.4: +  version "1.0.6" +  resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" +  integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= +  dependencies: +    once "^1.3.0" +    wrappy "1" + +inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.1, inherits@~2.0.3: +  version "2.0.3" +  resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" +  integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= + +inherits@2.0.1: +  version "2.0.1" +  resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" +  integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE= + +ini@^1.3.2, ini@^1.3.4, ini@~1.3.0: +  version "1.3.5" +  resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" +  integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== + +inline-source-map@~0.6.0: +  version "0.6.2" +  resolved "https://registry.yarnpkg.com/inline-source-map/-/inline-source-map-0.6.2.tgz#f9393471c18a79d1724f863fa38b586370ade2a5" +  integrity sha1-+Tk0ccGKedFyT4Y/o4tYY3Ct4qU= +  dependencies: +    source-map "~0.5.3" + +inquirer@^5.2.0: +  version "5.2.0" +  resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-5.2.0.tgz#db350c2b73daca77ff1243962e9f22f099685726" +  integrity sha512-E9BmnJbAKLPGonz0HeWHtbKf+EeSP93paWO3ZYoUpq/aowXvYGjjCSuashhXPpzbArIjBbji39THkxTz9ZeEUQ== +  dependencies: +    ansi-escapes "^3.0.0" +    chalk "^2.0.0" +    cli-cursor "^2.1.0" +    cli-width "^2.0.0" +    external-editor "^2.1.0" +    figures "^2.0.0" +    lodash "^4.3.0" +    mute-stream "0.0.7" +    run-async "^2.2.0" +    rxjs "^5.5.2" +    string-width "^2.1.0" +    strip-ansi "^4.0.0" +    through "^2.3.6" + +inquirer@^6.2.2: +  version "6.3.1" +  resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.3.1.tgz#7a413b5e7950811013a3db491c61d1f3b776e8e7" +  integrity sha512-MmL624rfkFt4TG9y/Jvmt8vdmOo836U7Y0Hxr2aFk3RelZEGX4Igk0KabWrcaaZaTv9uzglOqWh1Vly+FAWAXA== +  dependencies: +    ansi-escapes "^3.2.0" +    chalk "^2.4.2" +    cli-cursor "^2.1.0" +    cli-width "^2.0.0" +    external-editor "^3.0.3" +    figures "^2.0.0" +    lodash "^4.17.11" +    mute-stream "0.0.7" +    run-async "^2.2.0" +    rxjs "^6.4.0" +    string-width "^2.1.0" +    strip-ansi "^5.1.0" +    through "^2.3.6" + +insert-module-globals@^7.0.0: +  version "7.2.0" +  resolved "https://registry.yarnpkg.com/insert-module-globals/-/insert-module-globals-7.2.0.tgz#ec87e5b42728479e327bd5c5c71611ddfb4752ba" +  integrity sha512-VE6NlW+WGn2/AeOMd496AHFYmE7eLKkUY6Ty31k4og5vmA3Fjuwe9v6ifH6Xx/Hz27QvdoMoviw1/pqWRB09Sw== +  dependencies: +    JSONStream "^1.0.3" +    acorn-node "^1.5.2" +    combine-source-map "^0.8.0" +    concat-stream "^1.6.1" +    is-buffer "^1.1.0" +    path-is-absolute "^1.0.1" +    process "~0.11.0" +    through2 "^2.0.0" +    undeclared-identifiers "^1.1.2" +    xtend "^4.0.0" + +interpret@^1.0.0: +  version "1.2.0" +  resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.2.0.tgz#d5061a6224be58e8083985f5014d844359576296" +  integrity sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw== + +ip@1.1.5: +  version "1.1.5" +  resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.5.tgz#bdded70114290828c0a039e72ef25f5aaec4354a" +  integrity sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo= + +ipaddr.js@1.9.0: +  version "1.9.0" +  resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.0.tgz#37df74e430a0e47550fe54a2defe30d8acd95f65" +  integrity sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA== + +irregular-plurals@^2.0.0: +  version "2.0.0" +  resolved "https://registry.yarnpkg.com/irregular-plurals/-/irregular-plurals-2.0.0.tgz#39d40f05b00f656d0b7fa471230dd3b714af2872" +  integrity sha512-Y75zBYLkh0lJ9qxeHlMjQ7bSbyiSqNW/UOPWDmzC7cXskL1hekSITh1Oc6JV0XCWWZ9DE8VYSB71xocLk3gmGw== + +is-accessor-descriptor@^0.1.6: +  version "0.1.6" +  resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" +  integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= +  dependencies: +    kind-of "^3.0.2" + +is-accessor-descriptor@^1.0.0: +  version "1.0.0" +  resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" +  integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== +  dependencies: +    kind-of "^6.0.0" + +is-alphabetical@^1.0.0: +  version "1.0.2" +  resolved "https://registry.yarnpkg.com/is-alphabetical/-/is-alphabetical-1.0.2.tgz#1fa6e49213cb7885b75d15862fb3f3d96c884f41" +  integrity sha512-V0xN4BYezDHcBSKb1QHUFMlR4as/XEuCZBzMJUU4n7+Cbt33SmUnSol+pnXFvLxSHNq2CemUXNdaXV6Flg7+xg== + +is-alphanumeric@^1.0.0: +  version "1.0.0" +  resolved "https://registry.yarnpkg.com/is-alphanumeric/-/is-alphanumeric-1.0.0.tgz#4a9cef71daf4c001c1d81d63d140cf53fd6889f4" +  integrity sha1-Spzvcdr0wAHB2B1j0UDPU/1oifQ= + +is-alphanumerical@^1.0.0: +  version "1.0.2" +  resolved "https://registry.yarnpkg.com/is-alphanumerical/-/is-alphanumerical-1.0.2.tgz#1138e9ae5040158dc6ff76b820acd6b7a181fd40" +  integrity sha512-pyfU/0kHdISIgslFfZN9nfY1Gk3MquQgUm1mJTjdkEPpkAKNWuBTSqFwewOpR7N351VkErCiyV71zX7mlQQqsg== +  dependencies: +    is-alphabetical "^1.0.0" +    is-decimal "^1.0.0" + +is-arrayish@^0.2.1: +  version "0.2.1" +  resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" +  integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= + +is-binary-path@^1.0.0: +  version "1.0.1" +  resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" +  integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg= +  dependencies: +    binary-extensions "^1.0.0" + +is-buffer@^1.1.0, is-buffer@^1.1.4, is-buffer@^1.1.5: +  version "1.1.6" +  resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" +  integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== + +is-callable@^1.1.4: +  version "1.1.4" +  resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75" +  integrity sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA== + +is-ci@^1.0.10: +  version "1.2.1" +  resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-1.2.1.tgz#e3779c8ee17fccf428488f6e281187f2e632841c" +  integrity sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg== +  dependencies: +    ci-info "^1.5.0" + +is-data-descriptor@^0.1.4: +  version "0.1.4" +  resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" +  integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= +  dependencies: +    kind-of "^3.0.2" + +is-data-descriptor@^1.0.0: +  version "1.0.0" +  resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" +  integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== +  dependencies: +    kind-of "^6.0.0" + +is-date-object@^1.0.1: +  version "1.0.1" +  resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" +  integrity sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY= + +is-decimal@^1.0.0: +  version "1.0.2" +  resolved "https://registry.yarnpkg.com/is-decimal/-/is-decimal-1.0.2.tgz#894662d6a8709d307f3a276ca4339c8fa5dff0ff" +  integrity sha512-TRzl7mOCchnhchN+f3ICUCzYvL9ul7R+TYOsZ8xia++knyZAJfv/uA1FvQXsAnYIl1T3B2X5E/J7Wb1QXiIBXg== + +is-deflate@^1.0.0: +  version "1.0.0" +  resolved "https://registry.yarnpkg.com/is-deflate/-/is-deflate-1.0.0.tgz#c862901c3c161fb09dac7cdc7e784f80e98f2f14" +  integrity sha1-yGKQHDwWH7CdrHzcfnhPgOmPLxQ= + +is-descriptor@^0.1.0: +  version "0.1.6" +  resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" +  integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== +  dependencies: +    is-accessor-descriptor "^0.1.6" +    is-data-descriptor "^0.1.4" +    kind-of "^5.0.0" + +is-descriptor@^1.0.0, is-descriptor@^1.0.2: +  version "1.0.2" +  resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" +  integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== +  dependencies: +    is-accessor-descriptor "^1.0.0" +    is-data-descriptor "^1.0.0" +    kind-of "^6.0.2" + +is-directory@^0.3.1: +  version "0.3.1" +  resolved "https://registry.yarnpkg.com/is-directory/-/is-directory-0.3.1.tgz#61339b6f2475fc772fd9c9d83f5c8575dc154ae1" +  integrity sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE= + +is-dotfile@^1.0.0: +  version "1.0.3" +  resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1" +  integrity sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE= + +is-empty@^1.0.0: +  version "1.2.0" +  resolved "https://registry.yarnpkg.com/is-empty/-/is-empty-1.2.0.tgz#de9bb5b278738a05a0b09a57e1fb4d4a341a9f6b" +  integrity sha1-3pu1snhzigWgsJpX4ftNSjQan2s= + +is-equal-shallow@^0.1.3: +  version "0.1.3" +  resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" +  integrity sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ= +  dependencies: +    is-primitive "^2.0.0" + +is-extendable@^0.1.0, is-extendable@^0.1.1: +  version "0.1.1" +  resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" +  integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= + +is-extendable@^1.0.1: +  version "1.0.1" +  resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" +  integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== +  dependencies: +    is-plain-object "^2.0.4" + +is-extglob@^1.0.0: +  version "1.0.0" +  resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" +  integrity sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA= + +is-extglob@^2.1.0, is-extglob@^2.1.1: +  version "2.1.1" +  resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" +  integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= + +is-file@^1.0.0: +  version "1.0.0" +  resolved "https://registry.yarnpkg.com/is-file/-/is-file-1.0.0.tgz#28a44cfbd9d3db193045f22b65fce8edf9620596" +  integrity sha1-KKRM+9nT2xkwRfIrZfzo7fliBZY= + +is-finite@^1.0.0: +  version "1.0.2" +  resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" +  integrity sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko= +  dependencies: +    number-is-nan "^1.0.0" + +is-fullwidth-code-point@^1.0.0: +  version "1.0.0" +  resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" +  integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= +  dependencies: +    number-is-nan "^1.0.0" + +is-fullwidth-code-point@^2.0.0: +  version "2.0.0" +  resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" +  integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= + +is-glob@^2.0.0, is-glob@^2.0.1: +  version "2.0.1" +  resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" +  integrity sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM= +  dependencies: +    is-extglob "^1.0.0" + +is-glob@^3.1.0: +  version "3.1.0" +  resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" +  integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= +  dependencies: +    is-extglob "^2.1.0" + +is-glob@^4.0.0: +  version "4.0.1" +  resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" +  integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== +  dependencies: +    is-extglob "^2.1.1" + +is-gzip@^1.0.0: +  version "1.0.0" +  resolved "https://registry.yarnpkg.com/is-gzip/-/is-gzip-1.0.0.tgz#6ca8b07b99c77998025900e555ced8ed80879a83" +  integrity sha1-bKiwe5nHeZgCWQDlVc7Y7YCHmoM= + +is-hexadecimal@^1.0.0: +  version "1.0.2" +  resolved "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-1.0.2.tgz#b6e710d7d07bb66b98cb8cece5c9b4921deeb835" +  integrity sha512-but/G3sapV3MNyqiDBLrOi4x8uCIw0RY3o/Vb5GT0sMFHrVV7731wFSVy41T5FO1og7G0gXLJh0MkgPRouko/A== + +is-hidden@^1.0.1: +  version "1.1.1" +  resolved "https://registry.yarnpkg.com/is-hidden/-/is-hidden-1.1.1.tgz#82ee6a93aeef3fb007ad5b9457c0584d45329f38" +  integrity sha512-175UKecS8+U4hh2PSY0j4xnm2GKYzvSKnbh+naC93JjuBA7LgIo6YxlbcsSo6seFBdQO3RuIcH980yvqqD/2cA== + +is-installed-globally@^0.1.0: +  version "0.1.0" +  resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.1.0.tgz#0dfd98f5a9111716dd535dda6492f67bf3d25a80" +  integrity sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA= +  dependencies: +    global-dirs "^0.1.0" +    is-path-inside "^1.0.0" + +is-npm@^1.0.0: +  version "1.0.0" +  resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-1.0.0.tgz#f2fb63a65e4905b406c86072765a1a4dc793b9f4" +  integrity sha1-8vtjpl5JBbQGyGBydloaTceTufQ= + +is-number@^2.1.0: +  version "2.1.0" +  resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" +  integrity sha1-Afy7s5NGOlSPL0ZszhbezknbkI8= +  dependencies: +    kind-of "^3.0.2" + +is-number@^3.0.0: +  version "3.0.0" +  resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" +  integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= +  dependencies: +    kind-of "^3.0.2" + +is-number@^4.0.0: +  version "4.0.0" +  resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff" +  integrity sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ== + +is-obj@^1.0.0, is-obj@^1.0.1: +  version "1.0.1" +  resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" +  integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= + +is-object@^1.0.1: +  version "1.0.1" +  resolved "https://registry.yarnpkg.com/is-object/-/is-object-1.0.1.tgz#8952688c5ec2ffd6b03ecc85e769e02903083470" +  integrity sha1-iVJojF7C/9awPsyF52ngKQMINHA= + +is-observable@^1.1.0: +  version "1.1.0" +  resolved "https://registry.yarnpkg.com/is-observable/-/is-observable-1.1.0.tgz#b3e986c8f44de950867cab5403f5a3465005975e" +  integrity sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA== +  dependencies: +    symbol-observable "^1.1.0" + +is-path-cwd@^1.0.0: +  version "1.0.0" +  resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d" +  integrity sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0= + +is-path-in-cwd@^1.0.0: +  version "1.0.1" +  resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz#5ac48b345ef675339bd6c7a48a912110b241cf52" +  integrity sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ== +  dependencies: +    is-path-inside "^1.0.0" + +is-path-inside@^1.0.0: +  version "1.0.1" +  resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.1.tgz#8ef5b7de50437a3fdca6b4e865ef7aa55cb48036" +  integrity sha1-jvW33lBDej/cprToZe96pVy0gDY= +  dependencies: +    path-is-inside "^1.0.1" + +is-plain-obj@^1.1.0: +  version "1.1.0" +  resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" +  integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= + +is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: +  version "2.0.4" +  resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" +  integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== +  dependencies: +    isobject "^3.0.1" + +is-posix-bracket@^0.1.0: +  version "0.1.1" +  resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" +  integrity sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q= + +is-primitive@^2.0.0: +  version "2.0.0" +  resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" +  integrity sha1-IHurkWOEmcB7Kt8kCkGochADRXU= + +is-promise@^2.1.0: +  version "2.1.0" +  resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" +  integrity sha1-eaKp7OfwlugPNtKy87wWwf9L8/o= + +is-redirect@^1.0.0: +  version "1.0.0" +  resolved "https://registry.yarnpkg.com/is-redirect/-/is-redirect-1.0.0.tgz#1d03dded53bd8db0f30c26e4f95d36fc7c87dc24" +  integrity sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ= + +is-regex@^1.0.4: +  version "1.0.4" +  resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.0.4.tgz#5517489b547091b0930e095654ced25ee97e9491" +  integrity sha1-VRdIm1RwkbCTDglWVM7SXul+lJE= +  dependencies: +    has "^1.0.1" + +is-regexp@^1.0.0: +  version "1.0.0" +  resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" +  integrity sha1-/S2INUXEa6xaYz57mgnof6LLUGk= + +is-resolvable@^1.1.0: +  version "1.1.0" +  resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" +  integrity sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg== + +is-retry-allowed@^1.0.0: +  version "1.1.0" +  resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34" +  integrity sha1-EaBgVotnM5REAz0BJaYaINVk+zQ= + +is-stream@1.1.0, is-stream@^1.0.0, is-stream@^1.1.0: +  version "1.1.0" +  resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" +  integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= + +is-subset@^0.1.1: +  version "0.1.1" +  resolved "https://registry.yarnpkg.com/is-subset/-/is-subset-0.1.1.tgz#8a59117d932de1de00f245fcdd39ce43f1e939a6" +  integrity sha1-ilkRfZMt4d4A8kX83TnOQ/HpOaY= + +is-symbol@^1.0.2: +  version "1.0.2" +  resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.2.tgz#a055f6ae57192caee329e7a860118b497a950f38" +  integrity sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw== +  dependencies: +    has-symbols "^1.0.0" + +is-text-path@^1.0.0: +  version "1.0.1" +  resolved "https://registry.yarnpkg.com/is-text-path/-/is-text-path-1.0.1.tgz#4e1aa0fb51bfbcb3e92688001397202c1775b66e" +  integrity sha1-Thqg+1G/vLPpJogAE5cgLBd1tm4= +  dependencies: +    text-extensions "^1.0.0" + +is-typedarray@~1.0.0: +  version "1.0.0" +  resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" +  integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= + +is-utf8@^0.2.0: +  version "0.2.1" +  resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" +  integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI= + +is-whitespace-character@^1.0.0: +  version "1.0.2" +  resolved "https://registry.yarnpkg.com/is-whitespace-character/-/is-whitespace-character-1.0.2.tgz#ede53b4c6f6fb3874533751ec9280d01928d03ed" +  integrity sha512-SzM+T5GKUCtLhlHFKt2SDAX2RFzfS6joT91F2/WSi9LxgFdsnhfPK/UIA+JhRR2xuyLdrCys2PiFDrtn1fU5hQ== + +is-windows@^1.0.2: +  version "1.0.2" +  resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" +  integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== + +is-word-character@^1.0.0: +  version "1.0.2" +  resolved "https://registry.yarnpkg.com/is-word-character/-/is-word-character-1.0.2.tgz#46a5dac3f2a1840898b91e576cd40d493f3ae553" +  integrity sha512-T3FlsX8rCHAH8e7RE7PfOPZVFQlcV3XRF9eOOBQ1uf70OxO7CjjSOjeImMPCADBdYWcStAbVbYvJ1m2D3tb+EA== + +is-wsl@^1.1.0: +  version "1.1.0" +  resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d" +  integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0= + +isarray@0.0.1: +  version "0.0.1" +  resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" +  integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= + +isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: +  version "1.0.0" +  resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" +  integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= + +isarray@^2.0.4: +  version "2.0.4" +  resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.4.tgz#38e7bcbb0f3ba1b7933c86ba1894ddfc3781bbb7" +  integrity sha512-GMxXOiUirWg1xTKRipM0Ek07rX+ubx4nNVElTJdNLYmNO/2YrDkgJGw9CljXn+r4EWiDQg/8lsRdHyg2PJuUaA== + +isexe@^2.0.0: +  version "2.0.0" +  resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" +  integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= + +isobject@^2.0.0: +  version "2.1.0" +  resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" +  integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= +  dependencies: +    isarray "1.0.0" + +isobject@^3.0.0, isobject@^3.0.1: +  version "3.0.1" +  resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" +  integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= + +isstream@~0.1.2: +  version "0.1.2" +  resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" +  integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= + +"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: +  version "4.0.0" +  resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" +  integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-tokens@^3.0.2: +  version "3.0.2" +  resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" +  integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= + +js-yaml@^3.11.0, js-yaml@^3.13.0, js-yaml@^3.6.1: +  version "3.13.1" +  resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" +  integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== +  dependencies: +    argparse "^1.0.7" +    esprima "^4.0.0" + +jsbn@~0.1.0: +  version "0.1.1" +  resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" +  integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= + +jsdom@^7.0.2: +  version "7.2.2" +  resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-7.2.2.tgz#40b402770c2bda23469096bee91ab675e3b1fc6e" +  integrity sha1-QLQCdwwr2iNGkJa+6Rq2deOx/G4= +  dependencies: +    abab "^1.0.0" +    acorn "^2.4.0" +    acorn-globals "^1.0.4" +    cssom ">= 0.3.0 < 0.4.0" +    cssstyle ">= 0.2.29 < 0.3.0" +    escodegen "^1.6.1" +    nwmatcher ">= 1.3.7 < 2.0.0" +    parse5 "^1.5.1" +    request "^2.55.0" +    sax "^1.1.4" +    symbol-tree ">= 3.1.0 < 4.0.0" +    tough-cookie "^2.2.0" +    webidl-conversions "^2.0.0" +    whatwg-url-compat "~0.6.5" +    xml-name-validator ">= 2.0.1 < 3.0.0" + +json-parse-better-errors@^1.0.1: +  version "1.0.2" +  resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" +  integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== + +json-schema-traverse@^0.4.1: +  version "0.4.1" +  resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" +  integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-schema@0.2.3: +  version "0.2.3" +  resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" +  integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= + +json-stable-stringify-without-jsonify@^1.0.1: +  version "1.0.1" +  resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" +  integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= + +json-stable-stringify@~0.0.0: +  version "0.0.1" +  resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-0.0.1.tgz#611c23e814db375527df851193db59dd2af27f45" +  integrity sha1-YRwj6BTbN1Un34URk9tZ3Sryf0U= +  dependencies: +    jsonify "~0.0.0" + +json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: +  version "5.0.1" +  resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" +  integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= + +jsonfile@^4.0.0: +  version "4.0.0" +  resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" +  integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= +  optionalDependencies: +    graceful-fs "^4.1.6" + +jsonify@~0.0.0: +  version "0.0.0" +  resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" +  integrity sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM= + +jsonparse@^1.2.0: +  version "1.3.1" +  resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" +  integrity sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA= + +jsprim@^1.2.2: +  version "1.4.1" +  resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" +  integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= +  dependencies: +    assert-plus "1.0.0" +    extsprintf "1.3.0" +    json-schema "0.2.3" +    verror "1.10.0" + +jsx-ast-utils@^2.0.1: +  version "2.1.0" +  resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-2.1.0.tgz#0ee4e2c971fb9601c67b5641b71be80faecf0b36" +  integrity sha512-yDGDG2DS4JcqhA6blsuYbtsT09xL8AoLuUR2Gb5exrw7UEM19sBcOTq+YBBhrNbl0PUC4R4LnFu+dHg2HKeVvA== +  dependencies: +    array-includes "^3.0.3" + +keyed-array@^2.1.2: +  version "2.1.2" +  resolved "https://registry.yarnpkg.com/keyed-array/-/keyed-array-2.1.2.tgz#8ac137b61322ed5ed1c7b41b9f9cd066631cace0" +  integrity sha1-isE3thMi7V7Rx7Qbn5zQZmMcrOA= + +kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: +  version "3.2.2" +  resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" +  integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= +  dependencies: +    is-buffer "^1.1.5" + +kind-of@^4.0.0: +  version "4.0.0" +  resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" +  integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= +  dependencies: +    is-buffer "^1.1.5" + +kind-of@^5.0.0: +  version "5.1.0" +  resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" +  integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== + +kind-of@^6.0.0, kind-of@^6.0.2: +  version "6.0.2" +  resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" +  integrity sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA== + +klaw@^3.0.0: +  version "3.0.0" +  resolved "https://registry.yarnpkg.com/klaw/-/klaw-3.0.0.tgz#b11bec9cf2492f06756d6e809ab73a2910259146" +  integrity sha512-0Fo5oir+O9jnXu5EefYbVK+mHMBeEVEy2cmctR1O1NECcCkPRreJKrS6Qt/j3KC2C148Dfo9i3pCmCMsdqGr0g== +  dependencies: +    graceful-fs "^4.1.9" + +labeled-stream-splicer@^2.0.0: +  version "2.0.1" +  resolved "https://registry.yarnpkg.com/labeled-stream-splicer/-/labeled-stream-splicer-2.0.1.tgz#9cffa32fd99e1612fd1d86a8db962416d5292926" +  integrity sha512-MC94mHZRvJ3LfykJlTUipBqenZz1pacOZEMhhQ8dMGcDHs0SBE5GbsavUXV7YtP3icBW17W0Zy1I0lfASmo9Pg== +  dependencies: +    inherits "^2.0.1" +    isarray "^2.0.4" +    stream-splicer "^2.0.0" + +latest-version@^3.0.0: +  version "3.1.0" +  resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-3.1.0.tgz#a205383fea322b33b5ae3b18abee0dc2f356ee15" +  integrity sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU= +  dependencies: +    package-json "^4.0.0" + +lazy-cache@^1.0.3: +  version "1.0.4" +  resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" +  integrity sha1-odePw6UEdMuAhF07O24dpJpEbo4= + +leven@2.1.0: +  version "2.1.0" +  resolved "https://registry.yarnpkg.com/leven/-/leven-2.1.0.tgz#c2e7a9f772094dee9d34202ae8acce4687875580" +  integrity sha1-wuep93IJTe6dNCAq6KzORoeHVYA= + +levn@^0.3.0, levn@~0.3.0: +  version "0.3.0" +  resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" +  integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= +  dependencies: +    prelude-ls "~1.1.2" +    type-check "~0.3.2" + +linkify-it@~1.2.2: +  version "1.2.4" +  resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-1.2.4.tgz#0773526c317c8fd13bd534ee1d180ff88abf881a" +  integrity sha1-B3NSbDF8j9E71TTuHRgP+Iq/iBo= +  dependencies: +    uc.micro "^1.0.1" + +lint-staged@^8.1.0: +  version "8.1.5" +  resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-8.1.5.tgz#372476fe1a58b8834eb562ed4c99126bd60bdd79" +  integrity sha512-e5ZavfnSLcBJE1BTzRTqw6ly8OkqVyO3GL2M6teSmTBYQ/2BuueD5GIt2RPsP31u/vjKdexUyDCxSyK75q4BDA== +  dependencies: +    chalk "^2.3.1" +    commander "^2.14.1" +    cosmiconfig "^5.0.2" +    debug "^3.1.0" +    dedent "^0.7.0" +    del "^3.0.0" +    execa "^1.0.0" +    find-parent-dir "^0.3.0" +    g-status "^2.0.2" +    is-glob "^4.0.0" +    is-windows "^1.0.2" +    listr "^0.14.2" +    listr-update-renderer "^0.5.0" +    lodash "^4.17.11" +    log-symbols "^2.2.0" +    micromatch "^3.1.8" +    npm-which "^3.0.1" +    p-map "^1.1.1" +    path-is-inside "^1.0.2" +    pify "^3.0.0" +    please-upgrade-node "^3.0.2" +    staged-git-files "1.1.2" +    string-argv "^0.0.2" +    stringify-object "^3.2.2" +    yup "^0.26.10" + +lint@^1.1.2: +  version "1.1.2" +  resolved "https://registry.yarnpkg.com/lint/-/lint-1.1.2.tgz#35ed064f322547c331358d899868664968ba371f" +  integrity sha1-Ne0GTzIlR8MxNY2JmGhmSWi6Nx8= + +listr-silent-renderer@^1.1.1: +  version "1.1.1" +  resolved "https://registry.yarnpkg.com/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz#924b5a3757153770bf1a8e3fbf74b8bbf3f9242e" +  integrity sha1-kktaN1cVN3C/Go4/v3S4u/P5JC4= + +listr-update-renderer@^0.5.0: +  version "0.5.0" +  resolved "https://registry.yarnpkg.com/listr-update-renderer/-/listr-update-renderer-0.5.0.tgz#4ea8368548a7b8aecb7e06d8c95cb45ae2ede6a2" +  integrity sha512-tKRsZpKz8GSGqoI/+caPmfrypiaq+OQCbd+CovEC24uk1h952lVj5sC7SqyFUm+OaJ5HN/a1YLt5cit2FMNsFA== +  dependencies: +    chalk "^1.1.3" +    cli-truncate "^0.2.1" +    elegant-spinner "^1.0.1" +    figures "^1.7.0" +    indent-string "^3.0.0" +    log-symbols "^1.0.2" +    log-update "^2.3.0" +    strip-ansi "^3.0.1" + +listr-verbose-renderer@^0.5.0: +  version "0.5.0" +  resolved "https://registry.yarnpkg.com/listr-verbose-renderer/-/listr-verbose-renderer-0.5.0.tgz#f1132167535ea4c1261102b9f28dac7cba1e03db" +  integrity sha512-04PDPqSlsqIOaaaGZ+41vq5FejI9auqTInicFRndCBgE3bXG8D6W1I+mWhk+1nqbHmyhla/6BUrd5OSiHwKRXw== +  dependencies: +    chalk "^2.4.1" +    cli-cursor "^2.1.0" +    date-fns "^1.27.2" +    figures "^2.0.0" + +listr@^0.14.2: +  version "0.14.3" +  resolved "https://registry.yarnpkg.com/listr/-/listr-0.14.3.tgz#2fea909604e434be464c50bddba0d496928fa586" +  integrity sha512-RmAl7su35BFd/xoMamRjpIE4j3v+L28o8CT5YhAXQJm1fD+1l9ngXY8JAQRJ+tFK2i5njvi0iRUKV09vPwA0iA== +  dependencies: +    "@samverschueren/stream-to-observable" "^0.3.0" +    is-observable "^1.1.0" +    is-promise "^2.1.0" +    is-stream "^1.1.0" +    listr-silent-renderer "^1.1.1" +    listr-update-renderer "^0.5.0" +    listr-verbose-renderer "^0.5.0" +    p-map "^2.0.0" +    rxjs "^6.3.3" + +load-json-file@^1.0.0: +  version "1.1.0" +  resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" +  integrity sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA= +  dependencies: +    graceful-fs "^4.1.2" +    parse-json "^2.2.0" +    pify "^2.0.0" +    pinkie-promise "^2.0.0" +    strip-bom "^2.0.0" + +load-json-file@^2.0.0: +  version "2.0.0" +  resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" +  integrity sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg= +  dependencies: +    graceful-fs "^4.1.2" +    parse-json "^2.2.0" +    pify "^2.0.0" +    strip-bom "^3.0.0" + +load-json-file@^4.0.0: +  version "4.0.0" +  resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" +  integrity sha1-L19Fq5HjMhYjT9U62rZo607AmTs= +  dependencies: +    graceful-fs "^4.1.2" +    parse-json "^4.0.0" +    pify "^3.0.0" +    strip-bom "^3.0.0" + +load-plugin@^2.0.0: +  version "2.3.0" +  resolved "https://registry.yarnpkg.com/load-plugin/-/load-plugin-2.3.0.tgz#577b6a956b344fd2ae80d8ecff5944febeea8eb7" +  integrity sha512-OxHNMfT3aeHFSpzeMQRcE40kXULv3KA8fGgnySC+rO3Be+0oMWkcRKMJ5zWzUCTuUnabCsQyJzNjo/BLdbmRxA== +  dependencies: +    npm-prefix "^1.2.0" +    resolve-from "^4.0.0" + +locate-path@^2.0.0: +  version "2.0.0" +  resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" +  integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= +  dependencies: +    p-locate "^2.0.0" +    path-exists "^3.0.0" + +lodash._reinterpolate@~3.0.0: +  version "3.0.0" +  resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" +  integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0= + +lodash.flatten@^4.4.0: +  version "4.4.0" +  resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f" +  integrity sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8= + +lodash.get@^4.4.2: +  version "4.4.2" +  resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" +  integrity sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk= + +lodash.isempty@^4.4.0: +  version "4.4.0" +  resolved "https://registry.yarnpkg.com/lodash.isempty/-/lodash.isempty-4.4.0.tgz#6f86cbedd8be4ec987be9aaf33c9684db1b31e7e" +  integrity sha1-b4bL7di+TsmHvpqvM8loTbGzHn4= + +lodash.isplainobject@^4.0.6: +  version "4.0.6" +  resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" +  integrity sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs= + +lodash.memoize@~3.0.3: +  version "3.0.4" +  resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-3.0.4.tgz#2dcbd2c287cbc0a55cc42328bd0c736150d53e3f" +  integrity sha1-LcvSwofLwKVcxCMovQxzYVDVPj8= + +lodash.merge@^4.6.0: +  version "4.6.1" +  resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.1.tgz#adc25d9cb99b9391c59624f379fbba60d7111d54" +  integrity sha512-AOYza4+Hf5z1/0Hztxpm2/xiPZgi/cjMqdnKTUWTBSKchJlxXXuUSxCCl8rJlf4g6yww/j6mA8nC8Hw/EZWxKQ== + +lodash.pick@^4.2.1: +  version "4.4.0" +  resolved "https://registry.yarnpkg.com/lodash.pick/-/lodash.pick-4.4.0.tgz#52f05610fff9ded422611441ed1fc123a03001b3" +  integrity sha1-UvBWEP/53tQiYRRB7R/BI6AwAbM= + +lodash.range@^3.2.0: +  version "3.2.0" +  resolved "https://registry.yarnpkg.com/lodash.range/-/lodash.range-3.2.0.tgz#f461e588f66683f7eadeade513e38a69a565a15d" +  integrity sha1-9GHliPZmg/fq3q3lE+OKaaVloV0= + +lodash.set@^4.3.2: +  version "4.3.2" +  resolved "https://registry.yarnpkg.com/lodash.set/-/lodash.set-4.3.2.tgz#d8757b1da807dde24816b0d6a84bea1a76230b23" +  integrity sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM= + +lodash.template@^4.0.2: +  version "4.4.0" +  resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.4.0.tgz#e73a0385c8355591746e020b99679c690e68fba0" +  integrity sha1-5zoDhcg1VZF0bgILmWecaQ5o+6A= +  dependencies: +    lodash._reinterpolate "~3.0.0" +    lodash.templatesettings "^4.0.0" + +lodash.templatesettings@^4.0.0: +  version "4.1.0" +  resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.1.0.tgz#2b4d4e95ba440d915ff08bc899e4553666713316" +  integrity sha1-K01OlbpEDZFf8IvImeRVNmZxMxY= +  dependencies: +    lodash._reinterpolate "~3.0.0" + +lodash.transform@^4.6.0: +  version "4.6.0" +  resolved "https://registry.yarnpkg.com/lodash.transform/-/lodash.transform-4.6.0.tgz#12306422f63324aed8483d3f38332b5f670547a0" +  integrity sha1-EjBkIvYzJK7YSD0/ODMrX2cFR6A= + +lodash.unescape@4.0.1: +  version "4.0.1" +  resolved "https://registry.yarnpkg.com/lodash.unescape/-/lodash.unescape-4.0.1.tgz#bf2249886ce514cda112fae9218cdc065211fc9c" +  integrity sha1-vyJJiGzlFM2hEvrpIYzcBlIR/Jw= + +lodash.uniq@^4.5.0: +  version "4.5.0" +  resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" +  integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= + +lodash@^4.1.0, lodash@^4.15.0, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.2.1, lodash@^4.3.0: +  version "4.17.11" +  resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" +  integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg== + +log-symbols@^1.0.2: +  version "1.0.2" +  resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-1.0.2.tgz#376ff7b58ea3086a0f09facc74617eca501e1a18" +  integrity sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg= +  dependencies: +    chalk "^1.0.0" + +log-symbols@^2.2.0: +  version "2.2.0" +  resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a" +  integrity sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg== +  dependencies: +    chalk "^2.0.1" + +log-update@^2.3.0: +  version "2.3.0" +  resolved "https://registry.yarnpkg.com/log-update/-/log-update-2.3.0.tgz#88328fd7d1ce7938b29283746f0b1bc126b24708" +  integrity sha1-iDKP19HOeTiykoN0bwsbwSayRwg= +  dependencies: +    ansi-escapes "^3.0.0" +    cli-cursor "^2.0.0" +    wrap-ansi "^3.0.1" + +longest-streak@^2.0.1: +  version "2.0.2" +  resolved "https://registry.yarnpkg.com/longest-streak/-/longest-streak-2.0.2.tgz#2421b6ba939a443bb9ffebf596585a50b4c38e2e" +  integrity sha512-TmYTeEYxiAmSVdpbnQDXGtvYOIRsCMg89CVZzwzc2o7GFL1CjoiRPjH5ec0NFAVlAx3fVof9dX/t6KKRAo2OWA== + +longest@^1.0.1: +  version "1.0.1" +  resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" +  integrity sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc= + +loose-envify@^1.4.0: +  version "1.4.0" +  resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" +  integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== +  dependencies: +    js-tokens "^3.0.0 || ^4.0.0" + +loud-rejection@^1.0.0: +  version "1.6.0" +  resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f" +  integrity sha1-W0b4AUft7leIcPCG0Eghz5mOVR8= +  dependencies: +    currently-unhandled "^0.4.1" +    signal-exit "^3.0.0" + +lowercase-keys@^1.0.0: +  version "1.0.1" +  resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" +  integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== + +lru-cache@^4.0.1: +  version "4.1.5" +  resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" +  integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== +  dependencies: +    pseudomap "^1.0.2" +    yallist "^2.1.2" + +macos-release@^2.2.0: +  version "2.2.0" +  resolved "https://registry.yarnpkg.com/macos-release/-/macos-release-2.2.0.tgz#ab58d55dd4714f0a05ad4b0e90f4370fef5cdea8" +  integrity sha512-iV2IDxZaX8dIcM7fG6cI46uNmHUxHE4yN+Z8tKHAW1TBPMZDIKHf/3L+YnOuj/FK9il14UaVdHmiQ1tsi90ltA== + +make-dir@^1.0.0: +  version "1.3.0" +  resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" +  integrity sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ== +  dependencies: +    pify "^3.0.0" + +make-error@^1.1.1: +  version "1.3.5" +  resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.5.tgz#efe4e81f6db28cadd605c70f29c831b58ef776c8" +  integrity sha512-c3sIjNUow0+8swNwVpqoH4YCShKNFkMaw6oH1mNS2haDZQqkeZFlHS3dhoeEbKKmJB4vXpJucU6oH75aDYeE9g== + +map-cache@^0.2.2: +  version "0.2.2" +  resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" +  integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= + +map-obj@^1.0.0, map-obj@^1.0.1: +  version "1.0.1" +  resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" +  integrity sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0= + +map-obj@^2.0.0: +  version "2.0.0" +  resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-2.0.0.tgz#a65cd29087a92598b8791257a523e021222ac1f9" +  integrity sha1-plzSkIepJZi4eRJXpSPgISIqwfk= + +map-visit@^1.0.0: +  version "1.0.0" +  resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" +  integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= +  dependencies: +    object-visit "^1.0.0" + +markdown-escapes@^1.0.0: +  version "1.0.2" +  resolved "https://registry.yarnpkg.com/markdown-escapes/-/markdown-escapes-1.0.2.tgz#e639cbde7b99c841c0bacc8a07982873b46d2122" +  integrity sha512-lbRZ2mE3Q9RtLjxZBZ9+IMl68DKIXaVAhwvwn9pmjnPLS0h/6kyBMgNhqi1xFJ/2yv6cSyv0jbiZavZv93JkkA== + +markdown-extensions@^1.1.0: +  version "1.1.1" +  resolved "https://registry.yarnpkg.com/markdown-extensions/-/markdown-extensions-1.1.1.tgz#fea03b539faeaee9b4ef02a3769b455b189f7fc3" +  integrity sha512-WWC0ZuMzCyDHYCasEGs4IPvLyTGftYwh6wIEOULOF0HXcqZlhwRzrK0w2VUlxWA98xnvb/jszw4ZSkJ6ADpM6Q== + +markdown-it-named-headers@0.0.4: +  version "0.0.4" +  resolved "https://registry.yarnpkg.com/markdown-it-named-headers/-/markdown-it-named-headers-0.0.4.tgz#82efc28324240a6b1e77b9aae501771d5f351c1f" +  integrity sha1-gu/CgyQkCmsed7mq5QF3HV81HB8= +  dependencies: +    string "^3.0.1" + +markdown-it@^6.0.1: +  version "6.1.1" +  resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-6.1.1.tgz#ced037f4473ee9f5153ac414f77dc83c91ba927c" +  integrity sha1-ztA39Ec+6fUVOsQU933IPJG6knw= +  dependencies: +    argparse "^1.0.7" +    entities "~1.1.1" +    linkify-it "~1.2.2" +    mdurl "~1.0.1" +    uc.micro "^1.0.1" + +markdown-table@^1.1.0: +  version "1.1.2" +  resolved "https://registry.yarnpkg.com/markdown-table/-/markdown-table-1.1.2.tgz#c78db948fa879903a41bce522e3b96f801c63786" +  integrity sha512-NcWuJFHDA8V3wkDgR/j4+gZx+YQwstPgfQDV8ndUeWWzta3dnDTBxpVzqS9lkmJAuV5YX35lmyojl6HO5JXAgw== + +marky-markdown-lite@^1.2.0: +  version "1.2.0" +  resolved "https://registry.yarnpkg.com/marky-markdown-lite/-/marky-markdown-lite-1.2.0.tgz#74eda984b8136557dee1064efd15e40617406997" +  integrity sha1-dO2phLgTZVfe4QZO/RXkBhdAaZc= +  dependencies: +    cheerio "^0.20.0" +    conventional-changelog-cli "^1.2.0" +    is-file "^1.0.0" +    markdown-it "^6.0.1" +    markdown-it-named-headers "0.0.4" + +matcher-collection@^1.0.0: +  version "1.1.2" +  resolved "https://registry.yarnpkg.com/matcher-collection/-/matcher-collection-1.1.2.tgz#1076f506f10ca85897b53d14ef54f90a5c426838" +  integrity sha512-YQ/teqaOIIfUHedRam08PB3NK7Mjct6BvzRnJmpGDm8uFXpNr1sbY4yuflI5JcEs6COpYA0FpRQhSDBf1tT95g== +  dependencies: +    minimatch "^3.0.2" + +matcher@^1.0.0: +  version "1.1.1" +  resolved "https://registry.yarnpkg.com/matcher/-/matcher-1.1.1.tgz#51d8301e138f840982b338b116bb0c09af62c1c2" +  integrity sha512-+BmqxWIubKTRKNWx/ahnCkk3mG8m7OturVlqq6HiojGJTd5hVYbgZm6WzcYPCoB+KBT4Vd6R7WSRG2OADNaCjg== +  dependencies: +    escape-string-regexp "^1.0.4" + +math-random@^1.0.1: +  version "1.0.4" +  resolved "https://registry.yarnpkg.com/math-random/-/math-random-1.0.4.tgz#5dd6943c938548267016d4e34f057583080c514c" +  integrity sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A== + +md5.js@^1.3.4: +  version "1.3.5" +  resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" +  integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== +  dependencies: +    hash-base "^3.0.0" +    inherits "^2.0.1" +    safe-buffer "^5.1.2" + +mdast-comment-marker@^1.0.0: +  version "1.1.0" +  resolved "https://registry.yarnpkg.com/mdast-comment-marker/-/mdast-comment-marker-1.1.0.tgz#81129dd4182eaeafbd40bb1f79be4da587a1dc52" +  integrity sha512-NqHAs8nmu08I6MGzpKzgTd9qiCP7oshkyzQrlZxLMsLPUOPjp/Zb/ZtorKD0oOJ38vdZxFCdOlXvlDf77AqEDg== + +mdast-util-compact@^1.0.0: +  version "1.0.2" +  resolved "https://registry.yarnpkg.com/mdast-util-compact/-/mdast-util-compact-1.0.2.tgz#c12ebe16fffc84573d3e19767726de226e95f649" +  integrity sha512-d2WS98JSDVbpSsBfVvD9TaDMlqPRz7ohM/11G0rp5jOBb5q96RJ6YLszQ/09AAixyzh23FeIpCGqfaamEADtWg== +  dependencies: +    unist-util-visit "^1.1.0" + +mdast-util-heading-style@^1.0.2: +  version "1.0.4" +  resolved "https://registry.yarnpkg.com/mdast-util-heading-style/-/mdast-util-heading-style-1.0.4.tgz#8e796de77f91c141691620ebbb5c9140609e3fd2" +  integrity sha512-n4fUvwpR5Uj1Ti658KxYDq9gR0UF3FK1UVTVig12imrSOssQU2OpUysje8nps5Cb85b6eau5akpWW7Zkxtv1XA== + +mdast-util-to-string@^1.0.2: +  version "1.0.5" +  resolved "https://registry.yarnpkg.com/mdast-util-to-string/-/mdast-util-to-string-1.0.5.tgz#3552b05428af22ceda34f156afe62ec8e6d731ca" +  integrity sha512-2qLt/DEOo5F6nc2VFScQiHPzQ0XXcabquRJxKMhKte8nt42o08HUxNDPk7tt0YPxnWjAT11I1SYi0X0iPnfI5A== + +mdurl@~1.0.1: +  version "1.0.1" +  resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" +  integrity sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4= + +media-typer@0.3.0: +  version "0.3.0" +  resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" +  integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= + +meow@^3.1.0, meow@^3.3.0: +  version "3.7.0" +  resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" +  integrity sha1-cstmi0JSKCkKu/qFaJJYcwioAfs= +  dependencies: +    camelcase-keys "^2.0.0" +    decamelize "^1.1.2" +    loud-rejection "^1.0.0" +    map-obj "^1.0.1" +    minimist "^1.1.3" +    normalize-package-data "^2.3.4" +    object-assign "^4.0.1" +    read-pkg-up "^1.0.1" +    redent "^1.0.0" +    trim-newlines "^1.0.0" + +meow@^4.0.0: +  version "4.0.1" +  resolved "https://registry.yarnpkg.com/meow/-/meow-4.0.1.tgz#d48598f6f4b1472f35bf6317a95945ace347f975" +  integrity sha512-xcSBHD5Z86zaOc+781KrupuHAzeGXSLtiAOmBsiLDiPSaYSB6hdew2ng9EBAnZ62jagG9MHAOdxpDi/lWBFJ/A== +  dependencies: +    camelcase-keys "^4.0.0" +    decamelize-keys "^1.0.0" +    loud-rejection "^1.0.0" +    minimist "^1.1.3" +    minimist-options "^3.0.1" +    normalize-package-data "^2.3.4" +    read-pkg-up "^3.0.0" +    redent "^2.0.0" +    trim-newlines "^2.0.0" + +merge-descriptors@1.0.1: +  version "1.0.1" +  resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" +  integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E= + +merge2@^1.2.3: +  version "1.2.3" +  resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.2.3.tgz#7ee99dbd69bb6481689253f018488a1b902b0ed5" +  integrity sha512-gdUU1Fwj5ep4kplwcmftruWofEFt6lfpkkr3h860CXbAB9c3hGb55EOL2ali0Td5oebvW0E1+3Sr+Ur7XfKpRA== + +methods@~1.1.2: +  version "1.1.2" +  resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" +  integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= + +micro-compress@1.0.0: +  version "1.0.0" +  resolved "https://registry.yarnpkg.com/micro-compress/-/micro-compress-1.0.0.tgz#53f5a80b4ad0320ca165a559b6e3df145d4f704f" +  integrity sha1-U/WoC0rQMgyhZaVZtuPfFF1PcE8= +  dependencies: +    compression "^1.6.2" + +micro@9.3.1: +  version "9.3.1" +  resolved "https://registry.yarnpkg.com/micro/-/micro-9.3.1.tgz#0c37eba0171554b1beccda5215ff8ea4e7aa59d6" +  integrity sha512-83uimpPJqfwkfKvJl2WWontBlV3hmzrIgyJ+L2uhDXKNk7Ll+/ezK3zBz7TljubpKPqjM0JdT2Ker4MTPmhjgA== +  dependencies: +    arg "2.0.0" +    chalk "2.4.0" +    content-type "1.0.4" +    is-stream "1.1.0" +    raw-body "2.3.2" + +micromatch@^2.1.5: +  version "2.3.11" +  resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" +  integrity sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU= +  dependencies: +    arr-diff "^2.0.0" +    array-unique "^0.2.1" +    braces "^1.8.2" +    expand-brackets "^0.1.4" +    extglob "^0.3.1" +    filename-regex "^2.0.0" +    is-extglob "^1.0.0" +    is-glob "^2.0.1" +    kind-of "^3.0.2" +    normalize-path "^2.0.1" +    object.omit "^2.0.0" +    parse-glob "^3.0.4" +    regex-cache "^0.4.2" + +micromatch@^3.1.10, micromatch@^3.1.8: +  version "3.1.10" +  resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" +  integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== +  dependencies: +    arr-diff "^4.0.0" +    array-unique "^0.3.2" +    braces "^2.3.1" +    define-property "^2.0.2" +    extend-shallow "^3.0.2" +    extglob "^2.0.4" +    fragment-cache "^0.2.1" +    kind-of "^6.0.2" +    nanomatch "^1.2.9" +    object.pick "^1.3.0" +    regex-not "^1.0.0" +    snapdragon "^0.8.1" +    to-regex "^3.0.2" + +miller-rabin@^4.0.0: +  version "4.0.1" +  resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" +  integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== +  dependencies: +    bn.js "^4.0.0" +    brorand "^1.0.1" + +mime-db@1.40.0, "mime-db@>= 1.40.0 < 2": +  version "1.40.0" +  resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.40.0.tgz#a65057e998db090f732a68f6c276d387d4126c32" +  integrity sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA== + +mime-db@~1.33.0: +  version "1.33.0" +  resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.33.0.tgz#a3492050a5cb9b63450541e39d9788d2272783db" +  integrity sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ== + +mime-types@2.1.18: +  version "2.1.18" +  resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.18.tgz#6f323f60a83d11146f831ff11fd66e2fe5503bb8" +  integrity sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ== +  dependencies: +    mime-db "~1.33.0" + +mime-types@^2.1.12, mime-types@~2.1.19, mime-types@~2.1.24: +  version "2.1.24" +  resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.24.tgz#b6f8d0b3e951efb77dedeca194cff6d16f676f81" +  integrity sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ== +  dependencies: +    mime-db "1.40.0" + +mime@1.4.1: +  version "1.4.1" +  resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6" +  integrity sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ== + +mimic-fn@^1.0.0: +  version "1.2.0" +  resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" +  integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== + +minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: +  version "1.0.1" +  resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" +  integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== + +minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: +  version "1.0.1" +  resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" +  integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= + +"minimatch@2 || 3", minimatch@^3.0.2, minimatch@^3.0.3, minimatch@^3.0.4, minimatch@~3.0.4: +  version "3.0.4" +  resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" +  integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== +  dependencies: +    brace-expansion "^1.1.7" + +minimist-options@^3.0.1: +  version "3.0.2" +  resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-3.0.2.tgz#fba4c8191339e13ecf4d61beb03f070103f3d954" +  integrity sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ== +  dependencies: +    arrify "^1.0.1" +    is-plain-obj "^1.1.0" + +minimist@0.0.8: +  version "0.0.8" +  resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" +  integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= + +minimist@^1.1.0, minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0: +  version "1.2.0" +  resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" +  integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= + +minimist@~0.0.1: +  version "0.0.10" +  resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" +  integrity sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8= + +minipass@^2.2.1, minipass@^2.3.4: +  version "2.3.5" +  resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.5.tgz#cacebe492022497f656b0f0f51e2682a9ed2d848" +  integrity sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA== +  dependencies: +    safe-buffer "^5.1.2" +    yallist "^3.0.0" + +minizlib@^1.1.1: +  version "1.2.1" +  resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.2.1.tgz#dd27ea6136243c7c880684e8672bb3a45fd9b614" +  integrity sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA== +  dependencies: +    minipass "^2.2.1" + +mixin-deep@^1.2.0: +  version "1.3.1" +  resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.1.tgz#a49e7268dce1a0d9698e45326c5626df3543d0fe" +  integrity sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ== +  dependencies: +    for-in "^1.0.2" +    is-extendable "^1.0.1" + +mkdirp@^0.5.0, mkdirp@^0.5.1: +  version "0.5.1" +  resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" +  integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= +  dependencies: +    minimist "0.0.8" + +modify-values@^1.0.0: +  version "1.0.1" +  resolved "https://registry.yarnpkg.com/modify-values/-/modify-values-1.0.1.tgz#b3939fa605546474e3e3e3c63d64bd43b4ee6022" +  integrity sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw== + +module-deps@^6.0.0: +  version "6.2.0" +  resolved "https://registry.yarnpkg.com/module-deps/-/module-deps-6.2.0.tgz#d41a2e790245ce319171e4e7c4d8c73993ba3cd5" +  integrity sha512-hKPmO06so6bL/ZvqVNVqdTVO8UAYsi3tQWlCa+z9KuWhoN4KDQtb5hcqQQv58qYiDE21wIvnttZEPiDgEbpwbA== +  dependencies: +    JSONStream "^1.0.3" +    browser-resolve "^1.7.0" +    cached-path-relative "^1.0.0" +    concat-stream "~1.6.0" +    defined "^1.0.0" +    detective "^5.0.2" +    duplexer2 "^0.1.2" +    inherits "^2.0.1" +    parents "^1.0.0" +    readable-stream "^2.0.2" +    resolve "^1.4.0" +    stream-combiner2 "^1.1.1" +    subarg "^1.0.0" +    through2 "^2.0.0" +    xtend "^4.0.0" + +mri@1.1.0: +  version "1.1.0" +  resolved "https://registry.yarnpkg.com/mri/-/mri-1.1.0.tgz#5c0a3f29c8ccffbbb1ec941dcec09d71fa32f36a" +  integrity sha1-XAo/KcjM/7ux7JQdzsCdcfoy82o= + +ms@2.0.0: +  version "2.0.0" +  resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" +  integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= + +ms@^2.1.1: +  version "2.1.1" +  resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" +  integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== + +mute-stream@0.0.7: +  version "0.0.7" +  resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" +  integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= + +nan@^2.12.1: +  version "2.13.2" +  resolved "https://registry.yarnpkg.com/nan/-/nan-2.13.2.tgz#f51dc7ae66ba7d5d55e1e6d4d8092e802c9aefe7" +  integrity sha512-TghvYc72wlMGMVMluVo9WRJc0mB8KxxF/gZ4YYFy7V2ZQX9l7rgbPg7vjS9mt6U5HXODVFVI2bOduCzwOMv/lw== + +nanomatch@^1.2.9: +  version "1.2.13" +  resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" +  integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== +  dependencies: +    arr-diff "^4.0.0" +    array-unique "^0.3.2" +    define-property "^2.0.2" +    extend-shallow "^3.0.2" +    fragment-cache "^0.2.1" +    is-windows "^1.0.2" +    kind-of "^6.0.2" +    object.pick "^1.3.0" +    regex-not "^1.0.0" +    snapdragon "^0.8.1" +    to-regex "^3.0.1" + +natural-compare@^1.4.0: +  version "1.4.0" +  resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" +  integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= + +needle@^2.2.1: +  version "2.3.1" +  resolved "https://registry.yarnpkg.com/needle/-/needle-2.3.1.tgz#d272f2f4034afb9c4c9ab1379aabc17fc85c9388" +  integrity sha512-CaLXV3W8Vnbps8ZANqDGz7j4x7Yj1LW4TWF/TQuDfj7Cfx4nAPTvw98qgTevtto1oHDrh3pQkaODbqupXlsWTg== +  dependencies: +    debug "^4.1.0" +    iconv-lite "^0.4.4" +    sax "^1.2.4" + +negotiator@0.6.1: +  version "0.6.1" +  resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" +  integrity sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk= + +neo-async@^2.6.0: +  version "2.6.0" +  resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.0.tgz#b9d15e4d71c6762908654b5183ed38b753340835" +  integrity sha512-MFh0d/Wa7vkKO3Y3LlacqAEeHK0mckVqzDieUKTT+KGxi+zIpeVsFxymkIiRpbpDziHc290Xr9A1O4Om7otoRA== + +nice-try@^1.0.4: +  version "1.0.5" +  resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" +  integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== + +node-dir@^0.1.12: +  version "0.1.17" +  resolved "https://registry.yarnpkg.com/node-dir/-/node-dir-0.1.17.tgz#5f5665d93351335caabef8f1c554516cf5f1e4e5" +  integrity sha1-X1Zl2TNRM1yqvvjxxVRRbPXx5OU= +  dependencies: +    minimatch "^3.0.2" + +node-fetch@^2.3.0: +  version "2.4.1" +  resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.4.1.tgz#b2e38f1117b8acbedbe0524f041fb3177188255d" +  integrity sha512-P9UbpFK87NyqBZzUuDBDz4f6Yiys8xm8j7ACDbi6usvFm6KItklQUKjeoqTrYS/S1k6I8oaOC2YLLDr/gg26Mw== + +node-pre-gyp@^0.12.0: +  version "0.12.0" +  resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.12.0.tgz#39ba4bb1439da030295f899e3b520b7785766149" +  integrity sha512-4KghwV8vH5k+g2ylT+sLTjy5wmUOb9vPhnM8NHvRf9dHmnW/CndrFXy2aRPaPST6dugXSdHXfeaHQm77PIz/1A== +  dependencies: +    detect-libc "^1.0.2" +    mkdirp "^0.5.1" +    needle "^2.2.1" +    nopt "^4.0.1" +    npm-packlist "^1.1.6" +    npmlog "^4.0.2" +    rc "^1.2.7" +    rimraf "^2.6.1" +    semver "^5.3.0" +    tar "^4" + +node-version@1.1.3: +  version "1.1.3" +  resolved "https://registry.yarnpkg.com/node-version/-/node-version-1.1.3.tgz#1081c87cce6d2dbbd61d0e51e28c287782678496" +  integrity sha512-rEwE51JWn0yN3Wl5BXeGn5d52OGbSXzWiiXRjAQeuyvcGKyvuSILW2rb3G7Xh+nexzLwhTpek6Ehxd6IjvHePg== + +nopt@^4.0.1: +  version "4.0.1" +  resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" +  integrity sha1-0NRoWv1UFRk8jHUFYC0NF81kR00= +  dependencies: +    abbrev "1" +    osenv "^0.1.4" + +normalize-package-data@^2.3.0, normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package-data@^2.3.5: +  version "2.5.0" +  resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" +  integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== +  dependencies: +    hosted-git-info "^2.1.4" +    resolve "^1.10.0" +    semver "2 || 3 || 4 || 5" +    validate-npm-package-license "^3.0.1" + +normalize-path@^1.0.0: +  version "1.0.0" +  resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-1.0.0.tgz#32d0e472f91ff345701c15a8311018d3b0a90379" +  integrity sha1-MtDkcvkf80VwHBWoMRAY07CpA3k= + +normalize-path@^2.0.0, normalize-path@^2.0.1: +  version "2.1.1" +  resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" +  integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= +  dependencies: +    remove-trailing-separator "^1.0.1" + +npm-bundled@^1.0.1: +  version "1.0.6" +  resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.6.tgz#e7ba9aadcef962bb61248f91721cd932b3fe6bdd" +  integrity sha512-8/JCaftHwbd//k6y2rEWp6k1wxVfpFzB6t1p825+cUb7Ym2XQfhwIC5KwhrvzZRJu+LtDE585zVaS32+CGtf0g== + +npm-packlist@^1.1.6: +  version "1.4.1" +  resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.1.tgz#19064cdf988da80ea3cee45533879d90192bbfbc" +  integrity sha512-+TcdO7HJJ8peiiYhvPxsEDhF3PJFGUGRcFsGve3vxvxdcpO2Z4Z7rkosRM0kWj6LfbK/P0gu3dzk5RU1ffvFcw== +  dependencies: +    ignore-walk "^3.0.1" +    npm-bundled "^1.0.1" + +npm-path@^2.0.2: +  version "2.0.4" +  resolved "https://registry.yarnpkg.com/npm-path/-/npm-path-2.0.4.tgz#c641347a5ff9d6a09e4d9bce5580c4f505278e64" +  integrity sha512-IFsj0R9C7ZdR5cP+ET342q77uSRdtWOlWpih5eC+lu29tIDbNEgDbzgVJ5UFvYHWhxDZ5TFkJafFioO0pPQjCw== +  dependencies: +    which "^1.2.10" + +npm-prefix@^1.2.0: +  version "1.2.0" +  resolved "https://registry.yarnpkg.com/npm-prefix/-/npm-prefix-1.2.0.tgz#e619455f7074ba54cc66d6d0d37dd9f1be6bcbc0" +  integrity sha1-5hlFX3B0ulTMZtbQ033Z8b5ry8A= +  dependencies: +    rc "^1.1.0" +    shellsubstitute "^1.1.0" +    untildify "^2.1.0" + +npm-run-path@^2.0.0: +  version "2.0.2" +  resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" +  integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= +  dependencies: +    path-key "^2.0.0" + +npm-which@^3.0.1: +  version "3.0.1" +  resolved "https://registry.yarnpkg.com/npm-which/-/npm-which-3.0.1.tgz#9225f26ec3a285c209cae67c3b11a6b4ab7140aa" +  integrity sha1-kiXybsOihcIJyuZ8OxGmtKtxQKo= +  dependencies: +    commander "^2.9.0" +    npm-path "^2.0.2" +    which "^1.2.10" + +npmlog@^4.0.2: +  version "4.1.2" +  resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" +  integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== +  dependencies: +    are-we-there-yet "~1.1.2" +    console-control-strings "~1.1.0" +    gauge "~2.7.3" +    set-blocking "~2.0.0" + +nth-check@~1.0.1: +  version "1.0.2" +  resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" +  integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== +  dependencies: +    boolbase "~1.0.0" + +nugget@^2.0.1: +  version "2.0.1" +  resolved "https://registry.yarnpkg.com/nugget/-/nugget-2.0.1.tgz#201095a487e1ad36081b3432fa3cada4f8d071b0" +  integrity sha1-IBCVpIfhrTYIGzQy+jytpPjQcbA= +  dependencies: +    debug "^2.1.3" +    minimist "^1.1.0" +    pretty-bytes "^1.0.2" +    progress-stream "^1.1.0" +    request "^2.45.0" +    single-line-log "^1.1.2" +    throttleit "0.0.2" + +number-is-nan@^1.0.0: +  version "1.0.1" +  resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" +  integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= + +"nwmatcher@>= 1.3.7 < 2.0.0": +  version "1.4.4" +  resolved "https://registry.yarnpkg.com/nwmatcher/-/nwmatcher-1.4.4.tgz#2285631f34a95f0d0395cd900c96ed39b58f346e" +  integrity sha512-3iuY4N5dhgMpCUrOVnuAdGrgxVqV2cJpM+XNccjR2DKOB1RUP0aA+wGXEiNziG/UKboFyGBIoKOaNlJxx8bciQ== + +oauth-sign@~0.9.0: +  version "0.9.0" +  resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" +  integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== + +object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: +  version "4.1.1" +  resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" +  integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= + +object-copy@^0.1.0: +  version "0.1.0" +  resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" +  integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= +  dependencies: +    copy-descriptor "^0.1.0" +    define-property "^0.2.5" +    kind-of "^3.0.3" + +object-keys@^1.0.12, object-keys@^1.0.6: +  version "1.1.1" +  resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" +  integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object-keys@~0.4.0: +  version "0.4.0" +  resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-0.4.0.tgz#28a6aae7428dd2c3a92f3d95f21335dd204e0336" +  integrity sha1-KKaq50KN0sOpLz2V8hM13SBOAzY= + +object-visit@^1.0.0: +  version "1.0.1" +  resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" +  integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= +  dependencies: +    isobject "^3.0.0" + +object.omit@^2.0.0: +  version "2.0.1" +  resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" +  integrity sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo= +  dependencies: +    for-own "^0.1.4" +    is-extendable "^0.1.1" + +object.pick@^1.3.0: +  version "1.3.0" +  resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" +  integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= +  dependencies: +    isobject "^3.0.1" + +octicons@^7.3.0: +  version "7.4.0" +  resolved "https://registry.yarnpkg.com/octicons/-/octicons-7.4.0.tgz#0be0082ed75b81e680800ef978bf47078b670091" +  integrity sha512-j53BDX+FpJ4DQwENARbk9hHkwG/Oaq5NPUMNzYdGxRA/R5M6BbPVQEakUVMNKLzvzPue/gEEUTtSj6utFse5QQ== +  dependencies: +    object-assign "^4.1.1" + +octokit-pagination-methods@^1.1.0: +  version "1.1.0" +  resolved "https://registry.yarnpkg.com/octokit-pagination-methods/-/octokit-pagination-methods-1.1.0.tgz#cf472edc9d551055f9ef73f6e42b4dbb4c80bea4" +  integrity sha512-fZ4qZdQ2nxJvtcasX7Ghl+WlWS/d9IgnBIwFZXVNNZUmzpno91SX5bc5vuxiuKoCtK78XxGGNuSCrDC7xYB3OQ== + +on-finished@~2.3.0: +  version "2.3.0" +  resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" +  integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= +  dependencies: +    ee-first "1.1.1" + +on-headers@~1.0.2: +  version "1.0.2" +  resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" +  integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== + +once@^1.3.0, once@^1.3.1, once@^1.4.0: +  version "1.4.0" +  resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" +  integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= +  dependencies: +    wrappy "1" + +onetime@^1.0.0: +  version "1.1.0" +  resolved "https://registry.yarnpkg.com/onetime/-/onetime-1.1.0.tgz#a1f7838f8314c516f05ecefcbc4ccfe04b4ed789" +  integrity sha1-ofeDj4MUxRbwXs78vEzP4EtO14k= + +onetime@^2.0.0: +  version "2.0.1" +  resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" +  integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ= +  dependencies: +    mimic-fn "^1.0.0" + +openssl-self-signed-certificate@1.1.6: +  version "1.1.6" +  resolved "https://registry.yarnpkg.com/openssl-self-signed-certificate/-/openssl-self-signed-certificate-1.1.6.tgz#9d3a4776b1a57e9847350392114ad2f915a83dd4" +  integrity sha1-nTpHdrGlfphHNQOSEUrS+RWoPdQ= + +opn@5.3.0: +  version "5.3.0" +  resolved "https://registry.yarnpkg.com/opn/-/opn-5.3.0.tgz#64871565c863875f052cfdf53d3e3cb5adb53b1c" +  integrity sha512-bYJHo/LOmoTd+pfiYhfZDnf9zekVJrY+cnS2a5F2x+w5ppvTqObojTP7WiFG+kVZs9Inw+qQ/lw7TroWwhdd2g== +  dependencies: +    is-wsl "^1.1.0" + +optimist@^0.6.1, optimist@~0.6.0: +  version "0.6.1" +  resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" +  integrity sha1-2j6nRob6IaGaERwybpDrFaAZZoY= +  dependencies: +    minimist "~0.0.1" +    wordwrap "~0.0.2" + +optimist@~0.3.5: +  version "0.3.7" +  resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.3.7.tgz#c90941ad59e4273328923074d2cf2e7cbc6ec0d9" +  integrity sha1-yQlBrVnkJzMokjB00s8ufLxuwNk= +  dependencies: +    wordwrap "~0.0.2" + +optionator@^0.8.1, optionator@^0.8.2: +  version "0.8.2" +  resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" +  integrity sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q= +  dependencies: +    deep-is "~0.1.3" +    fast-levenshtein "~2.0.4" +    levn "~0.3.0" +    prelude-ls "~1.1.2" +    type-check "~0.3.2" +    wordwrap "~1.0.0" + +ora@^0.2.3: +  version "0.2.3" +  resolved "https://registry.yarnpkg.com/ora/-/ora-0.2.3.tgz#37527d220adcd53c39b73571d754156d5db657a4" +  integrity sha1-N1J9Igrc1Tw5tzVx11QVbV22V6Q= +  dependencies: +    chalk "^1.1.1" +    cli-cursor "^1.0.2" +    cli-spinners "^0.1.2" +    object-assign "^4.0.1" + +ora@^3.0.0: +  version "3.4.0" +  resolved "https://registry.yarnpkg.com/ora/-/ora-3.4.0.tgz#bf0752491059a3ef3ed4c85097531de9fdbcd318" +  integrity sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg== +  dependencies: +    chalk "^2.4.2" +    cli-cursor "^2.1.0" +    cli-spinners "^2.0.0" +    log-symbols "^2.2.0" +    strip-ansi "^5.2.0" +    wcwidth "^1.0.1" + +os-browserify@~0.3.0: +  version "0.3.0" +  resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" +  integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= + +os-homedir@^1.0.0: +  version "1.0.2" +  resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" +  integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= + +os-name@^3.0.0: +  version "3.1.0" +  resolved "https://registry.yarnpkg.com/os-name/-/os-name-3.1.0.tgz#dec19d966296e1cd62d701a5a66ee1ddeae70801" +  integrity sha512-h8L+8aNjNcMpo/mAIBPn5PXCM16iyPGjHNWo6U1YO8sJTMHtEtyczI6QJnLoplswm6goopQkqc7OAnjhWcugVg== +  dependencies: +    macos-release "^2.2.0" +    windows-release "^3.1.0" + +os-tmpdir@^1.0.0, os-tmpdir@~1.0.2: +  version "1.0.2" +  resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" +  integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= + +osenv@^0.1.4: +  version "0.1.5" +  resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" +  integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== +  dependencies: +    os-homedir "^1.0.0" +    os-tmpdir "^1.0.0" + +p-finally@^1.0.0: +  version "1.0.0" +  resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" +  integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= + +p-limit@^1.1.0: +  version "1.3.0" +  resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" +  integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== +  dependencies: +    p-try "^1.0.0" + +p-locate@^2.0.0: +  version "2.0.0" +  resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" +  integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= +  dependencies: +    p-limit "^1.1.0" + +p-map@^1.1.1: +  version "1.2.0" +  resolved "https://registry.yarnpkg.com/p-map/-/p-map-1.2.0.tgz#e4e94f311eabbc8633a1e79908165fca26241b6b" +  integrity sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA== + +p-map@^2.0.0: +  version "2.1.0" +  resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" +  integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== + +p-try@^1.0.0: +  version "1.0.0" +  resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" +  integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= + +package-json@^4.0.0: +  version "4.0.1" +  resolved "https://registry.yarnpkg.com/package-json/-/package-json-4.0.1.tgz#8869a0401253661c4c4ca3da6c2121ed555f5eed" +  integrity sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0= +  dependencies: +    got "^6.7.1" +    registry-auth-token "^3.0.1" +    registry-url "^3.0.3" +    semver "^5.1.0" + +pako@~0.2.0: +  version "0.2.9" +  resolved "https://registry.yarnpkg.com/pako/-/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75" +  integrity sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU= + +pako@~1.0.5: +  version "1.0.10" +  resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.10.tgz#4328badb5086a426aa90f541977d4955da5c9732" +  integrity sha512-0DTvPVU3ed8+HNXOu5Bs+o//Mbdj9VNQMUOe9oKCwh8l0GNwpTDMKCWbRjgtD291AWnkAgkqA/LOnQS8AmS1tw== + +parent-module@^1.0.0: +  version "1.0.1" +  resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" +  integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== +  dependencies: +    callsites "^3.0.0" + +parents@^1.0.0, parents@^1.0.1: +  version "1.0.1" +  resolved "https://registry.yarnpkg.com/parents/-/parents-1.0.1.tgz#fedd4d2bf193a77745fe71e371d73c3307d9c751" +  integrity sha1-/t1NK/GTp3dF/nHjcdc8MwfZx1E= +  dependencies: +    path-platform "~0.11.15" + +parse-asn1@^5.0.0: +  version "5.1.4" +  resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.4.tgz#37f6628f823fbdeb2273b4d540434a22f3ef1fcc" +  integrity sha512-Qs5duJcuvNExRfFZ99HDD3z4mAi3r9Wl/FOjEOijlxwCZs7E7mW2vjTpgQ4J8LpTF8x5v+1Vn5UQFejmWT11aw== +  dependencies: +    asn1.js "^4.0.0" +    browserify-aes "^1.0.0" +    create-hash "^1.1.0" +    evp_bytestokey "^1.0.0" +    pbkdf2 "^3.0.3" +    safe-buffer "^5.1.1" + +parse-entities@^1.0.2: +  version "1.2.1" +  resolved "https://registry.yarnpkg.com/parse-entities/-/parse-entities-1.2.1.tgz#2c761ced065ba7dc68148580b5a225e4918cdd69" +  integrity sha512-NBWYLQm1KSoDKk7GAHyioLTvCZ5QjdH/ASBBQTD3iLiAWJXS5bg1jEWI8nIJ+vgVvsceBVBcDGRWSo0KVQBvvg== +  dependencies: +    character-entities "^1.0.0" +    character-entities-legacy "^1.0.0" +    character-reference-invalid "^1.0.0" +    is-alphanumerical "^1.0.0" +    is-decimal "^1.0.0" +    is-hexadecimal "^1.0.0" + +parse-github-repo-url@^1.3.0: +  version "1.4.1" +  resolved "https://registry.yarnpkg.com/parse-github-repo-url/-/parse-github-repo-url-1.4.1.tgz#9e7d8bb252a6cb6ba42595060b7bf6df3dbc1f50" +  integrity sha1-nn2LslKmy2ukJZUGC3v23z28H1A= + +parse-gitignore@^0.4.0: +  version "0.4.0" +  resolved "https://registry.yarnpkg.com/parse-gitignore/-/parse-gitignore-0.4.0.tgz#abf702e4b900524fff7902b683862857b63f93fe" +  integrity sha1-q/cC5LkAUk//eQK2g4YoV7Y/k/4= +  dependencies: +    array-unique "^0.3.2" +    is-glob "^3.1.0" + +parse-glob@^3.0.4: +  version "3.0.4" +  resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" +  integrity sha1-ssN2z7EfNVE7rdFz7wu246OIORw= +  dependencies: +    glob-base "^0.3.0" +    is-dotfile "^1.0.0" +    is-extglob "^1.0.0" +    is-glob "^2.0.0" + +parse-json@^2.2.0: +  version "2.2.0" +  resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" +  integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck= +  dependencies: +    error-ex "^1.2.0" + +parse-json@^4.0.0: +  version "4.0.0" +  resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" +  integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= +  dependencies: +    error-ex "^1.3.1" +    json-parse-better-errors "^1.0.1" + +parse5@^1.5.1: +  version "1.5.1" +  resolved "https://registry.yarnpkg.com/parse5/-/parse5-1.5.1.tgz#9b7f3b0de32be78dc2401b17573ccaf0f6f59d94" +  integrity sha1-m387DeMr543CQBsXVzzK8Pb1nZQ= + +parse5@^3.0.1: +  version "3.0.3" +  resolved "https://registry.yarnpkg.com/parse5/-/parse5-3.0.3.tgz#042f792ffdd36851551cf4e9e066b3874ab45b5c" +  integrity sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA== +  dependencies: +    "@types/node" "*" + +parseurl@~1.3.2: +  version "1.3.3" +  resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" +  integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== + +pascalcase@^0.1.1: +  version "0.1.1" +  resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" +  integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= + +path-browserify@~0.0.0: +  version "0.0.1" +  resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" +  integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== + +path-dirname@^1.0.0: +  version "1.0.2" +  resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" +  integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= + +path-exists@^2.0.0: +  version "2.1.0" +  resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" +  integrity sha1-D+tsZPD8UY2adU3V77YscCJ2H0s= +  dependencies: +    pinkie-promise "^2.0.0" + +path-exists@^3.0.0: +  version "3.0.0" +  resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" +  integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= + +path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: +  version "1.0.1" +  resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" +  integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= + +path-is-inside@1.0.2, path-is-inside@^1.0.1, path-is-inside@^1.0.2: +  version "1.0.2" +  resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" +  integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= + +path-key@^2.0.0, path-key@^2.0.1: +  version "2.0.1" +  resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" +  integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= + +path-parse@^1.0.6: +  version "1.0.6" +  resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" +  integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== + +path-platform@~0.11.15: +  version "0.11.15" +  resolved "https://registry.yarnpkg.com/path-platform/-/path-platform-0.11.15.tgz#e864217f74c36850f0852b78dc7bf7d4a5721bf2" +  integrity sha1-6GQhf3TDaFDwhSt43Hv31KVyG/I= + +path-to-regexp@0.1.7: +  version "0.1.7" +  resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" +  integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w= + +path-type@3.0.0, path-type@^3.0.0: +  version "3.0.0" +  resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" +  integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== +  dependencies: +    pify "^3.0.0" + +path-type@^1.0.0: +  version "1.1.0" +  resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" +  integrity sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE= +  dependencies: +    graceful-fs "^4.1.2" +    pify "^2.0.0" +    pinkie-promise "^2.0.0" + +path-type@^2.0.0: +  version "2.0.0" +  resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" +  integrity sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM= +  dependencies: +    pify "^2.0.0" + +pbkdf2@^3.0.3: +  version "3.0.17" +  resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.17.tgz#976c206530617b14ebb32114239f7b09336e93a6" +  integrity sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA== +  dependencies: +    create-hash "^1.1.2" +    create-hmac "^1.1.4" +    ripemd160 "^2.0.1" +    safe-buffer "^5.0.1" +    sha.js "^2.4.8" + +peek-stream@^1.1.0: +  version "1.1.3" +  resolved "https://registry.yarnpkg.com/peek-stream/-/peek-stream-1.1.3.tgz#3b35d84b7ccbbd262fff31dc10da56856ead6d67" +  integrity sha512-FhJ+YbOSBb9/rIl2ZeE/QHEsWn7PqNYt8ARAY3kIgNGOk13g9FGyIY6JIl/xB/3TFRVoTv5as0l11weORrTekA== +  dependencies: +    buffer-from "^1.0.0" +    duplexify "^3.5.0" +    through2 "^2.0.3" + +performance-now@^2.1.0: +  version "2.1.0" +  resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" +  integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= + +pify@^2.0.0, pify@^2.3.0: +  version "2.3.0" +  resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" +  integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= + +pify@^3.0.0: +  version "3.0.0" +  resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" +  integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= + +pify@^4.0.1: +  version "4.0.1" +  resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" +  integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== + +pinkie-promise@^2.0.0: +  version "2.0.1" +  resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" +  integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o= +  dependencies: +    pinkie "^2.0.0" + +pinkie@^2.0.0: +  version "2.0.4" +  resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" +  integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= + +pkg-conf@^2.0.0: +  version "2.1.0" +  resolved "https://registry.yarnpkg.com/pkg-conf/-/pkg-conf-2.1.0.tgz#2126514ca6f2abfebd168596df18ba57867f0058" +  integrity sha1-ISZRTKbyq/69FoWW3xi6V4Z/AFg= +  dependencies: +    find-up "^2.0.0" +    load-json-file "^4.0.0" + +pkg-config@^1.1.0: +  version "1.1.1" +  resolved "https://registry.yarnpkg.com/pkg-config/-/pkg-config-1.1.1.tgz#557ef22d73da3c8837107766c52eadabde298fe4" +  integrity sha1-VX7yLXPaPIg3EHdmxS6tq94pj+Q= +  dependencies: +    debug-log "^1.0.0" +    find-root "^1.0.0" +    xtend "^4.0.1" + +pkg-dir@^2.0.0: +  version "2.0.0" +  resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" +  integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s= +  dependencies: +    find-up "^2.1.0" + +please-upgrade-node@^3.0.2: +  version "3.1.1" +  resolved "https://registry.yarnpkg.com/please-upgrade-node/-/please-upgrade-node-3.1.1.tgz#ed320051dfcc5024fae696712c8288993595e8ac" +  integrity sha512-KY1uHnQ2NlQHqIJQpnh/i54rKkuxCEBx+voJIS/Mvb+L2iYd2NMotwduhKTMjfC1uKoX3VXOxLjIYG66dfJTVQ== +  dependencies: +    semver-compare "^1.0.0" + +plist@^3.0.1: +  version "3.0.1" +  resolved "https://registry.yarnpkg.com/plist/-/plist-3.0.1.tgz#a9b931d17c304e8912ef0ba3bdd6182baf2e1f8c" +  integrity sha512-GpgvHHocGRyQm74b6FWEZZVRroHKE1I0/BTjAmySaohK+cUn+hZpbqXkc3KWgW3gQYkqcQej35FohcT0FRlkRQ== +  dependencies: +    base64-js "^1.2.3" +    xmlbuilder "^9.0.7" +    xmldom "0.1.x" + +plur@^3.0.0: +  version "3.1.1" +  resolved "https://registry.yarnpkg.com/plur/-/plur-3.1.1.tgz#60267967866a8d811504fe58f2faaba237546a5b" +  integrity sha512-t1Ax8KUvV3FFII8ltczPn2tJdjqbd1sIzu6t4JL7nQ3EyeL/lTrj5PWKb06ic5/6XYDr65rQ4uzQEGN70/6X5w== +  dependencies: +    irregular-plurals "^2.0.0" + +pluralize@^7.0.0: +  version "7.0.0" +  resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-7.0.0.tgz#298b89df8b93b0221dbf421ad2b1b1ea23fc6777" +  integrity sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow== + +posix-character-classes@^0.1.0: +  version "0.1.1" +  resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" +  integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= + +pre-flight@^1.1.0: +  version "1.1.1" +  resolved "https://registry.yarnpkg.com/pre-flight/-/pre-flight-1.1.1.tgz#482fb1649fb400616a86b2706b11591f5cc8402d" +  integrity sha512-glqyc2Hh3K+sYeSsVs+HhjyUVf8j6xwuFej0yjYjRYfSnOK8P3Na9GznkoPn48fR+9kTOfkocYIWrtWktp4AqA== +  dependencies: +    colors "^1.1.2" +    commander "^2.9.0" +    semver "^5.1.0" + +prelude-ls@~1.1.2: +  version "1.1.2" +  resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" +  integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= + +prepend-http@^1.0.1: +  version "1.0.4" +  resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" +  integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= + +preserve@^0.2.0: +  version "0.2.0" +  resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" +  integrity sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks= + +pretty-bytes@^1.0.2: +  version "1.0.4" +  resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-1.0.4.tgz#0a22e8210609ad35542f8c8d5d2159aff0751c84" +  integrity sha1-CiLoIQYJrTVUL4yNXSFZr/B1HIQ= +  dependencies: +    get-stdin "^4.0.1" +    meow "^3.1.0" + +process-nextick-args@~2.0.0: +  version "2.0.0" +  resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" +  integrity sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw== + +process@~0.11.0: +  version "0.11.10" +  resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" +  integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= + +progress-stream@^1.1.0: +  version "1.2.0" +  resolved "https://registry.yarnpkg.com/progress-stream/-/progress-stream-1.2.0.tgz#2cd3cfea33ba3a89c9c121ec3347abe9ab125f77" +  integrity sha1-LNPP6jO6OonJwSHsM0er6asSX3c= +  dependencies: +    speedometer "~0.1.2" +    through2 "~0.2.3" + +progress@^2.0.0, progress@^2.0.3: +  version "2.0.3" +  resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" +  integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== + +prop-types@^15.6.2: +  version "15.7.2" +  resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" +  integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ== +  dependencies: +    loose-envify "^1.4.0" +    object-assign "^4.1.1" +    react-is "^16.8.1" + +property-expr@^1.5.0: +  version "1.5.1" +  resolved "https://registry.yarnpkg.com/property-expr/-/property-expr-1.5.1.tgz#22e8706894a0c8e28d58735804f6ba3a3673314f" +  integrity sha512-CGuc0VUTGthpJXL36ydB6jnbyOf/rAHFvmVrJlH+Rg0DqqLFQGAP6hIaxD/G0OAmBJPhXDHuEJigrp0e0wFV6g== + +proxy-addr@~2.0.4: +  version "2.0.5" +  resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.5.tgz#34cbd64a2d81f4b1fd21e76f9f06c8a45299ee34" +  integrity sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ== +  dependencies: +    forwarded "~0.1.2" +    ipaddr.js "1.9.0" + +pseudomap@^1.0.2: +  version "1.0.2" +  resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" +  integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= + +psl@^1.1.24, psl@^1.1.28: +  version "1.1.31" +  resolved "https://registry.yarnpkg.com/psl/-/psl-1.1.31.tgz#e9aa86d0101b5b105cbe93ac6b784cd547276184" +  integrity sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw== + +public-encrypt@^4.0.0: +  version "4.0.3" +  resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" +  integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== +  dependencies: +    bn.js "^4.1.0" +    browserify-rsa "^4.0.0" +    create-hash "^1.1.0" +    parse-asn1 "^5.0.0" +    randombytes "^2.0.1" +    safe-buffer "^5.1.2" + +pump@^1.0.0: +  version "1.0.3" +  resolved "https://registry.yarnpkg.com/pump/-/pump-1.0.3.tgz#5dfe8311c33bbf6fc18261f9f34702c47c08a954" +  integrity sha512-8k0JupWme55+9tCVE+FS5ULT3K6AbgqrGa58lTT49RpyfwwcGedHqaC5LlQNdEAumn/wFsu6aPwkuPMioy8kqw== +  dependencies: +    end-of-stream "^1.1.0" +    once "^1.3.1" + +pump@^2.0.0: +  version "2.0.1" +  resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" +  integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== +  dependencies: +    end-of-stream "^1.1.0" +    once "^1.3.1" + +pump@^3.0.0: +  version "3.0.0" +  resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" +  integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== +  dependencies: +    end-of-stream "^1.1.0" +    once "^1.3.1" + +pumpify@^1.3.3: +  version "1.5.1" +  resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" +  integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== +  dependencies: +    duplexify "^3.6.0" +    inherits "^2.0.3" +    pump "^2.0.0" + +punycode@1.3.2: +  version "1.3.2" +  resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" +  integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= + +punycode@^1.3.2, punycode@^1.4.1: +  version "1.4.1" +  resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" +  integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= + +punycode@^2.1.0, punycode@^2.1.1: +  version "2.1.1" +  resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" +  integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== + +q@^1.4.1, q@^1.5.1: +  version "1.5.1" +  resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" +  integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= + +qs@6.5.2, qs@~6.5.2: +  version "6.5.2" +  resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" +  integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== + +querystring-es3@~0.2.0: +  version "0.2.1" +  resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" +  integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM= + +querystring@0.2.0: +  version "0.2.0" +  resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" +  integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= + +quick-lru@^1.0.0: +  version "1.1.0" +  resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-1.1.0.tgz#4360b17c61136ad38078397ff11416e186dcfbb8" +  integrity sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g= + +ramda@^0.26.1: +  version "0.26.1" +  resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.26.1.tgz#8d41351eb8111c55353617fc3bbffad8e4d35d06" +  integrity sha512-hLWjpy7EnsDBb0p+Z3B7rPi3GDeRG5ZtiI33kJhTt+ORCd38AbAIjB/9zRIUoeTbE/AVX5ZkU7m6bznsvrf8eQ== + +randomatic@^3.0.0: +  version "3.1.1" +  resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-3.1.1.tgz#b776efc59375984e36c537b2f51a1f0aff0da1ed" +  integrity sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw== +  dependencies: +    is-number "^4.0.0" +    kind-of "^6.0.0" +    math-random "^1.0.1" + +randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: +  version "2.1.0" +  resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" +  integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== +  dependencies: +    safe-buffer "^5.1.0" + +randomfill@^1.0.3: +  version "1.0.4" +  resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" +  integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== +  dependencies: +    randombytes "^2.0.5" +    safe-buffer "^5.1.0" + +range-parser@~1.2.0: +  version "1.2.0" +  resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" +  integrity sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4= + +raw-body@2.3.2: +  version "2.3.2" +  resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.2.tgz#bcd60c77d3eb93cde0050295c3f379389bc88f89" +  integrity sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k= +  dependencies: +    bytes "3.0.0" +    http-errors "1.6.2" +    iconv-lite "0.4.19" +    unpipe "1.0.0" + +raw-body@2.3.3: +  version "2.3.3" +  resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.3.tgz#1b324ece6b5706e153855bc1148c65bb7f6ea0c3" +  integrity sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw== +  dependencies: +    bytes "3.0.0" +    http-errors "1.6.3" +    iconv-lite "0.4.23" +    unpipe "1.0.0" + +rc@^1.0.1, rc@^1.1.0, rc@^1.1.6, rc@^1.2.7: +  version "1.2.8" +  resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" +  integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== +  dependencies: +    deep-extend "^0.6.0" +    ini "~1.3.0" +    minimist "^1.2.0" +    strip-json-comments "~2.0.1" + +react-is@^16.8.1: +  version "16.8.6" +  resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.8.6.tgz#5bbc1e2d29141c9fbdfed456343fe2bc430a6a16" +  integrity sha512-aUk3bHfZ2bRSVFFbbeVS4i+lNPZr3/WM5jT2J5omUVV1zzcs1nAaf3l51ctA5FFvCRbhrH0bdAsRRQddFJZPtA== + +read-only-stream@^2.0.0: +  version "2.0.0" +  resolved "https://registry.yarnpkg.com/read-only-stream/-/read-only-stream-2.0.0.tgz#2724fd6a8113d73764ac288d4386270c1dbf17f0" +  integrity sha1-JyT9aoET1zdkrCiNQ4YnDB2/F/A= +  dependencies: +    readable-stream "^2.0.2" + +read-pkg-up@^1.0.1: +  version "1.0.1" +  resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" +  integrity sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI= +  dependencies: +    find-up "^1.0.0" +    read-pkg "^1.0.0" + +read-pkg-up@^2.0.0: +  version "2.0.0" +  resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" +  integrity sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4= +  dependencies: +    find-up "^2.0.0" +    read-pkg "^2.0.0" + +read-pkg-up@^3.0.0: +  version "3.0.0" +  resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-3.0.0.tgz#3ed496685dba0f8fe118d0691dc51f4a1ff96f07" +  integrity sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc= +  dependencies: +    find-up "^2.0.0" +    read-pkg "^3.0.0" + +read-pkg@^1.0.0, read-pkg@^1.1.0: +  version "1.1.0" +  resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" +  integrity sha1-9f+qXs0pyzHAR0vKfXVra7KePyg= +  dependencies: +    load-json-file "^1.0.0" +    normalize-package-data "^2.3.2" +    path-type "^1.0.0" + +read-pkg@^2.0.0: +  version "2.0.0" +  resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" +  integrity sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg= +  dependencies: +    load-json-file "^2.0.0" +    normalize-package-data "^2.3.2" +    path-type "^2.0.0" + +read-pkg@^3.0.0: +  version "3.0.0" +  resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" +  integrity sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k= +  dependencies: +    load-json-file "^4.0.0" +    normalize-package-data "^2.3.2" +    path-type "^3.0.0" + +readable-stream@1.1: +  version "1.1.13" +  resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.13.tgz#f6eef764f514c89e2b9e23146a75ba106756d23e" +  integrity sha1-9u73ZPUUyJ4rniMUanW6EGdW0j4= +  dependencies: +    core-util-is "~1.0.0" +    inherits "~2.0.1" +    isarray "0.0.1" +    string_decoder "~0.10.x" + +readable-stream@^2.0.0, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.2.2, readable-stream@^2.3.0, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@~2.3.6: +  version "2.3.6" +  resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" +  integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw== +  dependencies: +    core-util-is "~1.0.0" +    inherits "~2.0.3" +    isarray "~1.0.0" +    process-nextick-args "~2.0.0" +    safe-buffer "~5.1.1" +    string_decoder "~1.1.1" +    util-deprecate "~1.0.1" + +readable-stream@^3.1.1: +  version "3.3.0" +  resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.3.0.tgz#cb8011aad002eb717bf040291feba8569c986fb9" +  integrity sha512-EsI+s3k3XsW+fU8fQACLN59ky34AZ14LoeVZpYwmZvldCFo0r0gnelwF2TcMjLor/BTL5aDJVBMkss0dthToPw== +  dependencies: +    inherits "^2.0.3" +    string_decoder "^1.1.1" +    util-deprecate "^1.0.1" + +readable-stream@~1.1.9: +  version "1.1.14" +  resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" +  integrity sha1-fPTFTvZI44EwhMY23SB54WbAgdk= +  dependencies: +    core-util-is "~1.0.0" +    inherits "~2.0.1" +    isarray "0.0.1" +    string_decoder "~0.10.x" + +readdirp@^2.0.0: +  version "2.2.1" +  resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" +  integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== +  dependencies: +    graceful-fs "^4.1.11" +    micromatch "^3.1.10" +    readable-stream "^2.0.2" + +rechoir@^0.6.2: +  version "0.6.2" +  resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" +  integrity sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q= +  dependencies: +    resolve "^1.1.6" + +redent@^1.0.0: +  version "1.0.0" +  resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde" +  integrity sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94= +  dependencies: +    indent-string "^2.1.0" +    strip-indent "^1.0.1" + +redent@^2.0.0: +  version "2.0.0" +  resolved "https://registry.yarnpkg.com/redent/-/redent-2.0.0.tgz#c1b2007b42d57eb1389079b3c8333639d5e1ccaa" +  integrity sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo= +  dependencies: +    indent-string "^3.0.0" +    strip-indent "^2.0.0" + +regenerator-runtime@^0.12.0: +  version "0.12.1" +  resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.12.1.tgz#fa1a71544764c036f8c49b13a08b2594c9f8a0de" +  integrity sha512-odxIc1/vDlo4iZcfXqRYFj0vpXFNoGdKMAUieAlFYO6m/nl5e9KR/beGf41z4a1FI+aQgtjhuaSlDxQ0hmkrHg== + +regex-cache@^0.4.2: +  version "0.4.4" +  resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd" +  integrity sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ== +  dependencies: +    is-equal-shallow "^0.1.3" + +regex-not@^1.0.0, regex-not@^1.0.2: +  version "1.0.2" +  resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" +  integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== +  dependencies: +    extend-shallow "^3.0.2" +    safe-regex "^1.1.0" + +regexpp@^2.0.0, regexpp@^2.0.1: +  version "2.0.1" +  resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" +  integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw== + +registry-auth-token@3.3.2: +  version "3.3.2" +  resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-3.3.2.tgz#851fd49038eecb586911115af845260eec983f20" +  integrity sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ== +  dependencies: +    rc "^1.1.6" +    safe-buffer "^5.0.1" + +registry-auth-token@^3.0.1: +  version "3.4.0" +  resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-3.4.0.tgz#d7446815433f5d5ed6431cd5dca21048f66b397e" +  integrity sha512-4LM6Fw8eBQdwMYcES4yTnn2TqIasbXuwDx3um+QRs7S55aMKCBKBxvPXl2RiUjHwuJLTyYfxSpmfSAjQpcuP+A== +  dependencies: +    rc "^1.1.6" +    safe-buffer "^5.0.1" + +registry-url@3.1.0, registry-url@^3.0.3: +  version "3.1.0" +  resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-3.1.0.tgz#3d4ef870f73dde1d77f0cf9a381432444e174942" +  integrity sha1-PU74cPc93h138M+aOBQyRE4XSUI= +  dependencies: +    rc "^1.0.1" + +remark-cli@^4.0.0: +  version "4.0.0" +  resolved "https://registry.yarnpkg.com/remark-cli/-/remark-cli-4.0.0.tgz#bb84c14ffeb6f5b658eff4dfbb77cdd7775bab73" +  integrity sha512-q5GMjGypUS4rTZb3WfMQcGpClSC38A9Ogg1h/HB2GLsqypDetmAfy0X+tuJ6JeyCPVOXXCDgsDCQq4QPqKmxBA== +  dependencies: +    markdown-extensions "^1.1.0" +    remark "^8.0.0" +    unified-args "^4.0.0" + +remark-lint-blockquote-indentation@^1.0.0: +  version "1.0.2" +  resolved "https://registry.yarnpkg.com/remark-lint-blockquote-indentation/-/remark-lint-blockquote-indentation-1.0.2.tgz#e84ab0dc4bf468ca10c53f09e1cb8dd0c2f56a95" +  integrity sha512-u3ruA+4ZZOpt3YmTCdCOcYiGBMSQ/b/iJvZs/fibF6rwSBmkod48aGGJVoOLMuIuTYYbbXpzigxS+PeJwN0CDQ== +  dependencies: +    mdast-util-to-string "^1.0.2" +    plur "^3.0.0" +    unified-lint-rule "^1.0.0" +    unist-util-generated "^1.1.0" +    unist-util-position "^3.0.0" +    unist-util-visit "^1.1.1" + +remark-lint-code-block-style@^1.0.0: +  version "1.0.2" +  resolved "https://registry.yarnpkg.com/remark-lint-code-block-style/-/remark-lint-code-block-style-1.0.2.tgz#f24ef71767d5933ed83de93a54a85faf9e02c197" +  integrity sha512-fTSCga/lJ710zBaD808NwqzAatVoLQFizvXWpetygKwoAfXCyMYQ9DUdDE5jdDhwOu2JPnKbxY+4t6m4SrKKWA== +  dependencies: +    unified-lint-rule "^1.0.0" +    unist-util-generated "^1.1.0" +    unist-util-position "^3.0.0" +    unist-util-visit "^1.1.1" + +remark-lint-definition-case@^1.0.0: +  version "1.0.3" +  resolved "https://registry.yarnpkg.com/remark-lint-definition-case/-/remark-lint-definition-case-1.0.3.tgz#4dbc9322eeb7f8d0402f4f1056eaf97812a47557" +  integrity sha512-ORRDV+ETVWnXoPE3fX0zXFGC5NQvdsB1Ihjeqmw38IWVKnOR34f5s/9BZNnbflBzdKWnLVg1g3IwQLf8eVBsow== +  dependencies: +    unified-lint-rule "^1.0.0" +    unist-util-generated "^1.1.0" +    unist-util-position "^3.0.0" +    unist-util-visit "^1.4.0" + +remark-lint-definition-spacing@^1.0.0: +  version "1.0.3" +  resolved "https://registry.yarnpkg.com/remark-lint-definition-spacing/-/remark-lint-definition-spacing-1.0.3.tgz#f7fc54d0fe7b3cd6b94e2e1290220dd1a3cfb1ff" +  integrity sha512-8lFBtgSE3xbvvSuO95B6lUiD6Ph1wZr5xevKokwwfKoyfOkXDpN85wh7JepIZnUj1OnTXvupCwr7yYUEji/Rrw== +  dependencies: +    unified-lint-rule "^1.0.0" +    unist-util-generated "^1.1.0" +    unist-util-position "^3.0.0" +    unist-util-visit "^1.4.0" + +remark-lint-emphasis-marker@^1.0.0: +  version "1.0.2" +  resolved "https://registry.yarnpkg.com/remark-lint-emphasis-marker/-/remark-lint-emphasis-marker-1.0.2.tgz#df77c6b62b87a61ddf683e791d13ccfae050c318" +  integrity sha512-c+uvvnYesMaqy/X0dU62dbI6/rk+4dxMXdnfLC/NKBA8GU+4kljWqluW797S6nBG94QZjKIv8m49zJl38QfImQ== +  dependencies: +    unified-lint-rule "^1.0.0" +    unist-util-generated "^1.1.0" +    unist-util-position "^3.0.0" +    unist-util-visit "^1.1.1" + +remark-lint-fenced-code-flag@^1.0.0: +  version "1.0.2" +  resolved "https://registry.yarnpkg.com/remark-lint-fenced-code-flag/-/remark-lint-fenced-code-flag-1.0.2.tgz#614232ab7923fc0a3e8694b485bc7ae664c7046b" +  integrity sha512-6/412zYtz+qKpFJryEPSMurWr6tO5MTVohJF3byFc3+3SSEZLWY3Dg8gbwFlumZ9T4HgmfUm/LT7Idm96zj0nw== +  dependencies: +    unified-lint-rule "^1.0.0" +    unist-util-generated "^1.1.0" +    unist-util-position "^3.0.0" +    unist-util-visit "^1.1.1" + +remark-lint-fenced-code-marker@^1.0.0: +  version "1.0.2" +  resolved "https://registry.yarnpkg.com/remark-lint-fenced-code-marker/-/remark-lint-fenced-code-marker-1.0.2.tgz#07959311cf7b9cbe35ae279ea3cb7823205cb29f" +  integrity sha512-yAP59Q1JoI1jjOFCn0GoNx4uDji99ROLvdwvmz7+9YR9guDArBcR4i9Wem/wN6apauWPk2DbAZFavHvbZaT8HQ== +  dependencies: +    unified-lint-rule "^1.0.0" +    unist-util-generated "^1.1.0" +    unist-util-position "^3.0.0" +    unist-util-visit "^1.1.1" + +remark-lint-file-extension@^1.0.0: +  version "1.0.2" +  resolved "https://registry.yarnpkg.com/remark-lint-file-extension/-/remark-lint-file-extension-1.0.2.tgz#c52c6e00c9d1f5e729f515c1bb9c23de9aef4983" +  integrity sha512-qx0uki74rmALIKE3r5J3neasbXnz6h+l88OngvpwWkELsnJmfk81JdxfEd0tZ++uTj6CN0TZuhMKad9smfNtRw== +  dependencies: +    unified-lint-rule "^1.0.0" + +remark-lint-final-definition@^1.0.0: +  version "1.0.2" +  resolved "https://registry.yarnpkg.com/remark-lint-final-definition/-/remark-lint-final-definition-1.0.2.tgz#63e013c9f95c9b52197f19c6e0d14b622352e0f3" +  integrity sha512-F+n8eauYOJGdcSrnD7w2YgQSERx1rAwXTxStaJ2tLmoXlT7eQgpVGHz1U4Y76cg8OANbq8pT0KTNJ85JNqkq4g== +  dependencies: +    unified-lint-rule "^1.0.0" +    unist-util-generated "^1.1.0" +    unist-util-position "^3.0.0" +    unist-util-visit "^1.1.1" + +remark-lint-hard-break-spaces@^1.0.0: +  version "1.0.3" +  resolved "https://registry.yarnpkg.com/remark-lint-hard-break-spaces/-/remark-lint-hard-break-spaces-1.0.3.tgz#0485fc09265dcea436f5eb3420a3b6f616c6fad7" +  integrity sha512-GiC0uXeFwef6/Pfo+EYBN0WIVlEFffh+9TdeJ4uLt89ZweaRVDPCTJQqkkuXoiXSPnZGD7cGHdkWCfXU1PaU7Q== +  dependencies: +    unified-lint-rule "^1.0.0" +    unist-util-generated "^1.1.0" +    unist-util-position "^3.0.0" +    unist-util-visit "^1.1.1" + +remark-lint-heading-increment@^1.0.0: +  version "1.0.2" +  resolved "https://registry.yarnpkg.com/remark-lint-heading-increment/-/remark-lint-heading-increment-1.0.2.tgz#5da0771232711a42acb66fa79c3c6686de402c3e" +  integrity sha512-CE3MmARKFk6LK+nBuOUubhr64LnbJfLNx1gA8XgxWJ4s/gf8yZO23KsaWk3ftVmmwk0d8Eqh4qKg8vvvaMyrWQ== +  dependencies: +    unified-lint-rule "^1.0.0" +    unist-util-generated "^1.1.0" +    unist-util-visit "^1.1.1" + +remark-lint-heading-style@^1.0.0: +  version "1.0.2" +  resolved "https://registry.yarnpkg.com/remark-lint-heading-style/-/remark-lint-heading-style-1.0.2.tgz#87bdab061c9d259f50b5c51ce478d1c65bd31ae8" +  integrity sha512-d0aIbL8PU5LWfZVI8p49vEV5wWIfD/DdUjc+O8j5E0UWUgcRgPGB66xznkOb8AiniXpcaYggRW8hGZsxoYNt1g== +  dependencies: +    mdast-util-heading-style "^1.0.2" +    unified-lint-rule "^1.0.0" +    unist-util-generated "^1.1.0" +    unist-util-visit "^1.1.1" + +remark-lint-link-title-style@^1.0.0: +  version "1.0.3" +  resolved "https://registry.yarnpkg.com/remark-lint-link-title-style/-/remark-lint-link-title-style-1.0.3.tgz#4dd3aafaf9824523d4f0c8e11171581c89071702" +  integrity sha512-1cJ/gNoIwX36FB0w8TiT+/Cy0evSJRyn0uV0jeB5Ik+fX+tVxHRkuX/DtmFw0fGImQW882r/3eaZHaKabVR1yg== +  dependencies: +    unified-lint-rule "^1.0.0" +    unist-util-generated "^1.1.0" +    unist-util-position "^3.0.0" +    unist-util-visit "^1.1.1" +    vfile-location "^2.0.1" + +remark-lint-list-item-content-indent@^1.0.0: +  version "1.0.2" +  resolved "https://registry.yarnpkg.com/remark-lint-list-item-content-indent/-/remark-lint-list-item-content-indent-1.0.2.tgz#2564f4b661c4a82a92ecf60a1c4a2b867355c654" +  integrity sha512-I7VkspA/jeMmIWZ4cGmW/4oWnT6fP8pn5n11MR7azRMKgooj3N2qGF084UqrWHh/dLJcakJUNl3NTXv1XCS1Mw== +  dependencies: +    plur "^3.0.0" +    unified-lint-rule "^1.0.0" +    unist-util-generated "^1.1.0" +    unist-util-position "^3.0.0" +    unist-util-visit "^1.1.1" + +remark-lint-list-item-indent@^1.0.0: +  version "1.0.3" +  resolved "https://registry.yarnpkg.com/remark-lint-list-item-indent/-/remark-lint-list-item-indent-1.0.3.tgz#93dac0cc312ee8dd9c8a0749b44b17b95b765f53" +  integrity sha512-/IcVUPIxQ2X/oCKzqiAtH85CS8An3xQbcMD0DRBHZjBrIUO0Ot7lBiQedSHwCg9lnh7pDOTvHrmNS3FaWjVQqw== +  dependencies: +    plur "^3.0.0" +    unified-lint-rule "^1.0.0" +    unist-util-generated "^1.1.0" +    unist-util-position "^3.0.0" +    unist-util-visit "^1.1.1" + +remark-lint-list-item-spacing@^1.0.0: +  version "1.1.2" +  resolved "https://registry.yarnpkg.com/remark-lint-list-item-spacing/-/remark-lint-list-item-spacing-1.1.2.tgz#55f0d38b0bc1b1c1a553c2d7418066ad1aed9d16" +  integrity sha512-IhG28ofW85o/2+eVH1ft1zgQmjxqDhNp3+217EQLQviPt/+jVcMsua4W4ZQECPg0E9473yiY9TKbBodp2kOMkg== +  dependencies: +    unified-lint-rule "^1.0.0" +    unist-util-generated "^1.1.0" +    unist-util-position "^3.0.0" +    unist-util-visit "^1.1.1" + +remark-lint-maximum-heading-length@^1.0.0: +  version "1.0.2" +  resolved "https://registry.yarnpkg.com/remark-lint-maximum-heading-length/-/remark-lint-maximum-heading-length-1.0.2.tgz#8588923a480d3f039d6c28ae60a6b03cf864b5c8" +  integrity sha512-kDdwgRItpVGhxdUC+kbWn5YisCrtF4KggP8z36z26tBmDuPj1ohjQvfMWY0oKL8I0Y6UuXyE0vQx3m4R8Qrj+A== +  dependencies: +    mdast-util-to-string "^1.0.2" +    unified-lint-rule "^1.0.0" +    unist-util-generated "^1.1.0" +    unist-util-visit "^1.1.1" + +remark-lint-maximum-line-length@^1.0.0: +  version "1.2.0" +  resolved "https://registry.yarnpkg.com/remark-lint-maximum-line-length/-/remark-lint-maximum-line-length-1.2.0.tgz#40ca341c0e40285a3708da62279476cb5ead70bf" +  integrity sha512-tqqZ8YCvfz9ZvKN2vRA12qgNKM+DKb73rJMMb6zq9yd2Nt32n7S+1nobSpKQqAR7/bn2ysUGu/NNA7FjlRXt6g== +  dependencies: +    unified-lint-rule "^1.0.0" +    unist-util-generated "^1.1.0" +    unist-util-position "^3.0.0" +    unist-util-visit "^1.4.0" + +remark-lint-no-auto-link-without-protocol@^1.0.0: +  version "1.0.2" +  resolved "https://registry.yarnpkg.com/remark-lint-no-auto-link-without-protocol/-/remark-lint-no-auto-link-without-protocol-1.0.2.tgz#4532087419b1b131b4057ecf0a3a446f0afc2c6e" +  integrity sha512-3GtkSxOyd6we4b8JdtJsNgt8+3UN+hpw1UiMoE9X96ahc1rqsCFm6miorNUnF/gfPQ1liHBvZUed2SIenDmpkg== +  dependencies: +    mdast-util-to-string "^1.0.2" +    unified-lint-rule "^1.0.0" +    unist-util-generated "^1.1.0" +    unist-util-position "^3.0.0" +    unist-util-visit "^1.1.1" + +remark-lint-no-blockquote-without-marker@^2.0.0: +  version "2.0.2" +  resolved "https://registry.yarnpkg.com/remark-lint-no-blockquote-without-marker/-/remark-lint-no-blockquote-without-marker-2.0.2.tgz#61b6a0a74fbfba8fd168ac0fcc2a673eb47b9880" +  integrity sha512-jkfZ4hFiviZttEo7Ac7GZWFgMQ/bdVPfSluLeuf+qwL8sQvR4ClklKJ0Xbkk3cLRjvlGsc8U8uZR8qqH5MSLoA== +  dependencies: +    unified-lint-rule "^1.0.0" +    unist-util-generated "^1.1.0" +    unist-util-position "^3.0.0" +    unist-util-visit "^1.1.1" +    vfile-location "^2.0.1" + +remark-lint-no-consecutive-blank-lines@^1.0.0: +  version "1.0.2" +  resolved "https://registry.yarnpkg.com/remark-lint-no-consecutive-blank-lines/-/remark-lint-no-consecutive-blank-lines-1.0.2.tgz#ba7c8944335a80e67c811028732f12e521d07d93" +  integrity sha512-KbOm6EX5Yl9uzRC93soTB+HlqtCzu9XJWsV9CVcoDKtNnpKfyTwQOy6dmUbQrLp4xBdNk4s9S9CsemRaHEkFGA== +  dependencies: +    plur "^3.0.0" +    unified-lint-rule "^1.0.0" +    unist-util-generated "^1.1.0" +    unist-util-position "^3.0.0" +    unist-util-visit "^1.1.1" + +remark-lint-no-duplicate-headings@^1.0.0: +  version "1.0.2" +  resolved "https://registry.yarnpkg.com/remark-lint-no-duplicate-headings/-/remark-lint-no-duplicate-headings-1.0.2.tgz#774b1c1e9f8d8313ca32f8b44a4ab3fcf2456e12" +  integrity sha512-RO3/eQxLjUoHirHIVC+bE5Abzl+gWiJcdPr48gGSP34xfwCeaBAaeorOAxY/hOqOQ/EVNTTA/JHCBVSNPZWIeg== +  dependencies: +    mdast-util-to-string "^1.0.2" +    unified-lint-rule "^1.0.0" +    unist-util-generated "^1.1.0" +    unist-util-position "^3.0.0" +    unist-util-stringify-position "^1.1.2" +    unist-util-visit "^1.1.1" + +remark-lint-no-emphasis-as-heading@^1.0.0: +  version "1.0.2" +  resolved "https://registry.yarnpkg.com/remark-lint-no-emphasis-as-heading/-/remark-lint-no-emphasis-as-heading-1.0.2.tgz#a4616ad3f085e4db013132306312973b3fe76ac0" +  integrity sha512-lKlwiRQOFOoPSwjbZf065RaUr6RZmO82zZYjXhVT9xwMkWXIAQyG0GJuLB2/+rlMEtlgoUD3ePch+Pzf+KrSJQ== +  dependencies: +    unified-lint-rule "^1.0.0" +    unist-util-generated "^1.1.0" +    unist-util-visit "^1.1.1" + +remark-lint-no-file-name-articles@^1.0.0: +  version "1.0.2" +  resolved "https://registry.yarnpkg.com/remark-lint-no-file-name-articles/-/remark-lint-no-file-name-articles-1.0.2.tgz#a8187e44584e56ccc37fcd7bbc758e940a5b1829" +  integrity sha512-5FuxJ0Hd2AgVSP1javG51qPbMBWxma1LrCKI6JmBsu/GM7ZYOgemMyH5v4I1ejTPGj7P30xmIjMNSnV8IBMq3g== +  dependencies: +    unified-lint-rule "^1.0.0" + +remark-lint-no-file-name-consecutive-dashes@^1.0.0: +  version "1.0.2" +  resolved "https://registry.yarnpkg.com/remark-lint-no-file-name-consecutive-dashes/-/remark-lint-no-file-name-consecutive-dashes-1.0.2.tgz#e8536f4c9f349965d9b4990a75a27857dac72488" +  integrity sha512-VvCxG3AfRm6ROFNJ8+tdOOkk61mEKj+PytB8xg5WNQypKWhhJ734mJ3GzXD4XEov7Bdd1GVXJFXlLFtfoAewHw== +  dependencies: +    unified-lint-rule "^1.0.0" + +remark-lint-no-file-name-irregular-characters@^1.0.0: +  version "1.0.2" +  resolved "https://registry.yarnpkg.com/remark-lint-no-file-name-irregular-characters/-/remark-lint-no-file-name-irregular-characters-1.0.2.tgz#0dffe8f4dc7ffe79f634d4609a8f28261a981552" +  integrity sha512-8A+DYXsiPBu0q4cvqtYwzRj6SWrKnPh+oI1H1t64pCQiSnLmG9e3mAUXMxH9PiM6y5OW7Vw8Xh4KYsnRwGEuMQ== +  dependencies: +    unified-lint-rule "^1.0.0" + +remark-lint-no-file-name-mixed-case@^1.0.0: +  version "1.0.2" +  resolved "https://registry.yarnpkg.com/remark-lint-no-file-name-mixed-case/-/remark-lint-no-file-name-mixed-case-1.0.2.tgz#965606ac41b53fef8a4c8d0c7bd1bed63e26a357" +  integrity sha512-OMH2kpjvDAsyyw8ar9h6WI1kUXSpQ2r2c5JZv3NBNYxwzTBfhCR2MSQq+eEI7yUmD2ehqNUY5LwZTQZG6cK4vw== +  dependencies: +    unified-lint-rule "^1.0.0" + +remark-lint-no-file-name-outer-dashes@^1.0.0: +  version "1.0.3" +  resolved "https://registry.yarnpkg.com/remark-lint-no-file-name-outer-dashes/-/remark-lint-no-file-name-outer-dashes-1.0.3.tgz#d5b217a8341ac79b4a378770488b3ccc8bc4a5b5" +  integrity sha512-imUWm8Bi9PxV+IQtQC2/BV1Yj0VboC9hPMZh3sae8pZvCjXquTyYiSFa7hQxX6KWCNUiRPHMSlaSVvfvM2e4pQ== +  dependencies: +    unified-lint-rule "^1.0.0" + +remark-lint-no-heading-punctuation@^1.0.0: +  version "1.0.2" +  resolved "https://registry.yarnpkg.com/remark-lint-no-heading-punctuation/-/remark-lint-no-heading-punctuation-1.0.2.tgz#c520d8614d641b05ac75c25502901df9218b4b5e" +  integrity sha512-nYc2a0ihQ5cPy7elaM0lRPYKEMpEK6EjyJH6pHYlgG8NQwjKXhsVaek0fmAm12PaYoYOGW1pDxfzxnFUocU20g== +  dependencies: +    mdast-util-to-string "^1.0.2" +    unified-lint-rule "^1.0.0" +    unist-util-generated "^1.1.0" +    unist-util-visit "^1.1.1" + +remark-lint-no-inline-padding@^1.0.0: +  version "1.0.3" +  resolved "https://registry.yarnpkg.com/remark-lint-no-inline-padding/-/remark-lint-no-inline-padding-1.0.3.tgz#a31e3a04ab0d47ea7e7be8416b5d2d668ad8f7cf" +  integrity sha512-zEe7LjM13kQshdBtPnSzzCUNzGIX/XiGspMb7HZBCDWYsPJ73s01X+m+YI99Dz7wKvB3EUTZ7/MFhTUIvqcGRw== +  dependencies: +    mdast-util-to-string "^1.0.2" +    unified-lint-rule "^1.0.0" +    unist-util-generated "^1.1.0" +    unist-util-visit "^1.4.0" + +remark-lint-no-literal-urls@^1.0.0: +  version "1.0.2" +  resolved "https://registry.yarnpkg.com/remark-lint-no-literal-urls/-/remark-lint-no-literal-urls-1.0.2.tgz#1c60160a76bd9ddacd42819b43dadeb481a530df" +  integrity sha512-+mWZIJA4yAqpKIclcFP5wRy/6hxcPnfU9Xmgp4fR7OD4JQ4JHkKq9O7MUbda14PLez1aMX+Is0O0hWI7OuqsSw== +  dependencies: +    mdast-util-to-string "^1.0.2" +    unified-lint-rule "^1.0.0" +    unist-util-generated "^1.1.0" +    unist-util-position "^3.0.0" +    unist-util-visit "^1.1.1" + +remark-lint-no-multiple-toplevel-headings@^1.0.0: +  version "1.0.2" +  resolved "https://registry.yarnpkg.com/remark-lint-no-multiple-toplevel-headings/-/remark-lint-no-multiple-toplevel-headings-1.0.2.tgz#65f7288f66a1a14394f6c6f0910d36112f60e3eb" +  integrity sha512-Zxkw7wIyMOyYQb5C5NTswSttZPCLqm/60Wnt0TEWzXVDkVk5DrxrCCxbMKgpXve1Co5CXPmMixNr/xYBqzxzWg== +  dependencies: +    unified-lint-rule "^1.0.0" +    unist-util-generated "^1.1.0" +    unist-util-position "^3.0.0" +    unist-util-stringify-position "^1.1.2" +    unist-util-visit "^1.1.1" + +remark-lint-no-shell-dollars@^1.0.0: +  version "1.0.2" +  resolved "https://registry.yarnpkg.com/remark-lint-no-shell-dollars/-/remark-lint-no-shell-dollars-1.0.2.tgz#361599631271f7237b2147e692be40e08975330c" +  integrity sha512-eIjBebX9iOFWbMdjol5JJBXI7ku+7UyJpNrd++rl8QenLLZ76beh+xONCzJw/k5dhEw5voBmQLh7VK9HPU/ang== +  dependencies: +    unified-lint-rule "^1.0.0" +    unist-util-generated "^1.1.0" +    unist-util-visit "^1.1.1" + +remark-lint-no-shortcut-reference-image@^1.0.0: +  version "1.0.2" +  resolved "https://registry.yarnpkg.com/remark-lint-no-shortcut-reference-image/-/remark-lint-no-shortcut-reference-image-1.0.2.tgz#784011b832173ad9e87d4f40c90f935de0841764" +  integrity sha512-IVYv5pgyf70jYcrn+BNHVO37BuQJg26rFOLzi2mj+/8EdFpolJiJcTvkChJgz5yip7317DmQQSNLX6gCExuDrQ== +  dependencies: +    unified-lint-rule "^1.0.0" +    unist-util-generated "^1.1.0" +    unist-util-visit "^1.1.1" + +remark-lint-no-shortcut-reference-link@^1.0.0: +  version "1.0.3" +  resolved "https://registry.yarnpkg.com/remark-lint-no-shortcut-reference-link/-/remark-lint-no-shortcut-reference-link-1.0.3.tgz#4210d37d234b427dd131eb11473a7a2d3719a819" +  integrity sha512-v5mk4wYQL+YRmlOTqi8avpzhoGZg+P42dDRda2jedysDIx7TJBEXUH6oMFEbo/qV6PMmtr7fr066M3RrOrLpiQ== +  dependencies: +    unified-lint-rule "^1.0.0" +    unist-util-generated "^1.1.0" +    unist-util-visit "^1.1.1" + +remark-lint-no-table-indentation@^1.0.0: +  version "1.0.3" +  resolved "https://registry.yarnpkg.com/remark-lint-no-table-indentation/-/remark-lint-no-table-indentation-1.0.3.tgz#03eaa9c9d4609999cda101451451270656809c78" +  integrity sha512-argI2JADlVrlwsdORdbmE89QXB9XtBtAy2YBHZv/q/d247CyL+h+hw9wpg06P1lLQwbllxYJD5u1bNtfgv3XVg== +  dependencies: +    unified-lint-rule "^1.0.0" +    unist-util-generated "^1.1.0" +    unist-util-position "^3.0.0" +    unist-util-visit "^1.4.0" + +remark-lint-ordered-list-marker-style@^1.0.0: +  version "1.0.2" +  resolved "https://registry.yarnpkg.com/remark-lint-ordered-list-marker-style/-/remark-lint-ordered-list-marker-style-1.0.2.tgz#ad7461306a7701fc931245300dfd7dbd9fbb589f" +  integrity sha512-4EHuHxZqy8IT4k+4Vc8P38I34AiZfgl07fS5/iqGhCdoSMCvvxdOuzTWTgpDFbx/W2QpHelBfJ+FtOp+E0J4Lg== +  dependencies: +    unified-lint-rule "^1.0.0" +    unist-util-generated "^1.1.0" +    unist-util-position "^3.0.0" +    unist-util-visit "^1.1.1" + +remark-lint-ordered-list-marker-value@^1.0.0: +  version "1.0.2" +  resolved "https://registry.yarnpkg.com/remark-lint-ordered-list-marker-value/-/remark-lint-ordered-list-marker-value-1.0.2.tgz#26f5f1ddfadb7c958f8e2c15cd3aa9f2be985be6" +  integrity sha512-vIPD07u+FBjTjEETZ+UWUp2nydzvOe5AHIX812JlNXWuHYuCybq8DGnkYUcoiK3HbIE+KdG+e7C5xHkim0PSjw== +  dependencies: +    unified-lint-rule "^1.0.0" +    unist-util-generated "^1.1.0" +    unist-util-position "^3.0.0" +    unist-util-visit "^1.1.1" + +remark-lint-rule-style@^1.0.0: +  version "1.0.2" +  resolved "https://registry.yarnpkg.com/remark-lint-rule-style/-/remark-lint-rule-style-1.0.2.tgz#51f82acb1e6cdf76ea6107bb231d2336615fa98d" +  integrity sha512-D9mMPKA7rtCe4Yx+ryip6FyfNG9uGOaHxRgJClfte7D66QzxiiWtHYyNCXI4rkv8Ax9PrEdpWCPcIl3D2LrXhw== +  dependencies: +    unified-lint-rule "^1.0.0" +    unist-util-generated "^1.1.0" +    unist-util-position "^3.0.0" +    unist-util-visit "^1.1.1" + +remark-lint-strong-marker@^1.0.0: +  version "1.0.2" +  resolved "https://registry.yarnpkg.com/remark-lint-strong-marker/-/remark-lint-strong-marker-1.0.2.tgz#6ce3670f79bf5978b7518af35e6072c8425f0f46" +  integrity sha512-oUSKqYJVLgbXe25NmcTOfQ8wsFasc+qhEoGjPEGPuJMV2aZIGuOEbGVqD5B1ckYGBEwbTuet3btvMohz8HaBDQ== +  dependencies: +    unified-lint-rule "^1.0.0" +    unist-util-generated "^1.1.0" +    unist-util-position "^3.0.0" +    unist-util-visit "^1.1.1" + +remark-lint-table-cell-padding@^1.0.0: +  version "1.0.3" +  resolved "https://registry.yarnpkg.com/remark-lint-table-cell-padding/-/remark-lint-table-cell-padding-1.0.3.tgz#fafec50deb8476cb3241f2da4ef0b8b66f549741" +  integrity sha512-beXwMK8KAGIDQWixf7wzte4GhyB9w33DxTGgmP4HWOWMVXHvBnufJvnIozBBOH9nOsi1fP8NYRb/01hrgjNnmw== +  dependencies: +    unified-lint-rule "^1.0.0" +    unist-util-generated "^1.1.0" +    unist-util-position "^3.0.0" +    unist-util-visit "^1.4.0" + +remark-lint-table-pipe-alignment@^1.0.0: +  version "1.0.2" +  resolved "https://registry.yarnpkg.com/remark-lint-table-pipe-alignment/-/remark-lint-table-pipe-alignment-1.0.2.tgz#3d79927c18b5a5713079a7890a392b740e0bc45a" +  integrity sha512-gLJwduvBI2soR7Dyf39KGUl3M9ZCK/7pFfWBeOv8J27D7px/1lXooqlX4Y9NQ/+9jc7DyLF9upPxh7UWm7UXGg== +  dependencies: +    unified-lint-rule "^1.0.0" +    unist-util-generated "^1.1.0" +    unist-util-position "^3.0.0" +    unist-util-visit "^1.1.1" + +remark-lint-table-pipes@^1.0.0: +  version "1.0.2" +  resolved "https://registry.yarnpkg.com/remark-lint-table-pipes/-/remark-lint-table-pipes-1.0.2.tgz#a7e95c93d6908c2b515651aa44fc8c922626ad32" +  integrity sha512-BGKcOviuUC6fILIOPYFe6awqk57ApzNJpK3OYBrweGoFF55nZ/qf3q6JpzA0chd6wKj7VrcfQEd3QSQQ+8Wcrw== +  dependencies: +    unified-lint-rule "^1.0.0" +    unist-util-generated "^1.1.0" +    unist-util-position "^3.0.0" +    unist-util-visit "^1.1.1" + +remark-lint-unordered-list-marker-style@^1.0.0: +  version "1.0.2" +  resolved "https://registry.yarnpkg.com/remark-lint-unordered-list-marker-style/-/remark-lint-unordered-list-marker-style-1.0.2.tgz#2d631c3e7e0604e1d45d5586a0bbb21474bb89a4" +  integrity sha512-qdnF9JuMWzFJzGIfdAWfOHyjad8dqIQSs+cTzqMlNZHOGrrCJdTUWzybzcZMGn1yuwreklZdHKhOglXQFwSD3A== +  dependencies: +    unified-lint-rule "^1.0.0" +    unist-util-generated "^1.1.0" +    unist-util-position "^3.0.0" +    unist-util-visit "^1.1.1" + +remark-lint@^6.0.0: +  version "6.0.4" +  resolved "https://registry.yarnpkg.com/remark-lint/-/remark-lint-6.0.4.tgz#13def899efd7d7d105188c274663a60e0fe8fa59" +  integrity sha512-miD6SKhjEkLgdJXgAmNhGsdY1yIGAzwpoGIn/59MR6nZhshdxSm9/pLPiw9fK3loNASA3j7k//kea6x5vHb+jQ== +  dependencies: +    remark-message-control "^4.0.0" + +remark-message-control@^4.0.0: +  version "4.1.1" +  resolved "https://registry.yarnpkg.com/remark-message-control/-/remark-message-control-4.1.1.tgz#a3f0b08dffda484e7196f0539de1488220f1d251" +  integrity sha512-DojJPPeSux/U7aHCN6GUWBgp6F1EQFPUNvnk2gfuGgiMCHVubz/xAC3TkvPaf5w1F0PEGaOEpCtvxJK6O4Kmiw== +  dependencies: +    mdast-comment-marker "^1.0.0" +    unified-message-control "^1.0.0" +    xtend "^4.0.1" + +remark-parse@^4.0.0: +  version "4.0.0" +  resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-4.0.0.tgz#99f1f049afac80382366e2e0d0bd55429dd45d8b" +  integrity sha512-XZgICP2gJ1MHU7+vQaRM+VA9HEL3X253uwUM/BGgx3iv6TH2B3bF3B8q00DKcyP9YrJV+/7WOWEWBFF/u8cIsw== +  dependencies: +    collapse-white-space "^1.0.2" +    is-alphabetical "^1.0.0" +    is-decimal "^1.0.0" +    is-whitespace-character "^1.0.0" +    is-word-character "^1.0.0" +    markdown-escapes "^1.0.0" +    parse-entities "^1.0.2" +    repeat-string "^1.5.4" +    state-toggle "^1.0.0" +    trim "0.0.1" +    trim-trailing-lines "^1.0.0" +    unherit "^1.0.4" +    unist-util-remove-position "^1.0.0" +    vfile-location "^2.0.0" +    xtend "^4.0.1" + +remark-preset-lint-markdown-style-guide@^2.1.1: +  version "2.1.2" +  resolved "https://registry.yarnpkg.com/remark-preset-lint-markdown-style-guide/-/remark-preset-lint-markdown-style-guide-2.1.2.tgz#a945814f4b014d3e6c0888fc034418bdfd77f44c" +  integrity sha512-0mYeeO084o3ZuDSQCvj5vpMZEGQ/HxPcO5vdNpicu+wKpuGNKV2hYZeHbXa/uZV0gjiQeuRmCHIDgNaDsMj5fg== +  dependencies: +    remark-lint "^6.0.0" +    remark-lint-blockquote-indentation "^1.0.0" +    remark-lint-code-block-style "^1.0.0" +    remark-lint-definition-case "^1.0.0" +    remark-lint-definition-spacing "^1.0.0" +    remark-lint-emphasis-marker "^1.0.0" +    remark-lint-fenced-code-flag "^1.0.0" +    remark-lint-fenced-code-marker "^1.0.0" +    remark-lint-file-extension "^1.0.0" +    remark-lint-final-definition "^1.0.0" +    remark-lint-hard-break-spaces "^1.0.0" +    remark-lint-heading-increment "^1.0.0" +    remark-lint-heading-style "^1.0.0" +    remark-lint-link-title-style "^1.0.0" +    remark-lint-list-item-content-indent "^1.0.0" +    remark-lint-list-item-indent "^1.0.0" +    remark-lint-list-item-spacing "^1.0.0" +    remark-lint-maximum-heading-length "^1.0.0" +    remark-lint-maximum-line-length "^1.0.0" +    remark-lint-no-auto-link-without-protocol "^1.0.0" +    remark-lint-no-blockquote-without-marker "^2.0.0" +    remark-lint-no-consecutive-blank-lines "^1.0.0" +    remark-lint-no-duplicate-headings "^1.0.0" +    remark-lint-no-emphasis-as-heading "^1.0.0" +    remark-lint-no-file-name-articles "^1.0.0" +    remark-lint-no-file-name-consecutive-dashes "^1.0.0" +    remark-lint-no-file-name-irregular-characters "^1.0.0" +    remark-lint-no-file-name-mixed-case "^1.0.0" +    remark-lint-no-file-name-outer-dashes "^1.0.0" +    remark-lint-no-heading-punctuation "^1.0.0" +    remark-lint-no-inline-padding "^1.0.0" +    remark-lint-no-literal-urls "^1.0.0" +    remark-lint-no-multiple-toplevel-headings "^1.0.0" +    remark-lint-no-shell-dollars "^1.0.0" +    remark-lint-no-shortcut-reference-image "^1.0.0" +    remark-lint-no-shortcut-reference-link "^1.0.0" +    remark-lint-no-table-indentation "^1.0.0" +    remark-lint-ordered-list-marker-style "^1.0.0" +    remark-lint-ordered-list-marker-value "^1.0.0" +    remark-lint-rule-style "^1.0.0" +    remark-lint-strong-marker "^1.0.0" +    remark-lint-table-cell-padding "^1.0.0" +    remark-lint-table-pipe-alignment "^1.0.0" +    remark-lint-table-pipes "^1.0.0" +    remark-lint-unordered-list-marker-style "^1.0.0" + +remark-stringify@^4.0.0: +  version "4.0.0" +  resolved "https://registry.yarnpkg.com/remark-stringify/-/remark-stringify-4.0.0.tgz#4431884c0418f112da44991b4e356cfe37facd87" +  integrity sha512-xLuyKTnuQer3ke9hkU38SUYLiTmS078QOnoFavztmbt/pAJtNSkNtFgR0U//uCcmG0qnyxao+PDuatQav46F1w== +  dependencies: +    ccount "^1.0.0" +    is-alphanumeric "^1.0.0" +    is-decimal "^1.0.0" +    is-whitespace-character "^1.0.0" +    longest-streak "^2.0.1" +    markdown-escapes "^1.0.0" +    markdown-table "^1.1.0" +    mdast-util-compact "^1.0.0" +    parse-entities "^1.0.2" +    repeat-string "^1.5.4" +    state-toggle "^1.0.0" +    stringify-entities "^1.0.1" +    unherit "^1.0.4" +    xtend "^4.0.1" + +remark@^8.0.0: +  version "8.0.0" +  resolved "https://registry.yarnpkg.com/remark/-/remark-8.0.0.tgz#287b6df2fe1190e263c1d15e486d3fa835594d6d" +  integrity sha512-K0PTsaZvJlXTl9DN6qYlvjTkqSZBFELhROZMrblm2rB+085flN84nz4g/BscKRMqDvhzlK1oQ/xnWQumdeNZYw== +  dependencies: +    remark-parse "^4.0.0" +    remark-stringify "^4.0.0" +    unified "^6.0.0" + +remove-trailing-separator@^1.0.1: +  version "1.1.0" +  resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" +  integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= + +repeat-element@^1.1.2: +  version "1.1.3" +  resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" +  integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== + +repeat-string@^1.5.0, repeat-string@^1.5.2, repeat-string@^1.5.4, repeat-string@^1.6.1: +  version "1.6.1" +  resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" +  integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= + +repeating@^2.0.0: +  version "2.0.1" +  resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" +  integrity sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo= +  dependencies: +    is-finite "^1.0.0" + +replace-ext@1.0.0: +  version "1.0.0" +  resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.0.tgz#de63128373fcbf7c3ccfa4de5a480c45a67958eb" +  integrity sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs= + +request@^2.45.0, request@^2.55.0, request@^2.88.0: +  version "2.88.0" +  resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef" +  integrity sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg== +  dependencies: +    aws-sign2 "~0.7.0" +    aws4 "^1.8.0" +    caseless "~0.12.0" +    combined-stream "~1.0.6" +    extend "~3.0.2" +    forever-agent "~0.6.1" +    form-data "~2.3.2" +    har-validator "~5.1.0" +    http-signature "~1.2.0" +    is-typedarray "~1.0.0" +    isstream "~0.1.2" +    json-stringify-safe "~5.0.1" +    mime-types "~2.1.19" +    oauth-sign "~0.9.0" +    performance-now "^2.1.0" +    qs "~6.5.2" +    safe-buffer "^5.1.2" +    tough-cookie "~2.4.3" +    tunnel-agent "^0.6.0" +    uuid "^3.3.2" + +require-uncached@^1.0.3: +  version "1.0.3" +  resolved "https://registry.yarnpkg.com/require-uncached/-/require-uncached-1.0.3.tgz#4e0d56d6c9662fd31e43011c4b95aa49955421d3" +  integrity sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM= +  dependencies: +    caller-path "^0.1.0" +    resolve-from "^1.0.0" + +requireindex@^1.2.0: +  version "1.2.0" +  resolved "https://registry.yarnpkg.com/requireindex/-/requireindex-1.2.0.tgz#3463cdb22ee151902635aa6c9535d4de9c2ef1ef" +  integrity sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww== + +requireindex@~1.1.0: +  version "1.1.0" +  resolved "https://registry.yarnpkg.com/requireindex/-/requireindex-1.1.0.tgz#e5404b81557ef75db6e49c5a72004893fe03e162" +  integrity sha1-5UBLgVV+91225JxacgBIk/4D4WI= + +resolve-from@^1.0.0: +  version "1.0.1" +  resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226" +  integrity sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY= + +resolve-from@^3.0.0: +  version "3.0.0" +  resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" +  integrity sha1-six699nWiBvItuZTM17rywoYh0g= + +resolve-from@^4.0.0: +  version "4.0.0" +  resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" +  integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +resolve-url@^0.2.1: +  version "0.2.1" +  resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" +  integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= + +resolve@1.1.7: +  version "1.1.7" +  resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" +  integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= + +resolve@^1.1.4, resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.4.0, resolve@^1.5.0, resolve@^1.6.0, resolve@^1.8.1: +  version "1.10.1" +  resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.10.1.tgz#664842ac960795bbe758221cdccda61fb64b5f18" +  integrity sha512-KuIe4mf++td/eFb6wkaPbMDnP6kObCaEtIDuHOUED6MNUo4K670KZUHuuvYPZDxNF0WVLw49n06M2m2dXphEzA== +  dependencies: +    path-parse "^1.0.6" + +restore-cursor@^1.0.1: +  version "1.0.1" +  resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-1.0.1.tgz#34661f46886327fed2991479152252df92daa541" +  integrity sha1-NGYfRohjJ/7SmRR5FSJS35LapUE= +  dependencies: +    exit-hook "^1.0.0" +    onetime "^1.0.0" + +restore-cursor@^2.0.0: +  version "2.0.0" +  resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" +  integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368= +  dependencies: +    onetime "^2.0.0" +    signal-exit "^3.0.2" + +ret@~0.1.10: +  version "0.1.15" +  resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" +  integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== + +revalidator@^0.3.1: +  version "0.3.1" +  resolved "https://registry.yarnpkg.com/revalidator/-/revalidator-0.3.1.tgz#ff2cc4cf7cc7c6385ac710178276e6dbcd03762f" +  integrity sha1-/yzEz3zHxjhaxxAXgnbm280Ddi8= + +right-align@^0.1.1: +  version "0.1.3" +  resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef" +  integrity sha1-YTObci/mo1FWiSENJOFMlhSGE+8= +  dependencies: +    align-text "^0.1.1" + +rimraf@2.6.3, rimraf@^2.2.8, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@~2.6.2: +  version "2.6.3" +  resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" +  integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== +  dependencies: +    glob "^7.1.3" + +rimraf@~2.2.6: +  version "2.2.8" +  resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.2.8.tgz#e439be2aaee327321952730f99a8929e4fc50582" +  integrity sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI= + +ripemd160@^2.0.0, ripemd160@^2.0.1: +  version "2.0.2" +  resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" +  integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== +  dependencies: +    hash-base "^3.0.0" +    inherits "^2.0.1" + +run-async@^2.2.0: +  version "2.3.0" +  resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0" +  integrity sha1-A3GrSuC91yDUFm19/aZP96RFpsA= +  dependencies: +    is-promise "^2.1.0" + +run-parallel@^1.1.2: +  version "1.1.9" +  resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.1.9.tgz#c9dd3a7cf9f4b2c4b6244e173a6ed866e61dd679" +  integrity sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q== + +rxjs@^5.5.2: +  version "5.5.12" +  resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-5.5.12.tgz#6fa61b8a77c3d793dbaf270bee2f43f652d741cc" +  integrity sha512-xx2itnL5sBbqeeiVgNPVuQQ1nC8Jp2WfNJhXWHmElW9YmrpS9UVnNzhP3EH3HFqexO5Tlp8GhYY+WEcqcVMvGw== +  dependencies: +    symbol-observable "1.0.1" + +rxjs@^6.3.3, rxjs@^6.4.0: +  version "6.5.1" +  resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.1.tgz#f7a005a9386361921b8524f38f54cbf80e5d08f4" +  integrity sha512-y0j31WJc83wPu31vS1VlAFW5JGrnGC+j+TtGAa1fRQphy48+fDYiDmX8tjGloToEsMkxnouOg/1IzXGKkJnZMg== +  dependencies: +    tslib "^1.9.0" + +safe-buffer@5.1.1: +  version "5.1.1" +  resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" +  integrity sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg== + +safe-buffer@5.1.2, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: +  version "5.1.2" +  resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" +  integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-regex@^1.1.0: +  version "1.1.0" +  resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" +  integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= +  dependencies: +    ret "~0.1.10" + +"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: +  version "2.1.2" +  resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" +  integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +sax@^1.1.4, sax@^1.2.4: +  version "1.2.4" +  resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" +  integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== + +semver-compare@^1.0.0: +  version "1.0.0" +  resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" +  integrity sha1-De4hahyUGrN+nvsXiPavxf9VN/w= + +semver-diff@^2.0.0: +  version "2.1.0" +  resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-2.1.0.tgz#4bbb8437c8d37e4b0cf1a68fd726ec6d645d6d36" +  integrity sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY= +  dependencies: +    semver "^5.0.3" + +"semver@2 || 3 || 4 || 5", semver@^5.0.3, semver@^5.1.0, semver@^5.3.0, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0: +  version "5.7.0" +  resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b" +  integrity sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA== + +semver@5.5.0: +  version "5.5.0" +  resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab" +  integrity sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA== + +send@0.16.2: +  version "0.16.2" +  resolved "https://registry.yarnpkg.com/send/-/send-0.16.2.tgz#6ecca1e0f8c156d141597559848df64730a6bbc1" +  integrity sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw== +  dependencies: +    debug "2.6.9" +    depd "~1.1.2" +    destroy "~1.0.4" +    encodeurl "~1.0.2" +    escape-html "~1.0.3" +    etag "~1.8.1" +    fresh "0.5.2" +    http-errors "~1.6.2" +    mime "1.4.1" +    ms "2.0.0" +    on-finished "~2.3.0" +    range-parser "~1.2.0" +    statuses "~1.4.0" + +serve-static@1.13.2: +  version "1.13.2" +  resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.13.2.tgz#095e8472fd5b46237db50ce486a43f4b86c6cec1" +  integrity sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw== +  dependencies: +    encodeurl "~1.0.2" +    escape-html "~1.0.3" +    parseurl "~1.3.2" +    send "0.16.2" + +serve@^6.5.8: +  version "6.5.8" +  resolved "https://registry.yarnpkg.com/serve/-/serve-6.5.8.tgz#fd7ad6b9c10ba12084053030cc1a8b636c0a10a7" +  integrity sha512-GZYlJz7f6E7Xq6xbg1rTSvQQV9x4v/yYB/sum6egzSBLa/mdk1PViDSX2JvL0Me83sxu3JpEpQELfakDKbGcrw== +  dependencies: +    args "4.0.0" +    basic-auth "2.0.0" +    bluebird "3.5.1" +    boxen "1.3.0" +    chalk "2.4.1" +    clipboardy "1.2.3" +    dargs "5.1.0" +    detect-port "1.2.3" +    filesize "3.6.1" +    fs-extra "6.0.1" +    handlebars "4.0.11" +    ip "1.1.5" +    micro "9.3.1" +    micro-compress "1.0.0" +    mime-types "2.1.18" +    node-version "1.1.3" +    openssl-self-signed-certificate "1.1.6" +    opn "5.3.0" +    path-is-inside "1.0.2" +    path-type "3.0.0" +    send "0.16.2" +    update-check "1.5.1" + +set-blocking@~2.0.0: +  version "2.0.0" +  resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" +  integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= + +set-value@^0.4.3: +  version "0.4.3" +  resolved "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz#7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1" +  integrity sha1-fbCPnT0i3H945Trzw79GZuzfzPE= +  dependencies: +    extend-shallow "^2.0.1" +    is-extendable "^0.1.1" +    is-plain-object "^2.0.1" +    to-object-path "^0.3.0" + +set-value@^2.0.0: +  version "2.0.0" +  resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.0.tgz#71ae4a88f0feefbbf52d1ea604f3fb315ebb6274" +  integrity sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg== +  dependencies: +    extend-shallow "^2.0.1" +    is-extendable "^0.1.1" +    is-plain-object "^2.0.3" +    split-string "^3.0.1" + +setprototypeof@1.0.3: +  version "1.0.3" +  resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.0.3.tgz#66567e37043eeb4f04d91bd658c0cbefb55b8e04" +  integrity sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ= + +setprototypeof@1.1.0: +  version "1.1.0" +  resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" +  integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== + +sha.js@^2.4.0, sha.js@^2.4.8, sha.js@~2.4.4: +  version "2.4.11" +  resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" +  integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== +  dependencies: +    inherits "^2.0.1" +    safe-buffer "^5.0.1" + +shasum@^1.0.0: +  version "1.0.2" +  resolved "https://registry.yarnpkg.com/shasum/-/shasum-1.0.2.tgz#e7012310d8f417f4deb5712150e5678b87ae565f" +  integrity sha1-5wEjENj0F/TetXEhUOVni4euVl8= +  dependencies: +    json-stable-stringify "~0.0.0" +    sha.js "~2.4.4" + +shebang-command@^1.2.0: +  version "1.2.0" +  resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" +  integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= +  dependencies: +    shebang-regex "^1.0.0" + +shebang-regex@^1.0.0: +  version "1.0.0" +  resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" +  integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= + +shell-quote@^1.6.1: +  version "1.6.1" +  resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.6.1.tgz#f4781949cce402697127430ea3b3c5476f481767" +  integrity sha1-9HgZSczkAmlxJ0MOo7PFR29IF2c= +  dependencies: +    array-filter "~0.0.0" +    array-map "~0.0.0" +    array-reduce "~0.0.0" +    jsonify "~0.0.0" + +shelljs@^0.8.1: +  version "0.8.3" +  resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.3.tgz#a7f3319520ebf09ee81275b2368adb286659b097" +  integrity sha512-fc0BKlAWiLpwZljmOvAOTE/gXawtCoNrP5oaY7KIaQbbyHeQVg01pSEuEGvGh3HEdBU4baCD7wQBwADmM/7f7A== +  dependencies: +    glob "^7.0.0" +    interpret "^1.0.0" +    rechoir "^0.6.2" + +shellsubstitute@^1.1.0: +  version "1.2.0" +  resolved "https://registry.yarnpkg.com/shellsubstitute/-/shellsubstitute-1.2.0.tgz#e4f702a50c518b0f6fe98451890d705af29b6b70" +  integrity sha1-5PcCpQxRiw9v6YRRiQ1wWvKba3A= + +shx@^0.3.2: +  version "0.3.2" +  resolved "https://registry.yarnpkg.com/shx/-/shx-0.3.2.tgz#40501ce14eb5e0cbcac7ddbd4b325563aad8c123" +  integrity sha512-aS0mWtW3T2sHAenrSrip2XGv39O9dXIFUqxAEWHEOS1ePtGIBavdPJY1kE2IHl14V/4iCbUiNDPGdyYTtmhSoA== +  dependencies: +    es6-object-assign "^1.0.3" +    minimist "^1.2.0" +    shelljs "^0.8.1" + +signal-exit@^3.0.0, signal-exit@^3.0.2: +  version "3.0.2" +  resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" +  integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= + +simple-concat@^1.0.0: +  version "1.0.0" +  resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.0.tgz#7344cbb8b6e26fb27d66b2fc86f9f6d5997521c6" +  integrity sha1-c0TLuLbib7J9ZrL8hvn21Zl1IcY= + +simple-git@^1.85.0: +  version "1.110.0" +  resolved "https://registry.yarnpkg.com/simple-git/-/simple-git-1.110.0.tgz#54eb179089d055a7783d32399246cebc9d9933e9" +  integrity sha512-UYY0rQkknk0P5eb+KW+03F4TevZ9ou0H+LoGaj7iiVgpnZH4wdj/HTViy/1tNNkmIPcmtxuBqXWiYt2YwlRKOQ== +  dependencies: +    debug "^4.0.1" + +single-line-log@^1.1.2: +  version "1.1.2" +  resolved "https://registry.yarnpkg.com/single-line-log/-/single-line-log-1.1.2.tgz#c2f83f273a3e1a16edb0995661da0ed5ef033364" +  integrity sha1-wvg/Jzo+GhbtsJlWYdoO1e8DM2Q= +  dependencies: +    string-width "^1.0.1" + +slash@^1.0.0: +  version "1.0.0" +  resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" +  integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU= + +slice-ansi@0.0.4: +  version "0.0.4" +  resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35" +  integrity sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU= + +slice-ansi@1.0.0: +  version "1.0.0" +  resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-1.0.0.tgz#044f1a49d8842ff307aad6b505ed178bd950134d" +  integrity sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg== +  dependencies: +    is-fullwidth-code-point "^2.0.0" + +slice-ansi@^2.1.0: +  version "2.1.0" +  resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" +  integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== +  dependencies: +    ansi-styles "^3.2.0" +    astral-regex "^1.0.0" +    is-fullwidth-code-point "^2.0.0" + +sliced@^1.0.1: +  version "1.0.1" +  resolved "https://registry.yarnpkg.com/sliced/-/sliced-1.0.1.tgz#0b3a662b5d04c3177b1926bea82b03f837a2ef41" +  integrity sha1-CzpmK10Ewxd7GSa+qCsD+Dei70E= + +snapdragon-node@^2.0.1: +  version "2.1.1" +  resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" +  integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== +  dependencies: +    define-property "^1.0.0" +    isobject "^3.0.0" +    snapdragon-util "^3.0.1" + +snapdragon-util@^3.0.1: +  version "3.0.1" +  resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" +  integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== +  dependencies: +    kind-of "^3.2.0" + +snapdragon@^0.8.1: +  version "0.8.2" +  resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" +  integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== +  dependencies: +    base "^0.11.1" +    debug "^2.2.0" +    define-property "^0.2.5" +    extend-shallow "^2.0.1" +    map-cache "^0.2.2" +    source-map "^0.5.6" +    source-map-resolve "^0.5.0" +    use "^3.1.0" + +source-map-resolve@^0.5.0: +  version "0.5.2" +  resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.2.tgz#72e2cc34095543e43b2c62b2c4c10d4a9054f259" +  integrity sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA== +  dependencies: +    atob "^2.1.1" +    decode-uri-component "^0.2.0" +    resolve-url "^0.2.1" +    source-map-url "^0.4.0" +    urix "^0.1.0" + +source-map-support@^0.5.6: +  version "0.5.12" +  resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.12.tgz#b4f3b10d51857a5af0138d3ce8003b201613d599" +  integrity sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ== +  dependencies: +    buffer-from "^1.0.0" +    source-map "^0.6.0" + +source-map-url@^0.4.0: +  version "0.4.0" +  resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" +  integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= + +source-map@^0.4.4: +  version "0.4.4" +  resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b" +  integrity sha1-66T12pwNyZneaAMti092FzZSA2s= +  dependencies: +    amdefine ">=0.0.4" + +source-map@^0.5.6, source-map@~0.5.1, source-map@~0.5.3: +  version "0.5.7" +  resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" +  integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= + +source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: +  version "0.6.1" +  resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" +  integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +spdx-correct@^3.0.0: +  version "3.1.0" +  resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4" +  integrity sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q== +  dependencies: +    spdx-expression-parse "^3.0.0" +    spdx-license-ids "^3.0.0" + +spdx-exceptions@^2.1.0: +  version "2.2.0" +  resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz#2ea450aee74f2a89bfb94519c07fcd6f41322977" +  integrity sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA== + +spdx-expression-parse@^3.0.0: +  version "3.0.0" +  resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0" +  integrity sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg== +  dependencies: +    spdx-exceptions "^2.1.0" +    spdx-license-ids "^3.0.0" + +spdx-license-ids@^3.0.0: +  version "3.0.4" +  resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.4.tgz#75ecd1a88de8c184ef015eafb51b5b48bfd11bb1" +  integrity sha512-7j8LYJLeY/Yb6ACbQ7F76qy5jHkp0U6jgBfJsk97bwWlVUnUWsAgpyaCvo17h0/RQGnQ036tVDomiwoI4pDkQA== + +speedometer@~0.1.2: +  version "0.1.4" +  resolved "https://registry.yarnpkg.com/speedometer/-/speedometer-0.1.4.tgz#9876dbd2a169d3115402d48e6ea6329c8816a50d" +  integrity sha1-mHbb0qFp0xFUAtSObqYynIgWpQ0= + +split-string@^3.0.1, split-string@^3.0.2: +  version "3.1.0" +  resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" +  integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== +  dependencies: +    extend-shallow "^3.0.0" + +split2@^2.0.0: +  version "2.2.0" +  resolved "https://registry.yarnpkg.com/split2/-/split2-2.2.0.tgz#186b2575bcf83e85b7d18465756238ee4ee42493" +  integrity sha512-RAb22TG39LhI31MbreBgIuKiIKhVsawfTgEGqKHTK87aG+ul/PB8Sqoi3I7kVdRWiCfrKxK3uo4/YUkpNvhPbw== +  dependencies: +    through2 "^2.0.2" + +split@^1.0.0: +  version "1.0.1" +  resolved "https://registry.yarnpkg.com/split/-/split-1.0.1.tgz#605bd9be303aa59fb35f9229fbea0ddec9ea07d9" +  integrity sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg== +  dependencies: +    through "2" + +sprintf-js@~1.0.2: +  version "1.0.3" +  resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" +  integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= + +sshpk@^1.7.0: +  version "1.16.1" +  resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" +  integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== +  dependencies: +    asn1 "~0.2.3" +    assert-plus "^1.0.0" +    bcrypt-pbkdf "^1.0.0" +    dashdash "^1.12.0" +    ecc-jsbn "~0.1.1" +    getpass "^0.1.1" +    jsbn "~0.1.0" +    safer-buffer "^2.0.2" +    tweetnacl "~0.14.0" + +staged-git-files@1.1.2: +  version "1.1.2" +  resolved "https://registry.yarnpkg.com/staged-git-files/-/staged-git-files-1.1.2.tgz#4326d33886dc9ecfa29a6193bf511ba90a46454b" +  integrity sha512-0Eyrk6uXW6tg9PYkhi/V/J4zHp33aNyi2hOCmhFLqLTIhbgqWn5jlSzI+IU0VqrZq6+DbHcabQl/WP6P3BG0QA== + +standard-engine@~9.0.0: +  version "9.0.0" +  resolved "https://registry.yarnpkg.com/standard-engine/-/standard-engine-9.0.0.tgz#d3a3d74c4c1b91f51a1e66362465261ca7610316" +  integrity sha512-ZfNfCWZ2Xq67VNvKMPiVMKHnMdvxYzvZkf1AH8/cw2NLDBm5LRsxMqvEJpsjLI/dUosZ3Z1d6JlHDp5rAvvk2w== +  dependencies: +    deglob "^2.1.0" +    get-stdin "^6.0.0" +    minimist "^1.1.0" +    pkg-conf "^2.0.0" + +standard-markdown@^5.0.0: +  version "5.0.1" +  resolved "https://registry.yarnpkg.com/standard-markdown/-/standard-markdown-5.0.1.tgz#39598c611bfe03b2d4313df792f365544959a592" +  integrity sha512-rvbuTqF4zJX3yxgHhRB6o0uGq+V87Dbzk8QeBy9dyb9RdBWL4OG3nCpxfEnM0KHjycMCSMK36r60k/MGThERdA== +  dependencies: +    commander "^2.18.0" +    globby "^8.0.1" +    lodash.flatten "^4.4.0" +    lodash.range "^3.2.0" +    ora "^3.0.0" +    standard "^12.0.1" + +standard@^12.0.1: +  version "12.0.1" +  resolved "https://registry.yarnpkg.com/standard/-/standard-12.0.1.tgz#0fc5a8aa6c34c546c5562aae644242b24dae2e61" +  integrity sha512-UqdHjh87OG2gUrNCSM4QRLF5n9h3TFPwrCNyVlkqu31Hej0L/rc8hzKqVvkb2W3x0WMq7PzZdkLfEcBhVOR6lg== +  dependencies: +    eslint "~5.4.0" +    eslint-config-standard "12.0.0" +    eslint-config-standard-jsx "6.0.2" +    eslint-plugin-import "~2.14.0" +    eslint-plugin-node "~7.0.1" +    eslint-plugin-promise "~4.0.0" +    eslint-plugin-react "~7.11.1" +    eslint-plugin-standard "~4.0.0" +    standard-engine "~9.0.0" + +state-toggle@^1.0.0: +  version "1.0.1" +  resolved "https://registry.yarnpkg.com/state-toggle/-/state-toggle-1.0.1.tgz#c3cb0974f40a6a0f8e905b96789eb41afa1cde3a" +  integrity sha512-Qe8QntFrrpWTnHwvwj2FZTgv+PKIsp0B9VxLzLLbSpPXWOgRgc5LVj/aTiSfK1RqIeF9jeC1UeOH8Q8y60A7og== + +static-extend@^0.1.1: +  version "0.1.2" +  resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" +  integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= +  dependencies: +    define-property "^0.2.5" +    object-copy "^0.1.0" + +"statuses@>= 1.3.1 < 2", "statuses@>= 1.4.0 < 2": +  version "1.5.0" +  resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" +  integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= + +statuses@~1.4.0: +  version "1.4.0" +  resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087" +  integrity sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew== + +stream-browserify@^2.0.0: +  version "2.0.2" +  resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" +  integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg== +  dependencies: +    inherits "~2.0.1" +    readable-stream "^2.0.2" + +stream-combiner2@^1.1.1: +  version "1.1.1" +  resolved "https://registry.yarnpkg.com/stream-combiner2/-/stream-combiner2-1.1.1.tgz#fb4d8a1420ea362764e21ad4780397bebcb41cbe" +  integrity sha1-+02KFCDqNidk4hrUeAOXvry0HL4= +  dependencies: +    duplexer2 "~0.1.0" +    readable-stream "^2.0.2" + +stream-http@^2.0.0: +  version "2.8.3" +  resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc" +  integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw== +  dependencies: +    builtin-status-codes "^3.0.0" +    inherits "^2.0.1" +    readable-stream "^2.3.6" +    to-arraybuffer "^1.0.0" +    xtend "^4.0.0" + +stream-shift@^1.0.0: +  version "1.0.0" +  resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952" +  integrity sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI= + +stream-splicer@^2.0.0: +  version "2.0.0" +  resolved "https://registry.yarnpkg.com/stream-splicer/-/stream-splicer-2.0.0.tgz#1b63be438a133e4b671cc1935197600175910d83" +  integrity sha1-G2O+Q4oTPktnHMGTUZdgAXWRDYM= +  dependencies: +    inherits "^2.0.1" +    readable-stream "^2.0.2" + +string-argv@^0.0.2: +  version "0.0.2" +  resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.0.2.tgz#dac30408690c21f3c3630a3ff3a05877bdcbd736" +  integrity sha1-2sMECGkMIfPDYwo/86BYd73L1zY= + +string-width@^1.0.0, string-width@^1.0.1: +  version "1.0.2" +  resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" +  integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= +  dependencies: +    code-point-at "^1.0.0" +    is-fullwidth-code-point "^1.0.0" +    strip-ansi "^3.0.0" + +"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1: +  version "2.1.1" +  resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" +  integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== +  dependencies: +    is-fullwidth-code-point "^2.0.0" +    strip-ansi "^4.0.0" + +string-width@^3.0.0: +  version "3.1.0" +  resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" +  integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== +  dependencies: +    emoji-regex "^7.0.1" +    is-fullwidth-code-point "^2.0.0" +    strip-ansi "^5.1.0" + +string@^3.0.1: +  version "3.3.3" +  resolved "https://registry.yarnpkg.com/string/-/string-3.3.3.tgz#5ea211cd92d228e184294990a6cc97b366a77cb0" +  integrity sha1-XqIRzZLSKOGEKUmQpsyXs2anfLA= + +string_decoder@^1.1.1: +  version "1.2.0" +  resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.2.0.tgz#fe86e738b19544afe70469243b2a1ee9240eae8d" +  integrity sha512-6YqyX6ZWEYguAxgZzHGL7SsCeGx3V2TtOTqZz1xSTSWnqsbWwbptafNyvf/ACquZUXV3DANr5BDIwNYe1mN42w== +  dependencies: +    safe-buffer "~5.1.0" + +string_decoder@~0.10.x: +  version "0.10.31" +  resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" +  integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ= + +string_decoder@~1.1.1: +  version "1.1.1" +  resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" +  integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== +  dependencies: +    safe-buffer "~5.1.0" + +stringify-entities@^1.0.1: +  version "1.3.2" +  resolved "https://registry.yarnpkg.com/stringify-entities/-/stringify-entities-1.3.2.tgz#a98417e5471fd227b3e45d3db1861c11caf668f7" +  integrity sha512-nrBAQClJAPN2p+uGCVJRPIPakKeKWZ9GtBCmormE7pWOSlHat7+x5A8gx85M7HM5Dt0BP3pP5RhVW77WdbJJ3A== +  dependencies: +    character-entities-html4 "^1.0.0" +    character-entities-legacy "^1.0.0" +    is-alphanumerical "^1.0.0" +    is-hexadecimal "^1.0.0" + +stringify-object@^3.2.2: +  version "3.3.0" +  resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629" +  integrity sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw== +  dependencies: +    get-own-enumerable-property-symbols "^3.0.0" +    is-obj "^1.0.1" +    is-regexp "^1.0.0" + +strip-ansi@^3.0.0, strip-ansi@^3.0.1: +  version "3.0.1" +  resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" +  integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= +  dependencies: +    ansi-regex "^2.0.0" + +strip-ansi@^4.0.0: +  version "4.0.0" +  resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" +  integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= +  dependencies: +    ansi-regex "^3.0.0" + +strip-ansi@^5.1.0, strip-ansi@^5.2.0: +  version "5.2.0" +  resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" +  integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== +  dependencies: +    ansi-regex "^4.1.0" + +strip-bom@^2.0.0: +  version "2.0.0" +  resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" +  integrity sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4= +  dependencies: +    is-utf8 "^0.2.0" + +strip-bom@^3.0.0: +  version "3.0.0" +  resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" +  integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= + +strip-eof@^1.0.0: +  version "1.0.0" +  resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" +  integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= + +strip-indent@^1.0.1: +  version "1.0.1" +  resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2" +  integrity sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI= +  dependencies: +    get-stdin "^4.0.1" + +strip-indent@^2.0.0: +  version "2.0.0" +  resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-2.0.0.tgz#5ef8db295d01e6ed6cbf7aab96998d7822527b68" +  integrity sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g= + +strip-json-comments@^2.0.0, strip-json-comments@^2.0.1, strip-json-comments@~2.0.1: +  version "2.0.1" +  resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" +  integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= + +subarg@^1.0.0: +  version "1.0.0" +  resolved "https://registry.yarnpkg.com/subarg/-/subarg-1.0.0.tgz#f62cf17581e996b48fc965699f54c06ae268b8d2" +  integrity sha1-9izxdYHplrSPyWVpn1TAauJouNI= +  dependencies: +    minimist "^1.1.0" + +sumchecker@^2.0.2: +  version "2.0.2" +  resolved "https://registry.yarnpkg.com/sumchecker/-/sumchecker-2.0.2.tgz#0f42c10e5d05da5d42eea3e56c3399a37d6c5b3e" +  integrity sha1-D0LBDl0F2l1C7qPlbDOZo31sWz4= +  dependencies: +    debug "^2.2.0" + +supports-color@^2.0.0: +  version "2.0.0" +  resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" +  integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= + +supports-color@^4.1.0: +  version "4.5.0" +  resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.5.0.tgz#be7a0de484dec5c5cddf8b3d59125044912f635b" +  integrity sha1-vnoN5ITexcXN34s9WRJQRJEvY1s= +  dependencies: +    has-flag "^2.0.0" + +supports-color@^5.3.0: +  version "5.5.0" +  resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" +  integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== +  dependencies: +    has-flag "^3.0.0" + +symbol-observable@1.0.1: +  version "1.0.1" +  resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.1.tgz#8340fc4702c3122df5d22288f88283f513d3fdd4" +  integrity sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ= + +symbol-observable@^1.1.0: +  version "1.2.0" +  resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" +  integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ== + +"symbol-tree@>= 3.1.0 < 4.0.0": +  version "3.2.2" +  resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.2.tgz#ae27db38f660a7ae2e1c3b7d1bc290819b8519e6" +  integrity sha1-rifbOPZgp64uHDt9G8KQgZuFGeY= + +synchronous-promise@^2.0.5: +  version "2.0.7" +  resolved "https://registry.yarnpkg.com/synchronous-promise/-/synchronous-promise-2.0.7.tgz#3574b3d2fae86b145356a4b89103e1577f646fe3" +  integrity sha512-16GbgwTmFMYFyQMLvtQjvNWh30dsFe1cAW5Fg1wm5+dg84L9Pe36mftsIRU95/W2YsISxsz/xq4VB23sqpgb/A== + +syntax-error@^1.1.1: +  version "1.4.0" +  resolved "https://registry.yarnpkg.com/syntax-error/-/syntax-error-1.4.0.tgz#2d9d4ff5c064acb711594a3e3b95054ad51d907c" +  integrity sha512-YPPlu67mdnHGTup2A8ff7BC2Pjq0e0Yp/IyTFN03zWO0RcK07uLcbi7C2KpGR2FvWbaB0+bfE27a+sBKebSo7w== +  dependencies: +    acorn-node "^1.2.0" + +table@^4.0.3: +  version "4.0.3" +  resolved "https://registry.yarnpkg.com/table/-/table-4.0.3.tgz#00b5e2b602f1794b9acaf9ca908a76386a7813bc" +  integrity sha512-S7rnFITmBH1EnyKcvxBh1LjYeQMmnZtCXSEbHcH6S0NoKit24ZuFO/T1vDcLdYsLQkM188PVVhQmzKIuThNkKg== +  dependencies: +    ajv "^6.0.1" +    ajv-keywords "^3.0.0" +    chalk "^2.1.0" +    lodash "^4.17.4" +    slice-ansi "1.0.0" +    string-width "^2.1.1" + +table@^5.2.3: +  version "5.2.3" +  resolved "https://registry.yarnpkg.com/table/-/table-5.2.3.tgz#cde0cc6eb06751c009efab27e8c820ca5b67b7f2" +  integrity sha512-N2RsDAMvDLvYwFcwbPyF3VmVSSkuF+G1e+8inhBLtHpvwXGw4QRPEZhihQNeEN0i1up6/f6ObCJXNdlRG3YVyQ== +  dependencies: +    ajv "^6.9.1" +    lodash "^4.17.11" +    slice-ansi "^2.1.0" +    string-width "^3.0.0" + +tar-fs@^1.13.0: +  version "1.16.3" +  resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-1.16.3.tgz#966a628841da2c4010406a82167cbd5e0c72d509" +  integrity sha512-NvCeXpYx7OsmOh8zIOP/ebG55zZmxLE0etfWRbWok+q2Qo8x/vOR/IJT1taADXPe+jsiu9axDb3X4B+iIgNlKw== +  dependencies: +    chownr "^1.0.1" +    mkdirp "^0.5.1" +    pump "^1.0.0" +    tar-stream "^1.1.2" + +tar-stream@^1.1.2: +  version "1.6.2" +  resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.6.2.tgz#8ea55dab37972253d9a9af90fdcd559ae435c555" +  integrity sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A== +  dependencies: +    bl "^1.0.0" +    buffer-alloc "^1.2.0" +    end-of-stream "^1.0.0" +    fs-constants "^1.0.0" +    readable-stream "^2.3.0" +    to-buffer "^1.1.1" +    xtend "^4.0.0" + +tar@^4, tar@^4.4.7: +  version "4.4.8" +  resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.8.tgz#b19eec3fde2a96e64666df9fdb40c5ca1bc3747d" +  integrity sha512-LzHF64s5chPQQS0IYBn9IN5h3i98c12bo4NCO7e0sGM2llXQ3p2FGC5sdENN4cTW48O915Sh+x+EXx7XW96xYQ== +  dependencies: +    chownr "^1.1.1" +    fs-minipass "^1.2.5" +    minipass "^2.3.4" +    minizlib "^1.1.1" +    mkdirp "^0.5.0" +    safe-buffer "^5.1.2" +    yallist "^3.0.2" + +temp@^0.8.3: +  version "0.8.3" +  resolved "https://registry.yarnpkg.com/temp/-/temp-0.8.3.tgz#e0c6bc4d26b903124410e4fed81103014dfc1f59" +  integrity sha1-4Ma8TSa5AxJEEOT+2BEDAU38H1k= +  dependencies: +    os-tmpdir "^1.0.0" +    rimraf "~2.2.6" + +tempfile@^1.1.1: +  version "1.1.1" +  resolved "https://registry.yarnpkg.com/tempfile/-/tempfile-1.1.1.tgz#5bcc4eaecc4ab2c707d8bc11d99ccc9a2cb287f2" +  integrity sha1-W8xOrsxKsscH2LwR2ZzMmiyyh/I= +  dependencies: +    os-tmpdir "^1.0.0" +    uuid "^2.0.1" + +term-size@^1.2.0: +  version "1.2.0" +  resolved "https://registry.yarnpkg.com/term-size/-/term-size-1.2.0.tgz#458b83887f288fc56d6fffbfad262e26638efa69" +  integrity sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk= +  dependencies: +    execa "^0.7.0" + +text-extensions@^1.0.0: +  version "1.9.0" +  resolved "https://registry.yarnpkg.com/text-extensions/-/text-extensions-1.9.0.tgz#1853e45fee39c945ce6f6c36b2d659b5aabc2a26" +  integrity sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ== + +text-table@^0.2.0: +  version "0.2.0" +  resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" +  integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= + +throttleit@0.0.2: +  version "0.0.2" +  resolved "https://registry.yarnpkg.com/throttleit/-/throttleit-0.0.2.tgz#cfedf88e60c00dd9697b61fdd2a8343a9b680eaf" +  integrity sha1-z+34jmDADdlpe2H90qg0OptoDq8= + +through2@^2.0.0, through2@^2.0.2, through2@^2.0.3: +  version "2.0.5" +  resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" +  integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== +  dependencies: +    readable-stream "~2.3.6" +    xtend "~4.0.1" + +through2@~0.2.3: +  version "0.2.3" +  resolved "https://registry.yarnpkg.com/through2/-/through2-0.2.3.tgz#eb3284da4ea311b6cc8ace3653748a52abf25a3f" +  integrity sha1-6zKE2k6jEbbMis42U3SKUqvyWj8= +  dependencies: +    readable-stream "~1.1.9" +    xtend "~2.1.1" + +through@2, "through@>=2.2.7 <3", through@^2.3.6, through@^2.3.7: +  version "2.3.8" +  resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" +  integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= + +timed-out@^4.0.0: +  version "4.0.1" +  resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" +  integrity sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8= + +timers-browserify@^1.0.1: +  version "1.4.2" +  resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-1.4.2.tgz#c9c58b575be8407375cb5e2462dacee74359f41d" +  integrity sha1-ycWLV1voQHN1y14kYtrO50NZ9B0= +  dependencies: +    process "~0.11.0" + +tmp-promise@^1.0.5: +  version "1.0.5" +  resolved "https://registry.yarnpkg.com/tmp-promise/-/tmp-promise-1.0.5.tgz#3208d7fa44758f86a2a4c4060f3c33fea30e8038" +  integrity sha512-hOabTz9Tp49wCozFwuJe5ISrOqkECm6kzw66XTP23DuzNU7QS/KiZq5LC9Y7QSy8f1rPSLy4bKaViP0OwGI1cA== +  dependencies: +    bluebird "^3.5.0" +    tmp "0.0.33" + +tmp@0.0.33, tmp@^0.0.33: +  version "0.0.33" +  resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" +  integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== +  dependencies: +    os-tmpdir "~1.0.2" + +to-arraybuffer@^1.0.0: +  version "1.0.1" +  resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" +  integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M= + +to-buffer@^1.1.1: +  version "1.1.1" +  resolved "https://registry.yarnpkg.com/to-buffer/-/to-buffer-1.1.1.tgz#493bd48f62d7c43fcded313a03dcadb2e1213a80" +  integrity sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg== + +to-object-path@^0.3.0: +  version "0.3.0" +  resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" +  integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= +  dependencies: +    kind-of "^3.0.2" + +to-regex-range@^2.1.0: +  version "2.1.1" +  resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" +  integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= +  dependencies: +    is-number "^3.0.0" +    repeat-string "^1.6.1" + +to-regex@^3.0.1, to-regex@^3.0.2: +  version "3.0.2" +  resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" +  integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== +  dependencies: +    define-property "^2.0.2" +    extend-shallow "^3.0.2" +    regex-not "^1.0.2" +    safe-regex "^1.1.0" + +to-vfile@^2.0.0: +  version "2.2.0" +  resolved "https://registry.yarnpkg.com/to-vfile/-/to-vfile-2.2.0.tgz#342d1705e6df526d569b1fc8bfa29f1f36d6c416" +  integrity sha512-saGC8/lWdGrEoBMLUtgzhRHWAkQMP8gdldA3MOAUhBwTGEb1RSMVcflHGSx4ZJsdEZ9o1qDBCPp47LCPrbZWow== +  dependencies: +    is-buffer "^1.1.4" +    vfile "^2.0.0" +    x-is-function "^1.0.4" + +toposort@^2.0.2: +  version "2.0.2" +  resolved "https://registry.yarnpkg.com/toposort/-/toposort-2.0.2.tgz#ae21768175d1559d48bef35420b2f4962f09c330" +  integrity sha1-riF2gXXRVZ1IvvNUILL0li8JwzA= + +tough-cookie@^2.2.0: +  version "2.5.0" +  resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" +  integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== +  dependencies: +    psl "^1.1.28" +    punycode "^2.1.1" + +tough-cookie@~2.4.3: +  version "2.4.3" +  resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781" +  integrity sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ== +  dependencies: +    psl "^1.1.24" +    punycode "^1.4.1" + +tr46@~0.0.1: +  version "0.0.3" +  resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" +  integrity sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o= + +trim-newlines@^1.0.0: +  version "1.0.0" +  resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" +  integrity sha1-WIeWa7WCpFA6QetST301ARgVphM= + +trim-newlines@^2.0.0: +  version "2.0.0" +  resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-2.0.0.tgz#b403d0b91be50c331dfc4b82eeceb22c3de16d20" +  integrity sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA= + +trim-off-newlines@^1.0.0: +  version "1.0.1" +  resolved "https://registry.yarnpkg.com/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz#9f9ba9d9efa8764c387698bcbfeb2c848f11adb3" +  integrity sha1-n5up2e+odkw4dpi8v+sshI8RrbM= + +trim-trailing-lines@^1.0.0: +  version "1.1.1" +  resolved "https://registry.yarnpkg.com/trim-trailing-lines/-/trim-trailing-lines-1.1.1.tgz#e0ec0810fd3c3f1730516b45f49083caaf2774d9" +  integrity sha512-bWLv9BbWbbd7mlqqs2oQYnLD/U/ZqeJeJwbO0FG2zA1aTq+HTvxfHNKFa/HGCVyJpDiioUYaBhfiT6rgk+l4mg== + +trim@0.0.1: +  version "0.0.1" +  resolved "https://registry.yarnpkg.com/trim/-/trim-0.0.1.tgz#5858547f6b290757ee95cccc666fb50084c460dd" +  integrity sha1-WFhUf2spB1fulczMZm+1AITEYN0= + +trough@^1.0.0: +  version "1.0.3" +  resolved "https://registry.yarnpkg.com/trough/-/trough-1.0.3.tgz#e29bd1614c6458d44869fc28b255ab7857ef7c24" +  integrity sha512-fwkLWH+DimvA4YCy+/nvJd61nWQQ2liO/nF/RjkTpiOGi+zxZzVkhb1mvbHIIW4b/8nDsYI8uTmAlc0nNkRMOw== + +ts-node@^6.0.3: +  version "6.2.0" +  resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-6.2.0.tgz#65a0ae2acce319ea4fd7ac8d7c9f1f90c5da6baf" +  integrity sha512-ZNT+OEGfUNVMGkpIaDJJ44Zq3Yr0bkU/ugN1PHbU+/01Z7UV1fsELRiTx1KuQNvQ1A3pGh3y25iYF6jXgxV21A== +  dependencies: +    arrify "^1.0.0" +    buffer-from "^1.1.0" +    diff "^3.1.0" +    make-error "^1.1.1" +    minimist "^1.2.0" +    mkdirp "^0.5.1" +    source-map-support "^0.5.6" +    yn "^2.0.0" + +tsconfig@^5.0.3: +  version "5.0.3" +  resolved "https://registry.yarnpkg.com/tsconfig/-/tsconfig-5.0.3.tgz#5f4278e701800967a8fc383fd19648878f2a6e3a" +  integrity sha1-X0J45wGACWeo/Dg/0ZZIh48qbjo= +  dependencies: +    any-promise "^1.3.0" +    parse-json "^2.2.0" +    strip-bom "^2.0.0" +    strip-json-comments "^2.0.0" + +tsify@^4.0.1: +  version "4.0.1" +  resolved "https://registry.yarnpkg.com/tsify/-/tsify-4.0.1.tgz#b19b0ddf7f184368dbf65839293d2c5a6d48453d" +  integrity sha512-ClznEI+pmwY5wmD0J7HCSVERwkD+l71ch3Dqyod2JuQLEsFaiNDI+vPjaGadsuVFVvmzgoI7HghrBtWsSmCDHQ== +  dependencies: +    convert-source-map "^1.1.0" +    fs.realpath "^1.0.0" +    object-assign "^4.1.0" +    semver "^5.6.0" +    through2 "^2.0.0" +    tsconfig "^5.0.3" + +tslib@^1.8.1, tslib@^1.9.0: +  version "1.9.3" +  resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286" +  integrity sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ== + +tslint@^4.5.1: +  version "4.5.1" +  resolved "https://registry.yarnpkg.com/tslint/-/tslint-4.5.1.tgz#05356871bef23a434906734006fc188336ba824b" +  integrity sha1-BTVocb7yOkNJBnNABvwYgza6gks= +  dependencies: +    babel-code-frame "^6.20.0" +    colors "^1.1.2" +    diff "^3.0.1" +    findup-sync "~0.3.0" +    glob "^7.1.1" +    optimist "~0.6.0" +    resolve "^1.1.7" +    tsutils "^1.1.0" +    update-notifier "^2.0.0" + +tsutils@^1.1.0: +  version "1.9.1" +  resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-1.9.1.tgz#b9f9ab44e55af9681831d5f28d0aeeaf5c750cb0" +  integrity sha1-ufmrROVa+WgYMdXyjQrur1x1DLA= + +tsutils@^3.7.0: +  version "3.10.0" +  resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.10.0.tgz#6f1c95c94606e098592b0dff06590cf9659227d6" +  integrity sha512-q20XSMq7jutbGB8luhKKsQldRKWvyBO2BGqni3p4yq8Ys9bEP/xQw3KepKmMRt9gJ4lvQSScrihJrcKdKoSU7Q== +  dependencies: +    tslib "^1.8.1" + +tty-browserify@0.0.1: +  version "0.0.1" +  resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.1.tgz#3f05251ee17904dfd0677546670db9651682b811" +  integrity sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw== + +tunnel-agent@^0.6.0: +  version "0.6.0" +  resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" +  integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= +  dependencies: +    safe-buffer "^5.0.1" + +tweetnacl@^0.14.3, tweetnacl@~0.14.0: +  version "0.14.5" +  resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" +  integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= + +type-check@~0.3.2: +  version "0.3.2" +  resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" +  integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= +  dependencies: +    prelude-ls "~1.1.2" + +type-is@~1.6.16: +  version "1.6.18" +  resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" +  integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== +  dependencies: +    media-typer "0.3.0" +    mime-types "~2.1.24" + +typedarray@^0.0.6: +  version "0.0.6" +  resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" +  integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= + +typescript@^2.2.1: +  version "2.9.2" +  resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.9.2.tgz#1cbf61d05d6b96269244eb6a3bce4bd914e0f00c" +  integrity sha512-Gr4p6nFNaoufRIY4NMdpQRNmgxVIGMs4Fcu/ujdYk3nAZqk7supzBE9idmvfZIlH/Cuj//dvi+019qEue9lV0w== + +typescript@~3.3.3333: +  version "3.3.4000" +  resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.3.4000.tgz#76b0f89cfdbf97827e1112d64f283f1151d6adf0" +  integrity sha512-jjOcCZvpkl2+z7JFn0yBOoLQyLoIkNZAs/fYJkUG6VKy6zLPHJGfQJYFHzibB6GJaF/8QrcECtlQ5cpvRHSMEA== + +uc.micro@^1.0.1: +  version "1.0.6" +  resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.6.tgz#9c411a802a409a91fc6cf74081baba34b24499ac" +  integrity sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA== + +uglify-js@^2.6: +  version "2.8.29" +  resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd" +  integrity sha1-KcVzMUgFe7Th913zW3qcty5qWd0= +  dependencies: +    source-map "~0.5.1" +    yargs "~3.10.0" +  optionalDependencies: +    uglify-to-browserify "~1.0.0" + +uglify-js@^3.1.4: +  version "3.5.9" +  resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.5.9.tgz#372fbf95939555b1f460b1777d33a67d4a994ac9" +  integrity sha512-WpT0RqsDtAWPNJK955DEnb6xjymR8Fn0OlK4TT4pS0ASYsVPqr5ELhgwOwLCP5J5vHeJ4xmMmz3DEgdqC10JeQ== +  dependencies: +    commander "~2.20.0" +    source-map "~0.6.1" + +uglify-to-browserify@~1.0.0: +  version "1.0.2" +  resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" +  integrity sha1-bgkk1r2mta/jSeOabWMoUKD4grc= + +umd@^3.0.0: +  version "3.0.3" +  resolved "https://registry.yarnpkg.com/umd/-/umd-3.0.3.tgz#aa9fe653c42b9097678489c01000acb69f0b26cf" +  integrity sha512-4IcGSufhFshvLNcMCV80UnQVlZ5pMOC8mvNPForqwA4+lzYQuetTESLDQkeLmihq8bRcnpbQa48Wb8Lh16/xow== + +undeclared-identifiers@^1.1.2: +  version "1.1.3" +  resolved "https://registry.yarnpkg.com/undeclared-identifiers/-/undeclared-identifiers-1.1.3.tgz#9254c1d37bdac0ac2b52de4b6722792d2a91e30f" +  integrity sha512-pJOW4nxjlmfwKApE4zvxLScM/njmwj/DiUBv7EabwE4O8kRUy+HIwxQtZLBPll/jx1LJyBcqNfB3/cpv9EZwOw== +  dependencies: +    acorn-node "^1.3.0" +    dash-ast "^1.0.0" +    get-assigned-identifiers "^1.2.0" +    simple-concat "^1.0.0" +    xtend "^4.0.1" + +unherit@^1.0.4: +  version "1.1.1" +  resolved "https://registry.yarnpkg.com/unherit/-/unherit-1.1.1.tgz#132748da3e88eab767e08fabfbb89c5e9d28628c" +  integrity sha512-+XZuV691Cn4zHsK0vkKYwBEwB74T3IZIcxrgn2E4rKwTfFyI1zCh7X7grwh9Re08fdPlarIdyWgI8aVB3F5A5g== +  dependencies: +    inherits "^2.0.1" +    xtend "^4.0.1" + +unified-args@^4.0.0: +  version "4.0.0" +  resolved "https://registry.yarnpkg.com/unified-args/-/unified-args-4.0.0.tgz#8d9b9b8ad347beb37f430562a62c4d361b42220f" +  integrity sha1-jZubitNHvrN/QwVipixNNhtCIg8= +  dependencies: +    camelcase "^4.0.0" +    chalk "^2.0.0" +    chokidar "^1.5.1" +    minimist "^1.2.0" +    text-table "^0.2.0" +    unified-engine "^4.0.0" + +unified-engine@^4.0.0: +  version "4.0.1" +  resolved "https://registry.yarnpkg.com/unified-engine/-/unified-engine-4.0.1.tgz#9692aa97fd5c4ec36889779e12514bef8e863fc3" +  integrity sha1-lpKql/1cTsNoiXeeElFL746GP8M= +  dependencies: +    concat-stream "^1.5.1" +    debug "^2.2.0" +    fault "^1.0.0" +    fn-name "^2.0.1" +    glob "^7.0.3" +    ignore "^3.2.0" +    is-empty "^1.0.0" +    is-hidden "^1.0.1" +    is-object "^1.0.1" +    js-yaml "^3.6.1" +    load-plugin "^2.0.0" +    parse-json "^2.2.0" +    to-vfile "^2.0.0" +    trough "^1.0.0" +    vfile-reporter "^4.0.0" +    vfile-statistics "^1.1.0" +    x-is-function "^1.0.4" +    x-is-string "^0.1.0" +    xtend "^4.0.1" + +unified-lint-rule@^1.0.0: +  version "1.0.3" +  resolved "https://registry.yarnpkg.com/unified-lint-rule/-/unified-lint-rule-1.0.3.tgz#e302b0c4a7ac428c0980e049a500e59528001299" +  integrity sha512-6z+HH3mtlFdj/w3MaQpObrZAd9KRiro370GxBFh13qkV8LYR21lLozA4iQiZPhe7KuX/lHewoGOEgQ4AWrAR3Q== +  dependencies: +    wrapped "^1.0.1" + +unified-message-control@^1.0.0: +  version "1.0.4" +  resolved "https://registry.yarnpkg.com/unified-message-control/-/unified-message-control-1.0.4.tgz#a5e02c07112f78c6687b83a10392c2fba86dc09b" +  integrity sha512-e1dEtN4Z/TvLn/qHm+xeZpzqhJTtfZusFErk336kkZVpqrJYiV9ptxq+SbRPFMlN0OkjDYHmVJ929KYjsMTo3g== +  dependencies: +    trim "0.0.1" +    unist-util-visit "^1.0.0" +    vfile-location "^2.0.0" + +unified@^6.0.0: +  version "6.2.0" +  resolved "https://registry.yarnpkg.com/unified/-/unified-6.2.0.tgz#7fbd630f719126d67d40c644b7e3f617035f6dba" +  integrity sha512-1k+KPhlVtqmG99RaTbAv/usu85fcSRu3wY8X+vnsEhIxNP5VbVIDiXnLqyKIG+UMdyTg0ZX9EI6k2AfjJkHPtA== +  dependencies: +    bail "^1.0.0" +    extend "^3.0.0" +    is-plain-obj "^1.1.0" +    trough "^1.0.0" +    vfile "^2.0.0" +    x-is-string "^0.1.0" + +union-value@^1.0.0: +  version "1.0.0" +  resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4" +  integrity sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ= +  dependencies: +    arr-union "^3.1.0" +    get-value "^2.0.6" +    is-extendable "^0.1.1" +    set-value "^0.4.3" + +uniq@^1.0.1: +  version "1.0.1" +  resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" +  integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= + +unique-string@^1.0.0: +  version "1.0.0" +  resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-1.0.0.tgz#9e1057cca851abb93398f8b33ae187b99caec11a" +  integrity sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo= +  dependencies: +    crypto-random-string "^1.0.0" + +unist-util-generated@^1.1.0: +  version "1.1.3" +  resolved "https://registry.yarnpkg.com/unist-util-generated/-/unist-util-generated-1.1.3.tgz#ca650470aef2fbcc5fe54c465bc26b41ca109e2b" +  integrity sha512-qlPeDqnQnd84KIqwphzOR+l02cxjDzvEYEBl84EjmKRrX4eUmjyAo8xJv1SCDhJqNjyHRnBMZWNKAiBtXE6hBg== + +unist-util-is@^2.1.2: +  version "2.1.2" +  resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-2.1.2.tgz#1193fa8f2bfbbb82150633f3a8d2eb9a1c1d55db" +  integrity sha512-YkXBK/H9raAmG7KXck+UUpnKiNmUdB+aBGrknfQ4EreE1banuzrKABx3jP6Z5Z3fMSPMQQmeXBlKpCbMwBkxVw== + +unist-util-position@^3.0.0: +  version "3.0.2" +  resolved "https://registry.yarnpkg.com/unist-util-position/-/unist-util-position-3.0.2.tgz#80ad4a05efc4ab01a66886cc70493893ba73c5eb" +  integrity sha512-npmFu92l/+b1Ao6uGP4I1WFz9hsKv7qleZ4aliw6x0RVu6A9A3tAf57NMpFfzQ02jxRtJZuRn+C8xWT7GWnH0g== + +unist-util-remove-position@^1.0.0: +  version "1.1.2" +  resolved "https://registry.yarnpkg.com/unist-util-remove-position/-/unist-util-remove-position-1.1.2.tgz#86b5dad104d0bbfbeb1db5f5c92f3570575c12cb" +  integrity sha512-XxoNOBvq1WXRKXxgnSYbtCF76TJrRoe5++pD4cCBsssSiWSnPEktyFrFLE8LTk3JW5mt9hB0Sk5zn4x/JeWY7Q== +  dependencies: +    unist-util-visit "^1.1.0" + +unist-util-stringify-position@^1.0.0, unist-util-stringify-position@^1.1.1, unist-util-stringify-position@^1.1.2: +  version "1.1.2" +  resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-1.1.2.tgz#3f37fcf351279dcbca7480ab5889bb8a832ee1c6" +  integrity sha512-pNCVrk64LZv1kElr0N1wPiHEUoXNVFERp+mlTg/s9R5Lwg87f9bM/3sQB99w+N9D/qnM9ar3+AKDBwo/gm/iQQ== + +unist-util-visit-parents@^2.0.0: +  version "2.0.1" +  resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-2.0.1.tgz#63fffc8929027bee04bfef7d2cce474f71cb6217" +  integrity sha512-6B0UTiMfdWql4cQ03gDTCSns+64Zkfo2OCbK31Ov0uMizEz+CJeAp0cgZVb5Fhmcd7Bct2iRNywejT0orpbqUA== +  dependencies: +    unist-util-is "^2.1.2" + +unist-util-visit@^1.0.0, unist-util-visit@^1.1.0, unist-util-visit@^1.1.1, unist-util-visit@^1.4.0: +  version "1.4.0" +  resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-1.4.0.tgz#1cb763647186dc26f5e1df5db6bd1e48b3cc2fb1" +  integrity sha512-FiGu34ziNsZA3ZUteZxSFaczIjGmksfSgdKqBfOejrrfzyUy5b7YrlzT1Bcvi+djkYDituJDy2XB7tGTeBieKw== +  dependencies: +    unist-util-visit-parents "^2.0.0" + +universal-user-agent@^2.0.0, universal-user-agent@^2.0.1: +  version "2.0.3" +  resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-2.0.3.tgz#9f6f09f9cc33de867bb720d84c08069b14937c6c" +  integrity sha512-eRHEHhChCBHrZsA4WEhdgiOKgdvgrMIHwnwnqD0r5C6AO8kwKcG7qSku3iXdhvHL3YvsS9ZkSGN8h/hIpoFC8g== +  dependencies: +    os-name "^3.0.0" + +universalify@^0.1.0: +  version "0.1.2" +  resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" +  integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== + +unpipe@1.0.0, unpipe@~1.0.0: +  version "1.0.0" +  resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" +  integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= + +unset-value@^1.0.0: +  version "1.0.0" +  resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" +  integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= +  dependencies: +    has-value "^0.3.1" +    isobject "^3.0.0" + +untildify@^2.1.0: +  version "2.1.0" +  resolved "https://registry.yarnpkg.com/untildify/-/untildify-2.1.0.tgz#17eb2807987f76952e9c0485fc311d06a826a2e0" +  integrity sha1-F+soB5h/dpUunASF/DEdBqgmouA= +  dependencies: +    os-homedir "^1.0.0" + +unzip-response@^2.0.1: +  version "2.0.1" +  resolved "https://registry.yarnpkg.com/unzip-response/-/unzip-response-2.0.1.tgz#d2f0f737d16b0615e72a6935ed04214572d56f97" +  integrity sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c= + +update-check@1.5.1: +  version "1.5.1" +  resolved "https://registry.yarnpkg.com/update-check/-/update-check-1.5.1.tgz#24fc52266273cb8684d2f1bf9687c0e52dcf709f" +  integrity sha512-M3rjq5KwSrWZrm2GVPIQIF+NXpIn5I9mIV67gGoydptQvzRjLp9ZbM6ctFJeNuaWSm5+mNP7aInELjSiLcIw6A== +  dependencies: +    registry-auth-token "3.3.2" +    registry-url "3.1.0" + +update-notifier@^2.0.0: +  version "2.5.0" +  resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-2.5.0.tgz#d0744593e13f161e406acb1d9408b72cad08aff6" +  integrity sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw== +  dependencies: +    boxen "^1.2.1" +    chalk "^2.0.1" +    configstore "^3.0.0" +    import-lazy "^2.1.0" +    is-ci "^1.0.10" +    is-installed-globally "^0.1.0" +    is-npm "^1.0.0" +    latest-version "^3.0.0" +    semver-diff "^2.0.0" +    xdg-basedir "^3.0.0" + +uri-js@^4.2.2: +  version "4.2.2" +  resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" +  integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== +  dependencies: +    punycode "^2.1.0" + +urix@^0.1.0: +  version "0.1.0" +  resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" +  integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= + +url-parse-lax@^1.0.0: +  version "1.0.0" +  resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73" +  integrity sha1-evjzA2Rem9eaJy56FKxovAYJ2nM= +  dependencies: +    prepend-http "^1.0.1" + +url-template@^2.0.8: +  version "2.0.8" +  resolved "https://registry.yarnpkg.com/url-template/-/url-template-2.0.8.tgz#fc565a3cccbff7730c775f5641f9555791439f21" +  integrity sha1-/FZaPMy/93MMd19WQflVV5FDnyE= + +url@~0.11.0: +  version "0.11.0" +  resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" +  integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE= +  dependencies: +    punycode "1.3.2" +    querystring "0.2.0" + +use@^3.1.0: +  version "3.1.1" +  resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" +  integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== + +util-deprecate@^1.0.1, util-deprecate@~1.0.1: +  version "1.0.2" +  resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" +  integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= + +util@0.10.3: +  version "0.10.3" +  resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" +  integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk= +  dependencies: +    inherits "2.0.1" + +util@~0.10.1: +  version "0.10.4" +  resolved "https://registry.yarnpkg.com/util/-/util-0.10.4.tgz#3aa0125bfe668a4672de58857d3ace27ecb76901" +  integrity sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A== +  dependencies: +    inherits "2.0.3" + +utils-merge@1.0.1: +  version "1.0.1" +  resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" +  integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= + +uuid@^2.0.1: +  version "2.0.3" +  resolved "https://registry.yarnpkg.com/uuid/-/uuid-2.0.3.tgz#67e2e863797215530dff318e5bf9dcebfd47b21a" +  integrity sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho= + +uuid@^3.3.2: +  version "3.3.2" +  resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" +  integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA== + +validate-npm-package-license@^3.0.1: +  version "3.0.4" +  resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" +  integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== +  dependencies: +    spdx-correct "^3.0.0" +    spdx-expression-parse "^3.0.0" + +vary@~1.1.2: +  version "1.1.2" +  resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" +  integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= + +verror@1.10.0: +  version "1.10.0" +  resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" +  integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= +  dependencies: +    assert-plus "^1.0.0" +    core-util-is "1.0.2" +    extsprintf "^1.2.0" + +vfile-location@^2.0.0, vfile-location@^2.0.1: +  version "2.0.4" +  resolved "https://registry.yarnpkg.com/vfile-location/-/vfile-location-2.0.4.tgz#2a5e7297dd0d9e2da4381464d04acc6b834d3e55" +  integrity sha512-KRL5uXQPoUKu+NGvQVL4XLORw45W62v4U4gxJ3vRlDfI9QsT4ZN1PNXn/zQpKUulqGDpYuT0XDfp5q9O87/y/w== + +vfile-message@^1.0.0: +  version "1.1.1" +  resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-1.1.1.tgz#5833ae078a1dfa2d96e9647886cd32993ab313e1" +  integrity sha512-1WmsopSGhWt5laNir+633LszXvZ+Z/lxveBf6yhGsqnQIhlhzooZae7zV6YVM1Sdkw68dtAW3ow0pOdPANugvA== +  dependencies: +    unist-util-stringify-position "^1.1.1" + +vfile-reporter@^4.0.0: +  version "4.0.0" +  resolved "https://registry.yarnpkg.com/vfile-reporter/-/vfile-reporter-4.0.0.tgz#ea6f0ae1342f4841573985e05f941736f27de9da" +  integrity sha1-6m8K4TQvSEFXOYXgX5QXNvJ96do= +  dependencies: +    repeat-string "^1.5.0" +    string-width "^1.0.0" +    supports-color "^4.1.0" +    unist-util-stringify-position "^1.0.0" +    vfile-statistics "^1.1.0" + +vfile-statistics@^1.1.0: +  version "1.1.2" +  resolved "https://registry.yarnpkg.com/vfile-statistics/-/vfile-statistics-1.1.2.tgz#c50132627e4669a3afa07c64ff1e7aa7695e8151" +  integrity sha512-16wAC9eEGXdsD35LX9m/iXCRIZyX5LIrDgDtAF92rbATSqsBRbC4n05e0Rj5vt3XRpcKu0UJeWnTxWsSyvNZ+w== + +vfile@^2.0.0: +  version "2.3.0" +  resolved "https://registry.yarnpkg.com/vfile/-/vfile-2.3.0.tgz#e62d8e72b20e83c324bc6c67278ee272488bf84a" +  integrity sha512-ASt4mBUHcTpMKD/l5Q+WJXNtshlWxOogYyGYYrg4lt/vuRjC1EFQtlAofL5VmtVNIZJzWYFJjzGWZ0Gw8pzW1w== +  dependencies: +    is-buffer "^1.1.4" +    replace-ext "1.0.0" +    unist-util-stringify-position "^1.0.0" +    vfile-message "^1.0.0" + +vm-browserify@^1.0.0: +  version "1.1.0" +  resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.0.tgz#bd76d6a23323e2ca8ffa12028dc04559c75f9019" +  integrity sha512-iq+S7vZJE60yejDYM0ek6zg308+UZsdtPExWP9VZoCFCz1zkJoXFnAX7aZfd/ZwrkidzdUZL0C/ryW+JwAiIGw== + +walk-sync@^0.3.2: +  version "0.3.4" +  resolved "https://registry.yarnpkg.com/walk-sync/-/walk-sync-0.3.4.tgz#cf78486cc567d3a96b5b2237c6108017a5ffb9a4" +  integrity sha512-ttGcuHA/OBnN2pcM6johpYlEms7XpO5/fyKIr48541xXedan4roO8cS1Q2S/zbbjGH/BarYDAMeS2Mi9HE5Tig== +  dependencies: +    ensure-posix-path "^1.0.0" +    matcher-collection "^1.0.0" + +wcwidth@^1.0.1: +  version "1.0.1" +  resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" +  integrity sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g= +  dependencies: +    defaults "^1.0.3" + +webidl-conversions@^2.0.0: +  version "2.0.1" +  resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-2.0.1.tgz#3bf8258f7d318c7443c36f2e169402a1a6703506" +  integrity sha1-O/glj30xjHRDw28uFpQCoaZwNQY= + +whatwg-url-compat@~0.6.5: +  version "0.6.5" +  resolved "https://registry.yarnpkg.com/whatwg-url-compat/-/whatwg-url-compat-0.6.5.tgz#00898111af689bb097541cd5a45ca6c8798445bf" +  integrity sha1-AImBEa9om7CXVBzVpFymyHmERb8= +  dependencies: +    tr46 "~0.0.1" + +which@^1.2.10, which@^1.2.9: +  version "1.3.1" +  resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" +  integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== +  dependencies: +    isexe "^2.0.0" + +wide-align@^1.1.0: +  version "1.1.3" +  resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" +  integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== +  dependencies: +    string-width "^1.0.2 || 2" + +widest-line@^2.0.0: +  version "2.0.1" +  resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-2.0.1.tgz#7438764730ec7ef4381ce4df82fb98a53142a3fc" +  integrity sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA== +  dependencies: +    string-width "^2.1.1" + +window-size@0.1.0: +  version "0.1.0" +  resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" +  integrity sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0= + +windows-release@^3.1.0: +  version "3.2.0" +  resolved "https://registry.yarnpkg.com/windows-release/-/windows-release-3.2.0.tgz#8122dad5afc303d833422380680a79cdfa91785f" +  integrity sha512-QTlz2hKLrdqukrsapKsINzqMgOUpQW268eJ0OaOpJN32h272waxR9fkB9VoWRtK7uKHG5EHJcTXQBD8XZVJkFA== +  dependencies: +    execa "^1.0.0" + +wordwrap@0.0.2: +  version "0.0.2" +  resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" +  integrity sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8= + +wordwrap@~0.0.2: +  version "0.0.3" +  resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" +  integrity sha1-o9XabNXAvAAI03I0u68b7WMFkQc= + +wordwrap@~1.0.0: +  version "1.0.0" +  resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" +  integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= + +wrap-ansi@^3.0.1: +  version "3.0.1" +  resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-3.0.1.tgz#288a04d87eda5c286e060dfe8f135ce8d007f8ba" +  integrity sha1-KIoE2H7aXChuBg3+jxNc6NAH+Lo= +  dependencies: +    string-width "^2.1.1" +    strip-ansi "^4.0.0" + +wrapped@^1.0.1: +  version "1.0.1" +  resolved "https://registry.yarnpkg.com/wrapped/-/wrapped-1.0.1.tgz#c783d9d807b273e9b01e851680a938c87c907242" +  integrity sha1-x4PZ2Aeyc+mwHoUWgKk4yHyQckI= +  dependencies: +    co "3.1.0" +    sliced "^1.0.1" + +wrappy@1: +  version "1.0.2" +  resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" +  integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + +write-file-atomic@^2.0.0: +  version "2.4.2" +  resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.2.tgz#a7181706dfba17855d221140a9c06e15fcdd87b9" +  integrity sha512-s0b6vB3xIVRLWywa6X9TOMA7k9zio0TMOsl9ZnDkliA/cfJlpHXAscj0gbHVJiTdIuAYpIyqS5GW91fqm6gG5g== +  dependencies: +    graceful-fs "^4.1.11" +    imurmurhash "^0.1.4" +    signal-exit "^3.0.2" + +write@1.0.3: +  version "1.0.3" +  resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3" +  integrity sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig== +  dependencies: +    mkdirp "^0.5.1" + +write@^0.2.1: +  version "0.2.1" +  resolved "https://registry.yarnpkg.com/write/-/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757" +  integrity sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c= +  dependencies: +    mkdirp "^0.5.1" + +x-is-function@^1.0.4: +  version "1.0.4" +  resolved "https://registry.yarnpkg.com/x-is-function/-/x-is-function-1.0.4.tgz#5d294dc3d268cbdd062580e0c5df77a391d1fa1e" +  integrity sha1-XSlNw9Joy90GJYDgxd93o5HR+h4= + +x-is-string@^0.1.0: +  version "0.1.0" +  resolved "https://registry.yarnpkg.com/x-is-string/-/x-is-string-0.1.0.tgz#474b50865af3a49a9c4657f05acd145458f77d82" +  integrity sha1-R0tQhlrzpJqcRlfwWs0UVFj3fYI= + +xdg-basedir@^3.0.0: +  version "3.0.0" +  resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-3.0.0.tgz#496b2cc109eca8dbacfe2dc72b603c17c5870ad4" +  integrity sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ= + +"xml-name-validator@>= 2.0.1 < 3.0.0": +  version "2.0.1" +  resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-2.0.1.tgz#4d8b8f1eccd3419aa362061becef515e1e559635" +  integrity sha1-TYuPHszTQZqjYgYb7O9RXh5VljU= + +xmlbuilder@^9.0.7: +  version "9.0.7" +  resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-9.0.7.tgz#132ee63d2ec5565c557e20f4c22df9aca686b10d" +  integrity sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0= + +xmldom@0.1.x: +  version "0.1.27" +  resolved "https://registry.yarnpkg.com/xmldom/-/xmldom-0.1.27.tgz#d501f97b3bdb403af8ef9ecc20573187aadac0e9" +  integrity sha1-1QH5ezvbQDr4757MIFcxh6rawOk= + +xregexp@4.0.0: +  version "4.0.0" +  resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-4.0.0.tgz#e698189de49dd2a18cc5687b05e17c8e43943020" +  integrity sha512-PHyM+sQouu7xspQQwELlGwwd05mXUFqwFYfqPO0cC7x4fxyHnnuetmQr6CjJiafIDoH4MogHb9dOoJzR/Y4rFg== + +xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.1: +  version "4.0.1" +  resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" +  integrity sha1-pcbVMr5lbiPbgg77lDofBJmNY68= + +xtend@~2.1.1: +  version "2.1.2" +  resolved "https://registry.yarnpkg.com/xtend/-/xtend-2.1.2.tgz#6efecc2a4dad8e6962c4901b337ce7ba87b5d28b" +  integrity sha1-bv7MKk2tjmlixJAbM3znuoe10os= +  dependencies: +    object-keys "~0.4.0" + +yallist@^2.1.2: +  version "2.1.2" +  resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" +  integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= + +yallist@^3.0.0, yallist@^3.0.2: +  version "3.0.3" +  resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.3.tgz#b4b049e314be545e3ce802236d6cd22cd91c3de9" +  integrity sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A== + +yargs@~3.10.0: +  version "3.10.0" +  resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1" +  integrity sha1-9+572FfdfB0tOMDnTvvWgdFDH9E= +  dependencies: +    camelcase "^1.0.2" +    cliui "^2.1.0" +    decamelize "^1.0.0" +    window-size "0.1.0" + +yn@^2.0.0: +  version "2.0.0" +  resolved "https://registry.yarnpkg.com/yn/-/yn-2.0.0.tgz#e5adabc8acf408f6385fc76495684c88e6af689a" +  integrity sha1-5a2ryKz0CPY4X8dklWhMiOavaJo= + +yup@^0.26.10: +  version "0.26.10" +  resolved "https://registry.yarnpkg.com/yup/-/yup-0.26.10.tgz#3545839663289038faf25facfc07e11fd67c0cb1" +  integrity sha512-keuNEbNSnsOTOuGCt3UJW69jDE3O4P+UHAakO7vSeFMnjaitcmlbij/a3oNb9g1Y1KvSKH/7O1R2PQ4m4TRylw== +  dependencies: +    "@babel/runtime" "7.0.0" +    fn-name "~2.0.1" +    lodash "^4.17.10" +    property-expr "^1.5.0" +    synchronous-promise "^2.0.5" +    toposort "^2.0.2"  | 
