# Copyright 2017 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

# This file contains version pins of a few infrastructure tools.
# If a tool is broken, revert a recent CL touching this file.
# Note that Chromium has its own depot_tools pin, so if in a rush, revert the
# depot_tools roll as well: https://chromium-review.googlesource.com/q/project:chromium/src+file:DEPS+depot_tools
# or just wait for the autoroller to auto-roll your revert to Chromium.

# Pin resolved versions in the repo, to reduce trust in the CIPD backend.
#
# Most of these tools are generated via builders at
# https://ci.chromium.org/p/infra/g/infra/console
#
# For these, the git revision is the one of
# https://chromium.googlesource.com/infra/infra.git.
#
# To regenerate them (after modifying this file):
#   cipd ensure-file-resolve -ensure-file cipd_manifest.txt
$ResolvedVersions cipd_manifest.versions

# Fully supported platforms.
$VerifiedPlatform linux-amd64 linux-arm64 mac-amd64 mac-arm64 windows-amd64

# Platform with best-effort support: we have some binaries cross-compiled for
# them, but we do not test they work. They also may not have all necessary
# vpython packages.
$VerifiedPlatform linux-386 linux-ppc64 linux-ppc64le linux-riscv64 linux-s390x
$VerifiedPlatform linux-armv6l linux-mips64 linux-mips64le linux-mipsle
$VerifiedPlatform windows-arm64

# vpython.
infra/tools/luci/vpython3/${platform} git_revision:54edd25b784c750239eaaf07a21ed1e548dec39e

# LUCI editor
infra/tools/luci/led/${platform} git_revision:3533cc64973555e09249964c6efbd8ad8a53f53c

# LUCI config generator
infra/tools/luci/lucicfg/${platform} git_revision:41fde39fb8468c9b857dd66d9d63c3ad7aae2967

# Mac toolchain installer
infra/tools/mac_toolchain/${os=mac}-${arch} git_revision:05fe195bf77656743f3daa99d463a794260b429b

# LUCI rpc command line tool
infra/tools/prpc/${platform} git_revision:bd3a982ae62b4820b71414b2340e86019a1fbd26

# LUCI authentication command line tool
infra/tools/luci-auth/${platform} git_revision:02ffe6e2b222aa1f56776b8e5385f49687451bb2

# LUCI Buildbucket CLI
infra/tools/bb/${platform} git_revision:b1ef34e3c86269b1261ccbc039ff2cfe3baaa961

# LUCI ResultDB CLI
infra/tools/rdb/${platform} git_revision:394d8d3f5ea73a29a9cf2ae9f3ae7739afd27c75

# CHROMEOS Buildjobs CLI
chromiumos/infra/crosjobs/${platform=linux-amd64} git_revision:ed616d595eb7241d39d34907050d2949121d6ae8

# dirmd, a tool to work with DIR_METADATA files
infra/tools/dirmd/${platform} git_revision:9558e2c2dc002209753b8e61b83c4a2c81361fbc

# Pinpoint CLI
infra/chromeperf/pinpoint/${platform} git_revision:bd3a982ae62b4820b71414b2340e86019a1fbd26

@Subdir reclient
# reclient, currently this is only for ChromeOS build.
# TODO(http://b/242680623): we may change how to distribute reclient.
infra/rbe/client/${platform=linux-amd64} re_client_version:0.124.1.13f78cc-gomaip
