[CI] Build the Rust extensions with the pinned toolchain instead of the image default (#33437)
This commit is contained in:
@@ -175,6 +175,17 @@ clean_site_packages() {
|
|||||||
bash "${SCRIPT_DIR}/../utils/install_rust_protoc.sh"
|
bash "${SCRIPT_DIR}/../utils/install_rust_protoc.sh"
|
||||||
export PATH="${CARGO_HOME:-$HOME/.cargo}/bin:${PATH}"
|
export PATH="${CARGO_HOME:-$HOME/.cargo}/bin:${PATH}"
|
||||||
|
|
||||||
|
# Same-step counterpart of the PATH export above: install_rustup.sh exports
|
||||||
|
# RUSTUP_TOOLCHAIN too, but as a child process only reaches later steps.
|
||||||
|
# rust-toolchain.toml does not cover it either - setuptools-rust runs cargo
|
||||||
|
# from python/, outside the pin's cwd scope - so without this an image's own
|
||||||
|
# older rustc builds the crates and fails their MSRV.
|
||||||
|
RUST_PINNED_CHANNEL=$(sed -n 's/^channel *= *"\([^"]*\)".*/\1/p' "${REPO_ROOT}/rust/rust-toolchain.toml" 2>/dev/null || true)
|
||||||
|
if [ -n "${RUST_PINNED_CHANNEL}" ]; then
|
||||||
|
export RUSTUP_TOOLCHAIN="${RUST_PINNED_CHANNEL}"
|
||||||
|
echo "Using pinned Rust toolchain ${RUST_PINNED_CHANNEL} for this install"
|
||||||
|
fi
|
||||||
|
|
||||||
mark_step_done "${FUNCNAME[0]}"
|
mark_step_done "${FUNCNAME[0]}"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -125,5 +125,20 @@ fi
|
|||||||
|
|
||||||
install_workspace_pinned_toolchain
|
install_workspace_pinned_toolchain
|
||||||
|
|
||||||
|
# An image that already ships a usable rustc takes the "rust already installed"
|
||||||
|
# path above, leaving its own toolchain selected so crates needing the pin fail.
|
||||||
|
#
|
||||||
|
# RUSTUP_TOOLCHAIN rather than `rustup default`: the latter rewrites the shared
|
||||||
|
# ~/.rustup on this self-hosted runner, which concurrent jobs would race on. It
|
||||||
|
# also outranks rust-toolchain.toml, so it covers cargo runs started outside
|
||||||
|
# rust/, which is how setuptools-rust invokes it. As a child process this only
|
||||||
|
# reaches later steps; same-step builders export it themselves.
|
||||||
|
export RUSTUP_TOOLCHAIN="${DEFAULT_CHANNEL}"
|
||||||
|
if [ -n "${GITHUB_ENV:-}" ]; then
|
||||||
|
# Self-heal a missing _runner_file_commands/, as with GITHUB_PATH above.
|
||||||
|
mkdir -p "$(dirname "${GITHUB_ENV}")" 2>/dev/null || true
|
||||||
|
echo "RUSTUP_TOOLCHAIN=${DEFAULT_CHANNEL}" >> "${GITHUB_ENV}" || true
|
||||||
|
fi
|
||||||
|
|
||||||
rustc --version
|
rustc --version
|
||||||
cargo --version
|
cargo --version
|
||||||
|
|||||||
Reference in New Issue
Block a user