# 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.

# 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.
#
# For goma client, generated via builders at
# https://ci.chromium.org/p/infra-internal/g/goma-client/console
# the git revision is the one of
# https://chromium.googlesource.com/infra/goma/client.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 mac-amd64 mac-arm64 windows-amd64 windows-386

# 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-s390x
$VerifiedPlatform linux-arm64 linux-armv6l
$VerifiedPlatform linux-mips64 linux-mips64le linux-mipsle

# vpython.
infra/tools/luci/vpython/${platform} git_revision:e75c9bf286fbb31347379cb478df2a556ab185b1

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

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

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

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

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

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

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

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

# goma client
infra/goma/client/${os}-amd64 git_revision:f5efece09286e7fab5fe52a77a6f3bd515718ae6

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

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