2018-11-21 12:16:16 -08:00
|
|
|
#!/usr/bin/env bash
|
2020-06-16 13:40:53 +09:00
|
|
|
|
2018-11-21 12:16:16 -08:00
|
|
|
set -e
|
|
|
|
|
|
|
|
cd "$(dirname "$0")/.."
|
|
|
|
|
2018-12-18 14:25:10 -08:00
|
|
|
source ci/_
|
2019-03-14 19:41:05 -07:00
|
|
|
source ci/rust-version.sh stable
|
2019-06-20 07:43:31 -07:00
|
|
|
source ci/rust-version.sh nightly
|
2020-06-18 10:04:37 -07:00
|
|
|
eval "$(ci/channel-info.sh)"
|
2018-12-18 14:25:10 -08:00
|
|
|
|
2020-06-16 13:40:53 +09:00
|
|
|
echo --- build environment
|
|
|
|
(
|
|
|
|
set -x
|
|
|
|
|
|
|
|
rustup run "$rust_stable" rustc --version --verbose
|
|
|
|
rustup run "$rust_nightly" rustc --version --verbose
|
|
|
|
|
|
|
|
cargo +"$rust_stable" --version --verbose
|
|
|
|
cargo +"$rust_nightly" --version --verbose
|
|
|
|
|
|
|
|
cargo +"$rust_stable" clippy --version --verbose
|
|
|
|
cargo +"$rust_nightly" clippy --version --verbose
|
|
|
|
|
|
|
|
# audit is done only with stable
|
|
|
|
cargo +"$rust_stable" audit --version
|
|
|
|
)
|
|
|
|
|
2018-11-21 12:16:16 -08:00
|
|
|
export RUST_BACKTRACE=1
|
2020-07-10 11:06:10 -07:00
|
|
|
export RUSTFLAGS="-D warnings -A incomplete_features"
|
2018-11-21 12:16:16 -08:00
|
|
|
|
2020-06-18 10:04:37 -07:00
|
|
|
# Only force up-to-date lock files on edge
|
|
|
|
if [[ $CI_BASE_BRANCH = "$EDGE_CHANNEL" ]]; then
|
|
|
|
# Exclude --benches as it's not available in rust stable yet
|
|
|
|
if _ scripts/cargo-for-all-lock-files.sh +"$rust_stable" check --locked --tests --bins --examples; then
|
|
|
|
true
|
|
|
|
else
|
|
|
|
check_status=$?
|
2020-07-03 18:08:12 +09:00
|
|
|
echo "$0: Some Cargo.lock might be outdated; sync them (or just be a compilation error?)" >&2
|
|
|
|
echo "$0: protip: $ ./scripts/cargo-for-all-lock-files.sh [--ignore-exit-code] ... \\" >&2
|
|
|
|
echo "$0: [tree (for outdated Cargo.lock sync)|check (for compilation error)|update -p foo --precise x.y.z (for your Cargo.toml update)] ..." >&2
|
2020-06-18 10:04:37 -07:00
|
|
|
exit "$check_status"
|
|
|
|
fi
|
2020-04-21 10:07:29 +09:00
|
|
|
else
|
2020-06-18 10:04:37 -07:00
|
|
|
echo "Note: cargo-for-all-lock-files.sh skipped because $CI_BASE_BRANCH != $EDGE_CHANNEL"
|
2020-04-21 10:07:29 +09:00
|
|
|
fi
|
2020-06-18 10:04:37 -07:00
|
|
|
|
2020-06-17 01:32:16 +09:00
|
|
|
# Ensure nightly and --benches
|
|
|
|
_ scripts/cargo-for-all-lock-files.sh +"$rust_nightly" check --locked --all-targets
|
2020-04-21 10:07:29 +09:00
|
|
|
|
2020-06-11 10:50:32 -07:00
|
|
|
_ ci/order-crates-for-publishing.py
|
2019-03-14 19:41:05 -07:00
|
|
|
_ cargo +"$rust_stable" fmt --all -- --check
|
2019-08-12 16:41:17 -06:00
|
|
|
|
2020-06-09 12:25:39 +09:00
|
|
|
# -Z... is needed because of clippy bug: https://github.com/rust-lang/rust-clippy/issues/4612
|
2020-07-06 20:22:23 +09:00
|
|
|
# run nightly clippy for `sdk/` as there's a moderate amount of nightly-only code there
|
2020-06-09 12:25:39 +09:00
|
|
|
_ cargo +"$rust_nightly" clippy -Zunstable-options --workspace --all-targets -- --deny=warnings
|
2019-08-12 16:41:17 -06:00
|
|
|
|
2020-04-28 17:43:47 +09:00
|
|
|
_ scripts/cargo-for-all-lock-files.sh +"$rust_stable" audit --ignore RUSTSEC-2020-0002 --ignore RUSTSEC-2020-0008
|
2018-12-18 18:32:45 -08:00
|
|
|
|
2019-09-11 14:55:58 -07:00
|
|
|
{
|
|
|
|
cd programs/bpf
|
2020-03-25 18:11:08 -06:00
|
|
|
_ cargo +"$rust_stable" audit
|
2019-09-11 14:55:58 -07:00
|
|
|
for project in rust/*/ ; do
|
|
|
|
echo "+++ do_bpf_checks $project"
|
|
|
|
(
|
|
|
|
cd "$project"
|
|
|
|
_ cargo +"$rust_stable" fmt -- --check
|
|
|
|
_ cargo +"$rust_nightly" test
|
2019-10-02 22:07:28 -07:00
|
|
|
_ cargo +"$rust_nightly" clippy -- --deny=warnings --allow=clippy::missing_safety_doc
|
2019-09-11 14:55:58 -07:00
|
|
|
)
|
|
|
|
done
|
|
|
|
}
|
2019-07-28 22:19:03 -07:00
|
|
|
|
2018-12-18 18:32:45 -08:00
|
|
|
echo --- ok
|