about summary refs log tree commit diff
path: root/src/rustllvm/RustWrapper.cpp
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2017-06-01 07:44:01 +0000
committerbors <bors@rust-lang.org>2017-06-01 07:44:01 +0000
commitafd4b81c8642016dcb3a641d45a1258193dab958 (patch)
tree2f84b4f26526c60ea1c49d9d5f0164a44cb537ab /src/rustllvm/RustWrapper.cpp
parent38efb2e1ccf210b0108d2b88ee9d4ddcd8e91a3a (diff)
parent2dab1e21509c4ffa8f1ea93d4a70c5a33cc6fe1d (diff)
downloadrust-afd4b81c8642016dcb3a641d45a1258193dab958.tar.gz
rust-afd4b81c8642016dcb3a641d45a1258193dab958.zip
Auto merge of #42263 - alexcrichton:fix-copies, r=Mark-Simulacrum
rustbuild: Fix copying duplicate crates into the sysroot

After compiling a project (e.g. libstd, libtest, or librustc) rustbuild needs to
copy over all artifacts into the sysroot of the compiler it's assembling.
Unfortunately rustbuild doesn't know precisely what files to copy! Today it has
a heuristic where it just looks at the most recent version of all files that
look like rlibs/dylibs and copies those over. This unfortunately leads to bugs
with different versions of the same crate as seen in #42261.

This commit updates rustbuild's strategy of copying artifacts to work off the
list of artifacts produced by `cargo build --message-format=json`. The build
system will now parse json messages coming out of Cargo to watch for files being
generated, and then it'll only copy over those precise files.

Note that there's still a bit of weird logic where Cargo prints that it's
creating `libstd.rlib` where we actually want `libstd-xxxxx.rlib`, so we still
do a bit of "most recent file" probing for those. This commit should take care
of the crates.io dependency issues, however, as they're all copied over
precisely.

Closes #42261
Diffstat (limited to 'src/rustllvm/RustWrapper.cpp')
0 files changed, 0 insertions, 0 deletions