about summary refs log tree commit diff
path: root/src/bootstrap
diff options
context:
space:
mode:
authorMatthias Krüger <matthias.krueger@famsik.de>2022-01-18 19:40:59 +0100
committerMatthias Krüger <matthias.krueger@famsik.de>2022-01-19 04:43:52 +0100
commit5f58a78da02c44138f73d5fa3bb6e820efe349ed (patch)
treee8fac6e1b29cfb6d994b3489cd1ea69ac0ec2475 /src/bootstrap
parent7531d2fdd49966d83830a7b4596c95587b1e9573 (diff)
downloadrust-5f58a78da02c44138f73d5fa3bb6e820efe349ed.tar.gz
rust-5f58a78da02c44138f73d5fa3bb6e820efe349ed.zip
build: dist: defer PlainSourceTarball
Apparently it changes some tool sources and invalidates their fingerprints, forcing us to build them several times (before and after vendoring sources).
I have not dug into why vendoring actually invalidates the figreprints, but the moving the vendoring lower in the pipeline seems to avoid the issue.
I could imagine that we somehow write a .cargo/config somewhere which somehow makes subsequent builds use the vendored deps but I was not able to find anything.

I checked the sizes of generated archives pre and post patch and their are the same, so I hope there is not functional change.

Fixes #93033
Diffstat (limited to 'src/bootstrap')
-rw-r--r--src/bootstrap/builder.rs6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/bootstrap/builder.rs b/src/bootstrap/builder.rs
index 6ccf8b1d522..d4dc61ea5a3 100644
--- a/src/bootstrap/builder.rs
+++ b/src/bootstrap/builder.rs
@@ -495,7 +495,6 @@ impl<'a> Builder<'a> {
                 dist::RustcDev,
                 dist::Analysis,
                 dist::Src,
-                dist::PlainSourceTarball,
                 dist::Cargo,
                 dist::Rls,
                 dist::RustAnalyzer,
@@ -506,6 +505,11 @@ impl<'a> Builder<'a> {
                 dist::LlvmTools,
                 dist::RustDev,
                 dist::Extended,
+                // It seems that PlainSourceTarball somehow changes how some of the tools
+                // perceive their dependencies (see #93033) which would invaliate fingerprints
+                // and force us to rebuild tools after vendoring dependencies.
+                // To work around this, create the Tarball after building all the tools.
+                dist::PlainSourceTarball,
                 dist::BuildManifest,
                 dist::ReproducibleArtifacts,
             ),