File tree Expand file tree Collapse file tree 2 files changed +30
-8
lines changed Expand file tree Collapse file tree 2 files changed +30
-8
lines changed Original file line number Diff line number Diff line change @@ -266,13 +266,27 @@ impl BuildQueue {
266266 . map ( |r| PackageKind :: Registry ( r. as_str ( ) ) )
267267 . unwrap_or ( PackageKind :: CratesIo ) ;
268268
269- if let Err ( err ) = builder
269+ match builder
270270 . update_toolchain ( )
271271 . context ( "Updating toolchain failed, locking queue" )
272272 {
273- report_error ( & err) ;
274- self . lock ( ) ?;
275- return Err ( err) ;
273+ Err ( err) => {
274+ report_error ( & err) ;
275+ self . lock ( ) ?;
276+ return Err ( err) ;
277+ }
278+ Ok ( true ) => {
279+ // toolchain has changed, purge caches
280+ if let Err ( err) = builder
281+ . purge_caches ( )
282+ . context ( "purging rustwide caches failed, locking queue" )
283+ {
284+ report_error ( & err) ;
285+ self . lock ( ) ?;
286+ return Err ( err) ;
287+ }
288+ }
289+ Ok ( false ) => { }
276290 }
277291
278292 builder. build_package ( & krate. name , & krate. version , kind) ?;
Original file line number Diff line number Diff line change @@ -98,7 +98,14 @@ impl RustwideBuilder {
9898 . enable_networking ( limits. networking ( ) )
9999 }
100100
101- pub fn update_toolchain ( & mut self ) -> Result < ( ) > {
101+ pub fn purge_caches ( & self ) -> Result < ( ) > {
102+ self . workspace
103+ . purge_all_caches ( )
104+ . map_err ( FailureError :: compat) ?;
105+ Ok ( ( ) )
106+ }
107+
108+ pub fn update_toolchain ( & mut self ) -> Result < bool > {
102109 // Ignore errors if detection fails.
103110 let old_version = self . detect_rustc_version ( ) . ok ( ) ;
104111
@@ -157,11 +164,12 @@ impl RustwideBuilder {
157164 }
158165
159166 self . rustc_version = self . detect_rustc_version ( ) ?;
160- if old_version. as_deref ( ) != Some ( & self . rustc_version ) {
167+
168+ let has_changed = old_version. as_deref ( ) != Some ( & self . rustc_version ) ;
169+ if has_changed {
161170 self . add_essential_files ( ) ?;
162171 }
163-
164- Ok ( ( ) )
172+ Ok ( has_changed)
165173 }
166174
167175 fn detect_rustc_version ( & self ) -> Result < String > {
You can’t perform that action at this time.
0 commit comments