-
Notifications
You must be signed in to change notification settings - Fork 12.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
miri component gets shipped even though the tests fail #60301
Comments
maybe we can make the miri toolstate always go to |
@rust-lang/infra what would be the best place to change this? I think I'd prefer Miri not to be shipped at all when the tests fail; I'd rather people stick to an old-but-working Miri than to a new-but-broken one. I found https://github.com/rust-lang/rust/blob/master/src/ci/docker/x86_64-gnu-tools/checktools.sh but that does not seem to decide if a component gets built for distribution or not. |
Lines 1368 to 1369 in 6312b89
|
I found it. The comment was added for rls in 686c101 but then the code making the comment true was removed later |
See #61656 (comment) for why this is hard to fix: the Also, that's probably for the better actually, as the "tools" builder sets --cfg miri to be more Miri-friendly and we don't want that in the release artifacts. |
One (crazy?) thing we could so is have the dist builders query the toolstate repo to figure out if the tests are passing... |
That will either retrieve an outdated toolstate or will need to block until the toolstate is uploaded ... |
Without blocking it would lag behind by 1 merged PR, yes. |
@RalfJung would it be possible to add some kind of build assert so Miri fails on |
Well |
That should be easy to do: rust/src/tools/publish_toolstate.py Line 152 in 0e4a56b
|
Gave it a shot at #61938 |
@Centril had an interesting idea: can't we do the "don't ship broken tools" as part of a post-processing step? We anyway do some little amount of work when a commit hits @kennytm do you think something like that would be possible? |
Thinking about this again, probably the most natural place to do this is in the code that turns CI artifacts into nightly releases. That could "just" also check the toolstate database for the commit it is promoting, and then (possibly only for certain tools) not add them to the nightly if their toolstate is not green. |
This is biting us again right now, where CI knows that Miri is broken but we ship the component anyway, leading to CI failures in downstream projects that have Miri in their CI. |
For another case where this issue got quite painful, see thomcc/rust-typed-arena#30. |
My PR is getting reverted because I was incorrectly assuming that all commits have their toolstate recorded in the toolstate repo. Reopening. |
FTR, for testing
then I edited my
and finally I ran
This produces stuff in |
So @pietroalbini @kennytm looks like we have logic in rust/src/ci/docker/x86_64-gnu-tools/checktools.sh Lines 112 to 113 in 5670d04
Unfortunately, this means that we cannot easily fetch the toolstate of the to-be-produced release in build-manifest, which caused my original approach to fail. Would it be okay for you to change this logic to record the toolstate of all commits in the toolstate repo? Or would you prefer if I try to find another approach for solving this issue? Right now I am somewhat out of ideas though if we cannot even use the toolstate repo to communicate this information. |
Wouldn't it be simpler to save list of "good" components to something like |
I guess we could upload the two JSON files from the two tool runners somehow? Not sure which would be the right places to hook for that, though. |
This seems to be finally fixed! Today nightly was shipped with #65274, and everything looks normal 🎉 |
Miri is "test-fail" now, so with the next nightly we should be able to see if indeed it gets removed from rustup as it should. |
Confirmed it's working! On |
Looking at https://rust-lang.github.io/rustup-components-history/, it seems like Miri is getting shipped as a rustup component even though the tests fail. Unfortunately, Miri is currently entirely usable, so it'd probably be better if it did not get shipped in this state. Is that something we can do?
Cc @oli-obk
The text was updated successfully, but these errors were encountered: