File tree Expand file tree Collapse file tree 3 files changed +44
-35
lines changed Expand file tree Collapse file tree 3 files changed +44
-35
lines changed Original file line number Diff line number Diff line change @@ -442,6 +442,14 @@ impl BuildSubcommand {
442
442
rustwide_builder ( ) ?
443
443
. update_toolchain ( )
444
444
. 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" ) ?;
445
453
}
446
454
447
455
Self :: AddEssentialFiles => {
Original file line number Diff line number Diff line change @@ -440,6 +440,35 @@ impl BuildQueue {
440
440
Ok ( ( ) )
441
441
}
442
442
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
+
443
472
/// Builds the top package from the queue. Returns whether there was a package in the queue.
444
473
///
445
474
/// Note that this will return `Ok(true)` even if the package failed to build.
@@ -471,35 +500,13 @@ impl BuildQueue {
471
500
return Err ( err) ;
472
501
}
473
502
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) ;
503
510
}
504
511
505
512
builder. build_package ( & krate. name , & krate. version , kind) ?;
Original file line number Diff line number Diff line change @@ -222,9 +222,6 @@ impl RustwideBuilder {
222
222
self . rustc_version = self . detect_rustc_version ( ) ?;
223
223
224
224
let has_changed = old_version. as_deref ( ) != Some ( & self . rustc_version ) ;
225
- if has_changed {
226
- self . add_essential_files ( ) ?;
227
- }
228
225
Ok ( has_changed)
229
226
}
230
227
@@ -331,7 +328,6 @@ impl RustwideBuilder {
331
328
}
332
329
333
330
pub fn build_local_package ( & mut self , path : & Path ) -> Result < bool > {
334
- self . update_toolchain ( ) ?;
335
331
let metadata = CargoMetadata :: load_from_rustwide ( & self . workspace , & self . toolchain , path)
336
332
. map_err ( |err| {
337
333
err. context ( format ! ( "failed to load local package {}" , path. display( ) ) )
@@ -348,8 +344,6 @@ impl RustwideBuilder {
348
344
) -> Result < bool > {
349
345
let mut conn = self . db . get ( ) ?;
350
346
351
- self . update_toolchain ( ) ?;
352
-
353
347
info ! ( "building package {} {}" , name, version) ;
354
348
355
349
if is_blacklisted ( & mut conn, name) ? {
You can’t perform that action at this time.
0 commit comments