Skip to content

Commit

Permalink
Auto merge of #81380 - pietroalbini:cargo-pgo-lockfile, r=Mark-Simula…
Browse files Browse the repository at this point in the history
…crum

Use the monorepo's lockfile when building cargo for PGO profiling

Fixes #81378. The description of the problem and the reasoning for the fix is in the source code comments.

r? `@Mark-Simulacrum`
  • Loading branch information
bors committed Jan 25, 2021
2 parents d3163e9 + b2e6f33 commit 84864bf
Showing 1 changed file with 14 additions and 0 deletions.
14 changes: 14 additions & 0 deletions src/ci/pgo.sh
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,20 @@ pgo_perf_benchmark ctfe-stress-4

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)
function pgo_cargo {
RUSTC=./build/$PGO_HOST/stage2/bin/rustc \
Expand Down

0 comments on commit 84864bf

Please sign in to comment.