Auto merge of #81380 - pietroalbini:cargo-pgo-lockfile, r=Mark-Simulacrum
Use the monorepo's lockfile when building cargo for PGO profiling Fixes https://github.com/rust-lang/rust/issues/81378. The description of the problem and the reasoning for the fix is in the source code comments. r? `@Mark-Simulacrum`
This commit is contained in:
commit
84864bfea9
1 changed files with 14 additions and 0 deletions
|
@ -24,6 +24,20 @@ pgo_perf_benchmark ctfe-stress-4
|
||||||
|
|
||||||
cp -pri ../src/tools/cargo /tmp/cargo
|
cp -pri ../src/tools/cargo /tmp/cargo
|
||||||
|
|
||||||
|
# The Cargo repository does not have a Cargo.lock in it, as it relies on the
|
||||||
|
# lockfile already present in the rust-lang/rust monorepo. This decision breaks
|
||||||
|
# down when Cargo is built outside the monorepo though (like in this case),
|
||||||
|
# resulting in a build without any dependency locking.
|
||||||
|
#
|
||||||
|
# To ensure Cargo is built with locked dependencies even during PGO profiling
|
||||||
|
# the following command copies the monorepo's lockfile into the Cargo temporary
|
||||||
|
# directory. Cargo will *not* keep that lockfile intact, as it will remove all
|
||||||
|
# the dependencies Cargo itself doesn't rely on. Still, it will prevent
|
||||||
|
# building Cargo with arbitrary dependency versions.
|
||||||
|
#
|
||||||
|
# See #81378 for the bug that prompted adding this.
|
||||||
|
cp -p ../Cargo.lock /tmp/cargo
|
||||||
|
|
||||||
# Build cargo (with some flags)
|
# Build cargo (with some flags)
|
||||||
function pgo_cargo {
|
function pgo_cargo {
|
||||||
RUSTC=./build/$PGO_HOST/stage2/bin/rustc \
|
RUSTC=./build/$PGO_HOST/stage2/bin/rustc \
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue