Description
In #54206 it was noted that RLS was missing in x86_64-pc-windows-gnu
, but toolstate didn't see the issue because it only checks x86_64-pc-windows-msvc
and x86_64-unknown-linux-gnu
. We ought to ensure that the tools are not forgotten at least on all tier-1 platforms.
The simplest fix right now is to add a check that if a tool failed to build, the whole dist job should be aborted. Currently we allowed tool dist to fail because of this:
Lines 1166 to 1169 in e7b5ba8
similar for Clippy:
Lines 1245 to 1252 in e7b5ba8
and rustfmt:
Lines 1323 to 1331 in e7b5ba8
What we should do is modify the or_else
branch to panic!
unless we are configured to allow omitting these tools (i.e. in the nightly channel). (Consider refactor this into the same function to avoid writing the same thing 5 times.)
While it is possible to check the release channel directly inside rustbuild, I consider this a bad coupling. It is better to add a configuration variable --enable-missing-tools
, and modify src/ci/run.sh
to pass this into $RUST_CONFIGURE_ARGS
when
$RUST_RELEASE_CHANNEL = "nightly"
, or- the env var
$DIST_REQUIRE_ALL_TOOLS
is undefined
You may see #39824 for how to add a config to rustbuild.
After this issue is fixed, we'll ensure RLS/Clippy/Rustfmt will be present on all tier-1 platforms on beta/stable. In the future we should record and alert the tool developers when they fail to build on nightly or lower-tier platforms, but let's get the immediate issue fixed first...