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

# Note: changes to this file will require updating fuchsia.versions, which
# can be done by running `./cipd ensure-file-resolve -ensure-file fuchsia.ensure`
# from this directory.

$VerifiedPlatform linux-amd64
$VerifiedPlatform mac-amd64

$ParanoidMode CheckPresence
$ResolvedVersions fuchsia.versions

# GN
gn/gn/${platform} git_revision:bdb0fd02324b120cacde634a9235405061c8ea06

# vpython
infra/tools/luci/vpython/${platform} git_revision:00e2d8b49a4e7505d1c71f19d15c9e7c5b9245a5

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

# LogDog CLI client
infra/tools/luci/logdog/logdog/${platform} git_revision:cf9d281c2ff478928ff11dfa4995d09a97046990

# Ninja
infra/ninja/${platform} version:1.8.2

# Breakpad
fuchsia/tools/breakpad/${os=linux}-${arch} git_revision:9eac2058b70615519b2c4d8c6bdbfca1bd079e39

# dump_breakpad_symbols
fuchsia/tools/dump_breakpad_symbols/${os=linux}-${arch} git_revision:ceab742028fe55c4e111dc44051929fd1dfc96bc

# godepfile
fuchsia/tools/godepfile/${platform} git_revision:6922d7833617841e853a0be52a285f6cd07a0a10

# CMake
@Subdir cmake
infra/cmake/${platform} version:3.10.0

# Clang
@Subdir clang
fuchsia/clang/${platform} git_revision:280fa3c2d2ddb0b5dcb31113c0b1c2259982b7e7

# Go
@Subdir go
fuchsia/go/${platform} git_revision:b8bd7d94a2ae6c80ab8b6ed5900d3eeba8a777c3

# Rust
@Subdir rust
fuchsia/rust/${platform} git_revision:4bd4e4130ed531a644263db26bf8461704215c77

# Swift
@Subdir swift
fuchsia/swift/${os=linux}-${arch} git_revision:d4943f3da1ae8b69fba21fa359b62f25d74a6b14

# QEMU
@Subdir qemu
fuchsia/qemu/${platform} git_revision:0f0027d617976b4cbb7b937d5836f8ef0ac25ba1

# sysroot
@Subdir sysroot
fuchsia/sysroot/${os=linux}-${arch} git_revision:a96053c799a0f1ad0b7e8ab8199edbfa18adcbb6
