diff options
| author | bors <bors@rust-lang.org> | 2025-02-26 09:42:41 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2025-02-26 09:42:41 +0000 |
| commit | 2af87eab3b4890d62ad998cf9c55e076d91bf06a (patch) | |
| tree | 7ec973e06a415541841413fa08cc5772289226f6 /compiler/rustc_ty_utils/src/instance.rs | |
| parent | 2b3cef882aa9085db417837ac6152463060f1f8a (diff) | |
| parent | 4f87987e3f361a7d38bdf59d6542ba621f100c9e (diff) | |
| download | rust-2af87eab3b4890d62ad998cf9c55e076d91bf06a.tar.gz rust-2af87eab3b4890d62ad998cf9c55e076d91bf06a.zip | |
Auto merge of #137036 - jieyouxu:drivers-license, r=Kobzol
Include version number of libs being built in cargo lib metadata (esp. `librustc_driver*.so`)
Previously, on a non-stable channel, it's possible for two builds from different versioned sources (e.g. 1.84.0 vs 1.84.1) to produce a `librustc_driver*.so` with the same filename hashes. This causes problems with side-by-side installs wrt. linker search paths because 1.84.1 rustc bin and 1.84.0 rustc bin may try to link to the "same" `librustc_driver*.so` (same filename hash) but fail because the contents of the so is actually different.
We try to mitigate this by including the version number of artifacts being built via `__CARGO_DEFAULT_LIB_METADATA` (kind of an ugly hack, but I don't think cargo has a way for us to tell cargo to use a package version override).
Fixes #136701 (mitigates, really).
### Testing
Tested manually[^host] by:
```bash
$ cat src/version
1.86.0
$ ./x build library # w/ compiler profile, (non-stable) dev channel
$ lddtree build/host/stage1/bin/rustc
rustc => build/host/stage1/bin/rustc (interpreter => /lib64/ld-linux-x86-64.so.2)
librustc_driver-ea1b1b2291881cc4.so => build/host/stage1/bin/../lib/librustc_driver-ea1b1b2291881cc4.so
[...]
```
and observing that changing `src/version` to bump a point release causes `librustc_driver*.so` to have a different hash while sources are unmodified otherwise.
```bash
$ cat src/version
1.86.1
$ ./x build library # w/ compiler profile, (non-stable) dev channel
$ lddtree build/host/stage1/bin/rustc
rustc => build/host/stage1/bin/rustc (interpreter => /lib64/ld-linux-x86-64.so.2)
librustc_driver-746badadbcb74721.so => build/host/stage1/bin/../lib/librustc_driver-746badadbcb74721.so
[...]
```
cc `@clan` `@demize` could you check that if you backport this change against 1.84.{0,1} as reported in #136701, that the produced `rustc` binary works, under the context of the Gentoo build system setup?
[^host]: on a `x86_64-unknown-linux-gnu` host, no cross
Diffstat (limited to 'compiler/rustc_ty_utils/src/instance.rs')
0 files changed, 0 insertions, 0 deletions
