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

$VerifiedPlatform linux-amd64
$VerifiedPlatform mac-amd64

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

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

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

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

# GN
infra/tools/gn/${platform} gn_version:549249

# 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:bf0e3dfee52b8515aa95cde6239d0ba4ff3bac5d

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

# Rust
@Subdir rust
fuchsia/rust/${platform} git_revision:8acec1f9d0b40dde142e6c26d7358b9ab232d2b4

# 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
