diff options
Diffstat (limited to 'infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/chromium')
6 files changed, 206 insertions, 133 deletions
diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/chromium/README.md b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/chromium/README.md new file mode 100644 index 000000000000..8e4eae75f960 --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/chromium/README.md @@ -0,0 +1,69 @@ +# Maintainers + +- TODO: We need more maintainers: + - https://github.com/NixOS/nixpkgs/issues/78450 + - If you just want to help out without becoming a maintainer: + - Look for open Nixpkgs issues or PRs related to Chromium + - Make your own PRs (but please try to make reviews as easy as possible) +- Primary maintainer (responsible for updating Chromium): @primeos +- Testers (test all stable channel updates) + - `nixos-unstable`: + - `x86_64`: @danielfullmer + - `aarch64`: @thefloweringash + - Stable channel: + - `x86_64`: @Frostman +- Other relevant packages: + - `chromiumBeta` and `chromiumDev`: For testing purposes (not build on Hydra) + - `google-chrome`, `google-chrome-beta`, `google-chrome-dev`: Updated via + Chromium's `upstream-info.json` + - `ungoogled-chromium`: Based on `chromium` (the expressions are regularly + copied over and patched accordingly) + +# Upstream links + +- Source code: https://source.chromium.org/chromium/chromium/src +- Bugs: https://bugs.chromium.org/p/chromium/issues/list +- Release updates: https://chromereleases.googleblog.com/ + - Available as Atom or RSS feed (filter for + "Stable Channel Update for Desktop") + - Channel overview: https://omahaproxy.appspot.com/ + - Release schedule: https://chromiumdash.appspot.com/schedule + +# Updating Chromium + +Simply run `./pkgs/applications/networking/browsers/chromium/update.py` to +update `upstream-info.json`. After updates it is important to test at least +`nixosTests.chromium` (or basic manual testing) and `google-chrome` (which +reuses `upstream-info.json`). + +After updating, please also update pkgs/development/tools/selenium/chromedriver/default.nix +to a matching version. + +## Backports + +All updates are considered security critical and should be ported to the stable +channel ASAP. When there is a new stable release the old one should receive +security updates for roughly one month. After that it is important to mark +Chromium as insecure (see 69e4ae56c4b for an example; it is important that the +tested job still succeeds and that all browsers that use `upstream-info.json` +are marked as insecure). + +## Major version updates + +Unfortunately, Chromium regularly breaks on major updates and might need +various patches. Either due to issues with the Nix build sandbox (e.g. we cannot +fetch dependencies via the network and do not use standard FHS paths) or due to +missing upstream fixes that need to be backported. + +Good sources for such patches and other hints: +- https://github.com/archlinux/svntogit-packages/tree/packages/chromium/trunk +- https://gitweb.gentoo.org/repo/gentoo.git/tree/www-client/chromium +- https://src.fedoraproject.org/rpms/chromium/tree/master + +If the build fails immediately due to unknown compiler flags this usually means +that a new major release of LLVM is required. + +## Beta and Dev channels + +Those channels are only used to test and fix builds in advance. They may be +broken at times and must not delay stable channel updates. diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/chromium/browser.nix b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/chromium/browser.nix index 3d87325984b4..d3953da71d28 100644 --- a/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/chromium/browser.nix +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/chromium/browser.nix @@ -77,18 +77,10 @@ mkChromiumDerivation (base: rec { of source code for Google Chrome (which has some additional features). ''; homepage = "https://www.chromium.org/"; - maintainers = with maintainers; [ bendlas thefloweringash primeos ]; - # Overview of the maintainer roles: - # nixos-unstable: - # - TODO: Need a new maintainer for x86_64 [0] - # - @thefloweringash: aarch64 - # - @primeos: Provisional maintainer (x86_64) - # Stable channel: - # - TODO (need someone to test backports [0]) - # [0]: https://github.com/NixOS/nixpkgs/issues/78450 + maintainers = with maintainers; [ primeos thefloweringash bendlas ]; # See README.md license = if enableWideVine then licenses.unfree else licenses.bsd3; platforms = platforms.linux; hydraPlatforms = if channel == "stable" then ["aarch64-linux" "x86_64-linux"] else []; - timeout = 172800; # 48 hours + timeout = 172800; # 48 hours (increased from the Hydra default of 10h) }; }) diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/chromium/common.nix b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/chromium/common.nix index ed5a8a715564..0c16d0c9ec60 100644 --- a/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/chromium/common.nix +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/chromium/common.nix @@ -5,11 +5,11 @@ , libevent, expat, libjpeg, snappy , libpng, libcap , xdg_utils, yasm, nasm, minizip, libwebp -, libusb1, pciutils, nss, re2, zlib +, libusb1, pciutils, nss, re2 , python2Packages, perl, pkgconfig , nspr, systemd, kerberos -, utillinux, alsaLib +, util-linux, alsaLib , bison, gperf , glib, gtk3, dbus-glib , glibc @@ -18,20 +18,14 @@ , ffmpeg, libxslt, libxml2, at-spi2-core , jre8 , pipewire_0_2 +, libva # optional dependencies , libgcrypt ? null # gnomeSupport || cupsSupport -, libva ? null # useVaapi -, libdrm ? null, wayland ? null, mesa_drivers ? null, libxkbcommon ? null # useOzone +, libdrm ? null, wayland ? null, mesa ? null, libxkbcommon ? null # useOzone # package customization -, useOzone ? false -, useVaapi ? !(useOzone || stdenv.isAarch64) # Built if supported, but disabled in the wrapper -# VA-API TODOs: -# - Ozone: M81 fails to build due to "ozone_platform_gbm = false" -# - Possible solutions: Write a patch to fix the build (wrong gn dependencies) -# or build with minigbm -# - AArch64: Causes serious regressions (https://github.com/NixOS/nixpkgs/pull/85253#issuecomment-614405879) +, useOzone ? true , gnomeSupport ? false, gnome ? null , gnomeKeyringSupport ? false, libgnome-keyring3 ? null , proprietaryCodecs ? true @@ -46,8 +40,6 @@ buildFun: with stdenv.lib; -# see http://www.linuxfromscratch.org/blfs/view/cvs/xsoft/chromium.html - let jre = jre8; # TODO: remove override https://github.com/NixOS/nixpkgs/pull/89731 @@ -63,7 +55,7 @@ let mkGnFlags = let # Serialize Nix types into GN types according to this document: - # https://chromium.googlesource.com/chromium/src/+/master/tools/gn/docs/language.md + # https://source.chromium.org/gn/gn/+/master:docs/language.md mkGnString = value: "\"${escape ["\"" "$" "\\"] value}\""; sanitize = value: if value == true then "true" @@ -75,6 +67,7 @@ let toFlag = key: value: "${key}=${sanitize value}"; in attrs: concatStringsSep " " (attrValues (mapAttrs toFlag attrs)); + # https://source.chromium.org/chromium/chromium/src/+/master:build/linux/unbundle/replace_gn_files.py gnSystemLibraries = [ "ffmpeg" "flac" @@ -85,9 +78,6 @@ let "opus" "snappy" "zlib" - # "re2" # fails with linker errors - # "harfbuzz-ng" # in versions over 63 harfbuzz and freetype are being built together - # so we can't build with one from system and other from source ]; opusWithCustomModes = libopus.override { @@ -99,11 +89,9 @@ let libevent expat libjpeg snappy libpng libcap xdg_utils minizip libwebp - libusb1 re2 zlib + libusb1 re2 ffmpeg libxslt libxml2 nasm - # harfbuzz # in versions over 63 harfbuzz and freetype are being built together - # so we can't build with one from system and other from source ]; # build paths and release info @@ -132,6 +120,7 @@ let }; nativeBuildInputs = [ + llvmPackages.lldClang.bintools ninja which python2Packages.python perl pkgconfig python2Packages.ply python2Packages.jinja2 nodejs gnutar python2Packages.setuptools @@ -139,43 +128,45 @@ let buildInputs = defaultDependencies ++ [ nspr nss systemd - utillinux alsaLib + util-linux alsaLib bison gperf kerberos glib gtk3 dbus-glib libXScrnSaver libXcursor libXtst libGLU libGL pciutils protobuf speechd libXdamage at-spi2-core jre pipewire_0_2 - ] ++ optional useVaapi libva - ++ optional gnomeKeyringSupport libgnome-keyring3 + libva + ] ++ optional gnomeKeyringSupport libgnome-keyring3 ++ optionals gnomeSupport [ gnome.GConf libgcrypt ] ++ optionals cupsSupport [ libgcrypt cups ] ++ optional pulseSupport libpulseaudio - ++ optionals useOzone [ libdrm wayland mesa_drivers libxkbcommon ]; + ++ optionals useOzone [ libdrm wayland mesa.drivers libxkbcommon ]; patches = [ - ./patches/no-build-timestamps.patch - ./patches/widevine-79.patch - # Unfortunately, chromium regularly breaks on major updates and - # then needs various patches backported in order to be compiled with GCC. - # Good sources for such patches and other hints: - # - https://gitweb.gentoo.org/repo/gentoo.git/plain/www-client/chromium/ - # - https://git.archlinux.org/svntogit/packages.git/tree/trunk?h=packages/chromium - # - https://github.com/chromium/chromium/search?q=GCC&s=committer-date&type=Commits - # - # ++ optionals (channel == "dev") [ ( githubPatch "<patch>" "0000000000000000000000000000000000000000000000000000000000000000" ) ] + ./patches/no-build-timestamps.patch # Optional patch to use SOURCE_DATE_EPOCH in compute_build_timestamp.py (should be upstreamed) + ./patches/widevine-79.patch # For bundling Widevine (DRM), might be replaceable via bundle_widevine_cdm=true in gnFlags # ++ optional (versionRange "68" "72") ( githubPatch "<patch>" "0000000000000000000000000000000000000000000000000000000000000000" ) - ] ++ optionals (useVaapi) [ - # Check for enable-accelerated-video-decode on Linux: - (githubPatch "54deb9811ca9bd2327def5c05ba6987b8c7a0897" "11jvxjlkzz1hm0pvfyr88j7z3zbwzplyl5idkx92l2lzv4459c8d") ]; postPatch = '' + # remove unused third-party + for lib in ${toString gnSystemLibraries}; do + if [ -d "third_party/$lib" ]; then + find "third_party/$lib" -type f \ + \! -path "third_party/$lib/chromium/*" \ + \! -path "third_party/$lib/google/*" \ + \! -path "third_party/harfbuzz-ng/utils/hb_scoped.h" \ + \! -regex '.*\.\(gn\|gni\|isolate\)' \ + -delete + fi + done + # Required for patchShebangs (unsupported interpreter directive, basename: invalid option -- '*', etc.): - substituteInPlace native_client/SConstruct \ - --replace "#! -*- python -*-" "" - substituteInPlace third_party/harfbuzz-ng/src/src/update-unicode-tables.make \ - --replace "/usr/bin/env -S make -f" "/usr/bin/make -f" + substituteInPlace native_client/SConstruct --replace "#! -*- python -*-" "" + if [ -e third_party/harfbuzz-ng/src/src/update-unicode-tables.make ]; then + substituteInPlace third_party/harfbuzz-ng/src/src/update-unicode-tables.make \ + --replace "/usr/bin/env -S make -f" "/usr/bin/make -f" + fi # We want to be able to specify where the sandbox is via CHROME_DEVEL_SANDBOX substituteInPlace sandbox/linux/suid/client/setuid_sandbox_host.cc \ @@ -203,51 +194,28 @@ let sed -i -e '/libpci_loader.*Load/s!"\(libpci\.so\)!"${pciutils}/lib/\1!' \ gpu/config/gpu_info_collector_linux.cc - sed -i -re 's/([^:])\<(isnan *\()/\1std::\2/g' \ - chrome/browser/ui/webui/engagement/site_engagement_ui.cc - - sed -i -e '/#include/ { - i #include <algorithm> - :l; n; bl - }' gpu/config/gpu_control_list.cc - # Allow to put extensions into the system-path. sed -i -e 's,/usr,/run/current-system/sw,' chrome/common/chrome_paths.cc patchShebangs . # use our own nodejs mkdir -p third_party/node/linux/node-linux-x64/bin - ln -s $(which node) third_party/node/linux/node-linux-x64/bin/node + ln -s "$(command -v node)" third_party/node/linux/node-linux-x64/bin/node + + # Allow building against system libraries in official builds + sed -i 's/OFFICIAL_BUILD/GOOGLE_CHROME_BUILD/' tools/generate_shim_headers/generate_shim_headers.py - # remove unused third-party - # in third_party/crashpad third_party/zlib contains just a header-adapter - for lib in ${toString gnSystemLibraries}; do - find -type f -path "*third_party/$lib/*" \ - \! -path "*third_party/crashpad/crashpad/third_party/zlib/*" \ - \! -path "*third_party/$lib/chromium/*" \ - \! -path "*third_party/$lib/google/*" \ - \! -path "*base/third_party/icu/*" \ - \! -path "*base/third_party/libevent/*" \ - \! -regex '.*\.\(gn\|gni\|isolate\|py\)' \ - -delete - done '' + optionalString stdenv.isAarch64 '' substituteInPlace build/toolchain/linux/BUILD.gn \ --replace 'toolprefix = "aarch64-linux-gnu-"' 'toolprefix = ""' - '' + optionalString stdenv.cc.isClang '' - mkdir -p third_party/llvm-build/Release+Asserts/bin - ln -s ${stdenv.cc}/bin/clang third_party/llvm-build/Release+Asserts/bin/clang - ln -s ${stdenv.cc}/bin/clang++ third_party/llvm-build/Release+Asserts/bin/clang++ - ln -s ${llvmPackages.llvm}/bin/llvm-ar third_party/llvm-build/Release+Asserts/bin/llvm-ar ''; gnFlags = mkGnFlags ({ - use_lld = false; - use_gold = stdenv.buildPlatform.is64bit; # ld.gold outs-of-memory on i686 - gold_path = "${stdenv.cc}/bin"; - is_debug = false; + custom_toolchain = "//build/toolchain/linux/unbundle:default"; + host_toolchain = "//build/toolchain/linux/unbundle:default"; + is_official_build = true; - proprietary_codecs = false; + use_vaapi = !stdenv.isAarch64; # TODO: Remove once M88 is released use_sysroot = false; use_gnome_keyring = gnomeKeyringSupport; use_gio = gnomeSupport; @@ -263,7 +231,6 @@ let rtc_use_pipewire = true; treat_warnings_as_errors = false; - is_clang = stdenv.cc.isClang; clang_use_chrome_plugins = false; blink_symbol_level = 0; symbol_level = 0; @@ -281,14 +248,11 @@ let proprietary_codecs = true; enable_hangout_services_extension = true; ffmpeg_branding = "Chrome"; - } // optionalAttrs useVaapi { - use_vaapi = true; } // optionalAttrs pulseSupport { use_pulseaudio = true; link_pulseaudio = true; } // optionalAttrs useOzone { use_ozone = true; - ozone_platform_gbm = false; use_xkbcommon = true; use_glib = true; use_gtk = true; @@ -303,8 +267,7 @@ let # This is to ensure expansion of $out. libExecPath="${libExecPath}" - python build/linux/unbundle/replace_gn_files.py \ - --system-libraries ${toString gnSystemLibraries} + python build/linux/unbundle/replace_gn_files.py --system-libraries ${toString gnSystemLibraries} ${gnChromium}/bin/gn gen --args=${escapeShellArg gnFlags} out/Release | tee gn-gen-outputs.txt # Fail if `gn gen` contains a WARNING. @@ -319,15 +282,8 @@ let NIX_CFLAGS_COMPILE = "-Wno-unknown-warning-option"; buildPhase = let - # Build paralelism: on Hydra the build was frequently running into memory - # exhaustion, and even other users might be running into similar issues. - # -j is halved to avoid memory problems, and -l is slightly increased - # so that the build gets slight preference before others - # (it will often be on "critical path" and at risk of timing out) buildCommand = target: '' - ninja -C "${buildPath}" \ - -j$(( ($NIX_BUILD_CORES+1) / 2 )) -l$(( $NIX_BUILD_CORES+1 )) \ - "${target}" + ninja -C "${buildPath}" -j$NIX_BUILD_CORES -l$NIX_BUILD_CORES "${target}" ( source chrome/installer/linux/common/installer.include PACKAGE=$packageName @@ -346,7 +302,12 @@ let patchelf --set-rpath "${libGL}/lib:$origRpath" "$chromiumBinary" ''; - passthru.updateScript = ./update.py; + passthru = { + updateScript = ./update.py; + chromiumDeps = { + gn = gnChromium; + }; + }; }; # Remove some extraAttrs we supplied to the base attributes already. diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/chromium/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/chromium/default.nix index e4bde5122270..e35e4d945dde 100644 --- a/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/chromium/default.nix +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/chromium/default.nix @@ -14,9 +14,7 @@ , proprietaryCodecs ? true , enablePepperFlash ? false , enableWideVine ? false -, useVaapi ? false # Deprecated, use enableVaapi instead! , enableVaapi ? false # Disabled by default due to unofficial support -, useOzone ? false , cupsSupport ? true , pulseSupport ? config.pulseaudio or stdenv.isLinux , commandLineArgs ? "" @@ -35,24 +33,11 @@ let mkChromiumDerivation = callPackage ./common.nix ({ inherit channel gnome gnomeSupport gnomeKeyringSupport proprietaryCodecs - cupsSupport pulseSupport useOzone; - # TODO: Remove after we can update gn for the stable channel (backward incompatible changes): + cupsSupport pulseSupport; gnChromium = gn.overrideAttrs (oldAttrs: { - version = "2020-07-20"; + inherit (upstream-info.deps.gn) version; src = fetchgit { - url = "https://gn.googlesource.com/gn"; - rev = "3028c6a426a4aaf6da91c4ebafe716ae370225fe"; - sha256 = "0h3wf4152zdvrbb0jbj49q6814lfl3rcy5mj8b2pl9s0ahvkbc6q"; - }; - }); - } // lib.optionalAttrs (lib.versionAtLeast upstream-info.version "87") { - useOzone = true; # YAY: https://chromium-review.googlesource.com/c/chromium/src/+/2382834 \o/ - gnChromium = gn.overrideAttrs (oldAttrs: { - version = "2020-08-17"; - src = fetchgit { - url = "https://gn.googlesource.com/gn"; - rev = "6f13aaac55a977e1948910942675c69f2b4f7a94"; - sha256 = "01hpma1sllpdx09mvr4d6073sg6zmk6iv44kd3r28khymcj4s251"; + inherit (upstream-info.deps.gn) url rev sha256; }; }); }); @@ -147,13 +132,6 @@ let '' else browser; - optionalVaapiFlags = if useVaapi # TODO: Remove after 20.09: - then throw '' - Chromium's useVaapi was replaced by enableVaapi and you don't need to pass - "--ignore-gpu-blacklist" anymore (also no rebuilds are required anymore). - '' else lib.optionalString - (enableVaapi) - "--add-flags --enable-accelerated-video-decode"; in stdenv.mkDerivation { name = "chromium${suffix}-${version}"; inherit version; @@ -180,7 +158,7 @@ in stdenv.mkDerivation { eval makeWrapper "${browserBinary}" "$out/bin/chromium" \ --add-flags ${escapeShellArg (escapeShellArg commandLineArgs)} \ - ${optionalVaapiFlags} \ + ${lib.optionalString enableVaapi "--add-flags --enable-accelerated-video-decode"} \ ${concatMapStringsSep " " getWrapperFlags chromium.plugins.enabled} ed -v -s "$out/bin/chromium" << EOF diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/chromium/update.py b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/chromium/update.py index bfc7f0d2478c..9e1f0aec598d 100755 --- a/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/chromium/update.py +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/chromium/update.py @@ -1,13 +1,15 @@ #! /usr/bin/env nix-shell -#! nix-shell -i python -p python3 nix +#! nix-shell -i python -p python3 nix nix-prefetch-git import csv import json +import re import subprocess import sys from codecs import iterdecode from collections import OrderedDict +from datetime import datetime from os.path import abspath, dirname from urllib.request import urlopen @@ -26,6 +28,44 @@ def nix_prefetch_url(url, algo='sha256'): out = subprocess.check_output(['nix-prefetch-url', '--type', algo, url]) return out.decode('utf-8').rstrip() +def nix_prefetch_git(url, rev): + print(f'nix-prefetch-git {url} {rev}') + out = subprocess.check_output(['nix-prefetch-git', '--quiet', '--url', url, '--rev', rev]) + return json.loads(out) + +def get_file_revision(revision, file_path): + url = f'https://raw.githubusercontent.com/chromium/chromium/{revision}/{file_path}' + with urlopen(url) as http_response: + return http_response.read() + +def get_matching_chromedriver(version): + # See https://chromedriver.chromium.org/downloads/version-selection + build = re.sub('.[0-9]+$', '', version) + chromedriver_version_url = f'https://chromedriver.storage.googleapis.com/LATEST_RELEASE_{build}' + with urlopen(chromedriver_version_url) as http_response: + chromedriver_version = http_response.read().decode() + def get_chromedriver_url(system): + return f'https://chromedriver.storage.googleapis.com/{chromedriver_version}/chromedriver_{system}.zip' + return { + 'version': chromedriver_version, + 'sha256_linux': nix_prefetch_url(get_chromedriver_url('linux64')), + 'sha256_darwin': nix_prefetch_url(get_chromedriver_url('mac64')) + } + +def get_channel_dependencies(channel): + deps = get_file_revision(channel['version'], 'DEPS') + gn_pattern = b"'gn_version': 'git_revision:([0-9a-f]{40})'" + gn_commit = re.search(gn_pattern, deps).group(1).decode() + gn = nix_prefetch_git('https://gn.googlesource.com/gn', gn_commit) + return { + 'gn': { + 'version': datetime.fromisoformat(gn['date']).date().isoformat(), + 'url': gn['url'], + 'rev': gn['rev'], + 'sha256': gn['sha256'] + } + } + channels = {} last_channels = load_json(JSON_PATH) @@ -58,6 +98,10 @@ with urlopen(HISTORY_URL) as resp: # the next one. continue + channel['deps'] = get_channel_dependencies(channel) + if channel_name == 'stable': + channel['chromedriver'] = get_matching_chromedriver(channel['version']) + channels[channel_name] = channel with open(JSON_PATH, 'w') as out: diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/chromium/upstream-info.json b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/chromium/upstream-info.json index 7523a6653f24..6343dd4b2468 100644 --- a/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/chromium/upstream-info.json +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/chromium/upstream-info.json @@ -1,17 +1,46 @@ { "stable": { - "version": "86.0.4240.75", - "sha256": "1ddw4p9zfdzhi5hrd8x14k4w326znljzprnpfi2f917rlpnl2ynx", - "sha256bin64": "17isxkd80rccqim6izzl08vw4yr52qsk6djp1rmhhijzg9rsvghz" + "version": "87.0.4280.88", + "sha256": "1h09g9b2zxad85vd146ymvg3w2kpngpi78yig3dn1vrmhwr4aiiy", + "sha256bin64": "0n3fm6wf8zfkv135d50xl8xxrnng3q55vyxkck1da8jyvh18bijb", + "deps": { + "gn": { + "version": "2020-09-09", + "url": "https://gn.googlesource.com/gn", + "rev": "e002e68a48d1c82648eadde2f6aafa20d08c36f2", + "sha256": "0x4c7amxwzxs39grqs3dnnz0531mpf1p75niq7zhinyfqm86i4dk" + } + }, + "chromedriver": { + "version": "87.0.4280.88", + "sha256_linux": "141mr2jiy3nslwd3s43m4i6plkv9wv5fgi78cn7mz0ac9x6fpcgx", + "sha256_darwin": "048hsqp6575r980m769lzznvxypmfcwn89f1d3ik751ymzmb5r78" + } }, "beta": { - "version": "87.0.4280.20", - "sha256": "1lqdxy6pm72h8ym5ij713rp055csqn19agy3sp6wnmp3pj688ic8", - "sha256bin64": "0r9wk2kgn7z0jjzpppr799jp5izxvh1ig4mv12iadz4y7dl47kaw" + "version": "88.0.4324.27", + "sha256": "0mciiyh3sn2zrl8g6znylc2pm9sb0wzsclgavf7mmlknri5sjblc", + "sha256bin64": "0qf2j1j3p94s724rwh8fydpjn88cs9yxxhjf5axvqwi7q3h35cfx", + "deps": { + "gn": { + "version": "2020-11-05", + "url": "https://gn.googlesource.com/gn", + "rev": "53d92014bf94c3893886470a1c7c1289f8818db0", + "sha256": "1xcm07qjk6m2czi150fiqqxql067i832adck6zxrishm70c9jbr9" + } + } }, "dev": { - "version": "88.0.4292.2", - "sha256": "0b8ihgbvdqpbcgw9p9sak8nz599pah94jmysqigs4phl9slvir5d", - "sha256bin64": "13bx19r56m2r1yjy3b84phv96kkckf87n88kpscf867lgwbrc4fc" + "version": "89.0.4343.0", + "sha256": "0jmc1l0lysl5zax98fjhzsfq3c1sqh3n3xscidafflx362wcfpwa", + "sha256bin64": "1v6xik8kf531y0g5xj0c8szjmak0qvh77kwkw7p7hqxqmnwwp06d", + "deps": { + "gn": { + "version": "2020-11-05", + "url": "https://gn.googlesource.com/gn", + "rev": "53d92014bf94c3893886470a1c7c1289f8818db0", + "sha256": "1xcm07qjk6m2czi150fiqqxql067i832adck6zxrishm70c9jbr9" + } + } } } |