# 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.
#
# To regenerate them (after modifying this file):
#   cipd ensure-file-resolve -ensure-file cipd_manifest.txt
$ResolvedVersions cipd_manifest.versions

# Fully supported plaforms.
$VerifiedPlatform linux-amd64 mac-amd64 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:96f81e737868d43124b4661cf1c325296ca04944

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

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

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

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

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