@@ -89,6 +89,9 @@ fn run_cargo<DB: WriteResults>(
89
89
rustflags. push ( ' ' ) ;
90
90
rustflags. push_str ( tc_rustflags) ;
91
91
}
92
+ // Limit debuginfo in an effort to decrease linker peak memory usage, while retaining enough
93
+ // information to get useful backtraces.
94
+ rustflags. push_str ( " -Cdebuginfo=1" ) ;
92
95
93
96
let rustflags_env = if let Some ( & "doc" ) = args. get ( 0 ) {
94
97
"RUSTDOCFLAGS"
@@ -210,6 +213,7 @@ pub(super) fn run_test<DB: WriteResults>(
210
213
) ;
211
214
let sandbox = SandboxBuilder :: new ( )
212
215
. memory_limit ( Some ( ctx. config . sandbox . memory_limit . to_bytes ( ) ) )
216
+ . cpu_limit ( Some ( ctx. config . sandbox . cpu_limit ) )
213
217
. enable_networking ( false ) ;
214
218
215
219
let krate = & ctx. krate . to_rustwide ( ) ;
@@ -235,28 +239,51 @@ fn build<DB: WriteResults>(
235
239
build_env : & Build ,
236
240
local_packages_id : & HashSet < PackageId > ,
237
241
) -> Fallible < ( ) > {
242
+ let cpus = ctx. config . sandbox . cpu_limit . to_string ( ) ;
238
243
run_cargo (
239
244
ctx,
240
245
build_env,
241
- & [ "build" , "--frozen" , "--message-format=json" ] ,
246
+ & [
247
+ "build" ,
248
+ "--frozen" ,
249
+ "--message-format=json" ,
250
+ "--jobs" ,
251
+ & cpus,
252
+ ] ,
242
253
true ,
243
254
local_packages_id,
244
255
) ?;
245
256
run_cargo (
246
257
ctx,
247
258
build_env,
248
- & [ "test" , "--frozen" , "--no-run" , "--message-format=json" ] ,
259
+ & [
260
+ "test" ,
261
+ "--frozen" ,
262
+ "--no-run" ,
263
+ "--message-format=json" ,
264
+ "--jobs" ,
265
+ & cpus,
266
+ ] ,
249
267
true ,
250
268
local_packages_id,
251
269
) ?;
252
270
Ok ( ( ) )
253
271
}
254
272
255
273
fn test < DB : WriteResults > ( ctx : & TaskCtx < DB > , build_env : & Build ) -> Fallible < ( ) > {
274
+ let cpus = ctx. config . sandbox . cpu_limit . to_string ( ) ;
256
275
run_cargo (
257
276
ctx,
258
277
build_env,
259
- & [ "test" , "--frozen" ] ,
278
+ & [
279
+ "test" ,
280
+ "--frozen" ,
281
+ "--jobs" ,
282
+ & cpus,
283
+ "--" ,
284
+ "--test-threads" ,
285
+ & cpus,
286
+ ] ,
260
287
false ,
261
288
& HashSet :: new ( ) ,
262
289
)
@@ -299,6 +326,7 @@ pub(super) fn test_check_only<DB: WriteResults>(
299
326
build_env : & Build ,
300
327
local_packages_id : & HashSet < PackageId > ,
301
328
) -> Fallible < TestResult > {
329
+ let cpus = ctx. config . sandbox . cpu_limit . to_string ( ) ;
302
330
if let Err ( err) = run_cargo (
303
331
ctx,
304
332
build_env,
@@ -308,6 +336,8 @@ pub(super) fn test_check_only<DB: WriteResults>(
308
336
"--all" ,
309
337
"--all-targets" ,
310
338
"--message-format=json" ,
339
+ "--jobs" ,
340
+ & cpus,
311
341
] ,
312
342
true ,
313
343
local_packages_id,
@@ -323,6 +353,7 @@ pub(super) fn test_clippy_only<DB: WriteResults>(
323
353
build_env : & Build ,
324
354
local_packages_id : & HashSet < PackageId > ,
325
355
) -> Fallible < TestResult > {
356
+ let cpus = ctx. config . sandbox . cpu_limit . to_string ( ) ;
326
357
if let Err ( err) = run_cargo (
327
358
ctx,
328
359
build_env,
@@ -332,6 +363,8 @@ pub(super) fn test_clippy_only<DB: WriteResults>(
332
363
"--all" ,
333
364
"--all-targets" ,
334
365
"--message-format=json" ,
366
+ "--jobs" ,
367
+ & cpus,
335
368
] ,
336
369
true ,
337
370
local_packages_id,
@@ -347,6 +380,7 @@ pub(super) fn test_rustdoc<DB: WriteResults>(
347
380
build_env : & Build ,
348
381
local_packages_id : & HashSet < PackageId > ,
349
382
) -> Fallible < TestResult > {
383
+ let cpus = ctx. config . sandbox . cpu_limit . to_string ( ) ;
350
384
let res = run_cargo (
351
385
ctx,
352
386
build_env,
@@ -356,6 +390,8 @@ pub(super) fn test_rustdoc<DB: WriteResults>(
356
390
"--no-deps" ,
357
391
"--document-private-items" ,
358
392
"--message-format=json" ,
393
+ "--jobs" ,
394
+ & cpus,
359
395
] ,
360
396
true ,
361
397
local_packages_id,
0 commit comments