diff --git a/ci/publish-crate.sh b/ci/publish-crate.sh index 8d0448be4a..2b3a8fddb0 100755 --- a/ci/publish-crate.sh +++ b/ci/publish-crate.sh @@ -4,6 +4,8 @@ cd "$(dirname "$0")/.." source ci/semver_bash/semver.sh source ci/rust-version.sh stable +cargo="$(readlink -f ./cargo)" + # shellcheck disable=SC2086 is_crate_version_uploaded() { name=$1 @@ -66,11 +68,11 @@ for Cargo_toml in $Cargo_tomls; do ( set -x rm -rf crate-test - cargo +"$rust_stable" init crate-test + "$cargo" stable init crate-test cd crate-test/ echo "${crate_name} = \"${expectedCrateVersion}\"" >> Cargo.toml echo "[workspace]" >> Cargo.toml - cargo +"$rust_stable" check + "$cargo" stable check ) && really_uploaded=1 if ((really_uploaded)); then break; diff --git a/ci/test-bench.sh b/ci/test-bench.sh index d72cc8e58c..50d0e6babf 100755 --- a/ci/test-bench.sh +++ b/ci/test-bench.sh @@ -6,7 +6,8 @@ source ci/_ source ci/upload-ci-artifact.sh eval "$(ci/channel-info.sh)" -source ci/rust-version.sh all + +cargo="$(readlink -f "./cargo")" set -o pipefail export RUST_BACKTRACE=1 @@ -27,35 +28,35 @@ test -d target/debug/bpf && find target/debug/bpf -name '*.d' -delete test -d target/release/bpf && find target/release/bpf -name '*.d' -delete # Ensure all dependencies are built -_ cargo +$rust_nightly build --release +_ "$cargo" nightly build --release # Remove "BENCH_FILE", if it exists so that the following commands can append rm -f "$BENCH_FILE" # Run sdk benches -_ cargo +$rust_nightly bench --manifest-path sdk/Cargo.toml ${V:+--verbose} \ +_ "$cargo" nightly bench --manifest-path sdk/Cargo.toml ${V:+--verbose} \ -- -Z unstable-options --format=json | tee -a "$BENCH_FILE" # Run runtime benches -_ cargo +$rust_nightly bench --manifest-path runtime/Cargo.toml ${V:+--verbose} \ +_ "$cargo" nightly bench --manifest-path runtime/Cargo.toml ${V:+--verbose} \ -- -Z unstable-options --format=json | tee -a "$BENCH_FILE" # Run core benches -_ cargo +$rust_nightly bench --manifest-path core/Cargo.toml ${V:+--verbose} \ +_ "$cargo" nightly bench --manifest-path core/Cargo.toml ${V:+--verbose} \ -- -Z unstable-options --format=json | tee -a "$BENCH_FILE" # Run bpf benches -_ cargo +$rust_nightly bench --manifest-path programs/bpf/Cargo.toml ${V:+--verbose} --features=bpf_c \ +_ "$cargo" nightly bench --manifest-path programs/bpf/Cargo.toml ${V:+--verbose} --features=bpf_c \ -- -Z unstable-options --format=json --nocapture | tee -a "$BENCH_FILE" # Run banking/accounts bench. Doesn't require nightly, but use since it is already built. -_ cargo +$rust_nightly run --release --manifest-path banking-bench/Cargo.toml ${V:+--verbose} | tee -a "$BENCH_FILE" -_ cargo +$rust_nightly run --release --manifest-path accounts-bench/Cargo.toml ${V:+--verbose} -- --num_accounts 10000 --num_slots 4 | tee -a "$BENCH_FILE" +_ "$cargo" nightly run --release --manifest-path banking-bench/Cargo.toml ${V:+--verbose} | tee -a "$BENCH_FILE" +_ "$cargo" nightly run --release --manifest-path accounts-bench/Cargo.toml ${V:+--verbose} -- --num_accounts 10000 --num_slots 4 | tee -a "$BENCH_FILE" # `solana-upload-perf` disabled as it can take over 30 minutes to complete for some # reason exit 0 -_ cargo +$rust_nightly run --release --package solana-upload-perf \ +_ "$cargo" nightly run --release --package solana-upload-perf \ -- "$BENCH_FILE" "$TARGET_BRANCH" "$UPLOAD_METRICS" | tee "$BENCH_ARTIFACT" upload-ci-artifact "$BENCH_FILE" diff --git a/ci/test-checks.sh b/ci/test-checks.sh index 1d73d51341..9c30eb86cb 100755 --- a/ci/test-checks.sh +++ b/ci/test-checks.sh @@ -8,6 +8,7 @@ source ci/_ source ci/rust-version.sh stable source ci/rust-version.sh nightly eval "$(ci/channel-info.sh)" +cargo="$(readlink -f "./cargo")" echo --- build environment ( @@ -16,14 +17,14 @@ echo --- build environment 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" stable --version --verbose + "$cargo" nightly --version --verbose - cargo +"$rust_stable" clippy --version --verbose - cargo +"$rust_nightly" clippy --version --verbose + "$cargo" stable clippy --version --verbose + "$cargo" nightly clippy --version --verbose # audit is done only with stable - cargo +"$rust_stable" audit --version + "$cargo" stable audit --version ) export RUST_BACKTRACE=1 @@ -49,11 +50,11 @@ else fi _ ci/order-crates-for-publishing.py -_ cargo +"$rust_stable" fmt --all -- --check +_ "$cargo" stable fmt --all -- --check # -Z... is needed because of clippy bug: https://github.com/rust-lang/rust-clippy/issues/4612 # run nightly clippy for `sdk/` as there's a moderate amount of nightly-only code there -_ cargo +"$rust_nightly" clippy \ +_ "$cargo" nightly clippy \ -Zunstable-options --workspace --all-targets \ -- --deny=warnings --allow=clippy::stable_sort_primitive @@ -77,14 +78,14 @@ _ scripts/cargo-for-all-lock-files.sh +"$rust_stable" audit "${cargo_audit_ignor { cd programs/bpf - _ cargo +"$rust_stable" audit + _ "$cargo" stable audit for project in rust/*/ ; do echo "+++ do_bpf_checks $project" ( cd "$project" - _ cargo +"$rust_stable" fmt -- --check - _ cargo +"$rust_nightly" test - _ cargo +"$rust_nightly" clippy -- --deny=warnings \ + _ "$cargo" stable fmt -- --check + _ "$cargo" nightly test + _ "$cargo" nightly clippy -- --deny=warnings \ --allow=clippy::missing_safety_doc \ --allow=clippy::stable_sort_primitive ) diff --git a/ci/test-stable.sh b/ci/test-stable.sh index 2064bd034b..b9ee39b10d 100755 --- a/ci/test-stable.sh +++ b/ci/test-stable.sh @@ -2,6 +2,8 @@ set -e cd "$(dirname "$0")/.." +cargo="$(readlink -f "./cargo")" + source ci/_ annotate() { @@ -34,7 +36,7 @@ NPROC=$((NPROC>14 ? 14 : NPROC)) echo "Executing $testName" case $testName in test-stable) - _ cargo +"$rust_stable" test --jobs "$NPROC" --all --exclude solana-local-cluster ${V:+--verbose} -- --nocapture + _ "$cargo" stable test --jobs "$NPROC" --all --exclude solana-local-cluster ${V:+--verbose} -- --nocapture ;; test-stable-perf) # BPF solana-sdk legacy compile test @@ -42,7 +44,7 @@ test-stable-perf) # BPF program tests _ make -C programs/bpf/c tests - _ cargo +"$rust_stable" test \ + _ "$cargo" stable test \ --manifest-path programs/bpf/Cargo.toml \ --no-default-features --features=bpf_c,bpf_rust -- --nocapture @@ -62,13 +64,13 @@ test-stable-perf) export SOLANA_CUDA=1 fi - _ cargo +"$rust_stable" build --bins ${V:+--verbose} - _ cargo +"$rust_stable" test --package solana-perf --package solana-ledger --package solana-core --lib ${V:+--verbose} -- --nocapture - _ cargo +"$rust_stable" run --manifest-path poh-bench/Cargo.toml ${V:+--verbose} -- --hashes-per-tick 10 + _ "$cargo" stable build --bins ${V:+--verbose} + _ "$cargo" stable test --package solana-perf --package solana-ledger --package solana-core --lib ${V:+--verbose} -- --nocapture + _ "$cargo" stable run --manifest-path poh-bench/Cargo.toml ${V:+--verbose} -- --hashes-per-tick 10 ;; test-local-cluster) - _ cargo +"$rust_stable" build --release --bins ${V:+--verbose} - _ cargo +"$rust_stable" test --release --package solana-local-cluster ${V:+--verbose} -- --nocapture --test-threads=1 + _ "$cargo" stable build --release --bins ${V:+--verbose} + _ "$cargo" stable test --release --package solana-local-cluster ${V:+--verbose} -- --nocapture --test-threads=1 exit 0 ;; *) diff --git a/docs/build-cli-usage.sh b/docs/build-cli-usage.sh index 4fb5cb6de7..91ebbb4c1f 100755 --- a/docs/build-cli-usage.sh +++ b/docs/build-cli-usage.sh @@ -2,13 +2,14 @@ set -e cd "$(dirname "$0")" +cargo="$(readlink -f "./cargo")" # shellcheck source=ci/rust-version.sh source ../ci/rust-version.sh stable : "${rust_stable:=}" # Pacify shellcheck -usage=$(cargo +"$rust_stable" -q run -p solana-cli -- -C ~/.foo --help | sed -e 's|'"$HOME"'|~|g' -e 's/[[:space:]]\+$//') +usage=$("$cargo" stable -q run -p solana-cli -- -C ~/.foo --help | sed -e 's|'"$HOME"'|~|g' -e 's/[[:space:]]\+$//') out=${1:-src/cli/usage.md} @@ -36,6 +37,6 @@ in_subcommands=0 while read -r subcommand rest; do [[ $subcommand == "SUBCOMMANDS:" ]] && in_subcommands=1 && continue if ((in_subcommands)); then - section "$(cargo +"$rust_stable" -q run -p solana-cli -- help "$subcommand" | sed -e 's|'"$HOME"'|~|g' -e 's/[[:space:]]\+$//')" "####" >> "$out" + section "$("$cargo" stable -q run -p solana-cli -- help "$subcommand" | sed -e 's|'"$HOME"'|~|g' -e 's/[[:space:]]\+$//')" "####" >> "$out" fi done <<<"$usage">>"$out" diff --git a/install/install-help.sh b/install/install-help.sh index 0927f727ab..9fb08afa6d 100755 --- a/install/install-help.sh +++ b/install/install-help.sh @@ -2,8 +2,9 @@ set -e cd "$(dirname "$0")"/.. +cargo="$(readlink -f "./cargo")" -cargo build --package solana-install +"$cargo" build --package solana-install export PATH=$PWD/target/debug:$PATH echo "\`\`\`manpage" diff --git a/scripts/cargo-for-all-lock-files.sh b/scripts/cargo-for-all-lock-files.sh index 52aa5c5bbf..c2cbd1c4ec 100755 --- a/scripts/cargo-for-all-lock-files.sh +++ b/scripts/cargo-for-all-lock-files.sh @@ -1,5 +1,8 @@ #!/usr/bin/env bash +here="$(dirname "$0")" +cargo="$(readlink -f "${here}/../cargo")" + set -e shifted_args=() @@ -37,7 +40,7 @@ for lock_file in $files; do echo "--- [$lock_file]: cargo " "${shifted_args[@]}" "$@" fi - if (set -x && cd "$(dirname "$lock_file")" && cargo "${shifted_args[@]}" "$@"); then + if (set -x && cd "$(dirname "$lock_file")" && "$cargo" "${shifted_args[@]}" "$@"); then # noop true else diff --git a/scripts/cargo-install-all.sh b/scripts/cargo-install-all.sh index 8990f8761e..18f683f3f0 100755 --- a/scripts/cargo-install-all.sh +++ b/scripts/cargo-install-all.sh @@ -2,6 +2,9 @@ # # |cargo install| of the top-level crate will not install binaries for # other workspace crates or native program crates. +here="$(dirname "$0")" +cargo="$(readlink -f "${here}../cargo")" + set -e usage() { @@ -46,7 +49,6 @@ fi installDir="$(mkdir -p "$installDir"; cd "$installDir"; pwd)" mkdir -p "$installDir/bin/deps" -cargo=cargo echo "Install location: $installDir ($buildVariant)" @@ -112,9 +114,9 @@ mkdir -p "$installDir/bin" ( set -x # shellcheck disable=SC2086 # Don't want to double quote $rust_version - $cargo $maybeRustVersion build $maybeReleaseFlag "${binArgs[@]}" + "$cargo" $maybeRustVersion build $maybeReleaseFlag "${binArgs[@]}" # shellcheck disable=SC2086 # Don't want to double quote $rust_version - $cargo $maybeRustVersion install spl-token-cli --root "$installDir" + "$cargo" $maybeRustVersion install spl-token-cli --root "$installDir" ) for bin in "${BINS[@]}"; do diff --git a/scripts/coverage.sh b/scripts/coverage.sh index 466d54c2b2..8bfa5831f1 100755 --- a/scripts/coverage.sh +++ b/scripts/coverage.sh @@ -9,6 +9,8 @@ set -e cd "$(dirname "$0")/.." source ci/_ +cargo="$(readlink -f "./cargo")" + : "${CI_COMMIT:=local}" reportName="lcov-${CI_COMMIT:0:9}" @@ -40,8 +42,6 @@ mkdir -p target/cov # Mark the base time for a clean room dir touch target/cov/before-test -source ci/rust-version.sh nightly - # Force rebuild of possibly-cached proc macro crates and build.rs because # we always want stable coverage for them # Don't support odd file names in our repo ever @@ -52,8 +52,8 @@ if [[ -n $CI || -z $1 ]]; then $(git grep -l "proc-macro.*true" :**/Cargo.toml | sed 's|Cargo.toml|src/lib.rs|') fi -RUST_LOG=solana=trace _ cargo +$rust_nightly test --target-dir target/cov --no-run "${packages[@]}" -if RUST_LOG=solana=trace _ cargo +$rust_nightly test --target-dir target/cov "${packages[@]}" 2> target/cov/coverage-stderr.log; then +RUST_LOG=solana=trace _ "$cargo" nightly test --target-dir target/cov --no-run "${packages[@]}" +if RUST_LOG=solana=trace _ "$cargo" nightly test --target-dir target/cov "${packages[@]}" 2> target/cov/coverage-stderr.log; then test_status=0 else test_status=$? diff --git a/storage-bigtable/build-proto/build.sh b/storage-bigtable/build-proto/build.sh index dfc2843727..24e2b54340 100755 --- a/storage-bigtable/build-proto/build.sh +++ b/storage-bigtable/build-proto/build.sh @@ -3,8 +3,10 @@ set -ex cd "$(dirname "$0")" +cargo="$(readlink -f "../../cargo")" + if [[ ! -d googleapis ]]; then git clone https://github.com/googleapis/googleapis.git fi -exec cargo run +exec "$cargo" run