Skip to content

Commit 854069e

Browse files
committed
Use a top-level patch.crates-io rather than per-crate paths
In order to ensure our crates depend on the workspace copies of each other in test builds we need to override the crates.io dependency with a local `path`. We can do this in one of two ways - either specify the `path` in the dependency listing in each crate's `Cargo.toml` or use the workspace `Cargo.toml` to `patch` all dependencies. The first is tedious while the second lets us have it all in one place. However, the second option does break `cargo *` in individual crate directories (forcing the use of `cargo -p crate *` instead). Still, because of the simplicity, here we switch to the second option, setting a `patch.crates-io` for each workspace crate and removing the individual crate `path`s. This also requires we update the CI test script to use the `cargo -p crate` forms.
1 parent c072dea commit 854069e

File tree

15 files changed

+105
-62
lines changed

15 files changed

+105
-62
lines changed

Cargo.toml

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,18 @@ opt-level = 3
4141
lto = true
4242
panic = "abort"
4343

44-
[patch.crates-io.possiblyrandom]
45-
path = "possiblyrandom"
44+
[patch.crates-io]
45+
lightning = { path = "lightning" }
46+
lightning-types = { path = "lightning-types" }
47+
lightning-block-sync = { path = "lightning-block-sync" }
48+
lightning-invoice = { path = "lightning-invoice" }
49+
lightning-net-tokio = { path = "lightning-net-tokio" }
50+
lightning-persister = { path = "lightning-persister" }
51+
lightning-background-processor = { path = "lightning-background-processor" }
52+
lightning-rapid-gossip-sync = { path = "lightning-rapid-gossip-sync" }
53+
lightning-custom-message = { path = "lightning-custom-message" }
54+
lightning-transaction-sync = { path = "lightning-transaction-sync" }
55+
possiblyrandom = { path = "possiblyrandom" }
4656

4757
[workspace.lints.rust.unexpected_cfgs]
4858
level = "forbid"

bench/Cargo.toml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,19 @@ lightning-persister = { path = "../lightning-persister", features = ["criterion"
1717
lightning-rapid-gossip-sync = { path = "../lightning-rapid-gossip-sync", features = ["criterion"] }
1818
criterion = { version = "0.4", default-features = false }
1919

20+
[patch.crates-io]
21+
lightning = { path = "../lightning" }
22+
lightning-types = { path = "../lightning-types" }
23+
lightning-block-sync = { path = "../lightning-block-sync" }
24+
lightning-invoice = { path = "../lightning-invoice" }
25+
lightning-net-tokio = { path = "../lightning-net-tokio" }
26+
lightning-persister = { path = "../lightning-persister" }
27+
lightning-background-processor = { path = "../lightning-background-processor" }
28+
lightning-rapid-gossip-sync = { path = "../lightning-rapid-gossip-sync" }
29+
lightning-custom-message = { path = "../lightning-custom-message" }
30+
lightning-transaction-sync = { path = "../lightning-transaction-sync" }
31+
possiblyrandom = { path = "../possiblyrandom" }
32+
2033
[profile.release]
2134
opt-level = 3
2235
codegen-units = 1

ci/ci-tests.sh

Lines changed: 24 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -32,58 +32,46 @@ cargo test --verbose --color always
3232
cargo check --verbose --color always
3333

3434
echo -e "\n\nBuilding and testing Block Sync Clients with features"
35-
pushd lightning-block-sync
36-
cargo test --verbose --color always --features rest-client
37-
cargo check --verbose --color always --features rest-client
38-
cargo test --verbose --color always --features rpc-client
39-
cargo check --verbose --color always --features rpc-client
40-
cargo test --verbose --color always --features rpc-client,rest-client
41-
cargo check --verbose --color always --features rpc-client,rest-client
42-
cargo test --verbose --color always --features rpc-client,rest-client,tokio
43-
cargo check --verbose --color always --features rpc-client,rest-client,tokio
44-
popd
35+
36+
cargo test -p lightning-block-sync --verbose --color always --features rest-client
37+
cargo check -p lightning-block-sync --verbose --color always --features rest-client
38+
cargo test -p lightning-block-sync --verbose --color always --features rpc-client
39+
cargo check -p lightning-block-sync --verbose --color always --features rpc-client
40+
cargo test -p lightning-block-sync --verbose --color always --features rpc-client,rest-client
41+
cargo check -p lightning-block-sync --verbose --color always --features rpc-client,rest-client
42+
cargo test -p lightning-block-sync --verbose --color always --features rpc-client,rest-client,tokio
43+
cargo check -p lightning-block-sync --verbose --color always --features rpc-client,rest-client,tokio
4544

4645
if [[ "$HOST_PLATFORM" != *windows* ]]; then
4746
if [ -z "$BITCOIND_EXE" ] || [ -z "$ELECTRS_EXE" ]; then
4847
echo -e "\n\nSkipping testing Transaction Sync Clients due to BITCOIND_EXE or ELECTRS_EXE being unset."
4948
else
5049
echo -e "\n\nBuilding and testing Transaction Sync Clients with features"
51-
pushd lightning-transaction-sync
52-
53-
cargo test --verbose --color always --features esplora-blocking
54-
cargo check --verbose --color always --features esplora-blocking
55-
cargo test --verbose --color always --features esplora-async
56-
cargo check --verbose --color always --features esplora-async
57-
cargo test --verbose --color always --features esplora-async-https
58-
cargo check --verbose --color always --features esplora-async-https
59-
cargo test --verbose --color always --features electrum
60-
cargo check --verbose --color always --features electrum
61-
popd
50+
cargo test -p lightning-transaction-sync --verbose --color always --features esplora-blocking
51+
cargo check -p lightning-transaction-sync --verbose --color always --features esplora-blocking
52+
cargo test -p lightning-transaction-sync --verbose --color always --features esplora-async
53+
cargo check -p lightning-transaction-sync --verbose --color always --features esplora-async
54+
cargo test -p lightning-transaction-sync --verbose --color always --features esplora-async-https
55+
cargo check -p lightning-transaction-sync --verbose --color always --features esplora-async-https
56+
cargo test -p lightning-transaction-sync --verbose --color always --features electrum
57+
cargo check -p lightning-transaction-sync --verbose --color always --features electrum
6258
fi
6359
fi
6460

6561
echo -e "\n\nTest futures builds"
66-
pushd lightning-background-processor
67-
cargo test --verbose --color always --features futures
68-
popd
62+
cargo test -p lightning-background-processor --verbose --color always --features futures
6963

7064
echo -e "\n\nTest Custom Message Macros"
71-
pushd lightning-custom-message
72-
cargo test --verbose --color always
65+
cargo test -p lightning-custom-message --verbose --color always
7366
[ "$CI_MINIMIZE_DISK_USAGE" != "" ] && cargo clean
74-
popd
7567

7668
echo -e "\n\nTest backtrace-debug builds"
77-
pushd lightning
78-
cargo test --verbose --color always --features backtrace
79-
popd
69+
cargo test -p lightning --verbose --color always --features backtrace
8070

8171
echo -e "\n\nBuilding with all Log-Limiting features"
82-
pushd lightning
83-
grep '^max_level_' Cargo.toml | awk '{ print $1 }'| while read -r FEATURE; do
84-
RUSTFLAGS="$RUSTFLAGS -A unused_variables -A unused_macros -A unused_imports -A dead_code" cargo check --verbose --color always --features "$FEATURE"
72+
grep '^max_level_' lightning/Cargo.toml | awk '{ print $1 }'| while read -r FEATURE; do
73+
RUSTFLAGS="$RUSTFLAGS -A unused_variables -A unused_macros -A unused_imports -A dead_code" cargo check -p lightning --verbose --color always --features "$FEATURE"
8574
done
86-
popd
8775

8876
echo -e "\n\nTesting no-std flags in various combinations"
8977
for DIR in lightning lightning-invoice lightning-rapid-gossip-sync; do
@@ -99,14 +87,10 @@ done
9987
RUSTFLAGS="$RUSTFLAGS --cfg=c_bindings" cargo test --verbose --color always
10088

10189
# Note that outbound_commitment_test only runs in this mode because of hardcoded signature values
102-
pushd lightning
103-
cargo test --verbose --color always --no-default-features --features=std,_test_vectors
104-
popd
90+
cargo test -p lightning --verbose --color always --no-default-features --features=std,_test_vectors
10591
# This one only works for lightning-invoice
106-
pushd lightning-invoice
10792
# check that compile with no-std and serde works in lightning-invoice
108-
cargo test --verbose --color always --no-default-features --features no-std --features serde
109-
popd
93+
cargo test -p lightning-invoice --verbose --color always --no-default-features --features no-std --features serde
11094

11195
echo -e "\n\nTesting no-std build on a downstream no-std crate"
11296
# check no-std compatibility across dependencies

fuzz/Cargo.toml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,19 @@ libfuzzer-sys = { version = "0.4", optional = true }
3131
[build-dependencies]
3232
cc = "1.0"
3333

34+
[patch.crates-io]
35+
lightning = { path = "../lightning" }
36+
lightning-types = { path = "../lightning-types" }
37+
lightning-block-sync = { path = "../lightning-block-sync" }
38+
lightning-invoice = { path = "../lightning-invoice" }
39+
lightning-net-tokio = { path = "../lightning-net-tokio" }
40+
lightning-persister = { path = "../lightning-persister" }
41+
lightning-background-processor = { path = "../lightning-background-processor" }
42+
lightning-rapid-gossip-sync = { path = "../lightning-rapid-gossip-sync" }
43+
lightning-custom-message = { path = "../lightning-custom-message" }
44+
lightning-transaction-sync = { path = "../lightning-transaction-sync" }
45+
possiblyrandom = { path = "../possiblyrandom" }
46+
3447
# Prevent this from interfering with workspaces
3548
[workspace]
3649
members = ["."]

lightning-background-processor/Cargo.toml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,14 +22,14 @@ default = ["std"]
2222

2323
[dependencies]
2424
bitcoin = { version = "0.32.2", default-features = false }
25-
lightning = { version = "0.0.123-beta", path = "../lightning", default-features = false }
26-
lightning-rapid-gossip-sync = { version = "0.0.123-beta", path = "../lightning-rapid-gossip-sync", default-features = false }
25+
lightning = { version = "0.0.123-beta", default-features = false }
26+
lightning-rapid-gossip-sync = { version = "0.0.123-beta", default-features = false }
2727

2828
[dev-dependencies]
2929
tokio = { version = "1.35", features = [ "macros", "rt", "rt-multi-thread", "sync", "time" ] }
30-
lightning = { version = "0.0.123-beta", path = "../lightning", features = ["_test_utils"] }
31-
lightning-invoice = { version = "0.31.0-beta", path = "../lightning-invoice" }
32-
lightning-persister = { version = "0.0.123-beta", path = "../lightning-persister" }
30+
lightning = { version = "0.0.123-beta", features = ["_test_utils"] }
31+
lightning-invoice = { version = "0.31.0-beta" }
32+
lightning-persister = { version = "0.0.123-beta" }
3333

3434
[lints]
3535
workspace = true

lightning-block-sync/Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,13 @@ rpc-client = [ "serde_json", "chunked_transfer" ]
1919

2020
[dependencies]
2121
bitcoin = "0.32.2"
22-
lightning = { version = "0.0.123-beta", path = "../lightning" }
22+
lightning = { version = "0.0.123-beta" }
2323
tokio = { version = "1.35", features = [ "io-util", "net", "time", "rt" ], optional = true }
2424
serde_json = { version = "1.0", optional = true }
2525
chunked_transfer = { version = "1.4", optional = true }
2626

2727
[dev-dependencies]
28-
lightning = { version = "0.0.123-beta", path = "../lightning", features = ["_test_utils"] }
28+
lightning = { version = "0.0.123-beta", features = ["_test_utils"] }
2929
tokio = { version = "1.35", features = [ "macros", "rt" ] }
3030

3131
[lints]

lightning-custom-message/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ rustdoc-args = ["--cfg", "docsrs"]
1515

1616
[dependencies]
1717
bitcoin = "0.32.2"
18-
lightning = { version = "0.0.123-beta", path = "../lightning" }
18+
lightning = { version = "0.0.123-beta" }
1919

2020
[lints]
2121
workspace = true

lightning-invoice/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ std = ["bech32/std"]
2121

2222
[dependencies]
2323
bech32 = { version = "0.9.1", default-features = false }
24-
lightning-types = { version = "0.1", path = "../lightning-types", default-features = false }
24+
lightning-types = { version = "0.1", default-features = false }
2525
serde = { version = "1.0.118", optional = true }
2626
bitcoin = { version = "0.32.2", default-features = false, features = ["secp-recovery"] }
2727

lightning-net-tokio/Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,12 @@ rustdoc-args = ["--cfg", "docsrs"]
1616

1717
[dependencies]
1818
bitcoin = "0.32.2"
19-
lightning = { version = "0.0.123-beta", path = "../lightning" }
19+
lightning = { version = "0.0.123-beta" }
2020
tokio = { version = "1.35", features = [ "rt", "sync", "net", "time" ] }
2121

2222
[dev-dependencies]
2323
tokio = { version = "1.35", features = [ "macros", "rt", "rt-multi-thread", "sync", "net", "time" ] }
24-
lightning = { version = "0.0.123-beta", path = "../lightning", features = ["_test_utils"] }
24+
lightning = { version = "0.0.123-beta", features = ["_test_utils"] }
2525

2626
[lints]
2727
workspace = true

lightning-persister/Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ rustdoc-args = ["--cfg", "docsrs"]
1515

1616
[dependencies]
1717
bitcoin = "0.32.2"
18-
lightning = { version = "0.0.123-beta", path = "../lightning" }
18+
lightning = { version = "0.0.123-beta" }
1919

2020
[target.'cfg(windows)'.dependencies]
2121
windows-sys = { version = "0.48.0", default-features = false, features = ["Win32_Storage_FileSystem", "Win32_Foundation"] }
@@ -24,7 +24,7 @@ windows-sys = { version = "0.48.0", default-features = false, features = ["Win32
2424
criterion = { version = "0.4", optional = true, default-features = false }
2525

2626
[dev-dependencies]
27-
lightning = { version = "0.0.123-beta", path = "../lightning", features = ["_test_utils"] }
27+
lightning = { version = "0.0.123-beta", features = ["_test_utils"] }
2828
bitcoin = { version = "0.32.2", default-features = false }
2929

3030
[lints]

lightning-rapid-gossip-sync/Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,14 @@ no-std = ["lightning/no-std"]
1515
std = ["lightning/std"]
1616

1717
[dependencies]
18-
lightning = { version = "0.0.123-beta", path = "../lightning", default-features = false }
18+
lightning = { version = "0.0.123-beta", default-features = false }
1919
bitcoin = { version = "0.32.2", default-features = false }
2020

2121
[target.'cfg(ldk_bench)'.dependencies]
2222
criterion = { version = "0.4", optional = true, default-features = false }
2323

2424
[dev-dependencies]
25-
lightning = { version = "0.0.123-beta", path = "../lightning", features = ["_test_utils"] }
25+
lightning = { version = "0.0.123-beta", features = ["_test_utils"] }
2626

2727
[lints]
2828
workspace = true

lightning-transaction-sync/Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,15 +23,15 @@ electrum = ["electrum-client"]
2323
async-interface = []
2424

2525
[dependencies]
26-
lightning = { version = "0.0.123-beta", path = "../lightning", default-features = false, features = ["std"] }
26+
lightning = { version = "0.0.123-beta", default-features = false, features = ["std"] }
2727
bitcoin = { version = "0.32.2", default-features = false }
2828
bdk-macros = "0.6"
2929
futures = { version = "0.3", optional = true }
3030
esplora-client = { version = "0.9", default-features = false, optional = true }
3131
electrum-client = { version = "0.21.0", optional = true }
3232

3333
[dev-dependencies]
34-
lightning = { version = "0.0.123-beta", path = "../lightning", default-features = false, features = ["std", "_test_utils"] }
34+
lightning = { version = "0.0.123-beta", default-features = false, features = ["std", "_test_utils"] }
3535
tokio = { version = "1.35.0", features = ["full"] }
3636

3737
[target.'cfg(not(target_os = "windows"))'.dev-dependencies]

lightning/Cargo.toml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,8 @@ grind_signatures = []
4040
default = ["std", "grind_signatures"]
4141

4242
[dependencies]
43-
lightning-types = { version = "0.1", path = "../lightning-types", default-features = false }
44-
lightning-invoice = { version = "0.31.0-beta", path = "../lightning-invoice", default-features = false }
43+
lightning-types = { version = "0.1", default-features = false }
44+
lightning-invoice = { version = "0.31.0-beta", default-features = false }
4545

4646
bech32 = { version = "0.9.1", default-features = false }
4747
bitcoin = { version = "0.32.2", default-features = false, features = ["secp-recovery"] }
@@ -55,7 +55,7 @@ libm = { version = "0.2", optional = true, default-features = false }
5555

5656
[dev-dependencies]
5757
regex = "1.5.6"
58-
lightning-types = { version = "0.1", path = "../lightning-types", features = ["_test_utils"] }
58+
lightning-types = { version = "0.1", features = ["_test_utils"] }
5959

6060
[dev-dependencies.bitcoin]
6161
version = "0.32.2"

msrv-no-dev-deps-check/Cargo.toml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,3 +12,16 @@ lightning-persister = { path = "../lightning-persister" }
1212
lightning-background-processor = { path = "../lightning-background-processor", features = ["futures"] }
1313
lightning-rapid-gossip-sync = { path = "../lightning-rapid-gossip-sync" }
1414
lightning-custom-message = { path = "../lightning-custom-message" }
15+
16+
[patch.crates-io]
17+
lightning = { path = "../lightning" }
18+
lightning-types = { path = "../lightning-types" }
19+
lightning-block-sync = { path = "../lightning-block-sync" }
20+
lightning-invoice = { path = "../lightning-invoice" }
21+
lightning-net-tokio = { path = "../lightning-net-tokio" }
22+
lightning-persister = { path = "../lightning-persister" }
23+
lightning-background-processor = { path = "../lightning-background-processor" }
24+
lightning-rapid-gossip-sync = { path = "../lightning-rapid-gossip-sync" }
25+
lightning-custom-message = { path = "../lightning-custom-message" }
26+
lightning-transaction-sync = { path = "../lightning-transaction-sync" }
27+
possiblyrandom = { path = "../possiblyrandom" }

no-std-check/Cargo.toml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,14 @@ lightning-background-processor = { path = "../lightning-background-processor", f
1717
lightning-transaction-sync = { path = "../lightning-transaction-sync", optional = true }
1818

1919
[patch.crates-io]
20+
lightning = { path = "../lightning" }
21+
lightning-types = { path = "../lightning-types" }
22+
lightning-block-sync = { path = "../lightning-block-sync" }
23+
lightning-invoice = { path = "../lightning-invoice" }
24+
lightning-net-tokio = { path = "../lightning-net-tokio" }
25+
lightning-persister = { path = "../lightning-persister" }
26+
lightning-background-processor = { path = "../lightning-background-processor" }
27+
lightning-rapid-gossip-sync = { path = "../lightning-rapid-gossip-sync" }
28+
lightning-custom-message = { path = "../lightning-custom-message" }
29+
lightning-transaction-sync = { path = "../lightning-transaction-sync" }
2030
possiblyrandom = { path = "../possiblyrandom" }

0 commit comments

Comments
 (0)