Skip to content

Commit

Permalink
Fix logic for marking crate as "multi" (#71)
Browse files Browse the repository at this point in the history
  • Loading branch information
louisdewar committed Jan 22, 2024
1 parent 906f3ef commit 469ae0e
Show file tree
Hide file tree
Showing 6 changed files with 120 additions and 106 deletions.
9 changes: 5 additions & 4 deletions src/builder.rs
Expand Up @@ -768,13 +768,14 @@ impl Builder {

// Note any dependencies that have the same name, we need to
// disambiguate them when resolving features
for ch in deps.chunks_mut(2) {
if ch.len() != 2 || ch[0].pkg.name() != ch[1].pkg.name() {
// Starting at i=1 means that i and i-1 are always guaranteed to exist
for i in 1..deps.len() {
if deps[i - 1].pkg.name() != deps[i].pkg.name() {
continue;
}

ch[0].multi = true;
ch[1].multi = true;
deps[i - 1].multi = true;
deps[i].multi = true;
}

let mut features = rn.features;
Expand Down
2 changes: 1 addition & 1 deletion tests/pid-opaque.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion tests/pid-stable.json

Large diffs are not rendered by default.

2 changes: 2 additions & 0 deletions tests/pid/Cargo.toml
Expand Up @@ -14,3 +14,5 @@ tower_http_4 = { package = "tower-http", version = "0.4.4", features = [] }
tower-http = { package = "tower-http", version = "0.5.0", features = [
"sensitive-headers",
] }
# Repro for https://github.com/EmbarkStudios/krates/pull/71
libc = "0.2"
5 changes: 5 additions & 0 deletions tests/pid/gen.sh
@@ -0,0 +1,5 @@
#!/bin/bash
set -e

cargo metadata --format-version=1 --manifest-path tests/pid/Cargo.toml > tests/pid-opaque.json
cargo +nightly metadata --format-version=1 --manifest-path tests/pid/Cargo.toml > tests/pid-stable.json
206 changes: 106 additions & 100 deletions tests/snapshots/misc__finds_duplicates.snap
Expand Up @@ -53,42 +53,44 @@ digraph {
47 [ label = "feature wasm-bindgen" ]
48 [ label = "feature js" ]
49 [ label = "feature default" ]
50 [ label = "feature sensitive-headers" ]
51 [ label = "feature default" ]
52 [ label = "feature proc-macro" ]
50 [ label = "feature default" ]
51 [ label = "feature sensitive-headers" ]
52 [ label = "feature default" ]
53 [ label = "feature proc-macro" ]
54 [ label = "feature default" ]
55 [ label = "feature spans" ]
56 [ label = "feature default" ]
54 [ label = "feature proc-macro" ]
55 [ label = "feature default" ]
56 [ label = "feature spans" ]
57 [ label = "feature default" ]
58 [ label = "feature default" ]
59 [ label = "feature default" ]
60 [ label = "feature full" ]
61 [ label = "feature default" ]
62 [ label = "feature spans" ]
63 [ label = "feature visit" ]
64 [ label = "feature spans" ]
65 [ label = "feature std" ]
60 [ label = "feature default" ]
61 [ label = "feature full" ]
62 [ label = "feature default" ]
63 [ label = "feature spans" ]
64 [ label = "feature visit" ]
65 [ label = "feature spans" ]
66 [ label = "feature std" ]
67 [ label = "feature std" ]
68 [ label = "feature bindgen" ]
69 [ label = "feature js-sys" ]
70 [ label = "feature bindgen" ]
71 [ label = "feature wasm-bindgen" ]
72 [ label = "feature js-sys" ]
73 [ label = "feature std" ]
68 [ label = "feature std" ]
69 [ label = "feature bindgen" ]
70 [ label = "feature js-sys" ]
71 [ label = "feature bindgen" ]
72 [ label = "feature wasm-bindgen" ]
73 [ label = "feature js-sys" ]
74 [ label = "feature std" ]
75 [ label = "feature alloc" ]
76 [ label = "feature race" ]
77 [ label = "feature quote" ]
78 [ label = "feature proc-macro" ]
79 [ label = "feature printing" ]
80 [ label = "feature parsing" ]
81 [ label = "feature derive" ]
82 [ label = "feature clone-impls" ]
83 [ label = "feature std" ]
84 [ label = "feature std" ]
85 [ label = "feature spans" ]
75 [ label = "feature std" ]
76 [ label = "feature std" ]
77 [ label = "feature alloc" ]
78 [ label = "feature race" ]
79 [ label = "feature quote" ]
80 [ label = "feature proc-macro" ]
81 [ label = "feature printing" ]
82 [ label = "feature parsing" ]
83 [ label = "feature derive" ]
84 [ label = "feature clone-impls" ]
85 [ label = "feature std" ]
86 [ label = "feature std" ]
87 [ label = "feature spans" ]
7 -> 5 [ label = "" ]
7 -> 39 [ label = "" ]
7 -> 6 [ label = "" ]
Expand Down Expand Up @@ -127,17 +129,18 @@ digraph {
21 -> 49 [ label = "" ]
21 -> 50 [ label = "" ]
21 -> 51 [ label = "" ]
21 -> 52 [ label = "" ]
24 -> 31 [ label = "" ]
25 -> 24 [ label = "" ]
25 -> 52 [ label = "" ]
25 -> 53 [ label = "" ]
26 -> 24 [ label = "" ]
26 -> 52 [ label = "" ]
26 -> 25 [ label = "" ]
26 -> 53 [ label = "" ]
26 -> 25 [ label = "" ]
26 -> 54 [ label = "" ]
26 -> 31 [ label = "" ]
27 -> 0 [ label = "" ]
27 -> 43 [ label = "" ]
27 -> 54 [ label = "" ]
27 -> 55 [ label = "" ]
27 -> 7 [ label = "" ]
27 -> 10 [ label = "" ]
27 -> 12 [ label = "" ]
Expand All @@ -155,107 +158,110 @@ digraph {
28 -> 30 [ label = "" ]
34 -> 3 [ label = "" ]
34 -> 36 [ label = "" ]
34 -> 55 [ label = "" ]
35 -> 56 [ label = "" ]
35 -> 19 [ label = "" ]
34 -> 56 [ label = "" ]
35 -> 57 [ label = "" ]
35 -> 19 [ label = "" ]
35 -> 58 [ label = "" ]
35 -> 59 [ label = "" ]
35 -> 60 [ label = "" ]
35 -> 61 [ label = "" ]
35 -> 62 [ label = "" ]
35 -> 38 [ label = "" ]
36 -> 59 [ label = "" ]
36 -> 60 [ label = "" ]
36 -> 37 [ label = "" ]
36 -> 62 [ label = "" ]
37 -> 58 [ label = "" ]
36 -> 63 [ label = "" ]
37 -> 59 [ label = "" ]
37 -> 63 [ label = "" ]
37 -> 60 [ label = "" ]
37 -> 64 [ label = "" ]
37 -> 61 [ label = "" ]
37 -> 62 [ label = "" ]
37 -> 35 [ label = "" ]
37 -> 64 [ label = "" ]
37 -> 65 [ label = "" ]
37 -> 38 [ label = "" ]
56 -> 1 [ label = "" ]
65 -> 2 [ label = "" ]
57 -> 1 [ label = "" ]
66 -> 2 [ label = "" ]
43 -> 2 [ label = "" ]
43 -> 65 [ label = "" ]
66 -> 4 [ label = "" ]
43 -> 66 [ label = "" ]
67 -> 4 [ label = "" ]
44 -> 4 [ label = "" ]
44 -> 66 [ label = "" ]
67 -> 5 [ label = "" ]
67 -> 39 [ label = "" ]
54 -> 5 [ label = "" ]
54 -> 67 [ label = "" ]
44 -> 67 [ label = "" ]
68 -> 5 [ label = "" ]
68 -> 39 [ label = "" ]
55 -> 5 [ label = "" ]
55 -> 68 [ label = "" ]
39 -> 5 [ label = "" ]
40 -> 6 [ label = "" ]
46 -> 7 [ label = "" ]
46 -> 39 [ label = "" ]
46 -> 40 [ label = "" ]
47 -> 8 [ label = "" ]
47 -> 68 [ label = "" ]
47 -> 69 [ label = "" ]
47 -> 70 [ label = "" ]
70 -> 8 [ label = "" ]
70 -> 17 [ label = "" ]
69 -> 8 [ label = "" ]
69 -> 17 [ label = "" ]
68 -> 8 [ label = "" ]
68 -> 70 [ label = "" ]
71 -> 9 [ label = "" ]
71 -> 34 [ label = "" ]
69 -> 71 [ label = "" ]
72 -> 9 [ label = "" ]
72 -> 17 [ label = "" ]
72 -> 34 [ label = "" ]
73 -> 9 [ label = "" ]
73 -> 17 [ label = "" ]
48 -> 9 [ label = "" ]
48 -> 71 [ label = "" ]
48 -> 72 [ label = "" ]
73 -> 11 [ label = "" ]
48 -> 73 [ label = "" ]
74 -> 11 [ label = "" ]
45 -> 11 [ label = "" ]
45 -> 73 [ label = "" ]
74 -> 20 [ label = "" ]
74 -> 75 [ label = "" ]
45 -> 74 [ label = "" ]
75 -> 18 [ label = "" ]
49 -> 18 [ label = "" ]
49 -> 75 [ label = "" ]
76 -> 20 [ label = "" ]
57 -> 20 [ label = "" ]
57 -> 74 [ label = "" ]
75 -> 20 [ label = "" ]
75 -> 76 [ label = "" ]
52 -> 24 [ label = "" ]
58 -> 24 [ label = "" ]
58 -> 52 [ label = "" ]
53 -> 25 [ label = "" ]
53 -> 52 [ label = "" ]
59 -> 25 [ label = "" ]
76 -> 77 [ label = "" ]
78 -> 20 [ label = "" ]
58 -> 20 [ label = "" ]
58 -> 76 [ label = "" ]
77 -> 20 [ label = "" ]
77 -> 78 [ label = "" ]
53 -> 24 [ label = "" ]
59 -> 24 [ label = "" ]
59 -> 53 [ label = "" ]
63 -> 26 [ label = "" ]
77 -> 26 [ label = "" ]
77 -> 25 [ label = "" ]
78 -> 26 [ label = "" ]
78 -> 52 [ label = "" ]
78 -> 53 [ label = "" ]
54 -> 25 [ label = "" ]
54 -> 53 [ label = "" ]
60 -> 25 [ label = "" ]
60 -> 54 [ label = "" ]
64 -> 26 [ label = "" ]
79 -> 26 [ label = "" ]
79 -> 77 [ label = "" ]
79 -> 25 [ label = "" ]
80 -> 26 [ label = "" ]
60 -> 26 [ label = "" ]
80 -> 53 [ label = "" ]
80 -> 54 [ label = "" ]
81 -> 26 [ label = "" ]
61 -> 26 [ label = "" ]
61 -> 81 [ label = "" ]
61 -> 80 [ label = "" ]
61 -> 79 [ label = "" ]
61 -> 82 [ label = "" ]
61 -> 78 [ label = "" ]
81 -> 79 [ label = "" ]
82 -> 26 [ label = "" ]
49 -> 27 [ label = "" ]
50 -> 28 [ label = "" ]
61 -> 26 [ label = "" ]
83 -> 26 [ label = "" ]
62 -> 26 [ label = "" ]
62 -> 83 [ label = "" ]
62 -> 82 [ label = "" ]
62 -> 81 [ label = "" ]
62 -> 84 [ label = "" ]
62 -> 80 [ label = "" ]
84 -> 26 [ label = "" ]
50 -> 27 [ label = "" ]
51 -> 28 [ label = "" ]
83 -> 33 [ label = "" ]
52 -> 28 [ label = "" ]
85 -> 33 [ label = "" ]
41 -> 33 [ label = "" ]
41 -> 83 [ label = "" ]
84 -> 34 [ label = "" ]
85 -> 34 [ label = "" ]
85 -> 55 [ label = "" ]
41 -> 85 [ label = "" ]
86 -> 34 [ label = "" ]
87 -> 34 [ label = "" ]
87 -> 56 [ label = "" ]
42 -> 34 [ label = "" ]
42 -> 85 [ label = "" ]
42 -> 84 [ label = "" ]
64 -> 35 [ label = "" ]
55 -> 36 [ label = "" ]
55 -> 62 [ label = "" ]
62 -> 37 [ label = "" ]
62 -> 64 [ label = "" ]
42 -> 87 [ label = "" ]
42 -> 86 [ label = "" ]
65 -> 35 [ label = "" ]
56 -> 36 [ label = "" ]
56 -> 63 [ label = "" ]
63 -> 37 [ label = "" ]
63 -> 65 [ label = "" ]
}

0 comments on commit 469ae0e

Please sign in to comment.