blob: d4cc5a3c4272e6c2c7cb55f165efd9c7be837718 [file] [log] [blame]
# Copyright 2018 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.
# -------------- READ BEFORE EDITING ---------------
# This file describes the third-party packages used by Rust code and
# how they should be built.
#
# Every edit to this file should be followed by:
# - fx update-rustc-third-party
#
# Always request non-default features you use. This can sometimes get
# missed if another third-party crate in our build requests the same
# feature you use: your builds will usually work, but `fx rustdoc` will
# fail.
#
# More information is available in
# docs/development/languages/rust/third_party.md.
[package]
name = "fuchsia-third-party"
version = "0.1.0"
[dependencies]
# Keep this sorted alphabetically, please.
anyhow = "1.0.25"
arbitrary = { version = "0.4.0", features = ["derive"] }
argh = "0.1.4"
arc-swap = "0.4.4"
async-trait = "0.1.40"
base64 = "0.9"
bincode = "1"
bitfield = "0.13"
bitflags = "1"
bumpalo = "3.2.1"
byteorder = { version = "1", features = ["i128"] }
cargo_metadata = "0.9.1"
chrono = "0.4.11"
clap = "2.33"
crc = "1.8.1"
criterion = { version = "0.2", default-features = false }
crossbeam = "0.7.3"
csv = "1.0.7"
cxx = "0.3.5"
cxxbridge-cmd = "0.3.5"
data-encoding = "2.1.2"
derp = "0.0.13"
difference = "2.0.0"
fatfs = "0.4.0"
flate2 = { version = "1.0.14", default-features = false, features = ["rust_backend"] }
futures = "0.3.5"
futures-executor = "0.3.5"
futures-io = "0.3.5"
futures-test = "0.3.5"
futures-util = "0.3.5"
glob = "0.3.0"
heck = "0.3.1"
hex = "0.3.2"
http = "0.2.1"
hyper = { version = "0.13.4", default-features = false, features = ["stream"] }
itertools = "0.8"
itoa = "0.4"
json5format = "0.1.4"
lazy_static = "1.4"
libc = "0.2"
libm = "0.2.1"
linked-hash-map = "0.5.3"
log = { version = "0.4.4", features = ["std"] }
maplit = "1.0"
matches = "0.1.8"
maybe-owned = "0.3.2"
memchr = "2.0"
nom = { version = "5.0.0", default-features = false, features = ["std", "regexp_macros"] }
nom_locate = "2.0.0"
num-derive = "0.2.4"
num-traits= "0.2.5"
numtoa = "0.1.0"
once_cell = { version = "1.2.0", features = ["parking_lot"] }
parking_lot = "0.9"
paste = "1.0"
percent-encoding = "2.1"
pest = "2.1"
pest_derive = "2.1"
pest_generator = "2.1.3"
pin-project = "0.4.26"
pin-utils = "0.1.0"
png = "0.14" # saved for future use
pretty_assertions = "0.5.1"
proc-macro-hack = "0.5.15"
proptest = "0.9.3"
proptest-derive = "0.1.1"
rand = "0.6"
rand_core = "0.4.0"
rand_os = "0.1.2"
rayon = "1.2.1"
regex = "1.0.6"
regex-syntax = "0.6.5"
rental = "0.5.4"
ring = "0.16"
rouille = "3.0.0"
rust-crypto = "0.2"
rustc-demangle = "0.1.16"
rustc-hash = "1.0.1"
rustls = { version = "0.17.0", features = ["dangerous_configuration"] }
scopeguard = "0.3.3"
semver = "0.9.0"
serde = { version = "1.0.116", features = ["derive"] }
serde_cbor = "0.11.1"
serde_derive = "1.0.116"
serde_json = "1.0.59"
serde_json5 = "0.1.0"
slab = "0.4"
socket2 = { version = "0.3.12", features = ["reuseport", "unix"] }
splines = "2.2.0"
static_assertions = "1.1.0"
structopt = "0.2.14"
tempfile = "3.1"
termion = "1.5.3"
test-case = "1.0.0"
thiserror = "1.0.9"
timebomb = "0.1.2"
tokio = { version = "0.2.16", default-features = false }
toml = "0.5"
tracing = { version = "0.1.15", features = ["log"] }
tracing-futures = "0.2.4"
unicase = "2.2.0"
untrusted = "0.7"
url = "2.1"
uuid = { version = "0.7.2", features = ["serde", "v4"] } # move ?
valico = "2.4.2"
wasm-bindgen = "0.2.60"
webpki = "0.21"
xml-rs = "0.8"
# move once target-side tests of host-side code have been removed
# in wayland/scanner:lib and unicode_block_generator :
num = "0.2"
unic-char-range = "0.9"
unic-ucd-block = "0.9"
unicode-segmentation = "1.0"
unicode-width = "0.1.3"
utf8parse = "0.1"
[dependencies.tracing-subscriber]
version = "0.2.7"
default-features = false
features = ["chrono", "registry", "tracing-log"]
# Target-side only dependencies
[target.'cfg(target_os = "fuchsia")'.dependencies]
bytes = "0.5.4"
# do not add back without verifying certificate transparency is ready to use - see fxbug.dev/25100
# ct-logs = "0.6"
derivative = "2.1.1"
euclid = "0.20.7"
eui48 = { version = "0.4.6", features = ["serde", "disp_hexstring"] }
freetype = "0.4" # saved for future use
getopts = "0.2"
hyper-rustls = { version = "0.20.0", default-features = false }
id_tree = "1.5"
lipsum = "0.6.0"
num-bigint = { version = "0.2", features = ["rand"] }
openat = "0.1.17"
owning_ref = "0.4.0"
pretty = "0.5.2"
prettytable-rs = "0.8.0"
proc-macro-nested = "0.1.4"
rand_xorshift = "0.1.1"
rust_icu_common = { version = "0.4.1", default-features = false, features = ["renaming"] }
rust_icu_sys = { version = "0.4.1", default-features = false, features = ["renaming", "icu_version_in_env", "icu_version_67_plus"] }
rust_icu_ucal = { version = "0.4.1", default-features = false, features = ["renaming", "icu_version_in_env"] }
rust_icu_udat = { version = "0.4.1", default-features = false, features = ["renaming", "icu_version_in_env"] }
rust_icu_udata = { version = "0.4.1", default-features = false, features = ["renaming", "icu_version_in_env"] }
rust_icu_uenum = { version = "0.4.1", default-features = false, features = ["renaming", "icu_version_in_env"] }
rust_icu_uloc = { version = "0.4.1", default-features = false, features = ["renaming", "icu_version_in_env", "icu_version_67_plus"] }
rust_icu_ustring = { version = "0.4.1", default-features = false, features = ["renaming", "icu_version_in_env"] }
rust_icu_utext = { version = "0.4.1", default-features = false, features = ["renaming", "icu_version_in_env"] }
rusttype = "0.7.3"
serde_repr = "0.1.3"
smallvec = "0.6"
textwrap = "0.11.0"
time = "0.1"
tokio-rustls = "0.13.0"
trust-dns-proto = { version = "0.19.2", default-features = false, features = ["testing"] }
trust-dns-resolver = { version = "0.19.2", default-features = false, features = ["testing"] }
ttf-parser = "0.8.2"
unicode-normalization = "0.1"
vk-sys = "0.4.0"
void = "1.0.2"
vte = "0.3"
walkdir = "2.2.7"
# Host-side only dependencies
[target.'cfg(not(target_os = "fuchsia"))'.dependencies]
async-std = { version = "1.6.0", features = ["attributes"] }
crossterm = "0.17.7"
handlebars = "2.0.0-beta.2"
home = "0.5.3"
hyper-rustls = { version = "0.20.0", default-features = false, features = ["rustls-native-certs"] }
indoc = "0.3.3"
nix = "0.18" # not included in fuchsia so we don't depend on #[cfg(unix)] things on target
petgraph = "0.5.1"
proc-macro2 = "1.0.9"
pulldown-cmark = "0.6.0"
quote = "1.0.2"
signal-hook = "0.1.16"
simplelog = "0.7.5"
smol = "0.1.11"
syn = { version = "1.0.5", features = ["full", "visit-mut", "extra-traits"] }
synstructure = "0.12.1"
tar = "0.4.25"
termios = "0.3.2"
tui = { version = "0.10.0", features = ["crossterm"], default-features = false }
zip = { version = "0.5.5", default-features = false, features = ["deflate"] }
# For crates that we don't want to vendor, create a dummy package in tiny_mirrors/ (see existing
# examples).
[patch.crates-io]
# Keep this sorted alphabetically, please.
backtrace-sys = { path = "tiny_mirrors/backtrace-sys" }
cmake = { path = "tiny_mirrors/cmake"}
# TODO(fxbug.dev/56201): Vendor fatfs when upstream makes a new release.
# See https://github.com/rafalh/rust-fatfs/pull/37#issuecomment-653760603 for more information.
crossterm_winapi = { path = "tiny_mirrors/crossterm_winapi" }
fatfs = { path = "tiny_mirrors/fatfs" }
fuchsia-cprng = { path = "../../src/lib/zircon/rust/fuchsia-cprng" }
futures-timer = { path = "tiny_mirrors/futures-timer" }
js-sys = { path = "tiny_mirrors/js-sys" }
libm = { path = "tiny_mirrors/libm" }
memchr = { path = "tiny_mirrors/memchr" }
miow = { path = "tiny_mirrors/miow" }
nom_locate = { path = "tiny_mirrors/nom_locate" }
ntapi = { path = "tiny_mirrors/ntapi" }
pkg-config = { path = "tiny_mirrors/pkg-config" }
regex-automata = { path = "tiny_mirrors/regex-automata" }
rust-crypto = { path = "../rust-mirrors/rust-crypto" }
security-framework = { path = "tiny_mirrors/security-framework" }
serde_json5 = { path = "../rust-mirrors/serde_json5" }
servo-freetype-sys = { path = "tiny_mirrors/servo-freetype-sys" }
# termcolor 1.1.0 w/ UNLICENSE file removed per OSRB
termcolor = { path = "tiny_mirrors/termcolor" }
tracing-core = { path = "tiny_mirrors/tracing-core" }
ttf-parser = { path = "tiny_mirrors/ttf-parser" }
wasm-bindgen-futures = { path = "tiny_mirrors/wasm-bindgen-futures" }
web-sys = { path = "tiny_mirrors/web-sys" }
wepoll-binding = { path = "tiny_mirrors/wepoll-binding" }
winapi-i686-pc-windows-gnu = { path = "tiny_mirrors/winapi-i686-pc-windows-gnu" }
winapi-x86_64-pc-windows-gnu = { path = "tiny_mirrors/winapi-x86_64-pc-windows-gnu" }
winapi = { path = "tiny_mirrors/winapi" }
winapi-util = { path = "tiny_mirrors/winapi-util" }
#################################################################################
### Cargo GNaw Configs ###
### ###
### See GNaw's documentation in //tools/cargo-gnaw/README.md for more details ###
### and examples. ###
#################################################################################
# Global GN configs that will be added or removed from all generated targets
[gn.config]
remove_cfgs = [
# Fuchsia defaults targets to 2018 edition. third_party can be any version
"//build/config:rust_edition_2018",
# Fuchsia forces targets to comply with 2018 idioms. third_party can ignore this
"//build/config:rust_2018_idioms",
]
add_cfgs = []
# The below config data is for the targets being used by cargo-gnaw. This provides custom input that
# is usually provided by build.rs scripts. If the build.rs script is simple enough, cargo-gnaw will
# suggest what to put in here. if not, usually reading the build.rs script is sufficient.
#
# arguments to target:
# rustflags - flags to pass to rustc
# deps - native GN dependency
# env_vars - environment variables, usually used for pretending to be cargo
# configs - native GN config to use
#
# Keep this sorted alphabetically, please.
[gn.package.anyhow."1.0.25"]
# TODO(bwb) turn on when backtrace stabilizes
# rustflags = ["--cfg=backtrace"]
[gn.package.arrayvec."0.4.10"]
[gn.package.bitflags."1.2.1"]
rustflags = ["--cfg=bitflags_const_fn"]
[gn.package.brotli-sys."0.3.2"]
deps = [ "//third_party/rust_crates/compat/brotli" ]
[gn.package.byteorder."1.3.1"]
rustflags = ["--cfg=byteorder_i128"]
[gn.package.core-foundation-sys."0.7.0".platform."cfg(target_os = \"macos\")"]
rustflags = ["-lframework=CoreFoundation"]
[gn.package.crc."1.8.1"]
env_vars = ["OUT_DIR=../../../compat/crc"]
[gn.package.crc32fast."1.2.0"]
rustflags = ["--cfg=crc32fast_stdarchx86"]
[gn.package.httparse."1.3.3"]
rustflags = ["--cfg=httparse_simd"]
[gn.package.libc."0.2.74"]
rustflags = ["--cfg=freebsd11", "--cfg=libc_priv_mod_use", "--cfg=libc_union", "--cfg=libc_const_size_of", "--cfg=libc_align", "--cfg=libc_core_cvoid", "--cfg=libc_packedN"]
[gn.package.log."0.4.8"]
rustflags = ["--cfg=atomic_cas"]
[gn.package.memchr."2.3.3"]
rustflags = ["--cfg=memchr_runtime_simd", "--cfg=memchr_runtime_sse2", "--cfg=memchr_runtime_sse42", "--cfg=memchr_runtime_avx"]
[gn.package.mime_guess."1.8.6"]
env_vars = ["OUT_DIR=../../../compat/mime_guess"]
[gn.package.num-bigint."0.2.2"]
rustflags = ["--cfg=has_i128"]
[gn.package.num-complex."0.2.1"]
rustflags = ["--cfg=has_i128"]
[gn.package.num-derive."0.2.4"]
rustflags = ["--cfg=has_i128"]
[gn.package.num-integer."0.1.39"]
rustflags = ["--cfg=has_i128"]
[gn.package.num-rational."0.2.1"]
rustflags = ["--cfg=has_i128"]
[gn.package.num-traits."0.2.11"]
rustflags = ["--cfg=has_i128"]
[gn.package.maybe-uninit."2.0.0"]
rustflags = ["--cfg=derive_copy", "--cfg=repr_transparent", "--cfg=native_uninit"]
[gn.package.num-iter."0.1.37"]
rustflags = ["--cfg=has_i128"]
[gn.package.pin-project-internal."0.4.26"]
rustflags = ["--cfg=underscore_consts", "--cfg=deprecated_proc_macro"]
[gn.package.proc-macro2."0.4.27"]
rustflags = ["--cfg=u128", "--cfg=use_proc_macro", "--cfg=wrap_proc_macro"]
# cargo-gnaw suggested "--cfg=proc_macro_span" as well but proc_macro_span is still an unstable feature.
[gn.package.proc-macro2."1.0.19"]
rustflags = ["--cfg=span_locations", "--cfg=hygiene", "--cfg=use_proc_macro", "--cfg=wrap_proc_macro"]
[gn.package.rand."0.6.5"]
rustflags = ["--cfg=rustc_1_25","--cfg=rustc_1_26", "--cfg=rustc_1_27",]
[gn.package.rand_chacha."0.1.1"]
rustflags = ["--cfg=rustc_1_26"]
[gn.package.rand_pcg."0.1.1"]
rustflags = ["--cfg=rust_1_26"]
[gn.package.ring."0.16.12"]
deps = [ "//third_party/rust_crates/compat/ring:ring-core" ]
[gn.package.rust-crypto."0.2.36"]
deps = [ "//third_party/rust_crates/compat/rust-crypto" ]
[gn.package.ryu."1.0.3"]
rustflags = ["--cfg=integer128", "--cfg=must_use_return", "--cfg=maybe_uninit"]
[gn.package.proc-macro-nested."0.1.4"]
rustflags = []
env_vars = ["OUT_DIR=../../../compat/proc-macro-nested"]
[gn.package.serde."1.0.116"]
rustflags = ["--cfg=ops_bound", "--cfg=core_reverse", "--cfg=de_boxed_c_str", "--cfg=de_boxed_path", "--cfg=de_rc_dst", "--cfg=core_duration", "--cfg=integer128", "--cfg=range_inclusive", "--cfg=num_nonzero", "--cfg=core_try_from", "--cfg=num_nonzero_signed", "--cfg=std_atomic64", "--cfg=std_atomic"]
[gn.package.serde_derive."1.0.116"]
rustflags = ["--cfg=underscore_consts"]
[gn.package.tiny_http."0.6.2"]
# TODO(61282): Fix the leaks and remove this.
deps = [ "//build/config/sanitizers:suppress-lsan.DO-NOT-USE-THIS" ]
[gn.package.unicase."1.4.2"]
rustflags = ["--cfg=__unicase__default_hasher", "--cfg=__unicase__iter_cmp"]
[gn.package.unicase."2.5.1"]
rustflags = ["--cfg=__unicase__default_hasher", "--cfg=__unicase__const_funs", "--cfg=__unicase__iter_cmp"]
[gn.package.valico."2.4.2"]
env_vars = ["OUT_DIR=../../../../compat/valico"]
# These don't have build.rs scripts but require platform-specific target configuration.
#
# Keep this sorted alphabetically, please.
[gn.package.backtrace."0.3.42".platform."cfg(target_os = \"fuchsia\")"]
configs = [ "//build/config/fuchsia:libunwind" ]
# These don't have build.rs scripts, but they rely on Cargo populating the environment variables
#
# Keep this sorted alphabetically, please.
[gn.package.handlebars."2.0.0-beta.2"]
# pest relies on this being set to find the grammar file
env_vars = [ "CARGO_MANIFEST_DIR=../../third_party/rust_crates/vendor/handlebars" ]
[gn.package.rust_icu_common."0.4.1"]
configs = [ "//src/lib/icu:version" ]
[gn.package.rust_icu_sys."0.4.1"]
configs = [ "//src/lib/icu:version" ]
[gn.package.rust_icu_ucal."0.4.1"]
configs = [ "//src/lib/icu:version" ]
[gn.package.rust_icu_udat."0.4.1"]
configs = [ "//src/lib/icu:version" ]
[gn.package.rust_icu_udata."0.4.1"]
configs = [ "//src/lib/icu:version" ]
[gn.package.rust_icu_uenum."0.4.1"]
configs = [ "//src/lib/icu:version" ]
[gn.package.rust_icu_uloc."0.4.1"]
configs = [ "//src/lib/icu:version" ]
[gn.package.rust_icu_ustring."0.4.1"]
configs = [ "//src/lib/icu:version" ]
[gn.package.rust_icu_utext."0.4.1"]
configs = [ "//src/lib/icu:version" ]
[gn.package.trust-dns-resolver."0.19.2"]
env_vars = [ "CARGO_PKG_VERSION=\\\"0.19.2\\\"" ]
[gn.package.unic-common."0.9.0"]
env_vars = [ "CARGO_PKG_VERSION=\\\"0.9.0\\\"", "CARGO_PKG_NAME=\\\"unic-common\\\"", "CARGO_PKG_DESCRIPTION=\\\"\\\"", ]
[gn.package.unic-ucd-version."0.9.0"]
env_vars = [ "CARGO_PKG_VERSION=\\\"0.9.0\\\"", "CARGO_PKG_NAME=\\\"unic-ucd-version\\\"", "CARGO_PKG_DESCRIPTION=\\\"\\\"", ]
[gn.package.unic-char-range."0.9.0"]
env_vars = [ "CARGO_PKG_VERSION=\\\"0.9.0\\\"", "CARGO_PKG_NAME=\\\"unic-char-range\\\"", "CARGO_PKG_DESCRIPTION=\\\"\\\"", ]
[gn.package.unic-char-property."0.9.0"]
env_vars = [ "CARGO_PKG_VERSION=\\\"0.9.0\\\"", "CARGO_PKG_NAME=\\\"unic-char-property\\\"", "CARGO_PKG_DESCRIPTION=\\\"\\\"", ]
[gn.package.unic-ucd-block."0.9.0"]
env_vars = [ "CARGO_PKG_VERSION=\\\"0.9.0\\\"", "CARGO_PKG_NAME=\\\"unic-ucd-block\\\"", "CARGO_PKG_DESCRIPTION=\\\"\\\"", ]
[gn.package.wasm-bindgen-shared."0.2.60"]
# Do not quote, this is embedded directly in .wasm sections and is needed by wasm-bindgen.
env_vars = [ "CARGO_PKG_VERSION=0.2.60" ]
# These dependencies have build.rs scripts, but dummy invocations indicating they
# do not need to be run are sufficient for our build
#
# Keep this sorted alphabetically, please.
[gn.package.backtrace-sys."0.1.32"]
[gn.package.bincode."1.1.1"]
[gn.package.crossbeam-epoch."0.8.2"]
[gn.package.crossbeam-utils."0.7.2"]
# cxx's build.rs is only used to build it's src/cxx.cc file, for crates that use cxx and build with
# cargo. It is replaced with //src/lib/rust_cxx:cxx_lib.
[gn.package.cxx."0.3.5"]
[gn.package.getrandom."0.1.13"]
# cxx uses this to link against libc++ or libstdc++, for crates that use cxx and build with cargo.
# It is replaced by our own build machinery.
[gn.package.link-cplusplus."1.0.2"]
[gn.package.memoffset."0.5.3"]
[gn.package.nix."0.18.0"]
[gn.package.nom."5.0.0"]
[gn.package.parking_lot."0.9.0"]
[gn.package.parking_lot_core."0.6.2"]
[gn.package.pulldown-cmark."0.6.0"]
[gn.package.rayon-core."1.7.0"]
[gn.package.servo-freetype-sys."4.0.5"]
[gn.package.syn."1.0.41"]
[gn.package.test-case."1.0.0"]
[gn.package.wasm-bindgen."0.2.60"]
# This section defines GN binary targets that should be generated from Cargo binary targets. (By
# default, cargo-gnaw will only generate targets for libraries and proc-macros.)
#
# Example:
#
# [gn.package.cargo-package-name."1.2.3".binary.cargo-target-name]
# output_name = "gn-name"
# rustflags = [ ... ]
# configs = [ ... ]
#
#
# In the above example, "gn-name" will become both the name of the group target to depend
# upon and the executable's output_name, so usages can assume output_name == target_name (and must
# since get_target_outputs only works within the same file).
#
# "cargo-target-name" is the name of the Cargo binary target within "cargo-package-name".
#
# Keep this sorted alphabetically, please.
[gn.package.cxxbridge-cmd."0.3.5".binary.cxxbridge]
output_name = "cxxbridge"
[gn.package.serde_json."1.0.59"]
rustflags = ["--cfg=limb_width_64"]