Skip to content

Commit bb56ed8

Browse files
Nemo157syphar
authored andcommitted
Separate updating toolchain from adding essential files so they can have different retries
1 parent 747b0a1 commit bb56ed8

File tree

3 files changed

+44
-35
lines changed

3 files changed

+44
-35
lines changed

src/bin/cratesfyi.rs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -442,6 +442,14 @@ impl BuildSubcommand {
442442
rustwide_builder()?
443443
.update_toolchain()
444444
.context("failed to update toolchain")?;
445+
446+
rustwide_builder()?
447+
.purge_caches()
448+
.context("failed to purge caches")?;
449+
450+
rustwide_builder()?
451+
.add_essential_files()
452+
.context("failed to add essential files")?;
445453
}
446454

447455
Self::AddEssentialFiles => {

src/build_queue.rs

Lines changed: 36 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -440,6 +440,35 @@ impl BuildQueue {
440440
Ok(())
441441
}
442442

443+
fn update_toolchain(&self, builder: &mut RustwideBuilder) -> Result<()> {
444+
let updated = retry(
445+
|| {
446+
builder
447+
.update_toolchain()
448+
.context("downloading new toolchain failed")
449+
},
450+
3,
451+
)?;
452+
453+
if updated {
454+
// toolchain has changed, purge caches
455+
retry(
456+
|| {
457+
builder
458+
.purge_caches()
459+
.context("purging rustwide caches failed")
460+
},
461+
3,
462+
)?;
463+
464+
builder
465+
.add_essential_files()
466+
.context("adding essential files failed")?;
467+
}
468+
469+
Ok(())
470+
}
471+
443472
/// Builds the top package from the queue. Returns whether there was a package in the queue.
444473
///
445474
/// Note that this will return `Ok(true)` even if the package failed to build.
@@ -471,35 +500,13 @@ impl BuildQueue {
471500
return Err(err);
472501
}
473502

474-
match retry(
475-
|| {
476-
builder
477-
.update_toolchain()
478-
.context("Updating toolchain failed, locking queue")
479-
},
480-
3,
481-
) {
482-
Err(err) => {
483-
report_error(&err);
484-
self.lock()?;
485-
return Err(err);
486-
}
487-
Ok(true) => {
488-
// toolchain has changed, purge caches
489-
if let Err(err) = retry(
490-
|| {
491-
builder
492-
.purge_caches()
493-
.context("purging rustwide caches failed, locking queue")
494-
},
495-
3,
496-
) {
497-
report_error(&err);
498-
self.lock()?;
499-
return Err(err);
500-
}
501-
}
502-
Ok(false) => {}
503+
if let Err(err) = self
504+
.update_toolchain(&mut *builder)
505+
.context("Updating toolchain failed, locking queue")
506+
{
507+
report_error(&err);
508+
self.lock()?;
509+
return Err(err);
503510
}
504511

505512
builder.build_package(&krate.name, &krate.version, kind)?;

src/docbuilder/rustwide_builder.rs

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -222,9 +222,6 @@ impl RustwideBuilder {
222222
self.rustc_version = self.detect_rustc_version()?;
223223

224224
let has_changed = old_version.as_deref() != Some(&self.rustc_version);
225-
if has_changed {
226-
self.add_essential_files()?;
227-
}
228225
Ok(has_changed)
229226
}
230227

@@ -331,7 +328,6 @@ impl RustwideBuilder {
331328
}
332329

333330
pub fn build_local_package(&mut self, path: &Path) -> Result<bool> {
334-
self.update_toolchain()?;
335331
let metadata = CargoMetadata::load_from_rustwide(&self.workspace, &self.toolchain, path)
336332
.map_err(|err| {
337333
err.context(format!("failed to load local package {}", path.display()))
@@ -348,8 +344,6 @@ impl RustwideBuilder {
348344
) -> Result<bool> {
349345
let mut conn = self.db.get()?;
350346

351-
self.update_toolchain()?;
352-
353347
info!("building package {} {}", name, version);
354348

355349
if is_blacklisted(&mut conn, name)? {

0 commit comments

Comments
 (0)