Skip to content

Commit 4ab32f9

Browse files
committed
Test MSRV builds (without dev-dependencies) in CI
1 parent fd24643 commit 4ab32f9

File tree

4 files changed

+39
-7
lines changed

4 files changed

+39
-7
lines changed

Cargo.toml

+1
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ exclude = [
1414
"lightning-custom-message",
1515
"lightning-transaction-sync",
1616
"no-std-check",
17+
"msrv-no-dev-deps-check",
1718
"bench",
1819
]
1920

ci/ci-tests.sh

+25-7
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,30 @@ set -eox pipefail
44
RUSTC_MINOR_VERSION=$(rustc --version | awk '{ split($2,a,"."); print a[2] }')
55
HOST_PLATFORM="$(rustc --version --verbose | grep "host:" | awk '{ print $2 }')"
66

7-
# Tokio MSRV on versions 1.17 through 1.26 is rustc 1.49. Above 1.26 MSRV is 1.56.
8-
[ "$RUSTC_MINOR_VERSION" -lt 49 ] && cargo update -p tokio --precise "1.14.1" --verbose
9-
[[ "$RUSTC_MINOR_VERSION" -gt 48 && "$RUSTC_MINOR_VERSION" -lt 56 ]] && cargo update -p tokio --precise "1.25.1" --verbose
7+
# Some crates require pinning to meet our MSRV even for our downstream users,
8+
# which we do here.
9+
# Further crates which appear only as dev-dependencies are pinned further down.
10+
function PIN_RELEASE_DEPS {
11+
# Tokio MSRV on versions 1.17 through 1.26 is rustc 1.49. Above 1.26 MSRV is 1.56.
12+
[ "$RUSTC_MINOR_VERSION" -lt 49 ] && cargo update -p tokio --precise "1.14.1" --verbose
13+
[[ "$RUSTC_MINOR_VERSION" -gt 48 && "$RUSTC_MINOR_VERSION" -lt 56 ]] && cargo update -p tokio --precise "1.25.1" --verbose
1014

11-
# Sadly the log crate is always a dependency of tokio until 1.20, and has no reasonable MSRV guarantees
12-
[ "$RUSTC_MINOR_VERSION" -lt 49 ] && cargo update -p log --precise "0.4.18" --verbose
15+
# Sadly the log crate is always a dependency of tokio until 1.20, and has no reasonable MSRV guarantees
16+
[ "$RUSTC_MINOR_VERSION" -lt 49 ] && cargo update -p log --precise "0.4.18" --verbose
17+
18+
# The serde_json crate switched to Rust edition 2021 starting with v1.0.101, i.e., has MSRV of 1.56
19+
[ "$RUSTC_MINOR_VERSION" -lt 56 ] && cargo update -p serde_json --precise "1.0.100" --verbose
20+
21+
return 0 # Don't fail the script if our rustc is higher than the last check
22+
}
23+
24+
PIN_RELEASE_DEPS # pin the release dependencies in our main workspace
1325

1426
# The addr2line v0.20 crate (a dependency of `backtrace` starting with 0.3.68) relies on 1.55+
1527
[ "$RUSTC_MINOR_VERSION" -lt 55 ] && cargo update -p backtrace --precise "0.3.67" --verbose
1628

17-
# The serde_json crate switched to Rust edition 2021 starting with v1.0.101, i.e., has MSRV of 1.56
18-
[ "$RUSTC_MINOR_VERSION" -lt 56 ] && cargo update -p serde_json --precise "1.0.100" --verbose
29+
# The quote crate switched to Rust edition 2021 starting with v1.0.31, i.e., has MSRV of 1.56
30+
[ "$RUSTC_MINOR_VERSION" -lt 56 ] && cargo update -p quote --precise "1.0.30" --verbose
1931

2032
[ "$LDK_COVERAGE_BUILD" != "" ] && export RUSTFLAGS="-C link-dead-code"
2133

@@ -65,6 +77,12 @@ pushd no-std-check
6577
cargo check --verbose --color always --features lightning-transaction-sync
6678
popd
6779

80+
# Test that we can build downstream code with only the "release pins".
81+
pushd msrv-no-dev-deps-check
82+
PIN_RELEASE_DEPS
83+
cargo check
84+
popd
85+
6886
if [ -f "$(which arm-none-eabi-gcc)" ]; then
6987
pushd no-std-check
7088
cargo build --target=thumbv7m-none-eabi

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

+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
[package]
2+
name = "msrv-check"
3+
version = "0.1.0"
4+
edition = "2018"
5+
6+
[dependencies]
7+
lightning = { path = "../lightning" }
8+
lightning-block-sync = { path = "../lightning-block-sync", features = [ "rest-client", "rpc-client" ] }
9+
lightning-invoice = { path = "../lightning-invoice" }
10+
lightning-net-tokio = { path = "../lightning-net-tokio" }
11+
lightning-persister = { path = "../lightning-persister" }
12+
lightning-background-processor = { path = "../lightning-background-processor", features = ["futures"] }
13+
lightning-rapid-gossip-sync = { path = "../lightning-rapid-gossip-sync" }

msrv-no-dev-deps-check/src/lib.rs

Whitespace-only changes.

0 commit comments

Comments
 (0)