chromium: fetch src from git instead of using release tarball, {ungoogled-,}chromium,chromedriver: 130.0.6723.116 -> 131.0.6778.69/85 (#357371)

Emily dca46c1a 2468db7a

Changed files
+2005 -421
pkgs
applications
development
tools
selenium
chromedriver
top-level
+2 -2
pkgs/applications/networking/browsers/chromium/browser.nix
···
{ lib, mkChromiumDerivation
-
, channel, chromiumVersionAtLeast
+
, chromiumVersionAtLeast
, enableWideVine, ungoogled
}:
···
license = if enableWideVine then lib.licenses.unfree else lib.licenses.bsd3;
platforms = lib.platforms.linux;
mainProgram = "chromium";
-
hydraPlatforms = lib.optionals (channel == "stable" || channel == "ungoogled-chromium") ["aarch64-linux" "x86_64-linux"];
+
hydraPlatforms = ["aarch64-linux" "x86_64-linux"];
timeout = 172800; # 48 hours (increased from the Hydra default of 10h)
};
})
+96 -9
pkgs/applications/networking/browsers/chromium/common.nix
···
{ stdenv, lib, fetchpatch
-
, recompressTarball
+
, zstd
+
, fetchFromGitiles
+
, fetchNpmDeps
, buildPackages
, pkgsBuildBuild
# Channel data:
-
, channel, upstream-info
+
, upstream-info
# Helper functions:
, chromiumVersionAtLeast, versionRange
# Native build inputs:
, ninja, pkg-config
, python3, perl
+
, nodejs
+
, npmHooks
, which
, libuuid
, overrideCC
···
else throw "no chromium Rosetta Stone entry for os: ${platform.config}";
};
+
isElectron = packageName == "electron";
+
+
chromiumDeps = lib.mapAttrs (path: args: fetchFromGitiles (removeAttrs args [ "recompress" ] // lib.optionalAttrs args.recompress or false {
+
name = "source.tar.zstd";
+
downloadToTemp = false;
+
passthru.unpack = true;
+
postFetch = ''
+
tar \
+
--use-compress-program="${lib.getExe zstd} -T$NIX_BUILD_CORES" \
+
--sort=name \
+
--mtime="1970-01-01" \
+
--owner=root --group=root \
+
--numeric-owner --mode=go=rX,u+rw,a-s \
+
--remove-files \
+
--directory="$out" \
+
-cf "$TMPDIR/source.zstd" .
+
mv "$TMPDIR/source.zstd" "$out"
+
'';
+
})) upstream-info.DEPS;
+
+
unpackPhaseSnippet = lib.concatStrings (lib.mapAttrsToList (path: dep:
+
(if dep.unpack or false
+
then ''
+
mkdir -p ${path}
+
pushd ${path}
+
unpackFile ${dep}
+
popd
+
''
+
else ''
+
mkdir -p ${builtins.dirOf path}
+
cp -r ${dep}/. ${path}
+
''
+
) + ''
+
chmod u+w -R ${path}
+
'') chromiumDeps);
+
base = rec {
pname = "${lib.optionalString ungoogled "ungoogled-"}${packageName}-unwrapped";
inherit (upstream-info) version;
inherit packageName buildType buildPath;
-
src = recompressTarball { inherit version; inherit (upstream-info) hash; };
+
unpackPhase = ''
+
runHook preUnpack
+
+
${unpackPhaseSnippet}
+
sourceRoot=src
+
+
runHook postUnpack
+
'';
+
+
npmRoot = "third_party/node";
+
npmDeps = (fetchNpmDeps {
+
src = chromiumDeps."src";
+
sourceRoot = npmRoot;
+
hash = upstream-info.deps.npmHash;
+
}).overrideAttrs (p: {
+
nativeBuildInputs = p.nativeBuildInputs or [ ] ++ [ zstd ];
+
});
nativeBuildInputs = [
ninja pkg-config
···
which
buildPackages.rustc.llvmPackages.bintools
bison gperf
+
] ++ lib.optionals (!isElectron) [
+
nodejs
+
npmHooks.npmConfigHook
];
depsBuildBuild = [
···
})
];
-
postPatch = ''
+
postPatch = lib.optionalString (!isElectron) ''
+
ln -s ${./files/gclient_args.gni} build/config/gclient_args.gni
+
+
echo 'LASTCHANGE=${upstream-info.DEPS."src".rev}-refs/heads/master@{#0}' > build/util/LASTCHANGE
+
echo "$SOURCE_DATE_EPOCH" > build/util/LASTCHANGE.committime
+
+
cat << EOF > gpu/config/gpu_lists_version.h
+
/* Generated by lastchange.py, do not edit.*/
+
#ifndef GPU_CONFIG_GPU_LISTS_VERSION_H_
+
#define GPU_CONFIG_GPU_LISTS_VERSION_H_
+
#define GPU_LISTS_VERSION "${upstream-info.DEPS."src".rev}"
+
#endif // GPU_CONFIG_GPU_LISTS_VERSION_H_
+
EOF
+
+
cat << EOF > skia/ext/skia_commit_hash.h
+
/* Generated by lastchange.py, do not edit.*/
+
#ifndef SKIA_EXT_SKIA_COMMIT_HASH_H_
+
#define SKIA_EXT_SKIA_COMMIT_HASH_H_
+
#define SKIA_COMMIT_HASH "${upstream-info.DEPS."src/third_party/skia".rev}-"
+
#endif // SKIA_EXT_SKIA_COMMIT_HASH_H_
+
EOF
+
+
echo -n '${upstream-info.DEPS."src/third_party/dawn".rev}' > gpu/webgpu/DAWN_VERSION
+
+
mkdir -p third_party/jdk/current/bin
+
'' + ''
# Workaround/fix for https://bugs.chromium.org/p/chromium/issues/detail?id=1313361:
substituteInPlace BUILD.gn \
--replace '"//infra/orchestrator:orchestrator_all",' ""
···
# enable those features in our stable builds.
preConfigure = ''
export RUSTC_BOOTSTRAP=1
+
'' + lib.optionalString (!isElectron) ''
+
(
+
cd third_party/node
+
grep patch update_npm_deps | sh
+
)
'';
configurePhase = ''
···
'';
passthru = {
-
updateScript = ./update.py;
-
chromiumDeps = {
-
gn = gnChromium;
-
};
-
inherit recompressTarball;
+
updateScript = ./update.mjs;
+
} // lib.optionalAttrs (!isElectron) {
+
inherit chromiumDeps npmDeps;
};
}
# overwrite `version` with the exact same `version` from the same source,
+7 -10
pkgs/applications/networking/browsers/chromium/default.nix
···
# package customization
# Note: enable* flags should not require full rebuilds (i.e. only affect the wrapper)
-
, channel ? "stable"
-
, upstream-info ? (import ./upstream-info.nix).${channel}
+
, upstream-info ? (lib.importJSON ./info.json).${if !ungoogled then "chromium" else "ungoogled-chromium"}
, proprietaryCodecs ? true
, enableWideVine ? false
, ungoogled ? false # Whether to build chromium or ungoogled-chromium
···
inherit stdenv upstream-info;
mkChromiumDerivation = callPackage ./common.nix ({
-
inherit channel chromiumVersionAtLeast versionRange;
+
inherit chromiumVersionAtLeast versionRange;
inherit proprietaryCodecs
cupsSupport pulseSupport ungoogled;
gnChromium = buildPackages.gn.overrideAttrs (oldAttrs: {
-
inherit (upstream-info.deps.gn) version;
+
version = if (upstream-info.deps.gn ? "version") then upstream-info.deps.gn.version else "0";
src = fetchgit {
-
inherit (upstream-info.deps.gn) url rev hash;
+
url = "https://gn.googlesource.com/gn";
+
inherit (upstream-info.deps.gn) rev hash;
};
} // lib.optionalAttrs (chromiumVersionAtLeast "127") {
# Relax hardening as otherwise gn unstable 2024-06-06 and later fail with:
···
# As a work around until gn is updated again, we filter specifically that patch out.
patches = lib.filter (e: lib.getName e != "LFS64.patch") oldAttrs.patches;
});
-
recompressTarball = callPackage ./recompress-tarball.nix { inherit chromiumVersionAtLeast; };
});
browser = callPackage ./browser.nix {
-
inherit channel chromiumVersionAtLeast enableWideVine ungoogled;
+
inherit chromiumVersionAtLeast enableWideVine ungoogled;
};
# ungoogled-chromium is, contrary to its name, not a build of
···
ungoogled-chromium = pkgsBuildBuild.callPackage ./ungoogled.nix {};
};
-
suffix = lib.optionalString (channel != "stable" && channel != "ungoogled-chromium") ("-" + channel);
-
sandboxExecutableName = chromium.browser.passthru.sandboxExecutableName;
# We want users to be able to enableWideVine without rebuilding all of
···
in stdenv.mkDerivation {
pname = lib.optionalString ungoogled "ungoogled-"
-
+ "chromium${suffix}";
+
+ "chromium";
inherit (chromium.browser) version;
nativeBuildInputs = [
+122
pkgs/applications/networking/browsers/chromium/depot_tools.py
···
+
#! /usr/bin/env nix-shell
+
#! nix-shell -i python -p python3
+
"""
+
This is a heavily simplified variant of electron's update.py
+
for use in ./update.mjs and should not be called manually.
+
+
It resolves chromium's DEPS file recursively when called with
+
a working depot_tools checkout and a ref to fetch and prints
+
the result as JSON to stdout.
+
"""
+
import base64
+
import json
+
from typing import Optional
+
from urllib.request import urlopen
+
+
import sys
+
+
if len(sys.argv) != 3:
+
print("""This internal script has been called with the wrong amount of parameters.
+
This script is not supposed to be called manually.
+
Refer to ./update.mjs instead.""")
+
exit(1)
+
+
_, depot_tools_checkout, chromium_version = sys.argv
+
+
sys.path.append(depot_tools_checkout)
+
import gclient_eval
+
import gclient_utils
+
+
+
class Repo:
+
fetcher: str
+
args: dict
+
+
def __init__(self) -> None:
+
self.deps: dict = {}
+
self.hash = "sha256-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="
+
+
def get_deps(self, repo_vars: dict, path: str) -> None:
+
print(
+
"evaluating " + json.dumps(self, default=vars, sort_keys=True),
+
file=sys.stderr,
+
)
+
+
deps_file = self.get_file("DEPS")
+
evaluated = gclient_eval.Parse(deps_file, vars_override=repo_vars, filename="DEPS")
+
+
repo_vars = dict(evaluated.get("vars", {})) | repo_vars
+
+
prefix = f"{path}/" if evaluated.get("use_relative_paths", False) else ""
+
+
self.deps = {
+
prefix + dep_name: repo_from_dep(dep)
+
for dep_name, dep in evaluated.get("deps", {}).items()
+
if (
+
gclient_eval.EvaluateCondition(dep["condition"], repo_vars)
+
if "condition" in dep
+
else True
+
)
+
and repo_from_dep(dep) != None
+
}
+
+
for key in evaluated.get("recursedeps", []):
+
dep_path = prefix + key
+
if dep_path in self.deps and dep_path != "src/third_party/squirrel.mac":
+
self.deps[dep_path].get_deps(repo_vars, dep_path)
+
+
def flatten_repr(self) -> dict:
+
return {"fetcher": self.fetcher, "hash": self.hash, **self.args}
+
+
def flatten(self, path: str) -> dict:
+
out = {path: self.flatten_repr()}
+
for dep_path, dep in self.deps.items():
+
out |= dep.flatten(dep_path)
+
return out
+
+
def get_file(self, filepath: str) -> str:
+
raise NotImplementedError
+
+
+
class GitilesRepo(Repo):
+
def __init__(self, url: str, rev: str) -> None:
+
super().__init__()
+
self.fetcher = "fetchFromGitiles"
+
self.args = {
+
"url": url,
+
"rev": rev,
+
}
+
+
def get_file(self, filepath: str) -> str:
+
return base64.b64decode(
+
urlopen(
+
f"{self.args['url']}/+/{self.args['rev']}/{filepath}?format=TEXT"
+
).read()
+
).decode("utf-8")
+
+
+
def repo_from_dep(dep: dict) -> Optional[Repo]:
+
if "url" in dep:
+
url, rev = gclient_utils.SplitUrlRevision(dep["url"])
+
return GitilesRepo(url, rev)
+
else:
+
# Not a git dependency; skip
+
return None
+
+
+
+
chromium = GitilesRepo("https://chromium.googlesource.com/chromium/src.git", chromium_version)
+
chromium.get_deps(
+
{
+
**{
+
f"checkout_{platform}": platform == "linux" or platform == "x64" or platform == "arm64" or platform == "arm"
+
for platform in ["ios", "chromeos", "android", "mac", "win", "linux"]
+
},
+
**{
+
f"checkout_{arch}": True
+
for arch in ["x64", "arm64", "arm", "x86", "mips", "mips64"]
+
},
+
},
+
"",
+
)
+
print(json.dumps(chromium.flatten("src")))
+12
pkgs/applications/networking/browsers/chromium/files/gclient_args.gni
···
+
build_with_chromium = true
+
checkout_android = false
+
checkout_android_prebuilts_build_tools = false
+
checkout_clang_coverage_tools = false
+
checkout_copybara = false
+
checkout_ios_webkit = false
+
checkout_nacl = false
+
checkout_openxr = false
+
checkout_src_internal = false
+
cros_boards = ""
+
cros_boards_with_qemu_images = ""
+
generate_location_tags = true
+1534
pkgs/applications/networking/browsers/chromium/info.json
···
+
{
+
"chromium": {
+
"version": "131.0.6778.85",
+
"chromedriver": {
+
"hash_darwin": "sha256-li9wQkcgh5ORPu2kjdyfwvvuykRz1gTL3b8UVQs+MY4=",
+
"hash_darwin_aarch64": "sha256-r/C6QpmkVzovLJKfMTjUome9nL5WoEvPGRFB+AJJFqk="
+
},
+
"deps": {
+
"depot_tools": {
+
"rev": "20b9bdcace7ed561d6a75728c85373503473cb6b",
+
"hash": "sha256-vlBENaVTtbwDJtSswuszcUlx+icZYJeP6ew6MO1cAv0="
+
},
+
"gn": {
+
"rev": "95b0f8fe31a992a33c040bbe3867901335c12762",
+
"hash": "sha256-a8yCdBsl0nBMPS+pCLwrkAvQNP/THx/z/GySyOgx4Jk="
+
},
+
"npmHash": "sha256-b1l8SwjAfoColoa3zhTMPEF/rRuxzT3ATHE77rWU5EA="
+
},
+
"DEPS": {
+
"src": {
+
"url": "https://chromium.googlesource.com/chromium/src.git",
+
"rev": "131.0.6778.85",
+
"hash": "sha256-fREToEHVbTD0IVGx/sn7csSju4BYajWZ+LDCiKWV4cI=",
+
"recompress": true
+
},
+
"src/third_party/clang-format/script": {
+
"url": "https://chromium.googlesource.com/external/github.com/llvm/llvm-project/clang/tools/clang-format.git",
+
"rev": "3c0acd2d4e73dd911309d9e970ba09d58bf23a62",
+
"hash": "sha256-whD8isX2ZhLrFzdxHhFP1S/sZDRgyrzLFaVd7OEFqYo="
+
},
+
"src/third_party/libc++/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/llvm/llvm-project/libcxx.git",
+
"rev": "6a68fd412b9aecd515a20a7cf84d11b598bfaf96",
+
"hash": "sha256-7skqaen0XqbRvAGXQ0/3kea3vRInktdP3DOBeIBiGlQ="
+
},
+
"src/third_party/libc++abi/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/llvm/llvm-project/libcxxabi.git",
+
"rev": "9a1d90c3b412d5ebeb97a6e33d98e1d0dd923221",
+
"hash": "sha256-zPm+Rif9fITazDvvm6SvLq8gwcPzPbuaXlRbyYqv7JA="
+
},
+
"src/third_party/libunwind/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/llvm/llvm-project/libunwind.git",
+
"rev": "efc3baa2d1ece3630fcfa72bef93ed831bcaec4c",
+
"hash": "sha256-0OBelaxkKdajYXrGgz08nyPZhxqpsnFXiF3m8DGQkDo="
+
},
+
"src/chrome/test/data/perf/canvas_bench": {
+
"url": "https://chromium.googlesource.com/chromium/canvas_bench.git",
+
"rev": "a7b40ea5ae0239517d78845a5fc9b12976bfc732",
+
"hash": "sha256-svOuyBGKloBLM11xLlWCDsB4PpRjdKTBdW2UEW4JQjM="
+
},
+
"src/chrome/test/data/perf/frame_rate/content": {
+
"url": "https://chromium.googlesource.com/chromium/frame_rate/content.git",
+
"rev": "c10272c88463efeef6bb19c9ec07c42bc8fe22b9",
+
"hash": "sha256-t4kcuvH0rkPBkcdiMsoNQaRwU09eU+oSvyHDiAHrKXo="
+
},
+
"src/chrome/test/data/xr/webvr_info": {
+
"url": "https://chromium.googlesource.com/external/github.com/toji/webvr.info.git",
+
"rev": "c58ae99b9ff9e2aa4c524633519570bf33536248",
+
"hash": "sha256-BsAPwc4oEWri0TlqhyxqFNqKdfgVSrB0vQyISmYY4eg="
+
},
+
"src/docs/website": {
+
"url": "https://chromium.googlesource.com/website.git",
+
"rev": "4811f9e01c4cfcbf9c6957015063eaaa0d92be91",
+
"hash": "sha256-98wwIeMTF2Wg2sJ07U1OUV83wR9nJOjGubp7Vnk3kj8="
+
},
+
"src/media/cdm/api": {
+
"url": "https://chromium.googlesource.com/chromium/cdm.git",
+
"rev": "eb21edc44e8e5a82095037be80c8b15c51624293",
+
"hash": "sha256-6J6aSYW0or99VAgMNJJOdJqMJspoG7w1HxDN50MV5bw="
+
},
+
"src/net/third_party/quiche/src": {
+
"url": "https://quiche.googlesource.com/quiche.git",
+
"rev": "e0175250977c2b2b95087afc0857883538a1386c",
+
"hash": "sha256-1O+hnZF73AY44jcmajJlpaQY5PV4+x0hYwqf1TtMahY="
+
},
+
"src/testing/libfuzzer/fuzzers/wasm_corpus": {
+
"url": "https://chromium.googlesource.com/v8/fuzzer_wasm_corpus.git",
+
"rev": "f650ff816f2ef227f61ea2e9f222aa69708ab367",
+
"hash": "sha256-qWsGQNUptbz0jYvUuxP7woNf5QQrfn9k3uvr82Yk0QM="
+
},
+
"src/third_party/accessibility_test_framework/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/google/Accessibility-Test-Framework-for-Android.git",
+
"rev": "4a764c690353ea136c82f1a696a70bf38d1ef5fe",
+
"hash": "sha256-mzVgoxxBWebesG6okyMxxmO6oH+TITA4o9ucHHMMzkQ="
+
},
+
"src/third_party/angle": {
+
"url": "https://chromium.googlesource.com/angle/angle.git",
+
"rev": "ac6cda4cbd716102ded6a965f79573b41581898d",
+
"hash": "sha256-7Zfc262U42G6BUlxnLp6sQ78VlWBt0pTzkYwXY0rqaE="
+
},
+
"src/third_party/angle/third_party/glmark2/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/glmark2/glmark2",
+
"rev": "ca8de51fedb70bace5351c6b002eb952c747e889",
+
"hash": "sha256-L7+zWM0qn8WFhmON7DGvarTsN1YHt1sn5+hazTOZrrk="
+
},
+
"src/third_party/angle/third_party/rapidjson/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/Tencent/rapidjson",
+
"rev": "781a4e667d84aeedbeb8184b7b62425ea66ec59f",
+
"hash": "sha256-btUl1a/B0sXwf/+hyvCvVJjWqIkXfVYCpHm3TeBuOxk="
+
},
+
"src/third_party/angle/third_party/VK-GL-CTS/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/KhronosGroup/VK-GL-CTS",
+
"rev": "179dd9f858f0f5b0e52b61aefc621dc82e2ad34a",
+
"hash": "sha256-B7X9PTlMQdolsvEfuCNaKnRFcvsPNZtn5FOcJBY6sCA="
+
},
+
"src/third_party/anonymous_tokens/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/google/anonymous-tokens.git",
+
"rev": "6ea6ec78f9e4998d0a7a5677b2aec08f0ac858f8",
+
"hash": "sha256-PMB49+zW9ewlS9ym+xi0xYQYLN0j5Urx6yBXWd8FjjI="
+
},
+
"src/third_party/content_analysis_sdk/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/chromium/content_analysis_sdk.git",
+
"rev": "9a408736204513e0e95dd2ab3c08de0d95963efc",
+
"hash": "sha256-f5Jmk1MiGjaRdLun+v/GKVl8Yv9hOZMTQUSxgiJalcY="
+
},
+
"src/third_party/dav1d/libdav1d": {
+
"url": "https://chromium.googlesource.com/external/github.com/videolan/dav1d.git",
+
"rev": "389450f61ea0b2057fc9ea393d3065859c4ba7f2",
+
"hash": "sha256-FK3tOLq5NcKQuStY5o8Lv2CXpjYHJm7n+NnyLFMOCxo="
+
},
+
"src/third_party/dawn": {
+
"url": "https://dawn.googlesource.com/dawn.git",
+
"rev": "7e742cac42c29a14ab7f54b134b2f17592711267",
+
"hash": "sha256-K2gwKNwonzCIu4hnlYuOaYyKaRV11hwDzF4oykiKsl0="
+
},
+
"src/third_party/dawn/third_party/glfw": {
+
"url": "https://chromium.googlesource.com/external/github.com/glfw/glfw",
+
"rev": "b35641f4a3c62aa86a0b3c983d163bc0fe36026d",
+
"hash": "sha256-E1zXIDiw87badrLOZTvV+Wh9NZHu51nb70ZK9vlAlqE="
+
},
+
"src/third_party/dawn/third_party/dxc": {
+
"url": "https://chromium.googlesource.com/external/github.com/microsoft/DirectXShaderCompiler",
+
"rev": "080aeb7199e66e4b0a2b6383fd26a9f8d2cccbf5",
+
"hash": "sha256-YHEBGqfftgK68wWAWVTxtbl1GECBT1qTNe7irYkM/8k="
+
},
+
"src/third_party/dawn/third_party/dxheaders": {
+
"url": "https://chromium.googlesource.com/external/github.com/microsoft/DirectX-Headers",
+
"rev": "980971e835876dc0cde415e8f9bc646e64667bf7",
+
"hash": "sha256-0Miw1Cy/jmOo7bLFBOHuTRDV04cSeyvUEyPkpVsX9DA="
+
},
+
"src/third_party/dawn/third_party/webgpu-headers": {
+
"url": "https://chromium.googlesource.com/external/github.com/webgpu-native/webgpu-headers",
+
"rev": "8049c324dc7b3c09dc96ea04cb02860f272c8686",
+
"hash": "sha256-J3PcwYoO79HqrACFgk77BZLTCi7oi5k2J6v3wlcFVD4="
+
},
+
"src/third_party/dawn/third_party/khronos/OpenGL-Registry": {
+
"url": "https://chromium.googlesource.com/external/github.com/KhronosGroup/OpenGL-Registry",
+
"rev": "5bae8738b23d06968e7c3a41308568120943ae77",
+
"hash": "sha256-K3PcRIiD3AmnbiSm5TwaLs4Gu9hxaN8Y91WMKK8pOXE="
+
},
+
"src/third_party/dawn/third_party/khronos/EGL-Registry": {
+
"url": "https://chromium.googlesource.com/external/github.com/KhronosGroup/EGL-Registry",
+
"rev": "7dea2ed79187cd13f76183c4b9100159b9e3e071",
+
"hash": "sha256-Z6DwLfgQ1wsJXz0KKJyVieOatnDmx3cs0qJ6IEgSq1A="
+
},
+
"src/third_party/dawn/third_party/webgpu-cts": {
+
"url": "https://chromium.googlesource.com/external/github.com/gpuweb/cts",
+
"rev": "815ff2bb4038144dea89c33021bc4429f22a130f",
+
"hash": "sha256-28uZotrv+/MBBo+pcBWY3Csqrdv5Y4DxGbGEwK9Cwdw="
+
},
+
"src/third_party/highway/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/google/highway.git",
+
"rev": "8295336dd70f1201d42c22ab5b0861de38cf8fbf",
+
"hash": "sha256-PXsXIqWB4NNiFhanRjMIFSWYuW/IRuQo8mMPUBEentY="
+
},
+
"src/third_party/google_benchmark/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/google/benchmark.git",
+
"rev": "344117638c8ff7e239044fd0fa7085839fc03021",
+
"hash": "sha256-gztnxui9Fe/FTieMjdvfJjWHjkImtlsHn6fM1FruyME="
+
},
+
"src/third_party/boringssl/src": {
+
"url": "https://boringssl.googlesource.com/boringssl.git",
+
"rev": "cd95210465496ac2337b313cf49f607762abe286",
+
"hash": "sha256-172yvjgbFWQyd0PBRl74PJzpY/mDGC85D7PdeogNodU="
+
},
+
"src/third_party/breakpad/breakpad": {
+
"url": "https://chromium.googlesource.com/breakpad/breakpad.git",
+
"rev": "6b0c5b7ee1988a14a4af94564e8ae8bba8a94374",
+
"hash": "sha256-kTkwRfaqw5ZCHEvu2YPZ+1vCfekHkY5pY3m9snDN64g="
+
},
+
"src/third_party/cast_core/public/src": {
+
"url": "https://chromium.googlesource.com/cast_core/public",
+
"rev": "71f51fd6fa45fac73848f65421081edd723297cd",
+
"hash": "sha256-AalRQhJmornCqmvE2+36J/3LubaA0jr6P1PXy32lX4I="
+
},
+
"src/third_party/catapult": {
+
"url": "https://chromium.googlesource.com/catapult.git",
+
"rev": "44791916611acec1cd74c492c7453e46d9b0dbd2",
+
"hash": "sha256-SkF+RIIlU8Vl3AmN6kARkLuVz/X5vygNOtGN2K3Sr+M="
+
},
+
"src/third_party/ced/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/google/compact_enc_det.git",
+
"rev": "ba412eaaacd3186085babcd901679a48863c7dd5",
+
"hash": "sha256-ySG74Rj2i2c/PltEgHVEDq+N8yd9gZmxNktc56zIUiY="
+
},
+
"src/third_party/chromium-variations": {
+
"url": "https://chromium.googlesource.com/chromium-variations.git",
+
"rev": "7d681838b57a25ca6659b9cc0111f879147c416b",
+
"hash": "sha256-zio8SqKEqOYYjVWZnzfrPqngqym2lZu9M/hgSi3ey0Q="
+
},
+
"src/third_party/cld_3/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/google/cld_3.git",
+
"rev": "b48dc46512566f5a2d41118c8c1116c4f96dc661",
+
"hash": "sha256-C3MOMBUy9jgkT9BAi/Fgm2UH4cxRuwSBEcRl3hzM2Ss="
+
},
+
"src/third_party/colorama/src": {
+
"url": "https://chromium.googlesource.com/external/colorama.git",
+
"rev": "3de9f013df4b470069d03d250224062e8cf15c49",
+
"hash": "sha256-6ZTdPYSHdQOLYMSnE+Tp7PgsVTs3U2awGu9Qb4Rg/tk="
+
},
+
"src/third_party/cpu_features/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/google/cpu_features.git",
+
"rev": "936b9ab5515dead115606559502e3864958f7f6e",
+
"hash": "sha256-E8LoVzhe+TAmARWZTSuINlsVhzpUJMxPPCGe/dHZcyA="
+
},
+
"src/third_party/cpuinfo/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/pytorch/cpuinfo.git",
+
"rev": "1e83a2fdd3102f65c6f1fb602c1b320486218a99",
+
"hash": "sha256-28cFACca+NYE8oKlP5aWXNCLeEjhWqJ6gRnFI+VxDvg="
+
},
+
"src/third_party/crc32c/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/google/crc32c.git",
+
"rev": "d3d60ac6e0f16780bcfcc825385e1d338801a558",
+
"hash": "sha256-KBraGaO5LmmPP+p8RuDogGldbTWdNDK+WzF4Q09keuE="
+
},
+
"src/third_party/cros_system_api": {
+
"url": "https://chromium.googlesource.com/chromiumos/platform2/system_api.git",
+
"rev": "b08c5ad457bddea2664ba20fb25beb3d1799fed2",
+
"hash": "sha256-cwpcY8YTXk+VVIFphO5ihc5rvbG3ZY9iHeK81P5DHBs="
+
},
+
"src/third_party/crossbench": {
+
"url": "https://chromium.googlesource.com/crossbench.git",
+
"rev": "b4d7ae714c548c3e139b95a85582dc15ece1d2f7",
+
"hash": "sha256-1RDDbvce5WR32if3cFYxiU9HS04x3BYIgOFJPMVJSBo="
+
},
+
"src/third_party/depot_tools": {
+
"url": "https://chromium.googlesource.com/chromium/tools/depot_tools.git",
+
"rev": "20b9bdcace7ed561d6a75728c85373503473cb6b",
+
"hash": "sha256-vlBENaVTtbwDJtSswuszcUlx+icZYJeP6ew6MO1cAv0="
+
},
+
"src/third_party/devtools-frontend/src": {
+
"url": "https://chromium.googlesource.com/devtools/devtools-frontend",
+
"rev": "5284f1c63b2b08c47b8915ce713a1aace991dfe9",
+
"hash": "sha256-1Nh9SVIAde4jxgwFucbtZpl6rMyPM4Plfi+dhwP0wI8="
+
},
+
"src/third_party/dom_distiller_js/dist": {
+
"url": "https://chromium.googlesource.com/chromium/dom-distiller/dist.git",
+
"rev": "199de96b345ada7c6e7e6ba3d2fa7a6911b8767d",
+
"hash": "sha256-yuEBD2XQlV3FGI/i7lTmJbCqzeBiuG1Qow8wvsppGJw="
+
},
+
"src/third_party/eigen3/src": {
+
"url": "https://chromium.googlesource.com/external/gitlab.com/libeigen/eigen.git",
+
"rev": "7eea0a9213e801ad9479a6499fd0330ec1db8693",
+
"hash": "sha256-JkOjOnLrDOcYHi3hptT1BDRvsKpTtOsBHT8YLb1hlJM="
+
},
+
"src/third_party/farmhash/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/google/farmhash.git",
+
"rev": "816a4ae622e964763ca0862d9dbd19324a1eaf45",
+
"hash": "sha256-5n58VEUxa/K//jAfZqG4cXyfxrp50ogWDNYcgiXVHdc="
+
},
+
"src/third_party/fast_float/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/fastfloat/fast_float.git",
+
"rev": "3e57d8dcfb0a04b5a8a26b486b54490a2e9b310f",
+
"hash": "sha256-0eVovauN7SnO3nSIWBRWAJ4dR7q5beZrIGUZ18M2pao="
+
},
+
"src/third_party/ffmpeg": {
+
"url": "https://chromium.googlesource.com/chromium/third_party/ffmpeg.git",
+
"rev": "686d6944501a6ee9c849581e3fe343273d4af3f6",
+
"hash": "sha256-j5mpWn4j+U4rRlXbq8okUUXrRKycZkiV+UntiS90ChM="
+
},
+
"src/third_party/flac": {
+
"url": "https://chromium.googlesource.com/chromium/deps/flac.git",
+
"rev": "689da3a7ed50af7448c3f1961d1791c7c1d9c85c",
+
"hash": "sha256-gvTFPNOlBfozptaH7lTb9iD/09AmpdT3kCl9ClszjEs="
+
},
+
"src/third_party/flatbuffers/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/google/flatbuffers.git",
+
"rev": "8db59321d9f02cdffa30126654059c7d02f70c32",
+
"hash": "sha256-tbc45o0MbMvK5XqRUJt5Eg8BU6+TJqlmwFgQhHq6wRM="
+
},
+
"src/third_party/fontconfig/src": {
+
"url": "https://chromium.googlesource.com/external/fontconfig.git",
+
"rev": "14d466b30a8ab4a9d789977ed94f2c30e7209267",
+
"hash": "sha256-W5WIgC6A52kY4fNkbsDEa0o+dfd97Rl5NKfgnIRpI00="
+
},
+
"src/third_party/fp16/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/Maratyszcza/FP16.git",
+
"rev": "0a92994d729ff76a58f692d3028ca1b64b145d91",
+
"hash": "sha256-m2d9bqZoGWzuUPGkd29MsrdscnJRtuIkLIMp3fMmtRY="
+
},
+
"src/third_party/gemmlowp/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/google/gemmlowp.git",
+
"rev": "13d57703abca3005d97b19df1f2db731607a7dc2",
+
"hash": "sha256-O5wD8wxgis0qYMaY+xZ21GBDVQFphMRvInCOswS6inA="
+
},
+
"src/third_party/grpc/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/grpc/grpc.git",
+
"rev": "822dab21d9995c5cf942476b35ca12a1aa9d2737",
+
"hash": "sha256-64JEVCx/PCM0dvv7kAQvSjLc0QbRAZVBDzwD/FAV6T8="
+
},
+
"src/third_party/freetype/src": {
+
"url": "https://chromium.googlesource.com/chromium/src/third_party/freetype2.git",
+
"rev": "f02bffad0fd57f3acfa835c3f2899c5b71ff8be0",
+
"hash": "sha256-Lc2hbmZnnXQa0vzlJCizNBQ5WCOI5sJglTTe5gWVYUA="
+
},
+
"src/third_party/freetype-testing/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/freetype/freetype2-testing.git",
+
"rev": "7a69b1a2b028476f840ab7d4a2ffdfe4eb2c389f",
+
"hash": "sha256-2aHPchIK5Oce5+XxdXVCC+8EM6i0XT0rFbjSIVa2L1A="
+
},
+
"src/third_party/fxdiv/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/Maratyszcza/FXdiv.git",
+
"rev": "63058eff77e11aa15bf531df5dd34395ec3017c8",
+
"hash": "sha256-LjX5kivfHbqCIA5pF9qUvswG1gjOFo3CMpX0VR+Cn38="
+
},
+
"src/third_party/harfbuzz-ng/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/harfbuzz/harfbuzz.git",
+
"rev": "1da053e87f0487382404656edca98b85fe51f2fd",
+
"hash": "sha256-iR49rfGDKxPObCff1/30hYHpP5FpZ28ROgMZhNk9eFY="
+
},
+
"src/third_party/ink/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/google/ink.git",
+
"rev": "4300dc7402a257b85fc5bf2559137edacb050227",
+
"hash": "sha256-+Ikr9E7KlXBFyf6fSDmIF3ygNUiwlXeA5bmO2CtkI7Q="
+
},
+
"src/third_party/ink_stroke_modeler/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/google/ink-stroke-modeler.git",
+
"rev": "0999e4cf816b42c770d07916698bce943b873048",
+
"hash": "sha256-IQ+n+kHdEq8Q8/qaPGMvgD7cPN3zzaY8dbiokq6r/Vs="
+
},
+
"src/third_party/instrumented_libs": {
+
"url": "https://chromium.googlesource.com/chromium/third_party/instrumented_libraries.git",
+
"rev": "bb6dbcf2df7a9beb34c3773ef4df161800e3aed9",
+
"hash": "sha256-kHKGADAgzlaeckXFbpU1GhJK+zkiRd9XvdtPF6qrQFY="
+
},
+
"src/third_party/emoji-segmenter/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/google/emoji-segmenter.git",
+
"rev": "955936be8b391e00835257059607d7c5b72ce744",
+
"hash": "sha256-KdQdKBBipEBRT8UmNGao6yCB4m2CU8/SrMVvcXlb5qE="
+
},
+
"src/third_party/ots/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/khaledhosny/ots.git",
+
"rev": "46bea9879127d0ff1c6601b078e2ce98e83fcd33",
+
"hash": "sha256-kiUXrXsaGOzPkKh0dVmU1I13WHt0Stzj7QLMqHN9FbU="
+
},
+
"src/third_party/libgav1/src": {
+
"url": "https://chromium.googlesource.com/codecs/libgav1.git",
+
"rev": "a2f139e9123bdb5edf7707ac6f1b73b3aa5038dd",
+
"hash": "sha256-+ss9S5t+yoHzqbtX68+5OyyUbJVecYLwp+C3EXfAziE="
+
},
+
"src/third_party/googletest/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/google/googletest.git",
+
"rev": "62df7bdbc10887e094661e07ec2595b7920376fd",
+
"hash": "sha256-Iv/7r79cKC1pFkxPPHK/IHv/HFx18XZ4YVr+C2CX8+M="
+
},
+
"src/third_party/hunspell_dictionaries": {
+
"url": "https://chromium.googlesource.com/chromium/deps/hunspell_dictionaries.git",
+
"rev": "41cdffd71c9948f63c7ad36e1fb0ff519aa7a37e",
+
"hash": "sha256-67mvpJRFFa9eMfyqFMURlbxOaTJBICnk+gl0b0mEHl8="
+
},
+
"src/third_party/icu": {
+
"url": "https://chromium.googlesource.com/chromium/deps/icu.git",
+
"rev": "4239b1559d11d4fa66c100543eda4161e060311e",
+
"hash": "sha256-7568UHNDOzyTCLy3TAwxZLUrKfB6A1yKA0wVZQJjKoI="
+
},
+
"src/third_party/jsoncpp/source": {
+
"url": "https://chromium.googlesource.com/external/github.com/open-source-parsers/jsoncpp.git",
+
"rev": "42e892d96e47b1f6e29844cc705e148ec4856448",
+
"hash": "sha256-bSLNcoYBz3QCt5VuTR056V9mU2PmBuYBa0W6hFg2m8Q="
+
},
+
"src/third_party/leveldatabase/src": {
+
"url": "https://chromium.googlesource.com/external/leveldb.git",
+
"rev": "23e35d792b9154f922b8b575b12596a4d8664c65",
+
"hash": "sha256-y3awFXL8ih2UhEqWj8JRgkhzSxfQciLztb020JHJ350="
+
},
+
"src/third_party/libFuzzer/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/llvm/llvm-project/compiler-rt/lib/fuzzer.git",
+
"rev": "487e79376394754705984c5de7c4ce7f82f2bd7c",
+
"hash": "sha256-xQXfRIcQmAVP0k2mT7Blv1wBxL6wDaWTbIPGcTiMZRo="
+
},
+
"src/third_party/fuzztest/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/google/fuzztest.git",
+
"rev": "0021f30508bc7f73fa5270962d022acb480d242f",
+
"hash": "sha256-UYmzjOX8k+CWL+xOIF3NiEL3TRUjS8JflortB2RUT4o="
+
},
+
"src/third_party/domato/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/googleprojectzero/domato.git",
+
"rev": "053714bccbda79cf76dac3fee48ab2b27f21925e",
+
"hash": "sha256-fYxoA0fxKe9U23j+Jp0MWj4m7RfsRpM0XjF6/yOhX1I="
+
},
+
"src/third_party/libaddressinput/src": {
+
"url": "https://chromium.googlesource.com/external/libaddressinput.git",
+
"rev": "e8712e415627f22d0b00ebee8db99547077f39bd",
+
"hash": "sha256-xvUUQSPrvqUp5DI9AqlRTWurwDW087c6v4RvI+4sfOQ="
+
},
+
"src/third_party/libaom/source/libaom": {
+
"url": "https://aomedia.googlesource.com/aom.git",
+
"rev": "840f8797871cc587f7113ea9d2483a1156d57c0e",
+
"hash": "sha256-2XHqNAmv2L3TEFXu4Q6rnASLmuE93QplSVKNqyhlKUk="
+
},
+
"src/third_party/libavif/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/AOMediaCodec/libavif.git",
+
"rev": "2c36aed375fff68611641b57d919b191f33431d5",
+
"hash": "sha256-fApdfzEtQnmio6BVzkcr/VkwojrNs+cx/+Am80H9dXw="
+
},
+
"src/third_party/crabbyavif/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/webmproject/CrabbyAvif.git",
+
"rev": "ffad64ff4e349f926ad5ffcc882e205a94156d77",
+
"hash": "sha256-M2ExAgLm/NZ2soQEv3Ap/qx/B3+nd3NdDqYOL0E/pc8="
+
},
+
"src/third_party/libavifinfo/src": {
+
"url": "https://aomedia.googlesource.com/libavifinfo.git",
+
"rev": "8d8b58a3f517ef8d1794baa28ca6ae7d19f65514",
+
"hash": "sha256-61OPjdMCIbHvWncmBzNw6sqlHcuc1kyqm9k1j4UTcZ0="
+
},
+
"src/third_party/nearby/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/google/nearby-connections.git",
+
"rev": "1b382075dd1bd545655af7ebef949b3090061b74",
+
"hash": "sha256-kpyJiFXtk8eK8EkgzUbG0GS+znEeqzlB62qy9tPpEC8="
+
},
+
"src/third_party/beto-core/src": {
+
"url": "https://beto-core.googlesource.com/beto-core.git",
+
"rev": "89563fec14c756482afa08b016eeba9087c8d1e3",
+
"hash": "sha256-QPFGjtu/I0r4+dTQ2eSlWIEYwJ43B3yW0q4QtVFTVGY="
+
},
+
"src/third_party/securemessage/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/google/securemessage.git",
+
"rev": "fa07beb12babc3b25e0c5b1f38c16aa8cb6b8f84",
+
"hash": "sha256-GS4ccnuiqxMs/LVYAtvSlVAYFp4a5GoZsxcriTX3k78="
+
},
+
"src/third_party/speedometer/v3.0": {
+
"url": "https://chromium.googlesource.com/external/github.com/WebKit/Speedometer.git",
+
"rev": "8d67f28d0281ac4330f283495b7f48286654ad7d",
+
"hash": "sha256-qMQ4naX+4uUu3vtzzinjkhxX9/dNoTwj6vWCu4FdQmU="
+
},
+
"src/third_party/ukey2/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/google/ukey2.git",
+
"rev": "0275885d8e6038c39b8a8ca55e75d1d4d1727f47",
+
"hash": "sha256-aaLs6ZS+CdBlCJ6ZhsmdAPFxiBIij6oufsDcNeRSV1E="
+
},
+
"src/third_party/cros-components/src": {
+
"url": "https://chromium.googlesource.com/external/google3/cros_components.git",
+
"rev": "902e8ca804ae6c05f505e510c16647c32ce4d1cb",
+
"hash": "sha256-j2m9zVajkAdPF1ehLX0Gxp4LyMunhFDDCzrCm2WzArc="
+
},
+
"src/third_party/libdrm/src": {
+
"url": "https://chromium.googlesource.com/chromiumos/third_party/libdrm.git",
+
"rev": "ad78bb591d02162d3b90890aa4d0a238b2a37cde",
+
"hash": "sha256-woSYEDUfcEBpYOYnli13wLMt754A7KnUbmTEcFQdFGw="
+
},
+
"src/third_party/expat/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/libexpat/libexpat.git",
+
"rev": "624da0f593bb8d7e146b9f42b06d8e6c80d032a3",
+
"hash": "sha256-Iwu9+i/0vsPyu6pOWFxjNNblVxMl6bTPW5eWyaju4Mg="
+
},
+
"src/third_party/libipp/libipp": {
+
"url": "https://chromium.googlesource.com/chromiumos/platform2/libipp.git",
+
"rev": "2209bb84a8e122dab7c02fe66cc61a7b42873d7f",
+
"hash": "sha256-gxU92lHLd6uxO8T3QWhZIK0hGy97cki705DV0VimCPY="
+
},
+
"src/third_party/libjpeg_turbo": {
+
"url": "https://chromium.googlesource.com/chromium/deps/libjpeg_turbo.git",
+
"rev": "927aabfcd26897abb9776ecf2a6c38ea5bb52ab6",
+
"hash": "sha256-qgHXAjCDFxQ+QqJ8pSmI1NUvHvKKTi4MkIe1I/+hUAI="
+
},
+
"src/third_party/liblouis/src": {
+
"url": "https://chromium.googlesource.com/external/liblouis-github.git",
+
"rev": "9700847afb92cb35969bdfcbbfbbb74b9c7b3376",
+
"hash": "sha256-EI/uaHXe0NlqdEw764q0SjerThYEVLRogUlmrsZwXnY="
+
},
+
"src/third_party/libphonenumber/dist": {
+
"url": "https://chromium.googlesource.com/external/libphonenumber.git",
+
"rev": "140dfeb81b753388e8a672900fb7a971e9a0d362",
+
"hash": "sha256-3hSnTFTD3KAdbyxfKg12qbIYTmw6YlTCH64gMP/HUJo="
+
},
+
"src/third_party/libprotobuf-mutator/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/google/libprotobuf-mutator.git",
+
"rev": "a304ec48dcf15d942607032151f7e9ee504b5dcf",
+
"hash": "sha256-ZyPweW+V5foxFQwjjMLkaRUo+FNV+kEDGIH/4oRV614="
+
},
+
"src/third_party/libsrtp": {
+
"url": "https://chromium.googlesource.com/chromium/deps/libsrtp.git",
+
"rev": "000edd791434c8738455f10e0dd6b268a4852c0b",
+
"hash": "sha256-4qEZ9MD97MoqCUlZtbEhIKy+fDO1iIWqyrBsKwkjXTg="
+
},
+
"src/third_party/libsync/src": {
+
"url": "https://chromium.googlesource.com/aosp/platform/system/core/libsync.git",
+
"rev": "f4f4387b6bf2387efbcfd1453af4892e8982faf6",
+
"hash": "sha256-Mkl6C1LxF3RYLwYbxiSfoQPt8QKFwQWj/Ati2sNJ32E="
+
},
+
"src/third_party/libvpx/source/libvpx": {
+
"url": "https://chromium.googlesource.com/webm/libvpx.git",
+
"rev": "906334ac1de2b0afa666472dce5545b82c1251fb",
+
"hash": "sha256-7GInV/uHuK6bUa1dSBuxJn6adyjfoOqSqfmfTvQbAoc="
+
},
+
"src/third_party/libwebm/source": {
+
"url": "https://chromium.googlesource.com/webm/libwebm.git",
+
"rev": "26d9f667170dc75e8d759a997bb61c64dec42dda",
+
"hash": "sha256-Mn3snC2g4BDKBJsS6cxT3BZL7LZknOWg77+60Nr4Hy0="
+
},
+
"src/third_party/libwebp/src": {
+
"url": "https://chromium.googlesource.com/webm/libwebp.git",
+
"rev": "845d5476a866141ba35ac133f856fa62f0b7445f",
+
"hash": "sha256-xuRpEwOnaLGZmrPvfUn3DSoJANd94CG+JXcN7Mdmk5I="
+
},
+
"src/third_party/libyuv": {
+
"url": "https://chromium.googlesource.com/libyuv/libyuv.git",
+
"rev": "a8e59d207483f75b87dd5fc670e937672cdf5776",
+
"hash": "sha256-gTNmhYuYmt/JmWSAVbcE4PqG3kW/JaL7XEWXbiNVfMM="
+
},
+
"src/third_party/lss": {
+
"url": "https://chromium.googlesource.com/linux-syscall-support.git",
+
"rev": "ce877209e11aa69dcfffbd53ef90ea1d07136521",
+
"hash": "sha256-hE8uZf9Fst66qJkoVYChiB8G41ie+k9M4X0W+5JUSdw="
+
},
+
"src/third_party/material_color_utilities/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/material-foundation/material-color-utilities.git",
+
"rev": "13434b50dcb64a482cc91191f8cf6151d90f5465",
+
"hash": "sha256-Y85XU+z9W6tvmDNHJ/dXQnUKXvvDkO3nH/kUJRLqbc4="
+
},
+
"src/third_party/minigbm/src": {
+
"url": "https://chromium.googlesource.com/chromiumos/platform/minigbm.git",
+
"rev": "3018207f4d89395cc271278fb9a6558b660885f5",
+
"hash": "sha256-9HwvjTETerbQ7YKXH9kUB2eWa8PxGWMAJfx1jAluhrs="
+
},
+
"src/third_party/nasm": {
+
"url": "https://chromium.googlesource.com/chromium/deps/nasm.git",
+
"rev": "f477acb1049f5e043904b87b825c5915084a9a29",
+
"hash": "sha256-SiRXHsUlWXtH6dbDjDjqNAm105ibEB3jOfNtQAM4CaY="
+
},
+
"src/third_party/neon_2_sse/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/intel/ARM_NEON_2_x86_SSE.git",
+
"rev": "a15b489e1222b2087007546b4912e21293ea86ff",
+
"hash": "sha256-299ZptvdTmCnIuVVBkrpf5ZTxKPwgcGUob81tEI91F0="
+
},
+
"src/third_party/openh264/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/cisco/openh264",
+
"rev": "478e5ab3eca30e600006d5a0a08b176fd34d3bd1",
+
"hash": "sha256-S7dS2IZwt4p4ZrF6K7E5HnwKuI3owU2I7vwtu95uTkE="
+
},
+
"src/third_party/openscreen/src": {
+
"url": "https://chromium.googlesource.com/openscreen",
+
"rev": "4f27c4f1698522dfcea36dca948a13e2eaf4c26c",
+
"hash": "sha256-dosSqpFlvli60ZJ0vexVZOK/FmzOYq5BDrZKZW0lMfc="
+
},
+
"src/third_party/openscreen/src/buildtools": {
+
"url": "https://chromium.googlesource.com/chromium/src/buildtools",
+
"rev": "4e0e9c73a0f26735f034f09a9cab2a5c0178536b",
+
"hash": "sha256-suuxUL//BfAMmG8os8ChI7ic9EjGTi7y5kjxiAyrEQc="
+
},
+
"src/third_party/openscreen/src/third_party/tinycbor/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/intel/tinycbor.git",
+
"rev": "d393c16f3eb30d0c47e6f9d92db62272f0ec4dc7",
+
"hash": "sha256-fMKBFUSKmODQyg4hKIa1hwnEKIV6WBbY1Gb8DOSnaHA="
+
},
+
"src/third_party/pdfium": {
+
"url": "https://pdfium.googlesource.com/pdfium.git",
+
"rev": "7a8409531fbb58d7d15ae331e645977b113d7ced",
+
"hash": "sha256-KlqgaOxKJQHHjU1g1VCcJEBhv809DdEUedrxdk8N99I="
+
},
+
"src/third_party/perfetto": {
+
"url": "https://android.googlesource.com/platform/external/perfetto.git",
+
"rev": "24764a1d9c2fce1e9816ffae691f00353ade330d",
+
"hash": "sha256-FAaxTuIYExmL3PSWwcvLpnPD4qsGDGr4/CIyi0NSrnI="
+
},
+
"src/third_party/protobuf-javascript/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/protocolbuffers/protobuf-javascript",
+
"rev": "e34549db516f8712f678fcd4bc411613b5cc5295",
+
"hash": "sha256-TmP6xftUVTD7yML7UEM/DB8bcsL5RFlKPyCpcboD86U="
+
},
+
"src/third_party/pthreadpool/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/Maratyszcza/pthreadpool.git",
+
"rev": "560c60d342a76076f0557a3946924c6478470044",
+
"hash": "sha256-rGg6lgLkmbYo+a9CdaXz9ZUyrqJ1rxLcjLJeBEOPAlE="
+
},
+
"src/third_party/pyelftools": {
+
"url": "https://chromium.googlesource.com/chromiumos/third_party/pyelftools.git",
+
"rev": "19b3e610c86fcadb837d252c794cb5e8008826ae",
+
"hash": "sha256-I/7p3IEvfP/gkes4kx18PvWwhAKilQKb67GXoW4zFB4="
+
},
+
"src/third_party/quic_trace/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/google/quic-trace.git",
+
"rev": "caa0a6eaba816ecb737f9a70782b7c80b8ac8dbc",
+
"hash": "sha256-Nf9ZDLcE1JunhbpEMHhrY2ROnbgrvVZoRkPwWq1DU0g="
+
},
+
"src/third_party/pywebsocket3/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/GoogleChromeLabs/pywebsocket3.git",
+
"rev": "50602a14f1b6da17e0b619833a13addc6ea78bc2",
+
"hash": "sha256-WEqqu2/7fLqcf/2/IcD7/FewRSZ6jTgVlVBvnihthYQ="
+
},
+
"src/third_party/re2/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/google/re2.git",
+
"rev": "6dcd83d60f7944926bfd308cc13979fc53dd69ca",
+
"hash": "sha256-IeANwJlJl45yf8iu/AZNDoiyIvTCZIeK1b74sdCfAIc="
+
},
+
"src/third_party/ruy/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/google/ruy.git",
+
"rev": "c08ec529fc91722bde519628d9449258082eb847",
+
"hash": "sha256-4NVvqUZn2BdwTxJINTHwPeRqbGXZrWdcd7jv1Y+eoKY="
+
},
+
"src/third_party/skia": {
+
"url": "https://skia.googlesource.com/skia.git",
+
"rev": "94631d9b9a10697325589e1642af63a0137cac94",
+
"hash": "sha256-SKKLOxjimQWt8W+Q3wlCJaUC/lxw6EIZDFBuVQKmnVY="
+
},
+
"src/third_party/smhasher/src": {
+
"url": "https://chromium.googlesource.com/external/smhasher.git",
+
"rev": "e87738e57558e0ec472b2fc3a643b838e5b6e88f",
+
"hash": "sha256-RyC//me08hwGXRrWcK8GZ1uhIkBq4FByA7fHCVDsniw="
+
},
+
"src/third_party/snappy/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/google/snappy.git",
+
"rev": "c9f9edf6d75bb065fa47468bf035e051a57bec7c",
+
"hash": "sha256-5fV6NfO8vmqK+iCwpLtE2YjYOzjsshctauyjNIOxrH0="
+
},
+
"src/third_party/sqlite/src": {
+
"url": "https://chromium.googlesource.com/chromium/deps/sqlite.git",
+
"rev": "567495a62a62dc013888500526e82837d727fe01",
+
"hash": "sha256-ltl3OTk/wZPSj3yYthNlKd3mBxef6l5uW6UYTwebNek="
+
},
+
"src/third_party/swiftshader": {
+
"url": "https://swiftshader.googlesource.com/SwiftShader.git",
+
"rev": "7a9a492a38b7c701f7c96a15a76046aed8f8c0c3",
+
"hash": "sha256-6uBO4jwPSqhT4j+KTE0Za7B4prrE2kstsHNtHwTJX+Q="
+
},
+
"src/third_party/text-fragments-polyfill/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/GoogleChromeLabs/text-fragments-polyfill.git",
+
"rev": "c036420683f672d685e27415de0a5f5e85bdc23f",
+
"hash": "sha256-4rW2u1cQAF4iPWHAt1FvVXIpz2pmI901rEPks/w/iFA="
+
},
+
"src/third_party/tflite/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/tensorflow/tensorflow.git",
+
"rev": "689e8a82f8070a372981b7476fb673e243330d71",
+
"hash": "sha256-tImVDNyS5hCN6A1ODeVuB7XLCNr3EdxN8x961nPCM9g="
+
},
+
"src/third_party/vulkan-deps": {
+
"url": "https://chromium.googlesource.com/vulkan-deps",
+
"rev": "73fd75175922012f21557239b7743a152ea7f1fd",
+
"hash": "sha256-D8UIXXQX6dTxbuqFgd6AbmErr1r9839yiN6MrJlsqPw="
+
},
+
"src/third_party/glslang/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/KhronosGroup/glslang",
+
"rev": "2acc4ea0028bc703be2d4e9bc8a4032d015d6516",
+
"hash": "sha256-mwcvSRycM8bq3dDWk4yfkL8Tg5bfEap6lrr1Oxemzy4="
+
},
+
"src/third_party/spirv-cross/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/KhronosGroup/SPIRV-Cross",
+
"rev": "b8fcf307f1f347089e3c46eb4451d27f32ebc8d3",
+
"hash": "sha256-H43M9DXfEuyKuvo6rjb5k0KEbYOSFodbPJh8ZKY4PQg="
+
},
+
"src/third_party/spirv-headers/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/KhronosGroup/SPIRV-Headers",
+
"rev": "50bc4debdc3eec5045edbeb8ce164090e29b91f3",
+
"hash": "sha256-Zv5QZ8MmP45MH5e6EBDNPmP0vcjjNXJHKva5MNh5ovA="
+
},
+
"src/third_party/spirv-tools/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/KhronosGroup/SPIRV-Tools",
+
"rev": "42b315c15b1ff941b46bb3949c105e5386be8717",
+
"hash": "sha256-xb0TlPyXP2wu7jMrWZu+z8WC5mk0CbYgvkZEt3r+mww="
+
},
+
"src/third_party/vulkan-headers/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Headers",
+
"rev": "14345dab231912ee9601136e96ca67a6e1f632e7",
+
"hash": "sha256-ny/UVx4r+Fj39ZEepaWqDPplAJcrBQEQlkqsSofwLJ0="
+
},
+
"src/third_party/vulkan-loader/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Loader",
+
"rev": "bd1c8ea9c6ac51e4c3a6ddb9d602bb204678eb5f",
+
"hash": "sha256-Ze/DGiD8Zj3mY+5Pi+tf6xMrX2YBqfl4Nc37b/JgmnI="
+
},
+
"src/third_party/vulkan-tools/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Tools",
+
"rev": "c9a5acda16dc2759457dc856b5d7df00ac5bf4a2",
+
"hash": "sha256-0JzqUW6XbhPbLGs/smuNG6zQoWP8iaAO5VglGSyN94g="
+
},
+
"src/third_party/vulkan-utility-libraries/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Utility-Libraries",
+
"rev": "8c907ea21fe0147f791d79051b18e21bc8c4ede0",
+
"hash": "sha256-2abhzNt/rKbAhGQZhUhQ2LoemtU1Yh1fx9rrijOtjy4="
+
},
+
"src/third_party/vulkan-validation-layers/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-ValidationLayers",
+
"rev": "cbb4ab171fc7cd0b636a76ee542e238a8734f4be",
+
"hash": "sha256-nKpS0ddAsN2KhOg6J/SwB8ZlVXrJTVixD4DuUkyxb6c="
+
},
+
"src/third_party/vulkan_memory_allocator": {
+
"url": "https://chromium.googlesource.com/external/github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator.git",
+
"rev": "56300b29fbfcc693ee6609ddad3fdd5b7a449a21",
+
"hash": "sha256-YzxHZagz/M8Y54UnI4h1wu5jSTuaOgv0ifC9d3fJZlQ="
+
},
+
"src/third_party/wayland/src": {
+
"url": "https://chromium.googlesource.com/external/anongit.freedesktop.org/git/wayland/wayland.git",
+
"rev": "a156431ea66fe67d69c9fbba8a8ad34dabbab81c",
+
"hash": "sha256-oK0Z8xO2ILuySGZS0m37ZF0MOyle2l8AXb0/6wai0/w="
+
},
+
"src/third_party/wayland-protocols/src": {
+
"url": "https://chromium.googlesource.com/external/anongit.freedesktop.org/git/wayland/wayland-protocols.git",
+
"rev": "7d5a3a8b494ae44cd9651f9505e88a250082765e",
+
"hash": "sha256-o/adWEXYSqWib6KoK7XMCWbojapcS4O/CEPxv7iFCw8="
+
},
+
"src/third_party/wayland-protocols/kde": {
+
"url": "https://chromium.googlesource.com/external/github.com/KDE/plasma-wayland-protocols.git",
+
"rev": "0b07950714b3a36c9b9f71fc025fc7783e82926e",
+
"hash": "sha256-Dmcp/2ms/k7NxPPmPkp0YNfM9z2Es1ZO0uX10bc7N2Y="
+
},
+
"src/third_party/wayland-protocols/gtk": {
+
"url": "https://chromium.googlesource.com/external/github.com/GNOME/gtk.git",
+
"rev": "40ebed3a03aef096addc0af09fec4ec529d882a0",
+
"hash": "sha256-75XNnLkF5Lt1LMRGT+T61k0/mLa3kkynfN+QWvZ0LiQ="
+
},
+
"src/third_party/webdriver/pylib": {
+
"url": "https://chromium.googlesource.com/external/github.com/SeleniumHQ/selenium/py.git",
+
"rev": "fc5e7e70c098bfb189a9a74746809ad3c5c34e04",
+
"hash": "sha256-WIqWXIKVgElgg8P8laLAlUrgwodGdeVcwohZxnPKedw="
+
},
+
"src/third_party/webgl/src": {
+
"url": "https://chromium.googlesource.com/external/khronosgroup/webgl.git",
+
"rev": "450cceb587613ac1469c5a131fac15935c99e0e7",
+
"hash": "sha256-32r3BdmsNA89mo0k+vK1G3718AOjseE7cJlopZ/0pSw="
+
},
+
"src/third_party/webgpu-cts/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/gpuweb/cts.git",
+
"rev": "ae8b3ca40fbeee0bc67ef41a6c5b6dd5af839344",
+
"hash": "sha256-7u5Ay43GtcVTt3Cwg/5OaYQdG6SXXYtUun7DVN+XChE="
+
},
+
"src/third_party/webrtc": {
+
"url": "https://webrtc.googlesource.com/src.git",
+
"rev": "8445abdf8069cadcbd134369b70d0ebd436ef477",
+
"hash": "sha256-EitEjXNtm0gB9wtAwIYHBHkU7paHg5zvsTz171hRmK4="
+
},
+
"src/third_party/wuffs/src": {
+
"url": "https://skia.googlesource.com/external/github.com/google/wuffs-mirror-release-c.git",
+
"rev": "e3f919ccfe3ef542cfc983a82146070258fb57f8",
+
"hash": "sha256-373d2F/STcgCHEq+PO+SCHrKVOo6uO1rqqwRN5eeBCw="
+
},
+
"src/third_party/weston/src": {
+
"url": "https://chromium.googlesource.com/external/anongit.freedesktop.org/git/wayland/weston.git",
+
"rev": "ccf29cb237c3ed09c5f370f35239c93d07abfdd7",
+
"hash": "sha256-y2srFaPUOoB2umzpo4+hFfhNlqXM2AoMGOpUy/ZSacg="
+
},
+
"src/third_party/xdg-utils": {
+
"url": "https://chromium.googlesource.com/chromium/deps/xdg-utils.git",
+
"rev": "cb54d9db2e535ee4ef13cc91b65a1e2741a94a44",
+
"hash": "sha256-WuQ9uDq+QD17Y20ACFGres4nbkeOiTE2y+tY1avAT5U="
+
},
+
"src/third_party/xnnpack/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/google/XNNPACK.git",
+
"rev": "3986629de01e518a3f2359bf5629ef2b7ef72330",
+
"hash": "sha256-x8GQUj75mQXswI3b29tS9u25Zx3peYqDM8v1/wkC9cs="
+
},
+
"src/tools/page_cycler/acid3": {
+
"url": "https://chromium.googlesource.com/chromium/deps/acid3.git",
+
"rev": "a926d0a32e02c4c03ae95bb798e6c780e0e184ba",
+
"hash": "sha256-s/49EaYQRsyxuLejXc1zGDYTD7uO0ddaQIJBP50Bvw0="
+
},
+
"src/third_party/zstd/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/facebook/zstd.git",
+
"rev": "20707e3718ee14250fb8a44b3bf023ea36bd88df",
+
"hash": "sha256-/IUfh0De9m7ACrisqKlpxZsb+asoAWGXCaK6L+s24Q8="
+
},
+
"src/v8": {
+
"url": "https://chromium.googlesource.com/v8/v8.git",
+
"rev": "bd2671b973062afc614b852ec190524b80aaef8a",
+
"hash": "sha256-uq0CE7Chqzy2d+iifC3hV9RTnDVinpwjl1pOzyNGbSo="
+
}
+
}
+
},
+
"ungoogled-chromium": {
+
"version": "131.0.6778.69",
+
"deps": {
+
"depot_tools": {
+
"rev": "20b9bdcace7ed561d6a75728c85373503473cb6b",
+
"hash": "sha256-vlBENaVTtbwDJtSswuszcUlx+icZYJeP6ew6MO1cAv0="
+
},
+
"gn": {
+
"rev": "95b0f8fe31a992a33c040bbe3867901335c12762",
+
"hash": "sha256-a8yCdBsl0nBMPS+pCLwrkAvQNP/THx/z/GySyOgx4Jk="
+
},
+
"ungoogled-patches": {
+
"rev": "131.0.6778.69-1",
+
"hash": "sha256-1XKlIO8aH3eHNiF4fPJGymo1MGUgHlqD98vWjHGMWHY="
+
},
+
"npmHash": "sha256-b1l8SwjAfoColoa3zhTMPEF/rRuxzT3ATHE77rWU5EA="
+
},
+
"DEPS": {
+
"src": {
+
"url": "https://chromium.googlesource.com/chromium/src.git",
+
"rev": "131.0.6778.69",
+
"hash": "sha256-GbhiqLRC5Kilo84XwYHnosNUgtZNCwmuzSOkP6if/8s=",
+
"recompress": true
+
},
+
"src/third_party/clang-format/script": {
+
"url": "https://chromium.googlesource.com/external/github.com/llvm/llvm-project/clang/tools/clang-format.git",
+
"rev": "3c0acd2d4e73dd911309d9e970ba09d58bf23a62",
+
"hash": "sha256-whD8isX2ZhLrFzdxHhFP1S/sZDRgyrzLFaVd7OEFqYo="
+
},
+
"src/third_party/libc++/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/llvm/llvm-project/libcxx.git",
+
"rev": "6a68fd412b9aecd515a20a7cf84d11b598bfaf96",
+
"hash": "sha256-7skqaen0XqbRvAGXQ0/3kea3vRInktdP3DOBeIBiGlQ="
+
},
+
"src/third_party/libc++abi/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/llvm/llvm-project/libcxxabi.git",
+
"rev": "9a1d90c3b412d5ebeb97a6e33d98e1d0dd923221",
+
"hash": "sha256-zPm+Rif9fITazDvvm6SvLq8gwcPzPbuaXlRbyYqv7JA="
+
},
+
"src/third_party/libunwind/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/llvm/llvm-project/libunwind.git",
+
"rev": "efc3baa2d1ece3630fcfa72bef93ed831bcaec4c",
+
"hash": "sha256-0OBelaxkKdajYXrGgz08nyPZhxqpsnFXiF3m8DGQkDo="
+
},
+
"src/chrome/test/data/perf/canvas_bench": {
+
"url": "https://chromium.googlesource.com/chromium/canvas_bench.git",
+
"rev": "a7b40ea5ae0239517d78845a5fc9b12976bfc732",
+
"hash": "sha256-svOuyBGKloBLM11xLlWCDsB4PpRjdKTBdW2UEW4JQjM="
+
},
+
"src/chrome/test/data/perf/frame_rate/content": {
+
"url": "https://chromium.googlesource.com/chromium/frame_rate/content.git",
+
"rev": "c10272c88463efeef6bb19c9ec07c42bc8fe22b9",
+
"hash": "sha256-t4kcuvH0rkPBkcdiMsoNQaRwU09eU+oSvyHDiAHrKXo="
+
},
+
"src/chrome/test/data/xr/webvr_info": {
+
"url": "https://chromium.googlesource.com/external/github.com/toji/webvr.info.git",
+
"rev": "c58ae99b9ff9e2aa4c524633519570bf33536248",
+
"hash": "sha256-BsAPwc4oEWri0TlqhyxqFNqKdfgVSrB0vQyISmYY4eg="
+
},
+
"src/docs/website": {
+
"url": "https://chromium.googlesource.com/website.git",
+
"rev": "4811f9e01c4cfcbf9c6957015063eaaa0d92be91",
+
"hash": "sha256-98wwIeMTF2Wg2sJ07U1OUV83wR9nJOjGubp7Vnk3kj8="
+
},
+
"src/media/cdm/api": {
+
"url": "https://chromium.googlesource.com/chromium/cdm.git",
+
"rev": "eb21edc44e8e5a82095037be80c8b15c51624293",
+
"hash": "sha256-6J6aSYW0or99VAgMNJJOdJqMJspoG7w1HxDN50MV5bw="
+
},
+
"src/net/third_party/quiche/src": {
+
"url": "https://quiche.googlesource.com/quiche.git",
+
"rev": "e0175250977c2b2b95087afc0857883538a1386c",
+
"hash": "sha256-1O+hnZF73AY44jcmajJlpaQY5PV4+x0hYwqf1TtMahY="
+
},
+
"src/testing/libfuzzer/fuzzers/wasm_corpus": {
+
"url": "https://chromium.googlesource.com/v8/fuzzer_wasm_corpus.git",
+
"rev": "f650ff816f2ef227f61ea2e9f222aa69708ab367",
+
"hash": "sha256-qWsGQNUptbz0jYvUuxP7woNf5QQrfn9k3uvr82Yk0QM="
+
},
+
"src/third_party/accessibility_test_framework/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/google/Accessibility-Test-Framework-for-Android.git",
+
"rev": "4a764c690353ea136c82f1a696a70bf38d1ef5fe",
+
"hash": "sha256-mzVgoxxBWebesG6okyMxxmO6oH+TITA4o9ucHHMMzkQ="
+
},
+
"src/third_party/angle": {
+
"url": "https://chromium.googlesource.com/angle/angle.git",
+
"rev": "ac6cda4cbd716102ded6a965f79573b41581898d",
+
"hash": "sha256-7Zfc262U42G6BUlxnLp6sQ78VlWBt0pTzkYwXY0rqaE="
+
},
+
"src/third_party/angle/third_party/glmark2/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/glmark2/glmark2",
+
"rev": "ca8de51fedb70bace5351c6b002eb952c747e889",
+
"hash": "sha256-L7+zWM0qn8WFhmON7DGvarTsN1YHt1sn5+hazTOZrrk="
+
},
+
"src/third_party/angle/third_party/rapidjson/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/Tencent/rapidjson",
+
"rev": "781a4e667d84aeedbeb8184b7b62425ea66ec59f",
+
"hash": "sha256-btUl1a/B0sXwf/+hyvCvVJjWqIkXfVYCpHm3TeBuOxk="
+
},
+
"src/third_party/angle/third_party/VK-GL-CTS/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/KhronosGroup/VK-GL-CTS",
+
"rev": "179dd9f858f0f5b0e52b61aefc621dc82e2ad34a",
+
"hash": "sha256-B7X9PTlMQdolsvEfuCNaKnRFcvsPNZtn5FOcJBY6sCA="
+
},
+
"src/third_party/anonymous_tokens/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/google/anonymous-tokens.git",
+
"rev": "6ea6ec78f9e4998d0a7a5677b2aec08f0ac858f8",
+
"hash": "sha256-PMB49+zW9ewlS9ym+xi0xYQYLN0j5Urx6yBXWd8FjjI="
+
},
+
"src/third_party/content_analysis_sdk/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/chromium/content_analysis_sdk.git",
+
"rev": "9a408736204513e0e95dd2ab3c08de0d95963efc",
+
"hash": "sha256-f5Jmk1MiGjaRdLun+v/GKVl8Yv9hOZMTQUSxgiJalcY="
+
},
+
"src/third_party/dav1d/libdav1d": {
+
"url": "https://chromium.googlesource.com/external/github.com/videolan/dav1d.git",
+
"rev": "389450f61ea0b2057fc9ea393d3065859c4ba7f2",
+
"hash": "sha256-FK3tOLq5NcKQuStY5o8Lv2CXpjYHJm7n+NnyLFMOCxo="
+
},
+
"src/third_party/dawn": {
+
"url": "https://dawn.googlesource.com/dawn.git",
+
"rev": "cdc5b4dc1ee1482378b545b6c1efa1a234195ab5",
+
"hash": "sha256-HtLdotDYA0fsUyFkk/nhJ+GPC+GkbwfmyPbJLKAyKdE="
+
},
+
"src/third_party/dawn/third_party/glfw": {
+
"url": "https://chromium.googlesource.com/external/github.com/glfw/glfw",
+
"rev": "b35641f4a3c62aa86a0b3c983d163bc0fe36026d",
+
"hash": "sha256-E1zXIDiw87badrLOZTvV+Wh9NZHu51nb70ZK9vlAlqE="
+
},
+
"src/third_party/dawn/third_party/dxc": {
+
"url": "https://chromium.googlesource.com/external/github.com/microsoft/DirectXShaderCompiler",
+
"rev": "080aeb7199e66e4b0a2b6383fd26a9f8d2cccbf5",
+
"hash": "sha256-YHEBGqfftgK68wWAWVTxtbl1GECBT1qTNe7irYkM/8k="
+
},
+
"src/third_party/dawn/third_party/dxheaders": {
+
"url": "https://chromium.googlesource.com/external/github.com/microsoft/DirectX-Headers",
+
"rev": "980971e835876dc0cde415e8f9bc646e64667bf7",
+
"hash": "sha256-0Miw1Cy/jmOo7bLFBOHuTRDV04cSeyvUEyPkpVsX9DA="
+
},
+
"src/third_party/dawn/third_party/webgpu-headers": {
+
"url": "https://chromium.googlesource.com/external/github.com/webgpu-native/webgpu-headers",
+
"rev": "8049c324dc7b3c09dc96ea04cb02860f272c8686",
+
"hash": "sha256-J3PcwYoO79HqrACFgk77BZLTCi7oi5k2J6v3wlcFVD4="
+
},
+
"src/third_party/dawn/third_party/khronos/OpenGL-Registry": {
+
"url": "https://chromium.googlesource.com/external/github.com/KhronosGroup/OpenGL-Registry",
+
"rev": "5bae8738b23d06968e7c3a41308568120943ae77",
+
"hash": "sha256-K3PcRIiD3AmnbiSm5TwaLs4Gu9hxaN8Y91WMKK8pOXE="
+
},
+
"src/third_party/dawn/third_party/khronos/EGL-Registry": {
+
"url": "https://chromium.googlesource.com/external/github.com/KhronosGroup/EGL-Registry",
+
"rev": "7dea2ed79187cd13f76183c4b9100159b9e3e071",
+
"hash": "sha256-Z6DwLfgQ1wsJXz0KKJyVieOatnDmx3cs0qJ6IEgSq1A="
+
},
+
"src/third_party/dawn/third_party/webgpu-cts": {
+
"url": "https://chromium.googlesource.com/external/github.com/gpuweb/cts",
+
"rev": "815ff2bb4038144dea89c33021bc4429f22a130f",
+
"hash": "sha256-28uZotrv+/MBBo+pcBWY3Csqrdv5Y4DxGbGEwK9Cwdw="
+
},
+
"src/third_party/highway/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/google/highway.git",
+
"rev": "8295336dd70f1201d42c22ab5b0861de38cf8fbf",
+
"hash": "sha256-PXsXIqWB4NNiFhanRjMIFSWYuW/IRuQo8mMPUBEentY="
+
},
+
"src/third_party/google_benchmark/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/google/benchmark.git",
+
"rev": "344117638c8ff7e239044fd0fa7085839fc03021",
+
"hash": "sha256-gztnxui9Fe/FTieMjdvfJjWHjkImtlsHn6fM1FruyME="
+
},
+
"src/third_party/boringssl/src": {
+
"url": "https://boringssl.googlesource.com/boringssl.git",
+
"rev": "cd95210465496ac2337b313cf49f607762abe286",
+
"hash": "sha256-172yvjgbFWQyd0PBRl74PJzpY/mDGC85D7PdeogNodU="
+
},
+
"src/third_party/breakpad/breakpad": {
+
"url": "https://chromium.googlesource.com/breakpad/breakpad.git",
+
"rev": "6b0c5b7ee1988a14a4af94564e8ae8bba8a94374",
+
"hash": "sha256-kTkwRfaqw5ZCHEvu2YPZ+1vCfekHkY5pY3m9snDN64g="
+
},
+
"src/third_party/cast_core/public/src": {
+
"url": "https://chromium.googlesource.com/cast_core/public",
+
"rev": "71f51fd6fa45fac73848f65421081edd723297cd",
+
"hash": "sha256-AalRQhJmornCqmvE2+36J/3LubaA0jr6P1PXy32lX4I="
+
},
+
"src/third_party/catapult": {
+
"url": "https://chromium.googlesource.com/catapult.git",
+
"rev": "44791916611acec1cd74c492c7453e46d9b0dbd2",
+
"hash": "sha256-SkF+RIIlU8Vl3AmN6kARkLuVz/X5vygNOtGN2K3Sr+M="
+
},
+
"src/third_party/ced/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/google/compact_enc_det.git",
+
"rev": "ba412eaaacd3186085babcd901679a48863c7dd5",
+
"hash": "sha256-ySG74Rj2i2c/PltEgHVEDq+N8yd9gZmxNktc56zIUiY="
+
},
+
"src/third_party/chromium-variations": {
+
"url": "https://chromium.googlesource.com/chromium-variations.git",
+
"rev": "7d681838b57a25ca6659b9cc0111f879147c416b",
+
"hash": "sha256-zio8SqKEqOYYjVWZnzfrPqngqym2lZu9M/hgSi3ey0Q="
+
},
+
"src/third_party/cld_3/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/google/cld_3.git",
+
"rev": "b48dc46512566f5a2d41118c8c1116c4f96dc661",
+
"hash": "sha256-C3MOMBUy9jgkT9BAi/Fgm2UH4cxRuwSBEcRl3hzM2Ss="
+
},
+
"src/third_party/colorama/src": {
+
"url": "https://chromium.googlesource.com/external/colorama.git",
+
"rev": "3de9f013df4b470069d03d250224062e8cf15c49",
+
"hash": "sha256-6ZTdPYSHdQOLYMSnE+Tp7PgsVTs3U2awGu9Qb4Rg/tk="
+
},
+
"src/third_party/cpu_features/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/google/cpu_features.git",
+
"rev": "936b9ab5515dead115606559502e3864958f7f6e",
+
"hash": "sha256-E8LoVzhe+TAmARWZTSuINlsVhzpUJMxPPCGe/dHZcyA="
+
},
+
"src/third_party/cpuinfo/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/pytorch/cpuinfo.git",
+
"rev": "1e83a2fdd3102f65c6f1fb602c1b320486218a99",
+
"hash": "sha256-28cFACca+NYE8oKlP5aWXNCLeEjhWqJ6gRnFI+VxDvg="
+
},
+
"src/third_party/crc32c/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/google/crc32c.git",
+
"rev": "d3d60ac6e0f16780bcfcc825385e1d338801a558",
+
"hash": "sha256-KBraGaO5LmmPP+p8RuDogGldbTWdNDK+WzF4Q09keuE="
+
},
+
"src/third_party/cros_system_api": {
+
"url": "https://chromium.googlesource.com/chromiumos/platform2/system_api.git",
+
"rev": "b08c5ad457bddea2664ba20fb25beb3d1799fed2",
+
"hash": "sha256-cwpcY8YTXk+VVIFphO5ihc5rvbG3ZY9iHeK81P5DHBs="
+
},
+
"src/third_party/crossbench": {
+
"url": "https://chromium.googlesource.com/crossbench.git",
+
"rev": "b4d7ae714c548c3e139b95a85582dc15ece1d2f7",
+
"hash": "sha256-1RDDbvce5WR32if3cFYxiU9HS04x3BYIgOFJPMVJSBo="
+
},
+
"src/third_party/depot_tools": {
+
"url": "https://chromium.googlesource.com/chromium/tools/depot_tools.git",
+
"rev": "20b9bdcace7ed561d6a75728c85373503473cb6b",
+
"hash": "sha256-vlBENaVTtbwDJtSswuszcUlx+icZYJeP6ew6MO1cAv0="
+
},
+
"src/third_party/devtools-frontend/src": {
+
"url": "https://chromium.googlesource.com/devtools/devtools-frontend",
+
"rev": "5284f1c63b2b08c47b8915ce713a1aace991dfe9",
+
"hash": "sha256-1Nh9SVIAde4jxgwFucbtZpl6rMyPM4Plfi+dhwP0wI8="
+
},
+
"src/third_party/dom_distiller_js/dist": {
+
"url": "https://chromium.googlesource.com/chromium/dom-distiller/dist.git",
+
"rev": "199de96b345ada7c6e7e6ba3d2fa7a6911b8767d",
+
"hash": "sha256-yuEBD2XQlV3FGI/i7lTmJbCqzeBiuG1Qow8wvsppGJw="
+
},
+
"src/third_party/eigen3/src": {
+
"url": "https://chromium.googlesource.com/external/gitlab.com/libeigen/eigen.git",
+
"rev": "7eea0a9213e801ad9479a6499fd0330ec1db8693",
+
"hash": "sha256-JkOjOnLrDOcYHi3hptT1BDRvsKpTtOsBHT8YLb1hlJM="
+
},
+
"src/third_party/farmhash/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/google/farmhash.git",
+
"rev": "816a4ae622e964763ca0862d9dbd19324a1eaf45",
+
"hash": "sha256-5n58VEUxa/K//jAfZqG4cXyfxrp50ogWDNYcgiXVHdc="
+
},
+
"src/third_party/fast_float/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/fastfloat/fast_float.git",
+
"rev": "3e57d8dcfb0a04b5a8a26b486b54490a2e9b310f",
+
"hash": "sha256-0eVovauN7SnO3nSIWBRWAJ4dR7q5beZrIGUZ18M2pao="
+
},
+
"src/third_party/ffmpeg": {
+
"url": "https://chromium.googlesource.com/chromium/third_party/ffmpeg.git",
+
"rev": "686d6944501a6ee9c849581e3fe343273d4af3f6",
+
"hash": "sha256-j5mpWn4j+U4rRlXbq8okUUXrRKycZkiV+UntiS90ChM="
+
},
+
"src/third_party/flac": {
+
"url": "https://chromium.googlesource.com/chromium/deps/flac.git",
+
"rev": "689da3a7ed50af7448c3f1961d1791c7c1d9c85c",
+
"hash": "sha256-gvTFPNOlBfozptaH7lTb9iD/09AmpdT3kCl9ClszjEs="
+
},
+
"src/third_party/flatbuffers/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/google/flatbuffers.git",
+
"rev": "8db59321d9f02cdffa30126654059c7d02f70c32",
+
"hash": "sha256-tbc45o0MbMvK5XqRUJt5Eg8BU6+TJqlmwFgQhHq6wRM="
+
},
+
"src/third_party/fontconfig/src": {
+
"url": "https://chromium.googlesource.com/external/fontconfig.git",
+
"rev": "14d466b30a8ab4a9d789977ed94f2c30e7209267",
+
"hash": "sha256-W5WIgC6A52kY4fNkbsDEa0o+dfd97Rl5NKfgnIRpI00="
+
},
+
"src/third_party/fp16/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/Maratyszcza/FP16.git",
+
"rev": "0a92994d729ff76a58f692d3028ca1b64b145d91",
+
"hash": "sha256-m2d9bqZoGWzuUPGkd29MsrdscnJRtuIkLIMp3fMmtRY="
+
},
+
"src/third_party/gemmlowp/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/google/gemmlowp.git",
+
"rev": "13d57703abca3005d97b19df1f2db731607a7dc2",
+
"hash": "sha256-O5wD8wxgis0qYMaY+xZ21GBDVQFphMRvInCOswS6inA="
+
},
+
"src/third_party/grpc/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/grpc/grpc.git",
+
"rev": "822dab21d9995c5cf942476b35ca12a1aa9d2737",
+
"hash": "sha256-64JEVCx/PCM0dvv7kAQvSjLc0QbRAZVBDzwD/FAV6T8="
+
},
+
"src/third_party/freetype/src": {
+
"url": "https://chromium.googlesource.com/chromium/src/third_party/freetype2.git",
+
"rev": "f02bffad0fd57f3acfa835c3f2899c5b71ff8be0",
+
"hash": "sha256-Lc2hbmZnnXQa0vzlJCizNBQ5WCOI5sJglTTe5gWVYUA="
+
},
+
"src/third_party/freetype-testing/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/freetype/freetype2-testing.git",
+
"rev": "7a69b1a2b028476f840ab7d4a2ffdfe4eb2c389f",
+
"hash": "sha256-2aHPchIK5Oce5+XxdXVCC+8EM6i0XT0rFbjSIVa2L1A="
+
},
+
"src/third_party/fxdiv/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/Maratyszcza/FXdiv.git",
+
"rev": "63058eff77e11aa15bf531df5dd34395ec3017c8",
+
"hash": "sha256-LjX5kivfHbqCIA5pF9qUvswG1gjOFo3CMpX0VR+Cn38="
+
},
+
"src/third_party/harfbuzz-ng/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/harfbuzz/harfbuzz.git",
+
"rev": "1da053e87f0487382404656edca98b85fe51f2fd",
+
"hash": "sha256-iR49rfGDKxPObCff1/30hYHpP5FpZ28ROgMZhNk9eFY="
+
},
+
"src/third_party/ink/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/google/ink.git",
+
"rev": "4300dc7402a257b85fc5bf2559137edacb050227",
+
"hash": "sha256-+Ikr9E7KlXBFyf6fSDmIF3ygNUiwlXeA5bmO2CtkI7Q="
+
},
+
"src/third_party/ink_stroke_modeler/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/google/ink-stroke-modeler.git",
+
"rev": "0999e4cf816b42c770d07916698bce943b873048",
+
"hash": "sha256-IQ+n+kHdEq8Q8/qaPGMvgD7cPN3zzaY8dbiokq6r/Vs="
+
},
+
"src/third_party/instrumented_libs": {
+
"url": "https://chromium.googlesource.com/chromium/third_party/instrumented_libraries.git",
+
"rev": "bb6dbcf2df7a9beb34c3773ef4df161800e3aed9",
+
"hash": "sha256-kHKGADAgzlaeckXFbpU1GhJK+zkiRd9XvdtPF6qrQFY="
+
},
+
"src/third_party/emoji-segmenter/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/google/emoji-segmenter.git",
+
"rev": "955936be8b391e00835257059607d7c5b72ce744",
+
"hash": "sha256-KdQdKBBipEBRT8UmNGao6yCB4m2CU8/SrMVvcXlb5qE="
+
},
+
"src/third_party/ots/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/khaledhosny/ots.git",
+
"rev": "46bea9879127d0ff1c6601b078e2ce98e83fcd33",
+
"hash": "sha256-kiUXrXsaGOzPkKh0dVmU1I13WHt0Stzj7QLMqHN9FbU="
+
},
+
"src/third_party/libgav1/src": {
+
"url": "https://chromium.googlesource.com/codecs/libgav1.git",
+
"rev": "a2f139e9123bdb5edf7707ac6f1b73b3aa5038dd",
+
"hash": "sha256-+ss9S5t+yoHzqbtX68+5OyyUbJVecYLwp+C3EXfAziE="
+
},
+
"src/third_party/googletest/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/google/googletest.git",
+
"rev": "62df7bdbc10887e094661e07ec2595b7920376fd",
+
"hash": "sha256-Iv/7r79cKC1pFkxPPHK/IHv/HFx18XZ4YVr+C2CX8+M="
+
},
+
"src/third_party/hunspell_dictionaries": {
+
"url": "https://chromium.googlesource.com/chromium/deps/hunspell_dictionaries.git",
+
"rev": "41cdffd71c9948f63c7ad36e1fb0ff519aa7a37e",
+
"hash": "sha256-67mvpJRFFa9eMfyqFMURlbxOaTJBICnk+gl0b0mEHl8="
+
},
+
"src/third_party/icu": {
+
"url": "https://chromium.googlesource.com/chromium/deps/icu.git",
+
"rev": "4239b1559d11d4fa66c100543eda4161e060311e",
+
"hash": "sha256-7568UHNDOzyTCLy3TAwxZLUrKfB6A1yKA0wVZQJjKoI="
+
},
+
"src/third_party/jsoncpp/source": {
+
"url": "https://chromium.googlesource.com/external/github.com/open-source-parsers/jsoncpp.git",
+
"rev": "42e892d96e47b1f6e29844cc705e148ec4856448",
+
"hash": "sha256-bSLNcoYBz3QCt5VuTR056V9mU2PmBuYBa0W6hFg2m8Q="
+
},
+
"src/third_party/leveldatabase/src": {
+
"url": "https://chromium.googlesource.com/external/leveldb.git",
+
"rev": "23e35d792b9154f922b8b575b12596a4d8664c65",
+
"hash": "sha256-y3awFXL8ih2UhEqWj8JRgkhzSxfQciLztb020JHJ350="
+
},
+
"src/third_party/libFuzzer/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/llvm/llvm-project/compiler-rt/lib/fuzzer.git",
+
"rev": "487e79376394754705984c5de7c4ce7f82f2bd7c",
+
"hash": "sha256-xQXfRIcQmAVP0k2mT7Blv1wBxL6wDaWTbIPGcTiMZRo="
+
},
+
"src/third_party/fuzztest/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/google/fuzztest.git",
+
"rev": "0021f30508bc7f73fa5270962d022acb480d242f",
+
"hash": "sha256-UYmzjOX8k+CWL+xOIF3NiEL3TRUjS8JflortB2RUT4o="
+
},
+
"src/third_party/domato/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/googleprojectzero/domato.git",
+
"rev": "053714bccbda79cf76dac3fee48ab2b27f21925e",
+
"hash": "sha256-fYxoA0fxKe9U23j+Jp0MWj4m7RfsRpM0XjF6/yOhX1I="
+
},
+
"src/third_party/libaddressinput/src": {
+
"url": "https://chromium.googlesource.com/external/libaddressinput.git",
+
"rev": "e8712e415627f22d0b00ebee8db99547077f39bd",
+
"hash": "sha256-xvUUQSPrvqUp5DI9AqlRTWurwDW087c6v4RvI+4sfOQ="
+
},
+
"src/third_party/libaom/source/libaom": {
+
"url": "https://aomedia.googlesource.com/aom.git",
+
"rev": "840f8797871cc587f7113ea9d2483a1156d57c0e",
+
"hash": "sha256-2XHqNAmv2L3TEFXu4Q6rnASLmuE93QplSVKNqyhlKUk="
+
},
+
"src/third_party/libavif/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/AOMediaCodec/libavif.git",
+
"rev": "2c36aed375fff68611641b57d919b191f33431d5",
+
"hash": "sha256-fApdfzEtQnmio6BVzkcr/VkwojrNs+cx/+Am80H9dXw="
+
},
+
"src/third_party/crabbyavif/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/webmproject/CrabbyAvif.git",
+
"rev": "ffad64ff4e349f926ad5ffcc882e205a94156d77",
+
"hash": "sha256-M2ExAgLm/NZ2soQEv3Ap/qx/B3+nd3NdDqYOL0E/pc8="
+
},
+
"src/third_party/libavifinfo/src": {
+
"url": "https://aomedia.googlesource.com/libavifinfo.git",
+
"rev": "8d8b58a3f517ef8d1794baa28ca6ae7d19f65514",
+
"hash": "sha256-61OPjdMCIbHvWncmBzNw6sqlHcuc1kyqm9k1j4UTcZ0="
+
},
+
"src/third_party/nearby/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/google/nearby-connections.git",
+
"rev": "1b382075dd1bd545655af7ebef949b3090061b74",
+
"hash": "sha256-kpyJiFXtk8eK8EkgzUbG0GS+znEeqzlB62qy9tPpEC8="
+
},
+
"src/third_party/beto-core/src": {
+
"url": "https://beto-core.googlesource.com/beto-core.git",
+
"rev": "89563fec14c756482afa08b016eeba9087c8d1e3",
+
"hash": "sha256-QPFGjtu/I0r4+dTQ2eSlWIEYwJ43B3yW0q4QtVFTVGY="
+
},
+
"src/third_party/securemessage/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/google/securemessage.git",
+
"rev": "fa07beb12babc3b25e0c5b1f38c16aa8cb6b8f84",
+
"hash": "sha256-GS4ccnuiqxMs/LVYAtvSlVAYFp4a5GoZsxcriTX3k78="
+
},
+
"src/third_party/speedometer/v3.0": {
+
"url": "https://chromium.googlesource.com/external/github.com/WebKit/Speedometer.git",
+
"rev": "8d67f28d0281ac4330f283495b7f48286654ad7d",
+
"hash": "sha256-qMQ4naX+4uUu3vtzzinjkhxX9/dNoTwj6vWCu4FdQmU="
+
},
+
"src/third_party/ukey2/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/google/ukey2.git",
+
"rev": "0275885d8e6038c39b8a8ca55e75d1d4d1727f47",
+
"hash": "sha256-aaLs6ZS+CdBlCJ6ZhsmdAPFxiBIij6oufsDcNeRSV1E="
+
},
+
"src/third_party/cros-components/src": {
+
"url": "https://chromium.googlesource.com/external/google3/cros_components.git",
+
"rev": "902e8ca804ae6c05f505e510c16647c32ce4d1cb",
+
"hash": "sha256-j2m9zVajkAdPF1ehLX0Gxp4LyMunhFDDCzrCm2WzArc="
+
},
+
"src/third_party/libdrm/src": {
+
"url": "https://chromium.googlesource.com/chromiumos/third_party/libdrm.git",
+
"rev": "ad78bb591d02162d3b90890aa4d0a238b2a37cde",
+
"hash": "sha256-woSYEDUfcEBpYOYnli13wLMt754A7KnUbmTEcFQdFGw="
+
},
+
"src/third_party/expat/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/libexpat/libexpat.git",
+
"rev": "624da0f593bb8d7e146b9f42b06d8e6c80d032a3",
+
"hash": "sha256-Iwu9+i/0vsPyu6pOWFxjNNblVxMl6bTPW5eWyaju4Mg="
+
},
+
"src/third_party/libipp/libipp": {
+
"url": "https://chromium.googlesource.com/chromiumos/platform2/libipp.git",
+
"rev": "2209bb84a8e122dab7c02fe66cc61a7b42873d7f",
+
"hash": "sha256-gxU92lHLd6uxO8T3QWhZIK0hGy97cki705DV0VimCPY="
+
},
+
"src/third_party/libjpeg_turbo": {
+
"url": "https://chromium.googlesource.com/chromium/deps/libjpeg_turbo.git",
+
"rev": "927aabfcd26897abb9776ecf2a6c38ea5bb52ab6",
+
"hash": "sha256-qgHXAjCDFxQ+QqJ8pSmI1NUvHvKKTi4MkIe1I/+hUAI="
+
},
+
"src/third_party/liblouis/src": {
+
"url": "https://chromium.googlesource.com/external/liblouis-github.git",
+
"rev": "9700847afb92cb35969bdfcbbfbbb74b9c7b3376",
+
"hash": "sha256-EI/uaHXe0NlqdEw764q0SjerThYEVLRogUlmrsZwXnY="
+
},
+
"src/third_party/libphonenumber/dist": {
+
"url": "https://chromium.googlesource.com/external/libphonenumber.git",
+
"rev": "140dfeb81b753388e8a672900fb7a971e9a0d362",
+
"hash": "sha256-3hSnTFTD3KAdbyxfKg12qbIYTmw6YlTCH64gMP/HUJo="
+
},
+
"src/third_party/libprotobuf-mutator/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/google/libprotobuf-mutator.git",
+
"rev": "a304ec48dcf15d942607032151f7e9ee504b5dcf",
+
"hash": "sha256-ZyPweW+V5foxFQwjjMLkaRUo+FNV+kEDGIH/4oRV614="
+
},
+
"src/third_party/libsrtp": {
+
"url": "https://chromium.googlesource.com/chromium/deps/libsrtp.git",
+
"rev": "000edd791434c8738455f10e0dd6b268a4852c0b",
+
"hash": "sha256-4qEZ9MD97MoqCUlZtbEhIKy+fDO1iIWqyrBsKwkjXTg="
+
},
+
"src/third_party/libsync/src": {
+
"url": "https://chromium.googlesource.com/aosp/platform/system/core/libsync.git",
+
"rev": "f4f4387b6bf2387efbcfd1453af4892e8982faf6",
+
"hash": "sha256-Mkl6C1LxF3RYLwYbxiSfoQPt8QKFwQWj/Ati2sNJ32E="
+
},
+
"src/third_party/libvpx/source/libvpx": {
+
"url": "https://chromium.googlesource.com/webm/libvpx.git",
+
"rev": "906334ac1de2b0afa666472dce5545b82c1251fb",
+
"hash": "sha256-7GInV/uHuK6bUa1dSBuxJn6adyjfoOqSqfmfTvQbAoc="
+
},
+
"src/third_party/libwebm/source": {
+
"url": "https://chromium.googlesource.com/webm/libwebm.git",
+
"rev": "26d9f667170dc75e8d759a997bb61c64dec42dda",
+
"hash": "sha256-Mn3snC2g4BDKBJsS6cxT3BZL7LZknOWg77+60Nr4Hy0="
+
},
+
"src/third_party/libwebp/src": {
+
"url": "https://chromium.googlesource.com/webm/libwebp.git",
+
"rev": "845d5476a866141ba35ac133f856fa62f0b7445f",
+
"hash": "sha256-xuRpEwOnaLGZmrPvfUn3DSoJANd94CG+JXcN7Mdmk5I="
+
},
+
"src/third_party/libyuv": {
+
"url": "https://chromium.googlesource.com/libyuv/libyuv.git",
+
"rev": "a8e59d207483f75b87dd5fc670e937672cdf5776",
+
"hash": "sha256-gTNmhYuYmt/JmWSAVbcE4PqG3kW/JaL7XEWXbiNVfMM="
+
},
+
"src/third_party/lss": {
+
"url": "https://chromium.googlesource.com/linux-syscall-support.git",
+
"rev": "ce877209e11aa69dcfffbd53ef90ea1d07136521",
+
"hash": "sha256-hE8uZf9Fst66qJkoVYChiB8G41ie+k9M4X0W+5JUSdw="
+
},
+
"src/third_party/material_color_utilities/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/material-foundation/material-color-utilities.git",
+
"rev": "13434b50dcb64a482cc91191f8cf6151d90f5465",
+
"hash": "sha256-Y85XU+z9W6tvmDNHJ/dXQnUKXvvDkO3nH/kUJRLqbc4="
+
},
+
"src/third_party/minigbm/src": {
+
"url": "https://chromium.googlesource.com/chromiumos/platform/minigbm.git",
+
"rev": "3018207f4d89395cc271278fb9a6558b660885f5",
+
"hash": "sha256-9HwvjTETerbQ7YKXH9kUB2eWa8PxGWMAJfx1jAluhrs="
+
},
+
"src/third_party/nasm": {
+
"url": "https://chromium.googlesource.com/chromium/deps/nasm.git",
+
"rev": "f477acb1049f5e043904b87b825c5915084a9a29",
+
"hash": "sha256-SiRXHsUlWXtH6dbDjDjqNAm105ibEB3jOfNtQAM4CaY="
+
},
+
"src/third_party/neon_2_sse/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/intel/ARM_NEON_2_x86_SSE.git",
+
"rev": "a15b489e1222b2087007546b4912e21293ea86ff",
+
"hash": "sha256-299ZptvdTmCnIuVVBkrpf5ZTxKPwgcGUob81tEI91F0="
+
},
+
"src/third_party/openh264/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/cisco/openh264",
+
"rev": "478e5ab3eca30e600006d5a0a08b176fd34d3bd1",
+
"hash": "sha256-S7dS2IZwt4p4ZrF6K7E5HnwKuI3owU2I7vwtu95uTkE="
+
},
+
"src/third_party/openscreen/src": {
+
"url": "https://chromium.googlesource.com/openscreen",
+
"rev": "4f27c4f1698522dfcea36dca948a13e2eaf4c26c",
+
"hash": "sha256-dosSqpFlvli60ZJ0vexVZOK/FmzOYq5BDrZKZW0lMfc="
+
},
+
"src/third_party/openscreen/src/buildtools": {
+
"url": "https://chromium.googlesource.com/chromium/src/buildtools",
+
"rev": "4e0e9c73a0f26735f034f09a9cab2a5c0178536b",
+
"hash": "sha256-suuxUL//BfAMmG8os8ChI7ic9EjGTi7y5kjxiAyrEQc="
+
},
+
"src/third_party/openscreen/src/third_party/tinycbor/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/intel/tinycbor.git",
+
"rev": "d393c16f3eb30d0c47e6f9d92db62272f0ec4dc7",
+
"hash": "sha256-fMKBFUSKmODQyg4hKIa1hwnEKIV6WBbY1Gb8DOSnaHA="
+
},
+
"src/third_party/pdfium": {
+
"url": "https://pdfium.googlesource.com/pdfium.git",
+
"rev": "7a8409531fbb58d7d15ae331e645977b113d7ced",
+
"hash": "sha256-KlqgaOxKJQHHjU1g1VCcJEBhv809DdEUedrxdk8N99I="
+
},
+
"src/third_party/perfetto": {
+
"url": "https://android.googlesource.com/platform/external/perfetto.git",
+
"rev": "24764a1d9c2fce1e9816ffae691f00353ade330d",
+
"hash": "sha256-FAaxTuIYExmL3PSWwcvLpnPD4qsGDGr4/CIyi0NSrnI="
+
},
+
"src/third_party/protobuf-javascript/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/protocolbuffers/protobuf-javascript",
+
"rev": "e34549db516f8712f678fcd4bc411613b5cc5295",
+
"hash": "sha256-TmP6xftUVTD7yML7UEM/DB8bcsL5RFlKPyCpcboD86U="
+
},
+
"src/third_party/pthreadpool/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/Maratyszcza/pthreadpool.git",
+
"rev": "560c60d342a76076f0557a3946924c6478470044",
+
"hash": "sha256-rGg6lgLkmbYo+a9CdaXz9ZUyrqJ1rxLcjLJeBEOPAlE="
+
},
+
"src/third_party/pyelftools": {
+
"url": "https://chromium.googlesource.com/chromiumos/third_party/pyelftools.git",
+
"rev": "19b3e610c86fcadb837d252c794cb5e8008826ae",
+
"hash": "sha256-I/7p3IEvfP/gkes4kx18PvWwhAKilQKb67GXoW4zFB4="
+
},
+
"src/third_party/quic_trace/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/google/quic-trace.git",
+
"rev": "caa0a6eaba816ecb737f9a70782b7c80b8ac8dbc",
+
"hash": "sha256-Nf9ZDLcE1JunhbpEMHhrY2ROnbgrvVZoRkPwWq1DU0g="
+
},
+
"src/third_party/pywebsocket3/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/GoogleChromeLabs/pywebsocket3.git",
+
"rev": "50602a14f1b6da17e0b619833a13addc6ea78bc2",
+
"hash": "sha256-WEqqu2/7fLqcf/2/IcD7/FewRSZ6jTgVlVBvnihthYQ="
+
},
+
"src/third_party/re2/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/google/re2.git",
+
"rev": "6dcd83d60f7944926bfd308cc13979fc53dd69ca",
+
"hash": "sha256-IeANwJlJl45yf8iu/AZNDoiyIvTCZIeK1b74sdCfAIc="
+
},
+
"src/third_party/ruy/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/google/ruy.git",
+
"rev": "c08ec529fc91722bde519628d9449258082eb847",
+
"hash": "sha256-4NVvqUZn2BdwTxJINTHwPeRqbGXZrWdcd7jv1Y+eoKY="
+
},
+
"src/third_party/skia": {
+
"url": "https://skia.googlesource.com/skia.git",
+
"rev": "94631d9b9a10697325589e1642af63a0137cac94",
+
"hash": "sha256-SKKLOxjimQWt8W+Q3wlCJaUC/lxw6EIZDFBuVQKmnVY="
+
},
+
"src/third_party/smhasher/src": {
+
"url": "https://chromium.googlesource.com/external/smhasher.git",
+
"rev": "e87738e57558e0ec472b2fc3a643b838e5b6e88f",
+
"hash": "sha256-RyC//me08hwGXRrWcK8GZ1uhIkBq4FByA7fHCVDsniw="
+
},
+
"src/third_party/snappy/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/google/snappy.git",
+
"rev": "c9f9edf6d75bb065fa47468bf035e051a57bec7c",
+
"hash": "sha256-5fV6NfO8vmqK+iCwpLtE2YjYOzjsshctauyjNIOxrH0="
+
},
+
"src/third_party/sqlite/src": {
+
"url": "https://chromium.googlesource.com/chromium/deps/sqlite.git",
+
"rev": "567495a62a62dc013888500526e82837d727fe01",
+
"hash": "sha256-ltl3OTk/wZPSj3yYthNlKd3mBxef6l5uW6UYTwebNek="
+
},
+
"src/third_party/swiftshader": {
+
"url": "https://swiftshader.googlesource.com/SwiftShader.git",
+
"rev": "7a9a492a38b7c701f7c96a15a76046aed8f8c0c3",
+
"hash": "sha256-6uBO4jwPSqhT4j+KTE0Za7B4prrE2kstsHNtHwTJX+Q="
+
},
+
"src/third_party/text-fragments-polyfill/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/GoogleChromeLabs/text-fragments-polyfill.git",
+
"rev": "c036420683f672d685e27415de0a5f5e85bdc23f",
+
"hash": "sha256-4rW2u1cQAF4iPWHAt1FvVXIpz2pmI901rEPks/w/iFA="
+
},
+
"src/third_party/tflite/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/tensorflow/tensorflow.git",
+
"rev": "689e8a82f8070a372981b7476fb673e243330d71",
+
"hash": "sha256-tImVDNyS5hCN6A1ODeVuB7XLCNr3EdxN8x961nPCM9g="
+
},
+
"src/third_party/vulkan-deps": {
+
"url": "https://chromium.googlesource.com/vulkan-deps",
+
"rev": "73fd75175922012f21557239b7743a152ea7f1fd",
+
"hash": "sha256-D8UIXXQX6dTxbuqFgd6AbmErr1r9839yiN6MrJlsqPw="
+
},
+
"src/third_party/glslang/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/KhronosGroup/glslang",
+
"rev": "2acc4ea0028bc703be2d4e9bc8a4032d015d6516",
+
"hash": "sha256-mwcvSRycM8bq3dDWk4yfkL8Tg5bfEap6lrr1Oxemzy4="
+
},
+
"src/third_party/spirv-cross/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/KhronosGroup/SPIRV-Cross",
+
"rev": "b8fcf307f1f347089e3c46eb4451d27f32ebc8d3",
+
"hash": "sha256-H43M9DXfEuyKuvo6rjb5k0KEbYOSFodbPJh8ZKY4PQg="
+
},
+
"src/third_party/spirv-headers/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/KhronosGroup/SPIRV-Headers",
+
"rev": "50bc4debdc3eec5045edbeb8ce164090e29b91f3",
+
"hash": "sha256-Zv5QZ8MmP45MH5e6EBDNPmP0vcjjNXJHKva5MNh5ovA="
+
},
+
"src/third_party/spirv-tools/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/KhronosGroup/SPIRV-Tools",
+
"rev": "42b315c15b1ff941b46bb3949c105e5386be8717",
+
"hash": "sha256-xb0TlPyXP2wu7jMrWZu+z8WC5mk0CbYgvkZEt3r+mww="
+
},
+
"src/third_party/vulkan-headers/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Headers",
+
"rev": "14345dab231912ee9601136e96ca67a6e1f632e7",
+
"hash": "sha256-ny/UVx4r+Fj39ZEepaWqDPplAJcrBQEQlkqsSofwLJ0="
+
},
+
"src/third_party/vulkan-loader/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Loader",
+
"rev": "bd1c8ea9c6ac51e4c3a6ddb9d602bb204678eb5f",
+
"hash": "sha256-Ze/DGiD8Zj3mY+5Pi+tf6xMrX2YBqfl4Nc37b/JgmnI="
+
},
+
"src/third_party/vulkan-tools/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Tools",
+
"rev": "c9a5acda16dc2759457dc856b5d7df00ac5bf4a2",
+
"hash": "sha256-0JzqUW6XbhPbLGs/smuNG6zQoWP8iaAO5VglGSyN94g="
+
},
+
"src/third_party/vulkan-utility-libraries/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-Utility-Libraries",
+
"rev": "8c907ea21fe0147f791d79051b18e21bc8c4ede0",
+
"hash": "sha256-2abhzNt/rKbAhGQZhUhQ2LoemtU1Yh1fx9rrijOtjy4="
+
},
+
"src/third_party/vulkan-validation-layers/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/KhronosGroup/Vulkan-ValidationLayers",
+
"rev": "cbb4ab171fc7cd0b636a76ee542e238a8734f4be",
+
"hash": "sha256-nKpS0ddAsN2KhOg6J/SwB8ZlVXrJTVixD4DuUkyxb6c="
+
},
+
"src/third_party/vulkan_memory_allocator": {
+
"url": "https://chromium.googlesource.com/external/github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator.git",
+
"rev": "56300b29fbfcc693ee6609ddad3fdd5b7a449a21",
+
"hash": "sha256-YzxHZagz/M8Y54UnI4h1wu5jSTuaOgv0ifC9d3fJZlQ="
+
},
+
"src/third_party/wayland/src": {
+
"url": "https://chromium.googlesource.com/external/anongit.freedesktop.org/git/wayland/wayland.git",
+
"rev": "a156431ea66fe67d69c9fbba8a8ad34dabbab81c",
+
"hash": "sha256-oK0Z8xO2ILuySGZS0m37ZF0MOyle2l8AXb0/6wai0/w="
+
},
+
"src/third_party/wayland-protocols/src": {
+
"url": "https://chromium.googlesource.com/external/anongit.freedesktop.org/git/wayland/wayland-protocols.git",
+
"rev": "7d5a3a8b494ae44cd9651f9505e88a250082765e",
+
"hash": "sha256-o/adWEXYSqWib6KoK7XMCWbojapcS4O/CEPxv7iFCw8="
+
},
+
"src/third_party/wayland-protocols/kde": {
+
"url": "https://chromium.googlesource.com/external/github.com/KDE/plasma-wayland-protocols.git",
+
"rev": "0b07950714b3a36c9b9f71fc025fc7783e82926e",
+
"hash": "sha256-Dmcp/2ms/k7NxPPmPkp0YNfM9z2Es1ZO0uX10bc7N2Y="
+
},
+
"src/third_party/wayland-protocols/gtk": {
+
"url": "https://chromium.googlesource.com/external/github.com/GNOME/gtk.git",
+
"rev": "40ebed3a03aef096addc0af09fec4ec529d882a0",
+
"hash": "sha256-75XNnLkF5Lt1LMRGT+T61k0/mLa3kkynfN+QWvZ0LiQ="
+
},
+
"src/third_party/webdriver/pylib": {
+
"url": "https://chromium.googlesource.com/external/github.com/SeleniumHQ/selenium/py.git",
+
"rev": "fc5e7e70c098bfb189a9a74746809ad3c5c34e04",
+
"hash": "sha256-WIqWXIKVgElgg8P8laLAlUrgwodGdeVcwohZxnPKedw="
+
},
+
"src/third_party/webgl/src": {
+
"url": "https://chromium.googlesource.com/external/khronosgroup/webgl.git",
+
"rev": "450cceb587613ac1469c5a131fac15935c99e0e7",
+
"hash": "sha256-32r3BdmsNA89mo0k+vK1G3718AOjseE7cJlopZ/0pSw="
+
},
+
"src/third_party/webgpu-cts/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/gpuweb/cts.git",
+
"rev": "ae8b3ca40fbeee0bc67ef41a6c5b6dd5af839344",
+
"hash": "sha256-7u5Ay43GtcVTt3Cwg/5OaYQdG6SXXYtUun7DVN+XChE="
+
},
+
"src/third_party/webrtc": {
+
"url": "https://webrtc.googlesource.com/src.git",
+
"rev": "8445abdf8069cadcbd134369b70d0ebd436ef477",
+
"hash": "sha256-EitEjXNtm0gB9wtAwIYHBHkU7paHg5zvsTz171hRmK4="
+
},
+
"src/third_party/wuffs/src": {
+
"url": "https://skia.googlesource.com/external/github.com/google/wuffs-mirror-release-c.git",
+
"rev": "e3f919ccfe3ef542cfc983a82146070258fb57f8",
+
"hash": "sha256-373d2F/STcgCHEq+PO+SCHrKVOo6uO1rqqwRN5eeBCw="
+
},
+
"src/third_party/weston/src": {
+
"url": "https://chromium.googlesource.com/external/anongit.freedesktop.org/git/wayland/weston.git",
+
"rev": "ccf29cb237c3ed09c5f370f35239c93d07abfdd7",
+
"hash": "sha256-y2srFaPUOoB2umzpo4+hFfhNlqXM2AoMGOpUy/ZSacg="
+
},
+
"src/third_party/xdg-utils": {
+
"url": "https://chromium.googlesource.com/chromium/deps/xdg-utils.git",
+
"rev": "cb54d9db2e535ee4ef13cc91b65a1e2741a94a44",
+
"hash": "sha256-WuQ9uDq+QD17Y20ACFGres4nbkeOiTE2y+tY1avAT5U="
+
},
+
"src/third_party/xnnpack/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/google/XNNPACK.git",
+
"rev": "3986629de01e518a3f2359bf5629ef2b7ef72330",
+
"hash": "sha256-x8GQUj75mQXswI3b29tS9u25Zx3peYqDM8v1/wkC9cs="
+
},
+
"src/tools/page_cycler/acid3": {
+
"url": "https://chromium.googlesource.com/chromium/deps/acid3.git",
+
"rev": "a926d0a32e02c4c03ae95bb798e6c780e0e184ba",
+
"hash": "sha256-s/49EaYQRsyxuLejXc1zGDYTD7uO0ddaQIJBP50Bvw0="
+
},
+
"src/third_party/zstd/src": {
+
"url": "https://chromium.googlesource.com/external/github.com/facebook/zstd.git",
+
"rev": "20707e3718ee14250fb8a44b3bf023ea36bd88df",
+
"hash": "sha256-/IUfh0De9m7ACrisqKlpxZsb+asoAWGXCaK6L+s24Q8="
+
},
+
"src/v8": {
+
"url": "https://chromium.googlesource.com/v8/v8.git",
+
"rev": "7075674f24f09d3b30913710a31e8793c131000a",
+
"hash": "sha256-N6FB/ocU1KIAGoYTnAl42qjrjatuD5fooRu93akPUjM="
+
}
+
}
+
}
+
}
-56
pkgs/applications/networking/browsers/chromium/recompress-tarball.nix
···
-
{ zstd
-
, fetchurl
-
, lib
-
, chromiumVersionAtLeast
-
}:
-
-
{ version
-
, hash ? ""
-
} @ args:
-
-
fetchurl ({
-
name = "chromium-${version}.tar.zstd";
-
url = "https://commondatastorage.googleapis.com/chromium-browser-official/chromium-${version}.tar.xz";
-
inherit hash;
-
-
# chromium xz tarballs are multiple gigabytes big and are sometimes downloaded multiples
-
# times for different versions as part of our update script.
-
# We originally inherited fetchzip's default for downloadToTemp (true).
-
# Given the size of the /run/user tmpfs used defaults to logind's RuntimeDirectorySize=,
-
# which in turn defaults to 10% of the total amount of physical RAM, this often lead to
-
# "no space left" errors, eventually resulting in its own section in our chromium
-
# README.md (for users wanting to run the update script).
-
# Nowadays, we use fetchurl instead of fetchzip, which defaults to false instead of true.
-
# We just want to be explicit and provide a place to document the history and reasoning
-
# behind this.
-
downloadToTemp = false;
-
-
nativeBuildInputs = [ zstd ];
-
-
postFetch = ''
-
cat "$downloadedFile" \
-
| xz -d --threads=$NIX_BUILD_CORES \
-
| tar xf - \
-
--warning=no-timestamp \
-
--one-top-level=source \
-
--exclude=third_party/llvm \
-
--exclude=third_party/rust-src \
-
--exclude='build/linux/debian_*-sysroot' \
-
'' + lib.optionalString (chromiumVersionAtLeast "127") ''
-
--exclude='*.tar.[a-zA-Z0-9][a-zA-Z0-9]' \
-
--exclude='*.tar.[a-zA-Z0-9][a-zA-Z0-9][a-zA-Z0-9]' \
-
--exclude=third_party/llvm-build \
-
--exclude=third_party/rust-toolchain \
-
--exclude=third_party/instrumented_libs \
-
'' + ''
-
--strip-components=1
-
-
tar \
-
--use-compress-program "zstd -T$NIX_BUILD_CORES" \
-
--sort name \
-
--mtime "1970-01-01" \
-
--owner=root --group=root \
-
--numeric-owner --mode=go=rX,u+rw,a-s \
-
-cf $out source
-
'';
-
} // removeAttrs args [ "version" ])
+227
pkgs/applications/networking/browsers/chromium/update.mjs
···
+
#! /usr/bin/env nix-shell
+
/*
+
#! nix-shell -i zx -p zx
+
*/
+
+
cd(__dirname)
+
const nixpkgs = (await $`git rev-parse --show-toplevel`).stdout.trim()
+
const $nixpkgs = $({
+
cwd: nixpkgs
+
})
+
+
const dummy_hash = 'sha256-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA='
+
+
const lockfile_file = './info.json'
+
const lockfile_initial = fs.readJsonSync(lockfile_file)
+
function flush_to_file() {
+
fs.writeJsonSync(lockfile_file, lockfile, { spaces: 2 })
+
}
+
const flush_to_file_proxy = {
+
get(obj, prop) {
+
const value = obj[prop]
+
return typeof value == 'object' ? new Proxy(value, flush_to_file_proxy) : value
+
},
+
+
set(obj, prop, value) {
+
obj[prop] = value
+
flush_to_file()
+
return true
+
},
+
}
+
const lockfile = new Proxy(structuredClone(lockfile_initial), flush_to_file_proxy)
+
+
+
for (const attr_path of Object.keys(lockfile)) {
+
if (!argv[attr_path]) {
+
console.log(`[${attr_path}] Skipping ${attr_path}. Pass --${attr_path} as argument to update.`)
+
continue
+
}
+
+
const ungoogled = attr_path === 'ungoogled-chromium'
+
const version_nixpkgs = !ungoogled ? lockfile[attr_path].version : lockfile[attr_path].deps["ungoogled-patches"].rev
+
const version_upstream = !ungoogled ? await get_latest_chromium_release() : await get_latest_ungoogled_release()
+
+
console.log(`[${attr_path}] ${chalk.red(version_nixpkgs)} (nixpkgs)`)
+
console.log(`[${attr_path}] ${chalk.green(version_upstream)} (upstream)`)
+
+
if (version_greater_than(version_upstream, version_nixpkgs)) {
+
console.log(`[${attr_path}] ${chalk.green(version_upstream)} from upstream is newer than our ${chalk.red(version_nixpkgs)}...`)
+
+
// unconditionally remove ungoogled-chromium's epoch/sub-version (e.g. 130.0.6723.116-1 -> 130.0.6723.116)
+
const version_chromium = version_upstream.split('-')[0]
+
+
lockfile[attr_path] = {
+
version: version_chromium,
+
chromedriver: !ungoogled ? await fetch_chromedriver_binaries(version_chromium) : undefined,
+
deps: {
+
depot_tools: {},
+
gn: {},
+
"ungoogled-patches": ungoogled ? await fetch_ungoogled(version_upstream) : undefined,
+
npmHash: dummy_hash,
+
},
+
DEPS: {},
+
}
+
+
const depot_tools = await fetch_depot_tools(version_chromium, lockfile_initial[attr_path].deps.depot_tools)
+
lockfile[attr_path].deps.depot_tools = {
+
rev: depot_tools.rev,
+
hash: depot_tools.hash,
+
}
+
+
const gn = await fetch_gn(version_chromium, lockfile_initial[attr_path].deps.gn)
+
lockfile[attr_path].deps.gn = {
+
rev: gn.rev,
+
hash: gn.hash,
+
}
+
+
// DEPS update loop
+
lockfile[attr_path].DEPS = await resolve_DEPS(depot_tools.out, version_chromium)
+
for (const [path, value] of Object.entries(lockfile[attr_path].DEPS)) {
+
delete value.fetcher
+
delete value.postFetch
+
+
if (value.url === 'https://chromium.googlesource.com/chromium/src.git') {
+
value.recompress = true
+
}
+
+
const cache = lockfile_initial[attr_path].DEPS[path]
+
const cache_hit =
+
cache !== undefined &&
+
value.url === cache.url &&
+
value.rev === cache.rev &&
+
value.recompress === cache.recompress &&
+
cache.hash !== undefined &&
+
cache.hash !== '' &&
+
cache.hash !== dummy_hash
+
if (cache_hit) {
+
console.log(`[${chalk.green(path)}] Reusing hash from previous info.json for ${cache.url}@${cache.rev}`)
+
value.hash = cache.hash
+
continue
+
}
+
+
console.log(`[${chalk.red(path)}] FOD prefetching ${value.url}@${value.rev}...`)
+
value.hash = await prefetch_FOD('-A', `${attr_path}.browser.passthru.chromiumDeps."${path}"`)
+
console.log(`[${chalk.green(path)}] FOD prefetching successful`)
+
}
+
+
lockfile[attr_path].deps.npmHash = await prefetch_FOD('-A', `${attr_path}.browser.passthru.npmDeps`)
+
+
console.log(chalk.green(`[${attr_path}] Done updating ${attr_path} from ${version_nixpkgs} to ${version_upstream}!`))
+
}
+
}
+
+
+
async function fetch_gn(chromium_rev, gn_previous) {
+
const DEPS_file = await get_gitiles_file('https://chromium.googlesource.com/chromium/src', chromium_rev, 'DEPS')
+
const gn_rev = /^\s+'gn_version': 'git_revision:(?<rev>.+)',$/m.exec(DEPS_file).groups.rev
+
const hash = gn_rev === gn_previous.rev ? gn_previous.hash : ''
+
+
return await prefetch_gitiles('https://gn.googlesource.com/gn', gn_rev, hash)
+
}
+
+
+
async function fetch_chromedriver_binaries(chromium_version) {
+
// https://developer.chrome.com/docs/chromedriver/downloads/version-selection
+
const prefetch = async (url) => {
+
const expr = [`(import ./. {}).fetchzip { url = "${url}"; hash = ""; }`]
+
const derivation = await $nixpkgs`nix-instantiate --expr ${expr}`
+
return await prefetch_FOD(derivation)
+
}
+
+
// if the URL ever changes, the URLs in the chromedriver derivations need updating as well!
+
const url = (platform) => `https://storage.googleapis.com/chrome-for-testing-public/${chromium_version}/${platform}/chromedriver-${platform}.zip`
+
return {
+
hash_darwin: await prefetch(url('mac-x64')),
+
hash_darwin_aarch64: await prefetch(url('mac-arm64')),
+
}
+
}
+
+
+
async function resolve_DEPS(depot_tools_checkout, chromium_rev) {
+
const { stdout } = await $`./depot_tools.py ${depot_tools_checkout} ${chromium_rev}`
+
const deps = JSON.parse(stdout)
+
return Object.fromEntries(Object.entries(deps).map(([k, { url, rev, hash }]) => [k, { url, rev, hash }]))
+
}
+
+
+
async function get_latest_chromium_release() {
+
const url = `https://versionhistory.googleapis.com/v1/chrome/platforms/linux/channels/stable/versions/all/releases?` + new URLSearchParams({
+
order_by: 'version desc',
+
filter: 'endtime=none,fraction>=0.5'
+
})
+
+
const response = await (await fetch(url)).json()
+
return response.releases[0].version
+
}
+
+
+
async function get_latest_ungoogled_release() {
+
const ungoogled_tags = await (await fetch('https://api.github.com/repos/ungoogled-software/ungoogled-chromium/tags')).json()
+
const chromium_releases = await (await fetch('https://versionhistory.googleapis.com/v1/chrome/platforms/linux/channels/stable/versions/all/releases')).json()
+
const chromium_release_map = chromium_releases.releases.map((x) => x.version)
+
return ungoogled_tags.find((x) => chromium_release_map.includes(x.name.split('-')[0])).name
+
}
+
+
+
async function fetch_ungoogled(rev) {
+
const expr = (hash) => [`(import ./. {}).fetchFromGitHub { owner = "ungoogled-software"; repo = "ungoogled-chromium"; rev = "${rev}"; hash = "${hash}"; }`]
+
const hash = await prefetch_FOD('--expr', expr(''))
+
+
const checkout = await $nixpkgs`nix-build --expr ${expr(hash)}`
+
+
await fs.copy(`${checkout.stdout.trim()}/flags.gn`, './ungoogled-flags.toml')
+
+
return {
+
rev,
+
hash,
+
}
+
}
+
+
+
function version_greater_than(greater, than) {
+
return greater.localeCompare(than, undefined, { numeric: true, sensitivity: 'base' }) === 1
+
}
+
+
+
async function get_gitiles_file(repo, rev, path) {
+
const base64 = await (await fetch(`${repo}/+/${rev}/${path}?format=TEXT`)).text()
+
return Buffer.from(base64, 'base64').toString('utf-8')
+
}
+
+
+
async function fetch_depot_tools(chromium_rev, depot_tools_previous) {
+
const depot_tools_rev = await get_gitiles_file('https://chromium.googlesource.com/chromium/src', chromium_rev, 'third_party/depot_tools')
+
const hash = depot_tools_rev === depot_tools_previous.rev ? depot_tools_previous.hash : ''
+
return await prefetch_gitiles('https://chromium.googlesource.com/chromium/tools/depot_tools', depot_tools_rev, hash)
+
}
+
+
+
async function prefetch_gitiles(url, rev, hash = '') {
+
const expr = () => [`(import ./. {}).fetchFromGitiles { url = "${url}"; rev = "${rev}"; hash = "${hash}"; }`]
+
+
if (hash === '') {
+
hash = await prefetch_FOD('--expr', expr())
+
}
+
+
const { stdout } = await $nixpkgs`nix-build --expr ${expr()}`
+
+
return {
+
url,
+
rev,
+
hash,
+
out: stdout.trim(),
+
}
+
}
+
+
+
async function prefetch_FOD(...args) {
+
const { stderr } = await $nixpkgs`nix-build ${args}`.nothrow()
+
const hash = /\s+got:\s+(?<hash>.+)$/m.exec(stderr)?.groups?.hash
+
+
if (hash == undefined) {
+
throw new Error(chalk.red('Expected to find hash in nix-build stderr output:') + stderr)
+
}
+
+
return hash
+
}
+
-300
pkgs/applications/networking/browsers/chromium/update.py
···
-
#! /usr/bin/env nix-shell
-
#! nix-shell -i python -p python3Packages.looseversion nix nixfmt-classic nix-prefetch-git
-
-
"""This script automatically updates chromium, google-chrome, chromedriver, and ungoogled-chromium
-
via upstream-info.nix."""
-
# Usage: ./update.py [--commit]
-
-
import base64
-
import csv
-
import json
-
import re
-
import subprocess
-
import sys
-
-
from codecs import iterdecode
-
from collections import OrderedDict
-
from datetime import datetime
-
from looseversion import LooseVersion
-
from os.path import abspath, dirname
-
from urllib.request import urlopen
-
-
RELEASES_URL = 'https://versionhistory.googleapis.com/v1/chrome/platforms/linux/channels/all/versions/all/releases'
-
-
PIN_PATH = dirname(abspath(__file__)) + '/upstream-info.nix'
-
UNGOOGLED_FLAGS_PATH = dirname(abspath(__file__)) + '/ungoogled-flags.toml'
-
COMMIT_MESSAGE_SCRIPT = dirname(abspath(__file__)) + '/get-commit-message.py'
-
NIXPKGS_PATH = subprocess.check_output(["git", "rev-parse", "--show-toplevel"], cwd=dirname(PIN_PATH)).strip()
-
-
def load_as_json(path):
-
"""Loads the given nix file as JSON."""
-
out = subprocess.check_output(['nix-instantiate', '--eval', '--strict', '--json', path])
-
return json.loads(out)
-
-
def save_dict_as_nix(path, input):
-
"""Saves the given dict/JSON as nix file."""
-
json_string = json.dumps(input)
-
nix = subprocess.check_output(['nix-instantiate', '--eval', '--expr', '{ json }: builtins.fromJSON json', '--argstr', 'json', json_string])
-
formatted = subprocess.check_output(['nixfmt'], input=nix)
-
with open(path, 'w') as out:
-
out.write(formatted.decode())
-
-
def prefetch_src_sri_hash(attr_path, version):
-
"""Prefetches the fixed-output-derivation source tarball and returns its SRI-Hash."""
-
print(f'nix-build (FOD prefetch) {attr_path} {version}')
-
out = subprocess.run(
-
["nix-build", "--expr", f'(import ./. {{}}).{attr_path}.browser.passthru.recompressTarball {{ version = "{version}"; }}'],
-
cwd=NIXPKGS_PATH,
-
stderr=subprocess.PIPE
-
).stderr.decode()
-
-
for line in iter(out.split("\n")):
-
match = re.match(r"\s+got:\s+(.+)$", line)
-
if match:
-
print(f'Hash: {match.group(1)}')
-
return match.group(1)
-
print(f'{out}\n\nError: Expected hash in nix-build stderr output.', file=sys.stderr)
-
sys.exit(1)
-
-
def nix_prefetch_url(url, algo='sha256'):
-
"""Prefetches the content of the given URL."""
-
print(f'nix store prefetch-file {url}')
-
out = subprocess.check_output(['nix', 'store', 'prefetch-file', '--json', '--hash-type', algo, url])
-
return json.loads(out)['hash']
-
-
-
def nix_prefetch_git(url, rev):
-
"""Prefetches the requested Git revision of the given repository URL."""
-
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):
-
"""Fetches the requested Git revision of the given Chromium file."""
-
url = f'https://chromium.googlesource.com/chromium/src/+/refs/tags/{revision}/{file_path}?format=TEXT'
-
with urlopen(url) as http_response:
-
resp = http_response.read()
-
return base64.b64decode(resp)
-
-
def get_ungoogled_file_revision(revision, file_path):
-
"""Fetches the requested Git revision of the given Chromium file."""
-
url = f'https://raw.githubusercontent.com/ungoogled-software/ungoogled-chromium/{revision}/{file_path}'
-
with urlopen(url) as http_response:
-
resp = http_response.read()
-
return resp.decode("utf-8")
-
-
def get_chromedriver(channel):
-
"""Get the latest chromedriver builds given a channel"""
-
# See https://chromedriver.chromium.org/downloads/version-selection#h.4wiyvw42q63v
-
chromedriver_versions_url = f'https://googlechromelabs.github.io/chrome-for-testing/last-known-good-versions-with-downloads.json'
-
print(f'GET {chromedriver_versions_url}')
-
with urlopen(chromedriver_versions_url) as http_response:
-
chromedrivers = json.load(http_response)
-
channel = chromedrivers['channels'][channel]
-
downloads = channel['downloads']['chromedriver']
-
-
def get_chromedriver_url(platform):
-
for download in downloads:
-
if download['platform'] == platform:
-
return download['url']
-
-
return {
-
'version': channel['version'],
-
'hash_linux': nix_prefetch_url(get_chromedriver_url('linux64')),
-
'hash_darwin': nix_prefetch_url(get_chromedriver_url('mac-x64')),
-
'hash_darwin_aarch64': nix_prefetch_url(get_chromedriver_url('mac-arm64'))
-
}
-
-
-
def get_channel_dependencies(version):
-
"""Gets all dependencies for the given Chromium version."""
-
deps = get_file_revision(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'],
-
'hash': gn['hash']
-
}
-
}
-
-
-
def get_latest_ungoogled_chromium_tag(linux_stable_versions):
-
"""Returns the latest ungoogled-chromium tag for linux using the GitHub API."""
-
api_tag_url = 'https://api.github.com/repos/ungoogled-software/ungoogled-chromium/tags'
-
with urlopen(api_tag_url) as http_response:
-
tags = json.load(http_response)
-
for tag in tags:
-
if not tag['name'].split('-')[0] in linux_stable_versions:
-
continue
-
-
return tag['name']
-
-
-
def get_latest_ungoogled_chromium_build(linux_stable_versions):
-
"""Returns a dictionary for the latest ungoogled-chromium build."""
-
tag = get_latest_ungoogled_chromium_tag(linux_stable_versions)
-
version = tag.split('-')[0]
-
return {
-
'name': 'chrome/platforms/linux/channels/ungoogled-chromium/versions/',
-
'version': version,
-
'ungoogled_rev': tag
-
}
-
-
def get_ungoogled_chromium_build_by_ref(ungoogled_chromium_ref):
-
"""Returns a dictionary for an ungoogled-chromium build referenced by a ref in the ungoogled-chromium repository."""
-
version = get_ungoogled_file_revision(ungoogled_chromium_ref, "chromium_version.txt").strip("\n ")
-
return {
-
'name': 'chrome/platforms/linux/channels/ungoogled-chromium/versions/',
-
'version': version,
-
'ungoogled_rev': ungoogled_chromium_ref
-
}
-
-
-
def get_ungoogled_chromium_gn_flags(revision):
-
"""Returns ungoogled-chromium's GN build flags for the given revision."""
-
gn_flags_url = f'https://raw.githubusercontent.com/ungoogled-software/ungoogled-chromium/{revision}/flags.gn'
-
return urlopen(gn_flags_url).read().decode()
-
-
-
def channel_name_to_attr_name(channel_name):
-
"""Maps a channel name to the corresponding main Nixpkgs attribute name."""
-
if channel_name == 'stable':
-
return 'chromium'
-
if channel_name == 'ungoogled-chromium':
-
return 'ungoogled-chromium'
-
print(f'Error: Unexpected channel: {channel_name}', file=sys.stderr)
-
sys.exit(1)
-
-
-
def get_channel_key(item):
-
"""Orders Chromium channels by their name."""
-
channel_name = item[0]
-
if channel_name == 'stable':
-
return 0
-
if channel_name == 'beta':
-
return 1
-
if channel_name == 'dev':
-
return 2
-
if channel_name == 'ungoogled-chromium':
-
return 3
-
print(f'Error: Unexpected channel: {channel_name}', file=sys.stderr)
-
sys.exit(1)
-
-
-
def print_updates(channels_old, channels_new):
-
"""Print a summary of the updates."""
-
print('Updates:')
-
for channel_name in channels_old:
-
version_old = channels_old[channel_name]["version"]
-
version_new = channels_new[channel_name]["version"]
-
if LooseVersion(version_old) < LooseVersion(version_new):
-
attr_name = channel_name_to_attr_name(channel_name)
-
print(f'- {attr_name}: {version_old} -> {version_new}')
-
-
-
channels = {}
-
last_channels = load_as_json(PIN_PATH)
-
-
src_hash_cache = {}
-
-
-
print(f'GET {RELEASES_URL}', file=sys.stderr)
-
with urlopen(RELEASES_URL) as resp:
-
releases = json.load(resp)['releases']
-
-
if len(sys.argv) == 3 and sys.argv[1] == 'ungoogled-rev':
-
releases.append(get_ungoogled_chromium_build_by_ref(sys.argv[2]))
-
else:
-
linux_stable_versions = [release['version'] for release in releases if release['name'].startswith('chrome/platforms/linux/channels/stable/versions/')]
-
releases.append(get_latest_ungoogled_chromium_build(linux_stable_versions))
-
-
for release in releases:
-
channel_name = re.findall("chrome/platforms/linux/channels/(.*)/versions/", release['name'])[0]
-
-
# If we've already found a newer release for this channel, we're
-
# no longer interested in it.
-
if channel_name in channels:
-
continue
-
-
# We only look for channels that are listed in our version pin file.
-
if channel_name not in last_channels:
-
continue
-
-
# If we're back at the last release we used, we don't need to
-
# keep going -- there's no new version available, and we can
-
# just reuse the info from last time.
-
if release['version'] == last_channels[channel_name]['version']:
-
channels[channel_name] = last_channels[channel_name]
-
continue
-
-
channel = {'version': release['version']}
-
if channel_name == 'dev':
-
google_chrome_suffix = 'unstable'
-
elif channel_name == 'ungoogled-chromium':
-
google_chrome_suffix = 'stable'
-
else:
-
google_chrome_suffix = channel_name
-
-
try:
-
version = release["version"]
-
existing_releases = dict(map(lambda channel: (channel[1]['version'], channel[1]['hash']), last_channels.items()))
-
-
if version in src_hash_cache:
-
print(f'Already got hash {src_hash_cache[version]} for {version}, skipping FOD prefetch for {channel_name_to_attr_name(channel_name)}')
-
-
channel["hash"] = src_hash_cache[version]
-
elif version in existing_releases:
-
print(f'Already got hash {existing_releases[version]} for {version} (from upstream-info.nix), skipping FOD prefetch for {channel_name_to_attr_name(channel_name)}')
-
-
channel["hash"] = existing_releases[version]
-
else:
-
channel["hash"] = prefetch_src_sri_hash(
-
channel_name_to_attr_name(channel_name),
-
version
-
)
-
src_hash_cache[version] = channel["hash"]
-
except subprocess.CalledProcessError:
-
# This release isn't actually available yet. Continue to
-
# the next one.
-
continue
-
-
channel['deps'] = get_channel_dependencies(channel['version'])
-
if channel_name == 'stable':
-
channel['chromedriver'] = get_chromedriver('Stable')
-
elif channel_name == 'ungoogled-chromium':
-
ungoogled_repo_url = 'https://github.com/ungoogled-software/ungoogled-chromium.git'
-
channel['deps']['ungoogled-patches'] = {
-
'rev': release['ungoogled_rev'],
-
'hash': nix_prefetch_git(ungoogled_repo_url, release['ungoogled_rev'])['hash']
-
}
-
with open(UNGOOGLED_FLAGS_PATH, 'w') as out:
-
out.write(get_ungoogled_chromium_gn_flags(release['ungoogled_rev']))
-
-
channels[channel_name] = channel
-
-
-
sorted_channels = OrderedDict(sorted(channels.items(), key=get_channel_key))
-
if len(sys.argv) == 2 and sys.argv[1] == '--commit':
-
for channel_name in sorted_channels.keys():
-
version_old = last_channels[channel_name]['version']
-
version_new = sorted_channels[channel_name]['version']
-
if LooseVersion(version_old) < LooseVersion(version_new):
-
last_channels[channel_name] = sorted_channels[channel_name]
-
save_dict_as_nix(PIN_PATH, last_channels)
-
attr_name = channel_name_to_attr_name(channel_name)
-
commit_message = f'{attr_name}: {version_old} -> {version_new}'
-
if channel_name == 'stable':
-
body = subprocess.check_output([COMMIT_MESSAGE_SCRIPT, version_new]).decode('utf-8')
-
commit_message += '\n\n' + body
-
elif channel_name == 'ungoogled-chromium':
-
subprocess.run(['git', 'add', UNGOOGLED_FLAGS_PATH], check=True)
-
subprocess.run(['git', 'add', JSON_PATH], check=True)
-
subprocess.run(['git', 'commit', '--file=-'], input=commit_message.encode(), check=True)
-
else:
-
save_dict_as_nix(PIN_PATH, sorted_channels)
-
print_updates(last_channels, sorted_channels)
-37
pkgs/applications/networking/browsers/chromium/upstream-info.nix
···
-
{
-
stable = {
-
chromedriver = {
-
hash_darwin = "sha256-+Pcd++19/nJVsqGr2jzyjMTWYfb2U9wSgnNccDyGuGU=";
-
hash_darwin_aarch64 =
-
"sha256-vrbIpHrBwbzqars7D546eJ7zhEhAB0abq7MXiqlU4ts=";
-
hash_linux = "sha256-NbZ1GULLWJ6L3kczz23HoUhGk6VgBOXcjZlL7t4Z6Ec=";
-
version = "130.0.6723.116";
-
};
-
deps = {
-
gn = {
-
hash = "sha256-iNXRq3Mr8+wmY1SR4sV7yd2fDiIZ94eReelwFI0UhGU=";
-
rev = "20806f79c6b4ba295274e3a589d85db41a02fdaa";
-
url = "https://gn.googlesource.com/gn";
-
version = "2024-09-09";
-
};
-
};
-
hash = "sha256-eOCUKhFv205MD1gEY1FQQNCwxyELNjIAxUlPcRn74Lk=";
-
version = "130.0.6723.116";
-
};
-
ungoogled-chromium = {
-
deps = {
-
gn = {
-
hash = "sha256-iNXRq3Mr8+wmY1SR4sV7yd2fDiIZ94eReelwFI0UhGU=";
-
rev = "20806f79c6b4ba295274e3a589d85db41a02fdaa";
-
url = "https://gn.googlesource.com/gn";
-
version = "2024-09-09";
-
};
-
ungoogled-patches = {
-
hash = "sha256-+94tSSaOp6vzWkXN1qF3UXMm/Rs3pKmjf+U4x+af818=";
-
rev = "130.0.6723.116-1";
-
};
-
};
-
hash = "sha256-eOCUKhFv205MD1gEY1FQQNCwxyELNjIAxUlPcRn74Lk=";
-
version = "130.0.6723.116";
-
};
-
}
+5 -6
pkgs/development/tools/selenium/chromedriver/binary.nix
···
{
lib,
stdenv,
-
fetchurl,
+
fetchzip,
unzip,
testers,
chromedriver,
···
let
upstream-info =
-
(import ../../../../applications/networking/browsers/chromium/upstream-info.nix)
-
.stable.chromedriver;
+
(lib.importJSON ../../../../applications/networking/browsers/chromium/info.json).chromium;
# See ./source.nix for Linux
allSpecs = {
x86_64-darwin = {
system = "mac-x64";
-
hash = upstream-info.hash_darwin;
+
hash = upstream-info.chromedriver.hash_darwin;
};
aarch64-darwin = {
system = "mac-arm64";
-
hash = upstream-info.hash_darwin_aarch64;
+
hash = upstream-info.chromedriver.hash_darwin_aarch64;
};
};
···
pname = "chromedriver";
inherit version;
-
src = fetchurl {
+
src = fetchzip {
url = "https://storage.googleapis.com/chrome-for-testing-public/${version}/${spec.system}/chromedriver-${spec.system}.zip";
inherit (spec) hash;
};
-1
pkgs/top-level/all-packages.nix
···
ungoogled-chromium = callPackage ../applications/networking/browsers/chromium ((config.chromium or {}) // {
ungoogled = true;
-
channel = "ungoogled-chromium";
});
unigine-tropics = pkgsi686Linux.callPackage ../applications/graphics/unigine-tropics { };