@@ -303,7 +303,8 @@ impl RustwideBuilder {
303303 . run ( |build| {
304304 let metadata = Metadata :: from_crate_root ( build. host_source_dir ( ) ) ?;
305305
306- let res = self . execute_build ( HOST_TARGET , true , build, & limits, & metadata, true ) ?;
306+ let res =
307+ self . execute_build ( HOST_TARGET , true , build, & limits, & metadata, true , false ) ?;
307308 if !res. result . successful {
308309 bail ! ( "failed to build dummy crate for {}" , rustc_version) ;
309310 }
@@ -351,7 +352,12 @@ impl RustwideBuilder {
351352 err. context ( format ! ( "failed to load local package {}" , path. display( ) ) )
352353 } ) ?;
353354 let package = metadata. root ( ) ;
354- self . build_package ( & package. name , & package. version , PackageKind :: Local ( path) )
355+ self . build_package (
356+ & package. name ,
357+ & package. version ,
358+ PackageKind :: Local ( path) ,
359+ false ,
360+ )
355361 }
356362
357363 #[ instrument( name = "docbuilder.build_package" , parent = None , skip( self , name) , fields( krate=name) ) ]
@@ -360,6 +366,7 @@ impl RustwideBuilder {
360366 name : & str ,
361367 version : & str ,
362368 kind : PackageKind < ' _ > ,
369+ collect_metrics : bool ,
363370 ) -> Result < BuildPackageSummary > {
364371 let ( crate_id, release_id, build_id) = self . runtime . block_on ( async {
365372 let mut conn = self . db . get_async ( ) . await ?;
@@ -369,7 +376,15 @@ impl RustwideBuilder {
369376 Ok :: < _ , Error > ( ( crate_id, release_id, build_id) )
370377 } ) ?;
371378
372- match self . build_package_inner ( name, version, kind, crate_id, release_id, build_id) {
379+ match self . build_package_inner (
380+ name,
381+ version,
382+ kind,
383+ crate_id,
384+ release_id,
385+ build_id,
386+ collect_metrics,
387+ ) {
373388 Ok ( successful) => Ok ( BuildPackageSummary {
374389 successful,
375390 should_reattempt : false ,
@@ -391,6 +406,7 @@ impl RustwideBuilder {
391406 }
392407 }
393408
409+ #[ allow( clippy:: too_many_arguments) ]
394410 fn build_package_inner (
395411 & mut self ,
396412 name : & str ,
@@ -399,6 +415,7 @@ impl RustwideBuilder {
399415 crate_id : CrateId ,
400416 release_id : ReleaseId ,
401417 build_id : BuildId ,
418+ collect_metrics : bool ,
402419 ) -> Result < bool > {
403420 info ! ( "building package {} {}" , name, version) ;
404421
@@ -506,7 +523,7 @@ impl RustwideBuilder {
506523
507524 // Perform an initial build
508525 let mut res =
509- self . execute_build ( default_target, true , build, & limits, & metadata, false ) ?;
526+ self . execute_build ( default_target, true , build, & limits, & metadata, false , collect_metrics ) ?;
510527
511528 // If the build fails with the lockfile given, try using only the dependencies listed in Cargo.toml.
512529 let cargo_lock = build. host_source_dir ( ) . join ( "Cargo.lock" ) ;
@@ -528,7 +545,7 @@ impl RustwideBuilder {
528545 . run_capture ( ) ?;
529546 }
530547 res =
531- self . execute_build ( default_target, true , build, & limits, & metadata, false ) ?;
548+ self . execute_build ( default_target, true , build, & limits, & metadata, false , collect_metrics ) ?;
532549 }
533550
534551 if res. result . successful {
@@ -565,6 +582,7 @@ impl RustwideBuilder {
565582 local_storage. path ( ) ,
566583 & mut successful_targets,
567584 & metadata,
585+ collect_metrics,
568586 ) ?;
569587 target_build_logs. insert ( target, target_res. build_log ) ;
570588 }
@@ -730,6 +748,7 @@ impl RustwideBuilder {
730748 }
731749
732750 #[ instrument( skip( self , build) ) ]
751+ #[ allow( clippy:: too_many_arguments) ]
733752 fn build_target (
734753 & self ,
735754 target : & str ,
@@ -738,8 +757,17 @@ impl RustwideBuilder {
738757 local_storage : & Path ,
739758 successful_targets : & mut Vec < String > ,
740759 metadata : & Metadata ,
760+ collect_metrics : bool ,
741761 ) -> Result < FullBuildResult > {
742- let target_res = self . execute_build ( target, false , build, limits, metadata, false ) ?;
762+ let target_res = self . execute_build (
763+ target,
764+ false ,
765+ build,
766+ limits,
767+ metadata,
768+ false ,
769+ collect_metrics,
770+ ) ?;
743771 if target_res. result . successful {
744772 // Cargo is not giving any error and not generating documentation of some crates
745773 // when we use a target compile options. Check documentation exists before
@@ -782,7 +810,7 @@ impl RustwideBuilder {
782810 items_with_examples : 0 ,
783811 } ;
784812
785- self . prepare_command ( build, target, metadata, limits, rustdoc_flags) ?
813+ self . prepare_command ( build, target, metadata, limits, rustdoc_flags, false ) ?
786814 . process_lines ( & mut |line, _| {
787815 if line. starts_with ( '{' ) && line. ends_with ( '}' ) {
788816 let parsed = match serde_json:: from_str :: < HashMap < String , FileCoverage > > ( line) {
@@ -810,6 +838,7 @@ impl RustwideBuilder {
810838 }
811839
812840 #[ instrument( skip( self , build) ) ]
841+ #[ allow( clippy:: too_many_arguments) ]
813842 fn execute_build (
814843 & self ,
815844 target : & str ,
@@ -818,6 +847,7 @@ impl RustwideBuilder {
818847 limits : & Limits ,
819848 metadata : & Metadata ,
820849 create_essential_files : bool ,
850+ collect_metrics : bool ,
821851 ) -> Result < FullBuildResult > {
822852 let cargo_metadata = CargoMetadata :: load_from_rustwide (
823853 & self . workspace ,
@@ -856,22 +886,32 @@ impl RustwideBuilder {
856886 let successful = {
857887 let _span = info_span ! ( "cargo_build" , target = %target, is_default_target) . entered ( ) ;
858888 logging:: capture ( & storage, || {
859- self . prepare_command ( build, target, metadata, limits, rustdoc_flags)
860- . and_then ( |command| command. run ( ) . map_err ( Error :: from) )
861- . is_ok ( )
889+ self . prepare_command (
890+ build,
891+ target,
892+ metadata,
893+ limits,
894+ rustdoc_flags,
895+ collect_metrics,
896+ )
897+ . and_then ( |command| command. run ( ) . map_err ( Error :: from) )
898+ . is_ok ( )
862899 } )
863900 } ;
864901
865- if let Some ( compiler_metric_target_dir) = & self . config . compiler_metrics_collection_path {
866- let metric_output = build. host_target_dir ( ) . join ( "metrics/" ) ;
867- info ! (
868- "found {} files in metric dir, copy over to {} (exists: {})" ,
869- fs:: read_dir( & metric_output) ?. count( ) ,
870- & compiler_metric_target_dir. to_string_lossy( ) ,
871- & compiler_metric_target_dir. exists( ) ,
872- ) ;
873- copy_dir_all ( & metric_output, compiler_metric_target_dir) ?;
874- fs:: remove_dir_all ( & metric_output) ?;
902+ if collect_metrics {
903+ if let Some ( compiler_metric_target_dir) = & self . config . compiler_metrics_collection_path
904+ {
905+ let metric_output = build. host_target_dir ( ) . join ( "metrics/" ) ;
906+ info ! (
907+ "found {} files in metric dir, copy over to {} (exists: {})" ,
908+ fs:: read_dir( & metric_output) ?. count( ) ,
909+ & compiler_metric_target_dir. to_string_lossy( ) ,
910+ & compiler_metric_target_dir. exists( ) ,
911+ ) ;
912+ copy_dir_all ( & metric_output, compiler_metric_target_dir) ?;
913+ fs:: remove_dir_all ( & metric_output) ?;
914+ }
875915 }
876916
877917 // For proc-macros, cargo will put the output in `target/doc`.
@@ -911,6 +951,7 @@ impl RustwideBuilder {
911951 metadata : & Metadata ,
912952 limits : & Limits ,
913953 mut rustdoc_flags_extras : Vec < String > ,
954+ collect_metrics : bool ,
914955 ) -> Result < Command < ' ws , ' pl > > {
915956 // Add docs.rs specific arguments
916957 let mut cargo_args = vec ! [
@@ -978,7 +1019,7 @@ impl RustwideBuilder {
9781019 command = command. env ( key, val) ;
9791020 }
9801021
981- if self . config . compiler_metrics_collection_path . is_some ( ) {
1022+ if collect_metrics && self . config . compiler_metrics_collection_path . is_some ( ) {
9821023 // set the `./target/metrics/` directory inside the build container
9831024 // as a target directory for the metric files.
9841025 let flag = "-Zmetrics-dir=/opt/rustwide/target/metrics" ;
@@ -1151,7 +1192,7 @@ mod tests {
11511192 builder. update_toolchain ( ) ?;
11521193 assert ! (
11531194 builder
1154- . build_package( crate_, version, PackageKind :: CratesIo ) ?
1195+ . build_package( crate_, version, PackageKind :: CratesIo , false ) ?
11551196 . successful
11561197 ) ;
11571198
@@ -1309,7 +1350,7 @@ mod tests {
13091350 builder. update_toolchain ( ) ?;
13101351 assert ! (
13111352 builder
1312- . build_package( crate_, version, PackageKind :: CratesIo ) ?
1353+ . build_package( crate_, version, PackageKind :: CratesIo , true ) ?
13131354 . successful
13141355 ) ;
13151356
@@ -1344,7 +1385,7 @@ mod tests {
13441385 builder. update_toolchain ( ) ?;
13451386 assert ! (
13461387 !builder
1347- . build_package( crate_, version, PackageKind :: CratesIo ) ?
1388+ . build_package( crate_, version, PackageKind :: CratesIo , false ) ?
13481389 . successful
13491390 ) ;
13501391
@@ -1464,7 +1505,7 @@ mod tests {
14641505 assert ! (
14651506 // not successful build
14661507 !builder
1467- . build_package( crate_, version, PackageKind :: CratesIo ) ?
1508+ . build_package( crate_, version, PackageKind :: CratesIo , false ) ?
14681509 . successful
14691510 ) ;
14701511
@@ -1483,7 +1524,7 @@ mod tests {
14831524 builder. update_toolchain ( ) ?;
14841525 assert ! (
14851526 builder
1486- . build_package( crate_, version, PackageKind :: CratesIo ) ?
1527+ . build_package( crate_, version, PackageKind :: CratesIo , false ) ?
14871528 . successful
14881529 ) ;
14891530
@@ -1514,7 +1555,7 @@ mod tests {
15141555 }
15151556 assert ! (
15161557 builder
1517- . build_package( crate_, version, PackageKind :: CratesIo ) ?
1558+ . build_package( crate_, version, PackageKind :: CratesIo , false ) ?
15181559 . successful
15191560 ) ;
15201561
@@ -1570,7 +1611,7 @@ mod tests {
15701611 builder. update_toolchain ( ) ?;
15711612 assert ! (
15721613 builder
1573- . build_package( crate_, version, PackageKind :: CratesIo ) ?
1614+ . build_package( crate_, version, PackageKind :: CratesIo , false ) ?
15741615 . successful
15751616 ) ;
15761617
@@ -1597,7 +1638,7 @@ mod tests {
15971638 builder. update_toolchain ( ) ?;
15981639 assert ! (
15991640 builder
1600- . build_package( crate_, version, PackageKind :: CratesIo ) ?
1641+ . build_package( crate_, version, PackageKind :: CratesIo , false ) ?
16011642 . successful
16021643 ) ;
16031644
@@ -1615,7 +1656,7 @@ mod tests {
16151656 builder. update_toolchain ( ) ?;
16161657 assert ! (
16171658 builder
1618- . build_package( crate_, version, PackageKind :: CratesIo ) ?
1659+ . build_package( crate_, version, PackageKind :: CratesIo , false ) ?
16191660 . successful
16201661 ) ;
16211662 Ok ( ( ) )
@@ -1638,7 +1679,7 @@ mod tests {
16381679 // `Result` is `Ok`, but the build-result is `false`
16391680 assert ! (
16401681 !builder
1641- . build_package( crate_, version, PackageKind :: CratesIo ) ?
1682+ . build_package( crate_, version, PackageKind :: CratesIo , false ) ?
16421683 . successful
16431684 ) ;
16441685
@@ -1666,7 +1707,7 @@ mod tests {
16661707 builder. update_toolchain ( ) ?;
16671708
16681709 // `Result` is `Ok`, but the build-result is `false`
1669- let summary = builder. build_package ( crate_, version, PackageKind :: CratesIo ) ?;
1710+ let summary = builder. build_package ( crate_, version, PackageKind :: CratesIo , false ) ?;
16701711
16711712 assert ! ( !summary. successful) ;
16721713 assert ! ( summary. should_reattempt) ;
@@ -1710,7 +1751,7 @@ mod tests {
17101751 builder. update_toolchain ( ) ?;
17111752 assert ! (
17121753 builder
1713- . build_package( crate_, version, PackageKind :: CratesIo ) ?
1754+ . build_package( crate_, version, PackageKind :: CratesIo , false ) ?
17141755 . successful
17151756 ) ;
17161757
@@ -1735,7 +1776,7 @@ mod tests {
17351776 builder. update_toolchain ( ) ?;
17361777 assert ! (
17371778 builder
1738- . build_package( crate_, version, PackageKind :: CratesIo ) ?
1779+ . build_package( crate_, version, PackageKind :: CratesIo , false ) ?
17391780 . successful
17401781 ) ;
17411782
@@ -1822,7 +1863,12 @@ mod tests {
18221863 let mut builder = RustwideBuilder :: init ( env) ?;
18231864 assert ! (
18241865 builder
1825- . build_package( DUMMY_CRATE_NAME , DUMMY_CRATE_VERSION , PackageKind :: CratesIo ) ?
1866+ . build_package(
1867+ DUMMY_CRATE_NAME ,
1868+ DUMMY_CRATE_VERSION ,
1869+ PackageKind :: CratesIo ,
1870+ false
1871+ ) ?
18261872 . successful
18271873 ) ;
18281874 assert_eq ! ( old_version, builder. rustc_version( ) ?) ;
0 commit comments