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 {
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 => {
Original file line number Diff line number Diff 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) ?;
Original file line number Diff line number Diff 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) ? {
You can’t perform that action at this time.
0 commit comments