@@ -19,20 +19,12 @@ executors:
1919 resource_class : small
2020
2121commands :
22- rust_setup :
23- description : Set rustc version
24- steps :
25- - run :
26- name : Set rustc version
27- command : |
28- rustup default stable
29- rustup update stable
3022 print_versions :
3123 description : Version Info
3224 steps :
3325 - run :
3426 name : Version Info
35- command : rustc --version; cargo --version; rustup --version
27+ command : rustup --version
3628 env_setup :
3729 description : Environment Setup
3830 steps :
@@ -44,6 +36,7 @@ commands:
4436 echo 'export LIBRA_DUMP_LOGS=1' >> $BASH_ENV
4537 echo 'export CARGO_INCREMENTAL=0' >> $BASH_ENV
4638 echo 'export CI_TIMEOUT="timeout 40m"' >> $BASH_ENV
39+ echo 'export RUST_NIGHTLY=nightly-2020-03-18' >> $BASH_ENV
4740 install_deps :
4841 steps :
4942 - run :
@@ -52,14 +45,23 @@ commands:
5245 sudo apt-get update
5346 sudo apt-get install -y cmake curl clang llvm
5447 rustup component add clippy rustfmt
48+ rustup toolchain install $RUST_NIGHTLY
49+ - run :
50+ name : Set cargo Environment
51+ command : |
52+ # Use nightly version of cargo to access the new feature resolver
53+ echo 'export CARGO=$(rustup which --toolchain $RUST_NIGHTLY cargo)' >> $BASH_ENV
54+ # Turn on the experimental feature resolver in cargo. See:
55+ # https://doc.rust-lang.org/nightly/cargo/reference/unstable.html#features
56+ echo 'export CARGOFLAGS=-Zfeatures=all' >> $BASH_ENV
5557 install_code_coverage_deps :
5658 steps :
5759 - run :
5860 name : Install grcov and lcov
5961 command : |
6062 sudo apt-get update
6163 sudo apt-get install lcov
62- cargo install --force grcov
64+ $CARGO $CARGOFLAGS install --force grcov
6365 install_docker_linter :
6466 steps :
6567 - run :
@@ -68,11 +70,6 @@ commands:
6870 export HADOLINT=${HOME}/hadolint
6971 export HADOLINT_VER=v1.17.4
7072 curl -sL -o ${HADOLINT} "https://github.com/hadolint/hadolint/releases/download/${HADOLINT_VER}/hadolint-$(uname -s)-$(uname -m)" && chmod 700 ${HADOLINT}
71- install_rust_nightly_toolchain :
72- steps :
73- - run :
74- name : Install nightly toolchain for features not in beta/stable
75- command : rustup install nightly
7673 find_dockerfile_changes :
7774 steps :
7875 - run :
@@ -106,7 +103,6 @@ commands:
106103 build_setup :
107104 steps :
108105 - checkout
109- - rust_setup
110106 - print_versions
111107 - env_setup
112108 - install_deps
@@ -127,7 +123,7 @@ jobs:
127123 command : ./scripts/git-checks.sh
128124 - run :
129125 name : Fetch workspace dependencies over network
130- command : cargo fetch
126+ command : $CARGO $CARGOFLAGS fetch
131127 - save_cargo_package_cache
132128 - persist_to_workspace :
133129 root : /home/circleci/project
@@ -148,20 +144,20 @@ jobs:
148144 - restore_cargo_package_cache
149145 - run :
150146 name : cargo lint
151- command : cargo x lint
147+ command : $CARGO $CARGOFLAGS x lint
152148 - run :
153149 name : cargo clippy
154- command : cargo xclippy --workspace --all-targets
150+ command : $CARGO $CARGOFLAGS xclippy --workspace --all-targets
155151 - run :
156152 name : cargo fmt
157- command : cargo xfmt --check
153+ command : $CARGO $CARGOFLAGS xfmt --check
158154 - run :
159155 name : cargo guppy
160156 command : |
161- cargo install cargo-guppy \
157+ $CARGO $CARGOFLAGS install cargo-guppy \
162158 --git http://github.com/calibra/cargo-guppy \
163159 --rev 8b2bc45c0cd6323a7a2b8170ddad6d2a5b79047b
164- [[ -z $(cargo guppy dups --target x86_64-unknown-linux-gnu \
160+ [[ -z $($CARGO $CARGOFLAGS guppy dups --target x86_64-unknown-linux-gnu \
165161 --kind directthirdparty) ]]
166162 build-dev :
167163 executor : build-executor
@@ -172,19 +168,19 @@ jobs:
172168 at : /home/circleci/project
173169 - restore_cargo_package_cache
174170 - run :
175- command : RUST_BACKTRACE=1 cargo build -j 16
171+ command : RUST_BACKTRACE=1 $CARGO $CARGOFLAGS build -j 16
176172 - run :
177- command : RUST_BACKTRACE=1 cargo build -j 16 -p libra-swarm
173+ command : RUST_BACKTRACE=1 $CARGO $CARGOFLAGS build -j 16 -p libra-swarm
178174 - run :
179- command : RUST_BACKTRACE=1 cargo build -j 16 -p cluster-test
175+ command : RUST_BACKTRACE=1 $CARGO $CARGOFLAGS build -j 16 -p cluster-test
180176 - run :
181- command : RUST_BACKTRACE=1 cargo build -j 16 -p libra-fuzzer
177+ command : RUST_BACKTRACE=1 $CARGO $CARGOFLAGS build -j 16 -p libra-fuzzer
182178 - run :
183- command : RUST_BACKTRACE=1 cargo build -j 16 -p language_benchmarks
179+ command : RUST_BACKTRACE=1 $CARGO $CARGOFLAGS build -j 16 -p language_benchmarks
184180 - run :
185- command : RUST_BACKTRACE=1 cargo build -j 16 -p cost-synthesis
181+ command : RUST_BACKTRACE=1 $CARGO $CARGOFLAGS build -j 16 -p cost-synthesis
186182 - run :
187- command : RUST_BACKTRACE=1 cargo build -j 16 -p test-generation
183+ command : RUST_BACKTRACE=1 $CARGO $CARGOFLAGS build -j 16 -p test-generation
188184 - build_teardown
189185 build-release :
190186 executor : build-executor
@@ -196,7 +192,7 @@ jobs:
196192 - restore_cargo_package_cache
197193 - run :
198194 name : Build release
199- command : RUST_BACKTRACE=1 cargo build -j 16 --release
195+ command : RUST_BACKTRACE=1 $CARGO $CARGOFLAGS build -j 16 --release
200196 - build_teardown
201197 build-e2e-test :
202198 executor : build-executor
@@ -209,7 +205,7 @@ jobs:
209205 - run :
210206 name : Find all e2e tests
211207 command : |
212- cargo x test --package testsuite -- --list | grep "::" | \
208+ $CARGO $CARGOFLAGS x test --package testsuite -- --list | grep "::" | \
213209 sed 's/: .*$//' > e2e_tests
214210 cat e2e_tests
215211 - persist_to_workspace :
@@ -246,7 +242,7 @@ jobs:
246242 RUST_BACKTRACE=1 $CI_TIMEOUT $libratest $target \
247243 --test-threads 1 --exact --nocapture
248244 else
249- RUST_BACKTRACE=1 $CI_TIMEOUT cargo x test $target \
245+ RUST_BACKTRACE=1 $CI_TIMEOUT $CARGO $CARGOFLAGS x test $target \
250246 --package testsuite -- --test-threads 1 --exact --nocapture
251247 fi
252248 done
@@ -262,7 +258,7 @@ jobs:
262258 - run :
263259 name : Run all unit tests
264260 command : |
265- RUST_BACKTRACE=1 $CI_TIMEOUT cargo test \
261+ RUST_BACKTRACE=1 $CI_TIMEOUT $CARGO $CARGOFLAGS test \
266262 --all-features \
267263 --workspace \
268264 --exclude libra-node \
@@ -281,7 +277,7 @@ jobs:
281277 name : Run crypto unit tests
282278 command : |
283279 cd crypto/crypto && \
284- RUST_BACKTRACE=1 cargo test \
280+ RUST_BACKTRACE=1 $CARGO $CARGOFLAGS test \
285281 --features='std fiat_u64_backend fuzzing' \
286282 --no-default-features
287283 run-flaky-unit-test :
@@ -312,16 +308,16 @@ jobs:
312308 steps :
313309 - build_setup
314310 - run :
315- name : Install Cargo Audit
311+ name : Install cargo-audit
316312 command : |
317- cargo install --force cargo-audit
313+ $CARGO $CARGOFLAGS install --force cargo-audit
318314 - run :
319315 # NOTE ignored advisory rules
320316 # RUSTSEC-2018-0015 - term
321317 # RUSTSEC-2019-0031 - spin
322318 name : Audit crates
323319 command : |
324- cargo audit --deny-warnings \
320+ $CARGO $CARGOFLAGS audit --deny-warnings \
325321 --ignore RUSTSEC-2018-0015 \
326322 --ignore RUSTSEC-2019-0031
327323 - build_teardown
@@ -331,7 +327,6 @@ jobs:
331327 steps :
332328 - build_setup
333329 - install_code_coverage_deps
334- - install_rust_nightly_toolchain
335330 - run :
336331 name : Setup code coverage output
337332 command : echo "export CODECOV_OUTPUT=codecov" >> $BASH_ENV
0 commit comments