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" 
13- 	[[ " $RUSTC_MINOR_VERSION " -gt  48  &&   " $RUSTC_MINOR_VERSION " -lt  56 ]] &&  cargo update -p tokio --precise " 1.25.1" 
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" 
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" 
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" 
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" 
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" 
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" 
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.*' |  tr -d ' ",' |  tr '  ' ' :' ) 
35- 	cargo update -p " $SYN_2_DEP " " 2.0.32" 
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" 
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" 
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" 
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" 
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" 
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" test  -p $DIR  --verbose --color always --no-default-features --features=no-std
89+ 	RUSTFLAGS=" --cfg=c_bindings" test  -p $DIR  --verbose --color always --no-default-features --features=no-std
11090done 
11191RUSTFLAGS=" --cfg=c_bindings" 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" 
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