[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 "] 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"