@@ -550,7 +550,7 @@ impl RustwideBuilder {
550550 build. fetch_build_std_dependencies ( & targets) ?;
551551 }
552552
553- self . execute_json_build ( build_id, name, version, default_target, build, & metadata, & limits) ?;
553+ self . execute_json_build ( build_id, name, version, default_target, true , build, & metadata, & limits) ?;
554554
555555 let mut has_docs = false ;
556556 let mut successful_targets = Vec :: new ( ) ;
@@ -579,7 +579,7 @@ impl RustwideBuilder {
579579 . run_capture ( ) ?;
580580 }
581581 // let's assume the JSON build also failed when the main build failed
582- self . execute_json_build ( build_id, name, version, default_target, build, & metadata, & limits) ?;
582+ self . execute_json_build ( build_id, name, version, default_target, true , build, & metadata, & limits) ?;
583583 res =
584584 self . execute_build ( default_target, true , build, & limits, & metadata, false , collect_metrics) ?;
585585 }
@@ -611,7 +611,9 @@ impl RustwideBuilder {
611611 // Limit the number of targets so that no one can try to build all 200000 possible targets
612612 for target in other_targets. into_iter ( ) . take ( limits. targets ( ) ) {
613613 debug ! ( "building package {} {} for {}" , name, version, target) ;
614- self . execute_json_build ( build_id, name, version, target, build, & metadata, & limits) ?;
614+ if !metadata. proc_macro {
615+ self . execute_json_build ( build_id, name, version, target, false , build, & metadata, & limits) ?;
616+ }
615617 let target_res = self . build_target (
616618 target,
617619 build,
@@ -830,6 +832,7 @@ impl RustwideBuilder {
830832 name : & str ,
831833 version : & str ,
832834 target : & str ,
835+ is_default_target : bool ,
833836 build : & Build ,
834837 metadata : & Metadata ,
835838 limits : & Limits ,
@@ -860,17 +863,17 @@ impl RustwideBuilder {
860863 return Ok ( ( ) ) ;
861864 }
862865
863- // FIXME: support proc macro? just one time?
864- // let json_dir = if metadata.proc_macro {
865- // let target_dir = build.host_target_dir();
866- // let old_dir = target_dir.join("doc");
867- // let new_dir = target_dir.join(target).join("doc" );
868- // debug!("rename {} to {}", old_dir.display(), new_dir.display());
869- // std::fs::create_dir(target_dir.join(target))?;
870- // std::fs::rename(old_dir, new_dir)?;
871- // };
872-
873- let Some ( json_filename) = fs:: read_dir ( build . host_target_dir ( ) . join ( target ) . join ( "doc" ) ) ?
866+ let json_dir = if metadata . proc_macro {
867+ assert ! (
868+ is_default_target && target == HOST_TARGET ,
869+ "can't handle cross-compiling macros"
870+ ) ;
871+ build . host_target_dir ( ) . join ( "doc" )
872+ } else {
873+ build . host_target_dir ( ) . join ( target ) . join ( "doc" )
874+ } ;
875+
876+ let Some ( json_filename) = fs:: read_dir ( & json_dir ) ?
874877 . filter_map ( |entry| {
875878 let entry = entry. ok ( ) ?;
876879 let path = entry. path ( ) ;
@@ -884,7 +887,9 @@ impl RustwideBuilder {
884887 else {
885888 error ! (
886889 build_id = build_id. 0 ,
887- target, "no JSON file found in target/doc after successful rustdoc json build"
890+ json_dir = json_dir. to_str( ) ,
891+ target,
892+ "no JSON file found in target/doc after successful rustdoc json build"
888893 ) ;
889894 return Ok ( ( ) ) ;
890895 } ;
@@ -1443,16 +1448,15 @@ mod tests {
14431448 ) ) ?) ;
14441449
14451450 let json_prefix = format ! ( "rustdoc-json/{crate_}/{version}/{target}/" ) ;
1446- let json_files: Vec < _ > = storage
1451+ let mut json_files: Vec < _ > = storage
14471452 . list_prefix ( & json_prefix)
14481453 . filter_map ( |res| res. ok ( ) )
1454+ . map ( |f| f. strip_prefix ( & json_prefix) . unwrap ( ) . to_owned ( ) )
14491455 . collect ( ) ;
1456+ json_files. sort ( ) ;
14501457 dbg ! ( & json_files) ;
14511458 assert_eq ! (
1452- json_files
1453- . into_iter( )
1454- . map( |f| f. strip_prefix( & json_prefix) . unwrap( ) . to_owned( ) )
1455- . collect:: <Vec <_>>( ) ,
1459+ json_files,
14561460 vec![
14571461 "empty-library_1.0.0_i686-pc-windows-msvc_45.json.zst" . to_string( ) ,
14581462 "empty-library_1.0.0_i686-pc-windows-msvc_latest.json.zst" . to_string( ) ,
0 commit comments