@@ -123,7 +123,9 @@ impl Std {
123
123
}
124
124
125
125
impl Step for Std {
126
- type Output = ( ) ;
126
+ /// Build stamp of std, if it was indeed built or uplifted.
127
+ type Output = Option < BuildStamp > ;
128
+
127
129
const DEFAULT : bool = true ;
128
130
129
131
fn should_run ( run : ShouldRun < ' _ > ) -> ShouldRun < ' _ > {
@@ -160,15 +162,15 @@ impl Step for Std {
160
162
/// This will build the standard library for a particular stage of the build
161
163
/// using the `compiler` targeting the `target` architecture. The artifacts
162
164
/// created will also be linked into the sysroot directory.
163
- fn run ( self , builder : & Builder < ' _ > ) {
165
+ fn run ( self , builder : & Builder < ' _ > ) -> Self :: Output {
164
166
let target = self . target ;
165
167
166
168
// We already have std ready to be used for stage 0.
167
169
if self . build_compiler . stage == 0 {
168
170
let compiler = self . build_compiler ;
169
171
builder. ensure ( StdLink :: from_std ( self , compiler) ) ;
170
172
171
- return ;
173
+ return None ;
172
174
}
173
175
174
176
let build_compiler = if builder. download_rustc ( ) && self . force_recompile {
@@ -193,7 +195,7 @@ impl Step for Std {
193
195
& sysroot,
194
196
builder. config . ci_rust_std_contents ( ) ,
195
197
) ;
196
- return ;
198
+ return None ;
197
199
}
198
200
199
201
if builder. config . keep_stage . contains ( & build_compiler. stage )
@@ -209,7 +211,7 @@ impl Step for Std {
209
211
self . copy_extra_objects ( builder, & build_compiler, target) ;
210
212
211
213
builder. ensure ( StdLink :: from_std ( self , build_compiler) ) ;
212
- return ;
214
+ return Some ( build_stamp :: libstd_stamp ( builder , build_compiler , target ) ) ;
213
215
}
214
216
215
217
let mut target_deps = builder. ensure ( StartupObjects { compiler : build_compiler, target } ) ;
@@ -219,7 +221,7 @@ impl Step for Std {
219
221
220
222
if Self :: should_be_uplifted_from_stage_1 ( builder, build_compiler. stage , target) {
221
223
let build_compiler_for_std_to_uplift = builder. compiler ( 1 , builder. host_target ) ;
222
- builder. std ( build_compiler_for_std_to_uplift, target) ;
224
+ let stage_1_stamp = builder. std ( build_compiler_for_std_to_uplift, target) ;
223
225
224
226
let msg = if build_compiler_for_std_to_uplift. host == target {
225
227
format ! (
@@ -240,7 +242,7 @@ impl Step for Std {
240
242
self . copy_extra_objects ( builder, & build_compiler, target) ;
241
243
242
244
builder. ensure ( StdLink :: from_std ( self , build_compiler_for_std_to_uplift) ) ;
243
- return ;
245
+ return stage_1_stamp ;
244
246
}
245
247
246
248
target_deps. extend ( self . copy_extra_objects ( builder, & build_compiler, target) ) ;
@@ -293,11 +295,13 @@ impl Step for Std {
293
295
build_compiler,
294
296
target,
295
297
) ;
298
+
299
+ let stamp = build_stamp:: libstd_stamp ( builder, build_compiler, target) ;
296
300
run_cargo (
297
301
builder,
298
302
cargo,
299
303
vec ! [ ] ,
300
- & build_stamp :: libstd_stamp ( builder , build_compiler , target ) ,
304
+ & stamp ,
301
305
target_deps,
302
306
self . is_for_mir_opt_tests , // is_check
303
307
false ,
@@ -307,6 +311,7 @@ impl Step for Std {
307
311
self ,
308
312
builder. compiler ( build_compiler. stage , builder. config . host_target ) ,
309
313
) ) ;
314
+ Some ( stamp)
310
315
}
311
316
312
317
fn metadata ( & self ) -> Option < StepMetadata > {
0 commit comments