Skip to content

Commit 8da555e

Browse files
authored
fix: correct propagate features (#2177)
1 parent 6c9654b commit 8da555e

File tree

16 files changed

+228
-51
lines changed

16 files changed

+228
-51
lines changed

.config/zepter.yaml

+36
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
version:
2+
format: 1
3+
# Minimum zepter version that is expected to work. This is just for printing a nice error
4+
# message when someone tries to use an older version.
5+
binary: 0.13.2
6+
7+
# The examples in the following comments assume crate `A` to have a dependency on crate `B`.
8+
workflows:
9+
check:
10+
- [
11+
"lint",
12+
# Check that `A` activates the features of `B`.
13+
"propagate-feature",
14+
# These are the features to check:
15+
"--features=std,serde",
16+
# Do not try to add a new section into `[features]` of `A` only because `B` expose that feature. There are edge-cases where this is still needed, but we can add them manually.
17+
"--left-side-feature-missing=ignore",
18+
# Ignore the case that `A` it outside of the workspace. Otherwise it will report errors in external dependencies that we have no influence on.
19+
"--left-side-outside-workspace=ignore",
20+
"--show-path",
21+
"--quiet",
22+
]
23+
default:
24+
# Running `zepter` with no subcommand will check & fix.
25+
- [$check.0, "--fix"]
26+
27+
# Will be displayed when any workflow fails:
28+
help:
29+
text: |
30+
Revm uses the Zepter CLI to detect abnormalities in Cargo features, e.g. missing propagation.
31+
32+
It looks like one more checks failed; please check the console output.
33+
34+
You can try to automatically address them by installing zepter (`cargo install zepter --locked`) and simply running `zepter` in the workspace root.
35+
links:
36+
- "https://github.com/ggwpez/zepter"

.github/workflows/ci.yml

+12
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,18 @@ jobs:
9696
with:
9797
components: rustfmt
9898
- run: cargo fmt --all --check
99+
100+
# Check crates correctly propagate features
101+
feature-propagation:
102+
runs-on: ubuntu-latest
103+
timeout-minutes: 20
104+
steps:
105+
- uses: actions/checkout@v4
106+
- name: run zepter
107+
run: |
108+
cargo install zepter -f --locked
109+
zepter --version
110+
time zepter run check
99111
100112
typos-check:
101113
name: TyposCheck

Cargo.lock

+1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

crates/bytecode/Cargo.toml

+12-2
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,18 @@ phf = { workspace = true, features = ["macros"], optional = true }
3737

3838
[features]
3939
default = ["std", "parse"]
40-
std = ["serde?/std", "primitives/std"]
40+
std = [
41+
"serde?/std",
42+
"primitives/std",
43+
"bitvec/std",
44+
"phf?/std"
45+
]
4146
hashbrown = ["primitives/hashbrown"]
42-
serde = ["dep:serde", "primitives/serde", "bitvec/serde"]
47+
serde = [
48+
"dep:serde",
49+
"primitives/serde",
50+
"bitvec/serde",
51+
"phf?/serde"
52+
]
4353
serde-json = ["serde"]
4454
parse = ["phf", "paste"]

crates/context/Cargo.toml

+16-5
Original file line numberDiff line numberDiff line change
@@ -42,12 +42,23 @@ database.workspace = true
4242

4343
[features]
4444
default = ["std"]
45-
std = ["serde?/std"]
45+
std = [
46+
"serde?/std",
47+
"bytecode/std",
48+
"context-interface/std",
49+
"database/std",
50+
"database-interface/std",
51+
"primitives/std",
52+
"state/std"
53+
]
4654
serde = [
47-
"dep:serde",
48-
"primitives/serde",
49-
"state/serde",
50-
"context-interface/serde",
55+
"dep:serde",
56+
"primitives/serde",
57+
"state/serde",
58+
"context-interface/serde",
59+
"bytecode/serde",
60+
"database/serde",
61+
"database-interface/serde"
5162
]
5263
dev = [
5364
"memory_limit",

crates/context/interface/Cargo.toml

+14-6
Original file line numberDiff line numberDiff line change
@@ -40,12 +40,20 @@ serde = { version = "1.0", default-features = false, features = [
4040

4141
[features]
4242
default = ["std"]
43-
std = ["serde?/std", "alloy-eip7702/std", "alloy-eip2930/std"]
43+
std = [
44+
"serde?/std",
45+
"alloy-eip7702/std",
46+
"alloy-eip2930/std",
47+
"database-interface/std",
48+
"primitives/std",
49+
"state/std"
50+
]
4451
serde = [
45-
"dep:serde",
46-
"primitives/serde",
47-
"state/serde",
48-
"alloy-eip7702/serde",
49-
"alloy-eip2930/serde",
52+
"dep:serde",
53+
"primitives/serde",
54+
"state/serde",
55+
"alloy-eip7702/serde",
56+
"alloy-eip2930/serde",
57+
"database-interface/serde"
5058
]
5159
serde-json = ["serde"]

crates/database/Cargo.toml

+18-2
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,24 @@ alloy-sol-types.workspace = true
5050

5151
[features]
5252
default = ["std"]
53-
std = ["serde?/std"]
54-
serde = ["dep:serde"]
53+
std = [
54+
"serde?/std",
55+
"alloy-eips?/std",
56+
"alloy-sol-types/std",
57+
"bytecode/std",
58+
"database-interface/std",
59+
"primitives/std",
60+
"state/std",
61+
"serde_json/std"
62+
]
63+
serde = [
64+
"dep:serde",
65+
"alloy-eips?/serde",
66+
"bytecode/serde",
67+
"database-interface/serde",
68+
"primitives/serde",
69+
"state/serde"
70+
]
5571
alloydb = [
5672
"std",
5773
"database-interface/asyncdb",

crates/database/interface/Cargo.toml

+11-2
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,15 @@ alloy-sol-types.workspace = true
4343

4444
[features]
4545
default = ["std"]
46-
std = ["serde?/std"]
47-
serde = ["dep:serde"]
46+
std = [
47+
"serde?/std",
48+
"alloy-sol-types/std",
49+
"primitives/std",
50+
"state/std"
51+
]
52+
serde = [
53+
"dep:serde",
54+
"primitives/serde",
55+
"state/serde"
56+
]
4857
asyncdb = ["dep:tokio"]

crates/handler/Cargo.toml

+23-5
Original file line numberDiff line numberDiff line change
@@ -48,11 +48,29 @@ alloy-signer-local.workspace = true
4848

4949
[features]
5050
default = ["std"]
51-
std = ["serde?/std"]
51+
std = [
52+
"serde?/std",
53+
"alloy-eip7702/std",
54+
"bytecode/std",
55+
"context/std",
56+
"context-interface/std",
57+
"database/std",
58+
"database-interface/std",
59+
"interpreter/std",
60+
"precompile/std",
61+
"primitives/std",
62+
"state/std"
63+
]
5264
serde = [
53-
"dep:serde",
54-
"primitives/serde",
55-
"state/serde",
56-
"context-interface/serde",
65+
"dep:serde",
66+
"primitives/serde",
67+
"state/serde",
68+
"context-interface/serde",
69+
"alloy-eip7702/serde",
70+
"bytecode/serde",
71+
"context/serde",
72+
"database/serde",
73+
"database-interface/serde",
74+
"interpreter/serde"
5775
]
5876
serde-json = ["serde"]

crates/inspector/Cargo.toml

+23-2
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,27 @@ database = { workspace = true, features = ["serde"] }
4343
[features]
4444
default = ["std"]
4545
# Preserve order of json field
46-
std = ["serde?/std", "serde_json?/std", "serde_json?/preserve_order"]
47-
serde = ["dep:serde", "database/serde"]
46+
std = [
47+
"serde?/std",
48+
"serde_json?/std",
49+
"serde_json?/preserve_order",
50+
"context/std",
51+
"database/std",
52+
"database-interface/std",
53+
"handler/std",
54+
"interpreter/std",
55+
"precompile/std",
56+
"primitives/std",
57+
"state/std"
58+
]
59+
serde = [
60+
"dep:serde",
61+
"database/serde",
62+
"context/serde",
63+
"database-interface/serde",
64+
"handler/serde",
65+
"interpreter/serde",
66+
"primitives/serde",
67+
"state/serde"
68+
]
4869
serde-json = ["serde", "dep:serde_json"]

crates/interpreter/Cargo.toml

+12-5
Original file line numberDiff line numberDiff line change
@@ -37,13 +37,20 @@ bincode.workspace = true
3737

3838
[features]
3939
default = ["std"]
40-
std = ["serde?/std", "primitives/std", "context-interface/std"]
40+
std = [
41+
"serde?/std",
42+
"primitives/std",
43+
"context-interface/std",
44+
"bytecode/std",
45+
"database-interface/std"
46+
]
4147
hashbrown = ["primitives/hashbrown"]
4248
serde = [
43-
"dep:serde",
44-
"primitives/serde",
45-
"bytecode/serde",
46-
"context-interface/serde",
49+
"dep:serde",
50+
"primitives/serde",
51+
"bytecode/serde",
52+
"context-interface/serde",
53+
"database-interface/serde"
4754
]
4855
arbitrary = ["std", "primitives/arbitrary"]
4956
# TODO : Should be set from Context or from crate that consumes this PR.

crates/optimism/Cargo.toml

+6-1
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,12 @@ alloy-sol-types.workspace = true
4040

4141
[features]
4242
default = ["std", "c-kzg", "secp256k1", "portable", "blst"]
43-
std = ["serde?/std", "revm/std"]
43+
std = [
44+
"serde?/std",
45+
"revm/std",
46+
"alloy-sol-types/std",
47+
"once_cell/std"
48+
]
4449
hashbrown = ["revm/hashbrown"]
4550
serde = ["dep:serde", "revm/serde"]
4651
portable = ["revm/portable"]

crates/precompile/Cargo.toml

+13-8
Original file line numberDiff line numberDiff line change
@@ -80,14 +80,19 @@ serde_derive.workspace = true
8080
[features]
8181
default = ["std", "c-kzg", "secp256k1", "portable", "blst"]
8282
std = [
83-
"primitives/std",
84-
"k256/std",
85-
"once_cell/std",
86-
"ripemd/std",
87-
"sha2/std",
88-
"c-kzg?/std",
89-
"secp256k1?/std",
90-
"libsecp256k1?/std",
83+
"primitives/std",
84+
"k256/std",
85+
"once_cell/std",
86+
"ripemd/std",
87+
"sha2/std",
88+
"c-kzg?/std",
89+
"secp256k1?/std",
90+
"libsecp256k1?/std",
91+
"aurora-engine-modexp/std",
92+
"p256?/std",
93+
"context-interface/std",
94+
"serde/std",
95+
"serde_json/std"
9196
]
9297
hashbrown = ["primitives/hashbrown"]
9398
asm-keccak = ["primitives/asm-keccak"]

crates/primitives/Cargo.toml

+4-1
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,10 @@ serde = { workspace = true, features = ["derive", "rc"], optional = true }
3434

3535
[features]
3636
default = ["std"]
37-
std = ["alloy-primitives/std"]
37+
std = [
38+
"alloy-primitives/std",
39+
"serde?/std"
40+
]
3841
serde = ["dep:serde", "alloy-primitives/serde"]
3942

4043
hashbrown = ["alloy-primitives/map-hashbrown"]

crates/revm/Cargo.toml

+21-11
Original file line numberDiff line numberDiff line change
@@ -39,20 +39,30 @@ handler.workspace = true
3939
[features]
4040
default = ["std", "c-kzg", "secp256k1", "portable", "blst"]
4141
std = [
42-
"interpreter/std",
43-
"precompile/std",
44-
"handler/std",
45-
"context/std",
46-
"context-interface/std",
42+
"interpreter/std",
43+
"precompile/std",
44+
"handler/std",
45+
"context/std",
46+
"context-interface/std",
47+
"bytecode/std",
48+
"database/std",
49+
"database-interface/std",
50+
"inspector/std",
51+
"primitives/std",
52+
"state/std"
4753
]
4854
hashbrown = ["interpreter/hashbrown", "precompile/hashbrown"]
4955
serde = [
50-
"interpreter/serde",
51-
"database-interface/serde",
52-
"primitives/serde",
53-
"handler/serde",
54-
"context-interface/serde",
55-
"inspector/serde",
56+
"interpreter/serde",
57+
"database-interface/serde",
58+
"primitives/serde",
59+
"handler/serde",
60+
"context-interface/serde",
61+
"inspector/serde",
62+
"bytecode/serde",
63+
"context/serde",
64+
"database/serde",
65+
"state/serde"
5666
]
5767
arbitrary = ["primitives/arbitrary"]
5868
asm-keccak = ["primitives/asm-keccak"]

crates/state/Cargo.toml

+6-1
Original file line numberDiff line numberDiff line change
@@ -34,5 +34,10 @@ serde = { workspace = true, features = ["derive", "rc"], optional = true }
3434

3535
[features]
3636
default = ["std"]
37-
std = ["serde?/std", "primitives/std"]
37+
std = [
38+
"serde?/std",
39+
"primitives/std",
40+
"bitflags/std",
41+
"bytecode/std"
42+
]
3843
serde = ["dep:serde", "primitives/serde", "bitflags/serde", "bytecode/serde"]

0 commit comments

Comments
 (0)