Skip to content

Commit d4d74bf

Browse files
committed
Merge #410: Bitcoin hashes no default features
6bcf3ea Add bitcoin-hashes-std features (Tobin Harding) 555833b Disable bitcoin_hashes default features (Tobin Harding) b6f169f Improve manifest whitespace (Tobin Harding) Pull request description: Currently we use default features for the `bitcoin_hashes` dependency, doing so breaks the `no-std` feature in `rust-bitcoin` because `std` is part of `bitcoin_hashes` default feature set. Disable `bitcoin_hashes` default features, no changes to `rust-bitcoin` are require after this change since we manually turn on `std` and `alloc` as part of the `std`/`no-std` features of `rust-bitcoin`. For other users of `rust-secp256k1` this is a breaking change but is unlikely to cause too much bother because `std` is so commonly used. This PR resolves an open [issue](#384) in `rust-bitcoin`, see issue for discussion. ACKs for top commit: apoelstra: ACK 6bcf3ea Tree-SHA512: 3cb83b67ba73b096f05cb5c98e1057c34cbf75208c626830a9c5050d3927c7dc6c13109e43c01701b1dfa7adfcfb6745bae6501f903be5976f6d1534fa9b3598
2 parents 96430df + 6bcf3ea commit d4d74bf

File tree

2 files changed

+15
-5
lines changed

2 files changed

+15
-5
lines changed

Cargo.toml

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ default = ["std"]
2323
std = ["secp256k1-sys/std"]
2424
# allow use of Secp256k1::new and related API that requires an allocator
2525
alloc = []
26+
bitcoin-hashes-std = ["bitcoin_hashes/std"]
2627
rand-std = ["rand/std"]
2728
recovery = ["secp256k1-sys/recovery"]
2829
lowmemory = ["secp256k1-sys/lowmemory"]
@@ -37,10 +38,12 @@ global-context-less-secure = []
3738

3839
[dependencies]
3940
secp256k1-sys = { version = "0.4.2", default-features = false, path = "./secp256k1-sys" }
40-
bitcoin_hashes = { version = "0.10", optional = true }
41-
rand = { version = "0.6", default-features = false, optional = true }
4241
serde = { version = "1.0", default-features = false, optional = true }
4342

43+
# You likely only want to enable these if you explicitly do not want to use "std", otherwise enable
44+
# the respective -std feature e.g., bitcoin-hashes-std
45+
bitcoin_hashes = { version = "0.10", default-features = false, optional = true }
46+
rand = { version = "0.6", default-features = false, optional = true }
4447

4548
[dev-dependencies]
4649
rand = "0.6"

contrib/test.sh

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
#!/bin/sh -ex
22

33
# TODO: Add "alloc" once we bump MSRV to past 1.29
4-
FEATURES="bitcoin_hashes global-context lowmemory rand rand-std recovery serde std"
4+
FEATURES="bitcoin_hashes global-context lowmemory rand recovery serde std"
5+
# These features are typically enabled along with the 'std' feature, so we test
6+
# them together with 'std'.
7+
STD_FEATURES="rand-std bitcoin-hashes-std"
58

69
# Use toolchain if explicitly specified
710
if [ -n "$TOOLCHAIN" ]
@@ -32,11 +35,15 @@ if [ "$DO_FEATURE_MATRIX" = true ]; then
3235
cargo build --all --no-default-features --features="$feature"
3336
cargo test --all --no-default-features --features="$feature"
3437
done
35-
38+
# Features tested with 'std' feature enabled.
39+
for feature in ${FEATURES}
40+
do
41+
cargo build --all --no-default-features --features="std,$feature"
42+
cargo test --all --no-default-features --features="std,$feature"
43+
done
3644
# Other combos
3745
RUSTFLAGS='--cfg=fuzzing' RUSTDOCFLAGS=$RUSTFLAGS cargo test --all
3846
RUSTFLAGS='--cfg=fuzzing' RUSTDOCFLAGS=$RUSTFLAGS cargo test --all --features="$FEATURES"
39-
cargo test --all --features="rand rand-std"
4047
cargo test --all --features="rand serde"
4148

4249
if [ "$DO_BENCH" = true ]; then # proxy for us having a nightly compiler

0 commit comments

Comments
 (0)