xfuse 0.1.0

Diem extended cargo tasks
[grcov.installer]
version = "0.6.1"

[system-tests]
smoke-test = { path = "smoke-test" }

[cargo]
toolchain = "nightly-2020-10-09"
flags = "-Zfeatures=all"

[cargo.sccache]
bucket = "ci-artifacts.diem.com"
prefix = "sccache/diem/"
public = true
region = "us-west-2"
endpoint = "https://s3-us-west-2.amazonaws.com"
required-cargo-home = "/opt/cargo/"
required-git-home = "/opt/git/diem"
envs = [
   #To debug sccache uncomment the two lines below.
   #["SCCACHE_ERROR_LOG","/tmp/sccache_log"],
   #["SCCACHE_LOG", "sccache::compiler::compiler=trace,rusoto_core::request=trace"],
]

[cargo.sccache.installer]
version = "0.2.14-alpha.0"
git = "https://github.com/rexhoffman/sccache.git"
git-rev = "549babdd3866aa60dae01668c42ee00bf1e8c763"
features = [ "s3" ]


[fix]

[clippy]
allowed = [
    # Deriving Arbitrary often causes this warning to show up.
    "clippy::unit_arg",
    # Known to have false positive at the moment,
    "clippy::mutable_key_type",
    "clippy::eval-order-dependence",
    "clippy::new-without-default",
    "clippy::rc_buffer",
]
warn = [
    "clippy::wildcard_dependencies",
]

[hakari]
version = "v2"
hakari-package = "diem-workspace-hack"
unify-target-host = "replicate-target-as-host"

[[hakari.platforms]]
triple = "x86_64-unknown-linux-gnu"
target-features = "unknown"

[[hakari.platforms]]
triple = "x86_64-apple-darwin"
target-features = "unknown"

# Ideally we'd have powerpc-unknown-linux-gnu here as well, but unification causes openssl-sys to be included,
# and openssl can't be cross-compiled without extra work. This may need to be fixed in hakari through being able
# to say "consider only these packages for these target platforms".

# Don't consider the crypto packages as they do weird things with mutually exclusive features.
[[hakari.omitted-packages]]
name = "diem-crypto"
version = "0.1.0"
workspace-path = "crypto/crypto"

[[hakari.omitted-packages]]
name = "diem-crypto-derive"
version = "0.1.0"
workspace-path = "crypto/crypto-derive"

# Also exclude the devtools packages since they get compiled with a different set of options.
[[hakari.omitted-packages]]
name = "x"
version = "0.1.0"
workspace-path = "devtools/x"

[[hakari.omitted-packages]]
name = "x-core"
version = "0.1.0"
workspace-path = "devtools/x-core"

[[hakari.omitted-packages]]
name = "x-lint"
version = "0.1.0"
workspace-path = "devtools/x-lint"

# This follows the same syntax as CargoOptionsSummary in guppy.
[summaries.default]
version = "v2"
include-dev = false
initials-platform = "standard"

[summaries.default.target-platform]
triple = "x86_64-unknown-linux-gnu"
target-features = "all"

[summaries.default.host-platform]
triple = "x86_64-unknown-linux-gnu"
target-features = "all"

[[summaries.default.omitted-packages]]
name = "diem-workspace-hack"
version = "0.1.0"
workspace-path = "common/workspace-hack"

[summaries.full]
version = "v2"
include-dev = true
initials-platform = "standard"
# Don't set target or host platforms, or omitted packages, for the full set.

[workspace]

# Regex for allowed characters in paths. Regex must have ^ and $ anchors.
allowed-paths = "^([a-zA-Z0-9._\\-/@:]|-)+$"

whitespace-exceptions = [
    ".github/actions/*/dist/*",
    # TODO: reevaluate skipping whitespace checks in .md files for the website
    "developers.diem.com/**/*.md",
    "**/*.exp",
    "**/*.errmap",
]

[workspace.enforced-attributes]
authors = ["Diem Association <opensource@diem.com>"]
license = "Apache-2.0"

[workspace.banned-deps.direct]
lazy_static = "use once_cell::sync::Lazy instead"

[workspace.banned-deps.default-build]
criterion = "criterion is only for benchmarks"
proptest = "proptest is only for testing and fuzzing"

[workspace.overlay]
features = ["fuzzing"]

# This is a list of test-only members. These are workspace members that do not form part of the main
# Diem production codebase, and are only used to verify correctness and/or performance.
#
# *** IMPORTANT ***
#
# Published developer tools (e.g. Move compiler) ARE part of the production Diem codebase.
# They should be listed in the root Cargo.toml's default-members, not here!
#
# Before adding a new crate to this list, ensure that it is *actually* test-only. If not, add it
# (or a crate that depends on it) to the root Cargo.toml's default-members list!
#
# For more, see the "Conditional compilation for tests" section in documentation/coding_guidelines.md.
[workspace.test-only]
members = [
    # Please keep this list in alphabetical order!

    "bytecode-verifier-tests",
    "cli",
    "cluster-test",
    "datatest-stable",
    "diem-documentation-tool",
    "diem-fuzz",
    "diem-fuzzer",
    "diem-json-rpc-client",
    "diem-proptest-helpers",
    "diem-retrier",
    "diem-smoke-test-attribute",
    "diem-swarm",
    "diem-wallet",
    "diemdb-benchmark",
    "executor-benchmark",
    "executor-test-helpers",
    "functional-tests",
    "generate-format",
    "invalid-mutations",
    "ir-testsuite",
    "language-benchmarks",
    "language-e2e-tests",
    "language-e2e-testsuite",
    "many-keys-stress-test",
    "memsocket",
    "module-generation",
    "move-lang-functional-tests",
    "move-lang-ir-utils",
    "move-lang-test-utils",
    "move-prover-test-utils",
    "move-vm-integration-tests",
    "serializer-tests",
    "smoke-test",
    "socket-bench-server",
    "test-generation",
    "x",
    "x-core",
    "x-lint",

    # Please keep this list in alphabetical order!
]

# Interesting subsets of the workspace, These are used for generating and
# checking dependency summaries.

[subsets.lsr]
# The Diem safety rules TCB.
root-members = [
    "safety-rules",
]

[subsets.lec]
# The Diem execution correctness TCB.
root-members = [
    "execution-correctness",
]

[subsets.key-manager]
# The Diem key manager TCB.
root-members = [
    "diem-key-manager",
]

[subsets.release]
# The Diem release binaries
root-members = [
    "backup-cli",
    "db-bootstrapper",
    "diem-genesis-tool",
    "diem-key-manager",
    "diem-node",
    "diem-operational-tool",
    "execution-correctness",
    "safety-rules",
]

# ---
# Determinator rules
# ---

# CI-related files. TODO: maybe have separate rules for local and CI?
[[determinator.path-rule]]
globs = [".github/**/*", ".circleci/**/*", "codecov.yml"]
mark-changed = "all"

# Core devtools files.
[[determinator.path-rule]]
globs = ["cargo-toolchain", "cargo-flags", "scripts/dev_setup.sh", "x.toml"]
mark-changed = "all"

[[determinator.path-rule]]
# Ignore website and other ancillary files, and scripts not listed above.
globs = ["developers.diem.com/**/*", "documentation/**/*", "docker/**/*", "specifications/**/*", "scripts/**/*"]
mark-changed = []

[[determinator.path-rule]]
# A bunch of images that should be ignored, I guess.
globs = ["diem.png", ".assets/diem.png", "storage/data.png"]
mark-changed = []

[[determinator.path-rule]]
# Required by get_stdlib_script_abis in transaction-builder-generator.
globs = ["language/diem-framework/compiled/transaction_scripts/abi/**/*"]
mark-changed = ["transaction-builder-generator"]
post-rule = "skip-rules"

[[determinator.package-rule]]
# x controls the build process, so if it changes, build everything.
on-affected = ["x"]
mark-changed = "all"