-
-
Notifications
You must be signed in to change notification settings - Fork 14.8k
Miri build preventing landing changes which require both lib and compiler work #138065
Copy link
Copy link
Closed
Closed
Copy link
Labels
C-discussionCategory: Discussion or questions that doesn't represent real issues.Category: Discussion or questions that doesn't represent real issues.E-needs-investigationCall for participation: This issues needs some investigation to determine current statusCall for participation: This issues needs some investigation to determine current statusT-bootstrapRelevant to the bootstrap subteam: Rust's build system (x.py and src/bootstrap)Relevant to the bootstrap subteam: Rust's build system (x.py and src/bootstrap)
Metadata
Metadata
Assignees
Labels
C-discussionCategory: Discussion or questions that doesn't represent real issues.Category: Discussion or questions that doesn't represent real issues.E-needs-investigationCall for participation: This issues needs some investigation to determine current statusCall for participation: This issues needs some investigation to determine current statusT-bootstrapRelevant to the bootstrap subteam: Rust's build system (x.py and src/bootstrap)Relevant to the bootstrap subteam: Rust's build system (x.py and src/bootstrap)
Type
Fields
Give feedbackNo fields configured for issues without a type.
Summary
Some changes to Rust require synchronized changes to the library and compiler together. #135881 is an example.
This used to be possible by judicious use of
#[cfg(bootstrap)], but I rebased that PR on top ofmasterand there no longer seems to be a way to get themiribuild to work.This seems to be because the
miribuild is now using a newer compiler, but an older version of the library (possibly from stage0).Reproduction
Check out 7f74340, the older version of #135881, which was based on master from Feb 6th. (If you need to fetch that from github, it can be found here).
./x.py build miriworks.Now check out 632fd28, which is exactly the same PR based on master from yesterday. The same command does not work, emitting lots of errors about methods not being found.
Diagnosis
This seems to be because the
miribuild can no longer find the blanket implementation ofReceiverforT: Deref. I think this is because it's using stage0 stdlib.Bisecting this has been hard for various fiddly reasons, but a recent change has been from
x.pyreporting:to instead reporting
I'm reasonably confident (but not certain) that this is the change that has altered behavior here. The commits which made these changes were 8e011e5 or 72e67e8. Before that, we see the
stage1 -> stage2behavior, and afterwards, we seestage0 -> stage1.That said, even after those two commits, it's still possible to get the PR to build, so there's some other factor involved in the 1000+ subsequent commits. As noted, bisecting this has been enormously painful and I haven't nailed it down yet. Nevertheless I feel this is highly likely to be related so I'm hoping @onur-ozkan can help investigate.