File tree 2 files changed +30
-8
lines changed
2 files changed +30
-8
lines changed Original file line number Diff line number Diff line change @@ -266,13 +266,27 @@ impl BuildQueue {
266
266
. map ( |r| PackageKind :: Registry ( r. as_str ( ) ) )
267
267
. unwrap_or ( PackageKind :: CratesIo ) ;
268
268
269
- if let Err ( err ) = builder
269
+ match builder
270
270
. update_toolchain ( )
271
271
. context ( "Updating toolchain failed, locking queue" )
272
272
{
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 ) => { }
276
290
}
277
291
278
292
builder. build_package ( & krate. name , & krate. version , kind) ?;
Original file line number Diff line number Diff line change @@ -98,7 +98,14 @@ impl RustwideBuilder {
98
98
. enable_networking ( limits. networking ( ) )
99
99
}
100
100
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 > {
102
109
// Ignore errors if detection fails.
103
110
let old_version = self . detect_rustc_version ( ) . ok ( ) ;
104
111
@@ -157,11 +164,12 @@ impl RustwideBuilder {
157
164
}
158
165
159
166
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 {
161
170
self . add_essential_files ( ) ?;
162
171
}
163
-
164
- Ok ( ( ) )
172
+ Ok ( has_changed)
165
173
}
166
174
167
175
fn detect_rustc_version ( & self ) -> Result < String > {
You can’t perform that action at this time.
0 commit comments