Correct std feature-flagging

If a crate has std set, it should enable std for all dependencies in order to
let them properly select which algorithms to use. Some crates fallback to
slower/worse algorithms on no-std.

Also more aggressively sets default-features = false leading to a *10%*
reduction in the amount of crates coordinator builds.
This commit is contained in:
Luke Parker
2023-10-31 07:41:23 -04:00
parent 34bcb9eb01
commit 05dc474cb3
19 changed files with 185 additions and 135 deletions

View File

@@ -15,47 +15,44 @@ rustdoc-args = ["--cfg", "docsrs"]
[dependencies]
# Macros
async-trait = "0.1"
lazy_static = "1"
zeroize = "1"
thiserror = "1"
serde = { version = "1", default-features = false, features = ["derive"] }
async-trait = { version = "0.1", default-features = false }
lazy_static = { version = "1", default-features = false }
zeroize = { version = "1", default-features = false, features = ["std"] }
thiserror = { version = "1", default-features = false }
serde = { version = "1", default-features = false, features = ["std", "derive"] }
# Libs
rand_core = { version = "0.6", default-features = false, features = ["getrandom"] }
rand_chacha = { version = "0.3", default-features = false }
rand_core = { version = "0.6", default-features = false, features = ["std", "getrandom"] }
rand_chacha = { version = "0.3", default-features = false, features = ["std"] }
# Encoders
hex = "0.4"
scale = { package = "parity-scale-codec", version = "3" }
hex = { version = "0.4", default-features = false, features = ["std"] }
scale = { package = "parity-scale-codec", version = "3", default-features = false, features = ["std"] }
bincode = { version = "1", default-features = false }
serde_json = { version = "1", default-features = false }
serde_json = { version = "1", default-features = false, features = ["std"] }
# Cryptography
ciphersuite = { path = "../crypto/ciphersuite", default-features = false, features = ["ristretto"] }
ciphersuite = { path = "../crypto/ciphersuite", default-features = false, features = ["std", "ristretto"] }
transcript = { package = "flexible-transcript", default-features = false, path = "../crypto/transcript" }
frost = { package = "modular-frost", path = "../crypto/frost", features = ["ristretto"] }
frost-schnorrkel = { path = "../crypto/schnorrkel" }
# Substrate
sp-application-crypto = { git = "https://github.com/serai-dex/substrate", default-features = false }
transcript = { package = "flexible-transcript", path = "../crypto/transcript", default-features = false, features = ["std"] }
frost = { package = "modular-frost", path = "../crypto/frost", default-features = false, features = ["ristretto"] }
frost-schnorrkel = { path = "../crypto/schnorrkel", default-features = false }
# Bitcoin
secp256k1 = { version = "0.28", features = ["global-context", "rand-std"], optional = true }
k256 = { version = "^0.13.1", optional = true }
bitcoin-serai = { path = "../coins/bitcoin", optional = true }
secp256k1 = { version = "0.28", default-features = false, features = ["std", "global-context", "rand-std"], optional = true }
k256 = { version = "^0.13.1", default-features = false, features = ["std"], optional = true }
bitcoin-serai = { path = "../coins/bitcoin", default-features = false, features = ["std"], optional = true }
# Monero
dalek-ff-group = { path = "../crypto/dalek-ff-group", optional = true }
monero-serai = { path = "../coins/monero", features = ["multisig"], optional = true }
dalek-ff-group = { path = "../crypto/dalek-ff-group", default-features = false, features = ["std"], optional = true }
monero-serai = { path = "../coins/monero", default-features = false, features = ["std", "http-rpc", "multisig"], optional = true }
# Application
log = "0.4"
env_logger = "0.10"
tokio = { version = "1", features = ["rt-multi-thread", "sync", "time", "macros"] }
log = { version = "0.4", default-features = false, features = ["std"] }
env_logger = { version = "0.10", default-features = false, features = ["humantime"] }
tokio = { version = "1", default-features = false, features = ["rt-multi-thread", "sync", "time", "macros"] }
serai-db = { path = "../common/db", default-features = false, features = ["rocksdb"] }
serai-db = { path = "../common/db", features = ["rocksdb"] }
serai-env = { path = "../common/env" }
serai-client = { path = "../substrate/client", default-features = false }
@@ -64,11 +61,11 @@ messages = { package = "serai-processor-messages", path = "./messages" }
message-queue = { package = "serai-message-queue", path = "../message-queue" }
[dev-dependencies]
futures = "0.3"
futures = { version = "0.3", default-features = false }
frost = { package = "modular-frost", path = "../crypto/frost", features = ["tests"] }
env_logger = "0.10"
sp-application-crypto = { git = "https://github.com/serai-dex/substrate", default-features = false, features = ["std"] }
dockertest = "0.4"
serai-docker-tests = { path = "../tests/docker" }

View File

@@ -14,14 +14,14 @@ all-features = true
rustdoc-args = ["--cfg", "docsrs"]
[dependencies]
zeroize = { version = "1", features = ["derive"] }
zeroize = { version = "1", default-features = false, features = ["std", "derive"] }
scale = { package = "parity-scale-codec", version = "3", default-features = false }
serde = { version = "1", features = ["derive"] }
scale = { package = "parity-scale-codec", version = "3", default-features = false, features = ["std"] }
serde = { version = "1", default-features = false, features = ["std", "derive"] }
dkg = { path = "../../crypto/dkg", features = ["serde"] }
dkg = { path = "../../crypto/dkg", default-features = false, features = ["std", "serde"] }
serai-primitives = { path = "../../substrate/primitives" }
in-instructions-primitives = { package = "serai-in-instructions-primitives", path = "../../substrate/in-instructions/primitives" }
coins-primitives = { package = "serai-coins-primitives", path = "../../substrate/coins/primitives" }
validator-sets-primitives = { package = "serai-validator-sets-primitives", path = "../../substrate/validator-sets/primitives" }
serai-primitives = { path = "../../substrate/primitives", default-features = false, features = ["std"] }
in-instructions-primitives = { package = "serai-in-instructions-primitives", path = "../../substrate/in-instructions/primitives", default-features = false, features = ["std"] }
coins-primitives = { package = "serai-coins-primitives", path = "../../substrate/coins/primitives", default-features = false, features = ["std"] }
validator-sets-primitives = { package = "serai-validator-sets-primitives", path = "../../substrate/validator-sets/primitives", default-features = false, features = ["std"] }