Skip to content
Snippets Groups Projects
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
This project manages its dependencies using Cargo. Learn more
Cargo.toml 7.00 KiB
[[bin]]
name = "polkadot"
path = "src/main.rs"

[package]
name = "polkadot"
description = "Implementation of a `https://polkadot.network` node in Rust based on the Substrate framework."
license = "GPL-3.0-only"
version = "0.9.22"
authors = ["Parity Technologies <admin@parity.io>"]
edition = "2021"
rust-version = "1.57.0" # custom profiles
readme = "README.md"

[dependencies]
polkadot-cli = { path = "cli", features = [ "kusama-native", "westend-native", "rococo-native" ]  }
color-eyre = { version = "0.6.1", default-features = false }
parity-util-mem = { version = "0.11.0", default-features = false, features = ["jemalloc-global"] }

[dev-dependencies]
assert_cmd = "2.0.4"
nix = "0.24.1"
tempfile = "3.2.0"
tokio = "1.18.2"
remote-externalities = { git = "https://github.com/paritytech/substrate", branch = "master" }
polkadot-core-primitives = { path = "core-primitives" }

[workspace]
members = [
	"cli",
	"core-primitives",
	"erasure-coding",
	"primitives",
	"primitives/test-helpers",
	"runtime/common",
	"runtime/common/slot_range_helper",
	"runtime/metrics",
	"runtime/parachains",
	"runtime/polkadot",
	"runtime/polkadot/constants",
	"runtime/kusama",
	"runtime/kusama/constants",
	"runtime/rococo",
	"runtime/rococo/constants",
	"runtime/westend",
	"runtime/westend/constants",
	"runtime/test-runtime",
	"runtime/test-runtime/constants",
	"statement-table",
	"xcm",
	"xcm/xcm-builder",
	"xcm/xcm-executor",
	"xcm/xcm-executor/integration-tests",
	"xcm/xcm-simulator",
	"xcm/xcm-simulator/example",
	"xcm/xcm-simulator/fuzzer",
	"xcm/pallet-xcm",
	"xcm/pallet-xcm-benchmarks",
	"xcm/procedural",
	"node/client",
	"node/collation-generation",
	"node/core/approval-voting",
	"node/core/av-store",
	"node/core/backing",
	"node/core/bitfield-signing",
	"node/core/candidate-validation",
	"node/core/chain-api",
	"node/core/chain-selection",
	"node/core/dispute-coordinator",
	"node/core/parachains-inherent",
	"node/core/provisioner",
	"node/core/pvf",
	"node/core/pvf-checker",
	"node/core/runtime-api",
	"node/network/approval-distribution",
	"node/network/bridge",
	"node/network/protocol",
	"node/network/statement-distribution",
	"node/network/bitfield-distribution",
	"node/network/availability-distribution",
	"node/network/availability-recovery",
	"node/network/collator-protocol",
	"node/network/gossip-support",
	"node/network/dispute-distribution",
	"node/overseer",
	"node/orchestra",
	"node/orchestra/proc-macro",
	"node/malus",
	"node/primitives",
	"node/service",
	"node/subsystem",
	"node/subsystem-types",
	"node/subsystem-test-helpers",
	"node/subsystem-util",
	"node/jaeger",
	"node/gum",
	"node/gum/proc-macro",
	"node/metrics",
	"node/metered-channel",
	"node/test/client",
	"node/test/performance-test",
	"node/test/service",
	"node/zombienet-backchannel",
	"rpc",
	"parachain",
	"parachain/test-parachains",
	"parachain/test-parachains/adder",
	"parachain/test-parachains/adder/collator",
	"parachain/test-parachains/halt",
	"parachain/test-parachains/undying",
	"parachain/test-parachains/undying/collator",
	"utils/staking-miner",
	"utils/remote-ext-tests/bags-list",
	"utils/generate-bags",
]

# We want to be able to build the bridge relayer without pulling it (and all of its
# dependencies into the Polkadot workspace)
exclude = ["bridges/relays/bin-substrate", "bridges/bin/rialto/runtime", "bridges/bin/millau/runtime"]

[badges]
maintenance = { status = "actively-developed" }

# The list of dependencies below (which can be both direct and indirect dependencies) are crates
# that are suspected to be CPU-intensive, and that are unlikely to require debugging (as some of
# their debug info might be missing) or to require to be frequently recompiled. We compile these
# dependencies with `opt-level=3` even in "dev" mode in order to make "dev" mode more usable.
# The majority of these crates are cryptographic libraries.
#
# If you see an error mentioning "profile package spec ... did not match any packages", it
# probably concerns this list.
#
# This list is ordered alphabetically.
[profile.dev.package]
blake2b_simd = { opt-level = 3 }
blake2 = { opt-level = 3 }
blake2-rfc = { opt-level = 3 }
chacha20poly1305 = { opt-level = 3 }
cranelift-codegen = { opt-level = 3 }
cranelift-wasm = { opt-level = 3 }
crc32fast = { opt-level = 3 }
crossbeam-deque = { opt-level = 3 }
crypto-mac = { opt-level = 3 }
curve25519-dalek = { opt-level = 3 }
ed25519-dalek = { opt-level = 3 }
flate2 = { opt-level = 3 }
futures-channel = { opt-level = 3 }
hashbrown = { opt-level = 3 }
hash-db = { opt-level = 3 }
hmac = { opt-level = 3 }
httparse = { opt-level = 3 }
integer-sqrt = { opt-level = 3 }
keccak = { opt-level = 3 }
libm = { opt-level = 3 }
librocksdb-sys = { opt-level = 3 }
libsecp256k1 = { opt-level = 3 }
libz-sys = { opt-level = 3 }
mio = { opt-level = 3 }
nalgebra = { opt-level = 3 }
num-bigint = { opt-level = 3 }
parking_lot_core = { opt-level = 3 }
parking_lot = { opt-level = 3 }
percent-encoding = { opt-level = 3 }
primitive-types = { opt-level = 3 }
reed-solomon-novelpoly = { opt-level = 3 }
ring = { opt-level = 3 }
rustls = { opt-level = 3 }
sha2 = { opt-level = 3 }
sha3 = { opt-level = 3 }
smallvec = { opt-level = 3 }
snow = { opt-level = 3 }
twox-hash = { opt-level = 3 }
uint = { opt-level = 3 }
wasmi = { opt-level = 3 }
x25519-dalek = { opt-level = 3 }
yamux = { opt-level = 3 }
zeroize = { opt-level = 3 }

[profile.release]
# Polkadot runtime requires unwinding.
panic = "unwind"
opt-level = 3

# make sure dev builds with backtrace do
# not slow us down
[profile.dev.package.backtrace]
inherits = "release"

[profile.production]
inherits = "release"
lto = true
codegen-units = 1

[profile.testnet]
inherits = "release"
debug = 1 # debug symbols are useful for profilers
debug-assertions = true
overflow-checks = true

[features]
runtime-benchmarks= [ "polkadot-cli/runtime-benchmarks" ]
try-runtime = [ "polkadot-cli/try-runtime" ]
fast-runtime = [ "polkadot-cli/fast-runtime" ]
runtime-metrics = [ "polkadot-cli/runtime-metrics" ]
pyroscope = ["polkadot-cli/pyroscope"]
staging-client = ["polkadot-cli/staging-client"]

# Configuration for building a .deb package - for use with `cargo-deb`
[package.metadata.deb]
name = "polkadot"
extended-description = "Implementation of a https://polkadot.network node in Rust based on the Substrate framework."
section = "misc"
maintainer = "martin@parity.io"
license-file = ["LICENSE", "0"]
# https://www.debian.org/doc/debian-policy/ch-maintainerscripts.html
maintainer-scripts = "scripts/packaging/deb-maintainer-scripts"
assets = [
	["target/release/polkadot", "/usr/bin/", "755"],
	["scripts/packaging/polkadot.service", "/lib/systemd/system/", "644"]
]
conf-files = [
	"/etc/default/polkadot"
]

# Configuration for building an .rpm package - for use with `cargo-rpm`
[package.metadata.rpm]
package = "polkadot"

[package.metadata.rpm.cargo]
buildflags = ["--release"]

[package.metadata.rpm.targets]
polkadot = { path = "/usr/bin/polkadot" }

[package.metadata.rpm.files]
"../scripts/packaging/polkadot.service" = { path = "/usr/lib/systemd/system/polkadot.service", mode = "644" }

[package.metadata.spellcheck]
config = "./scripts/ci/gitlab/spellcheck.toml"