-
Notifications
You must be signed in to change notification settings - Fork 13k
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
[regression] [1.24] extern crate proc_macro: found two different crates with name std
that are not distinguished by differing -C metadata
#48319
Comments
I hit this bug when building Firefox Nightly with Rust 1.24 / Cargo 0.24
|
I cannot reproduce.
|
So I can't reproduce with a local rust 1.24 installed with rustup, but I can reproduce with system-wide rust 1.24 installed from the distro. |
I'm looking at this from Fedora's side, to see if I can figure out what's different... |
Rust 1.24-beta is working with no issue. |
I think this is from an unfortunate interaction from Fedora using I can reproduce this in an upstream build on master, using full-bootstrap and doing the same symlink hack on the installed binaries. I think we're ending up with a stage2 I'm not sure why this was OK in 1.23 though. I think I can fix this in our packaging, if only by backporting the fixes so we don't need full-bootstrap anymore. But I'm not sure whether there's a true lingering bug here or not... |
Another person reproduced this with (his version of) Debian rustc 1.24. Setting I'd say that intuitively the hashes should remain the same whether full-bootstrap is true or false. Ensuring that builds are bit-for-bit reproducible (#34902) would solve this, but perhaps a weaker solution is also feasible. (Originally we needed |
triage: P-medium Seems bad -- but maybe it's a distro issue? I'm not really clear on what the problem is here. |
I tried some vanilla builds, just Diff of
|
If we're enabling full bootstrap I think this is a reproducible builds issue, rather than anything else, possibly a regression. Without full bootstrap, we kind of guarantee that these are equivalent - it's not a guarantee, but in practice must be the case today at least symbol-wise since proc macros won't work otherwise. |
(@michaelwoerister -- can you weigh in on what @cuviper said?) |
@cuviper if you upload those two files somewhere, and the corresponding rlibs if you have them, I can run diffoscope on them which runs more than just |
ThinLTO seems not to be entirely deterministic and it is generally not recommended to compile dist artifacts with ThinLTO, I'd say. @alexcrichton would know more about what libraries in the |
I personally haven't ever run into a case where ThinLTO is nondeterministic yet, although that doesn't mean it's deterministic! It is true, yes, that stage1/stage2 artifacts should be identical, and if they're not that's indeed worrying! (although I don't know where that would come up...) |
triage: leaving as P-medium and unassigned, for now. |
@cuviper Could you comment if this is still an issue for distros? (Going through to triage rustbuild bugs currently) |
It hasn't been an issue for me because I stopped using |
I see no difference in stage1/2 libraries with |
serde_derive, pest_derive, structopt-derive, synstructure started to fail after 1.24 update.
With 1.23 everything was fine.
The text was updated successfully, but these errors were encountered: