aboutsummaryrefslogtreecommitdiff
path: root/infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/chromium
diff options
context:
space:
mode:
Diffstat (limited to 'infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/chromium')
-rw-r--r--infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/chromium/README.md69
-rw-r--r--infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/chromium/browser.nix12
-rw-r--r--infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/chromium/common.nix135
-rw-r--r--infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/chromium/default.nix30
-rwxr-xr-xinfra/libkookie/nixpkgs/pkgs/applications/networking/browsers/chromium/update.py46
-rw-r--r--infra/libkookie/nixpkgs/pkgs/applications/networking/browsers/chromium/upstream-info.json47
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"
+ }
+ }
}
}