22set -eox pipefail
33
44RUSTC_MINOR_VERSION=$( rustc --version | awk ' { split($2,a,"."); print a[2] }' )
5- HOST_PLATFORM=" $( rustc --version --verbose | grep " host:" | awk ' { print $2 }' ) "
65
76# Some crates require pinning to meet our MSRV even for our downstream users,
87# which we do here.
98# Further crates which appear only as dev-dependencies are pinned further down.
109function 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
10+ # Starting with version 1.10.0, the `regex` crate has an MSRV of rustc 1.65.0.
11+ [ " $RUSTC_MINOR_VERSION " -lt 65 ] && cargo update -p regex --precise " 1.9.6" --verbose
1412
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
13+ # The addr2line v0.21 crate (a dependency of `backtrace` starting with 0.3.69) relies on rustc 1.65
14+ [ " $RUSTC_MINOR_VERSION " -lt 65 ] && cargo update -p backtrace --precise " 0.3.68" --verbose
2015
2116 return 0 # Don't fail the script if our rustc is higher than the last check
2217}
2318
2419PIN_RELEASE_DEPS # pin the release dependencies in our main workspace
2520
26- # The addr2line v0.20 crate (a dependency of `backtrace` starting with 0.3.68) relies on 1.55+
27- [ " $RUSTC_MINOR_VERSION " -lt 55 ] && cargo update -p backtrace --precise " 0.3.67" --verbose
28-
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
31-
32- # The syn crate depends on too-new proc-macro2 starting with v2.0.33, i.e., has MSRV of 1.56
33- if [ " $RUSTC_MINOR_VERSION " -lt 56 ]; then
34- SYN_2_DEP=$( grep -o ' "syn 2.*' Cargo.lock | tr -d ' ",' | tr ' ' ' :' )
35- cargo update -p " $SYN_2_DEP " --precise " 2.0.32" --verbose
36- fi
37-
38- # The proc-macro2 crate switched to Rust edition 2021 starting with v1.0.66, i.e., has MSRV of 1.56
39- [ " $RUSTC_MINOR_VERSION " -lt 56 ] && cargo update -p proc-macro2 --precise " 1.0.65" --verbose
40-
41- # The memchr crate switched to an MSRV of 1.60 starting with v2.6.0
42- [ " $RUSTC_MINOR_VERSION " -lt 60 ] && cargo update -p memchr --precise " 2.5.0" --verbose
43-
4421export RUST_BACKTRACE=1
4522
4623echo -e " \n\nBuilding and testing all workspace crates..."
@@ -59,37 +36,39 @@ cargo test --verbose --color always --features rpc-client,rest-client,tokio
5936cargo check --verbose --color always --features rpc-client,rest-client,tokio
6037popd
6138
62- if [[ $RUSTC_MINOR_VERSION -gt 67 && " $HOST_PLATFORM " != * windows* ]]; then
63- echo -e " \n\nBuilding and testing Transaction Sync Clients with features"
64- pushd lightning-transaction-sync
65- cargo test --verbose --color always --features esplora-blocking
66- cargo check --verbose --color always --features esplora-blocking
67- cargo test --verbose --color always --features esplora-async
68- cargo check --verbose --color always --features esplora-async
69- cargo test --verbose --color always --features esplora-async-https
70- cargo check --verbose --color always --features esplora-async-https
71- popd
72- fi
39+ echo -e " \n\nBuilding and testing Transaction Sync Clients with features"
40+ pushd lightning-transaction-sync
41+
42+ # jobserver 0.1.27 requires rustc 1.66.0
43+ [ " $RUSTC_MINOR_VERSION " -lt 66 ] && cargo update -p jobserver --precise " 0.1.26" --verbose
44+ # zstd-sys 2.0.9+zstd.1.5.5 requires rustc 1.64.0
45+ [ " $RUSTC_MINOR_VERSION " -lt 64 ] && cargo update -p zstd-sys --precise " 2.0.8+zstd.1.5.5" --verbose
46+ # reqwest 0.11.21 had a regression that broke its 1.63.0 MSRV
47+ [ " $RUSTC_MINOR_VERSION " -lt 65 ] && cargo update -p reqwest --precise " 0.11.20" --verbose
48+
49+ cargo test --verbose --color always --features esplora-blocking
50+ cargo check --verbose --color always --features esplora-blocking
51+ cargo test --verbose --color always --features esplora-async
52+ cargo check --verbose --color always --features esplora-async
53+ cargo test --verbose --color always --features esplora-async-https
54+ cargo check --verbose --color always --features esplora-async-https
55+ popd
7356
7457echo -e " \n\nTest futures builds"
7558pushd lightning-background-processor
7659cargo test --verbose --color always --features futures
7760popd
7861
79- if [ " $RUSTC_MINOR_VERSION " -gt 55 ]; then
80- echo -e " \n\nTest Custom Message Macros"
81- pushd lightning-custom-message
82- cargo test --verbose --color always
83- [ " $CI_MINIMIZE_DISK_USAGE " != " " ] && cargo clean
84- popd
85- fi
62+ echo -e " \n\nTest Custom Message Macros"
63+ pushd lightning-custom-message
64+ cargo test --verbose --color always
65+ [ " $CI_MINIMIZE_DISK_USAGE " != " " ] && cargo clean
66+ popd
8667
87- if [ " $RUSTC_MINOR_VERSION " -gt 51 ]; then # Current `object` MSRV, subject to change
88- echo -e " \n\nTest backtrace-debug builds"
89- pushd lightning
90- cargo test --verbose --color always --features backtrace
91- popd
92- fi
68+ echo -e " \n\nTest backtrace-debug builds"
69+ pushd lightning
70+ cargo test --verbose --color always --features backtrace
71+ popd
9372
9473echo -e " \n\nBuilding with all Log-Limiting features"
9574pushd lightning
@@ -100,13 +79,14 @@ popd
10079
10180echo -e " \n\nTesting no-std flags in various combinations"
10281for DIR in lightning lightning-invoice lightning-rapid-gossip-sync; do
103- [ " $RUSTC_MINOR_VERSION " -gt 50 ] && cargo test -p $DIR --verbose --color always --no-default-features --features no-std
82+ cargo test -p $DIR --verbose --color always --no-default-features --features no-std
10483 # check if there is a conflict between no-std and the default std feature
105- [ " $RUSTC_MINOR_VERSION " -gt 50 ] && cargo test -p $DIR --verbose --color always --features no-std
84+ cargo test -p $DIR --verbose --color always --features no-std
10685done
86+
10787for DIR in lightning lightning-invoice lightning-rapid-gossip-sync; do
10888 # check if there is a conflict between no-std and the c_bindings cfg
109- [ " $RUSTC_MINOR_VERSION " -gt 50 ] && RUSTFLAGS=" --cfg=c_bindings" cargo test -p $DIR --verbose --color always --no-default-features --features=no-std
89+ RUSTFLAGS=" --cfg=c_bindings" cargo test -p $DIR --verbose --color always --no-default-features --features=no-std
11090done
11191RUSTFLAGS=" --cfg=c_bindings" cargo test --verbose --color always
11292
@@ -123,16 +103,7 @@ popd
123103echo -e " \n\nTesting no-std build on a downstream no-std crate"
124104# check no-std compatibility across dependencies
125105pushd no-std-check
126- if [[ $RUSTC_MINOR_VERSION -gt 67 ]]; then
127- # lightning-transaction-sync's MSRV is 1.67
128- cargo check --verbose --color always --features lightning-transaction-sync
129- else
130- # The memchr crate switched to an MSRV of 1.60 starting with v2.6.0
131- # This is currently only a release dependency via core2, which we intend to work with
132- # rust-bitcoin to remove soon.
133- [ " $RUSTC_MINOR_VERSION " -lt 60 ] && cargo update -p memchr --precise " 2.5.0" --verbose
134- cargo check --verbose --color always
135- fi
106+ cargo check --verbose --color always
136107[ " $CI_MINIMIZE_DISK_USAGE " != " " ] && cargo clean
137108popd
138109
0 commit comments