From 077e45a870906978a4cc3e7f2d65d173ac848f9c Mon Sep 17 00:00:00 2001 From: Denis Cornehl Date: Mon, 4 May 2026 05:54:02 +0200 Subject: [PATCH] perf(builder): skip coverage for non-default targets --- ...9df8f6419c177167ae0bfe8685033b6b8709e.json | 23 ------------ ...335259019b9e456f68dee9fcf3615581d27b5.json | 35 +++++++++++++++++++ ...9df8f6419c177167ae0bfe8685033b6b8709e.json | 23 ------------ ...335259019b9e456f68dee9fcf3615581d27b5.json | 35 +++++++++++++++++++ .../src/docbuilder/rustwide_builder.rs | 23 ++++++++---- 5 files changed, 87 insertions(+), 52 deletions(-) delete mode 100644 .sqlx/query-1fc879cc103367a688f9f7bcc079df8f6419c177167ae0bfe8685033b6b8709e.json create mode 100644 .sqlx/query-c54d439fab2d5393f5063b1f12b335259019b9e456f68dee9fcf3615581d27b5.json delete mode 100644 crates/bin/docs_rs_builder/.sqlx/query-1fc879cc103367a688f9f7bcc079df8f6419c177167ae0bfe8685033b6b8709e.json create mode 100644 crates/bin/docs_rs_builder/.sqlx/query-c54d439fab2d5393f5063b1f12b335259019b9e456f68dee9fcf3615581d27b5.json diff --git a/.sqlx/query-1fc879cc103367a688f9f7bcc079df8f6419c177167ae0bfe8685033b6b8709e.json b/.sqlx/query-1fc879cc103367a688f9f7bcc079df8f6419c177167ae0bfe8685033b6b8709e.json deleted file mode 100644 index d5ee6c7da..000000000 --- a/.sqlx/query-1fc879cc103367a688f9f7bcc079df8f6419c177167ae0bfe8685033b6b8709e.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "db_name": "PostgreSQL", - "query": "SELECT\n r.doc_targets\n FROM\n crates as c\n INNER JOIN releases AS r ON c.id = r.crate_id\n WHERE\n c.name = $1 AND\n r.version = $2", - "describe": { - "columns": [ - { - "ordinal": 0, - "name": "doc_targets", - "type_info": "Json" - } - ], - "parameters": { - "Left": [ - "Text", - "Text" - ] - }, - "nullable": [ - true - ] - }, - "hash": "1fc879cc103367a688f9f7bcc079df8f6419c177167ae0bfe8685033b6b8709e" -} diff --git a/.sqlx/query-c54d439fab2d5393f5063b1f12b335259019b9e456f68dee9fcf3615581d27b5.json b/.sqlx/query-c54d439fab2d5393f5063b1f12b335259019b9e456f68dee9fcf3615581d27b5.json new file mode 100644 index 000000000..e6e53e482 --- /dev/null +++ b/.sqlx/query-c54d439fab2d5393f5063b1f12b335259019b9e456f68dee9fcf3615581d27b5.json @@ -0,0 +1,35 @@ +{ + "db_name": "PostgreSQL", + "query": "SELECT\n r.doc_targets,\n cov.total_items,\n cov.documented_items\n FROM\n crates as c\n INNER JOIN releases AS r ON c.id = r.crate_id\n LEFT OUTER JOIN doc_coverage AS cov ON r.id = cov.release_id\n WHERE\n c.name = $1 AND\n r.version = $2", + "describe": { + "columns": [ + { + "ordinal": 0, + "name": "doc_targets", + "type_info": "Json" + }, + { + "ordinal": 1, + "name": "total_items", + "type_info": "Int4" + }, + { + "ordinal": 2, + "name": "documented_items", + "type_info": "Int4" + } + ], + "parameters": { + "Left": [ + "Text", + "Text" + ] + }, + "nullable": [ + true, + true, + true + ] + }, + "hash": "c54d439fab2d5393f5063b1f12b335259019b9e456f68dee9fcf3615581d27b5" +} diff --git a/crates/bin/docs_rs_builder/.sqlx/query-1fc879cc103367a688f9f7bcc079df8f6419c177167ae0bfe8685033b6b8709e.json b/crates/bin/docs_rs_builder/.sqlx/query-1fc879cc103367a688f9f7bcc079df8f6419c177167ae0bfe8685033b6b8709e.json deleted file mode 100644 index d5ee6c7da..000000000 --- a/crates/bin/docs_rs_builder/.sqlx/query-1fc879cc103367a688f9f7bcc079df8f6419c177167ae0bfe8685033b6b8709e.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "db_name": "PostgreSQL", - "query": "SELECT\n r.doc_targets\n FROM\n crates as c\n INNER JOIN releases AS r ON c.id = r.crate_id\n WHERE\n c.name = $1 AND\n r.version = $2", - "describe": { - "columns": [ - { - "ordinal": 0, - "name": "doc_targets", - "type_info": "Json" - } - ], - "parameters": { - "Left": [ - "Text", - "Text" - ] - }, - "nullable": [ - true - ] - }, - "hash": "1fc879cc103367a688f9f7bcc079df8f6419c177167ae0bfe8685033b6b8709e" -} diff --git a/crates/bin/docs_rs_builder/.sqlx/query-c54d439fab2d5393f5063b1f12b335259019b9e456f68dee9fcf3615581d27b5.json b/crates/bin/docs_rs_builder/.sqlx/query-c54d439fab2d5393f5063b1f12b335259019b9e456f68dee9fcf3615581d27b5.json new file mode 100644 index 000000000..e6e53e482 --- /dev/null +++ b/crates/bin/docs_rs_builder/.sqlx/query-c54d439fab2d5393f5063b1f12b335259019b9e456f68dee9fcf3615581d27b5.json @@ -0,0 +1,35 @@ +{ + "db_name": "PostgreSQL", + "query": "SELECT\n r.doc_targets,\n cov.total_items,\n cov.documented_items\n FROM\n crates as c\n INNER JOIN releases AS r ON c.id = r.crate_id\n LEFT OUTER JOIN doc_coverage AS cov ON r.id = cov.release_id\n WHERE\n c.name = $1 AND\n r.version = $2", + "describe": { + "columns": [ + { + "ordinal": 0, + "name": "doc_targets", + "type_info": "Json" + }, + { + "ordinal": 1, + "name": "total_items", + "type_info": "Int4" + }, + { + "ordinal": 2, + "name": "documented_items", + "type_info": "Int4" + } + ], + "parameters": { + "Left": [ + "Text", + "Text" + ] + }, + "nullable": [ + true, + true, + true + ] + }, + "hash": "c54d439fab2d5393f5063b1f12b335259019b9e456f68dee9fcf3615581d27b5" +} diff --git a/crates/bin/docs_rs_builder/src/docbuilder/rustwide_builder.rs b/crates/bin/docs_rs_builder/src/docbuilder/rustwide_builder.rs index 7763209d4..837a02569 100644 --- a/crates/bin/docs_rs_builder/src/docbuilder/rustwide_builder.rs +++ b/crates/bin/docs_rs_builder/src/docbuilder/rustwide_builder.rs @@ -445,6 +445,7 @@ impl RustwideBuilder { build, &limits, &metadata, + false, true, false, )?; @@ -675,7 +676,7 @@ impl RustwideBuilder { // Perform an initial build let mut res = - self.execute_build(build_id, name, version, default_target, true, build, &limits, &metadata, false, collect_metrics)?; + self.execute_build(build_id, name, version, default_target, true, build, &limits, &metadata, true, false, collect_metrics)?; // If the build fails with the lockfile given, try using only the dependencies listed in Cargo.toml. let cargo_lock = build.host_source_dir().join("Cargo.lock"); @@ -697,7 +698,7 @@ impl RustwideBuilder { .run_capture()?; } res = - self.execute_build(build_id, name, version, default_target, true, build, &limits, &metadata, false, collect_metrics)?; + self.execute_build(build_id, name, version, default_target, true, build, &limits, &metadata, true, false, collect_metrics)?; } if res.successful() @@ -932,6 +933,7 @@ impl RustwideBuilder { limits, metadata, false, + false, collect_metrics, )?; if target_res.successful() { @@ -1109,6 +1111,7 @@ impl RustwideBuilder { build: &Build, limits: &Limits, metadata: &Metadata, + gather_coverage: bool, create_essential_files: bool, collect_metrics: bool, ) -> Result { @@ -1136,10 +1139,10 @@ impl RustwideBuilder { let mut aggregated_build_stats = ProcessStatistics::default(); - // we have to run coverage before the doc-build because currently it + // We have to run coverage before the doc-build because currently it // deletes the doc-target folder. // https://github.com/rust-lang/cargo/issues/9447 - let (coverage_stats, doc_coverage) = + let (coverage_stats, doc_coverage) = if gather_coverage { match self.get_coverage(target, build, metadata, limits) { Ok((stats, cov)) => (stats, cov), Err(err) => { @@ -1149,7 +1152,10 @@ impl RustwideBuilder { ); (ProcessStatistics::default(), None) } - }; + } + } else { + (ProcessStatistics::default(), None) + }; aggregated_build_stats.merge_mut(coverage_stats); @@ -2258,10 +2264,13 @@ mod tests { let row = block_on_async_with_conn!(env, |mut conn| async { sqlx::query!( r#"SELECT - r.doc_targets + r.doc_targets, + cov.total_items, + cov.documented_items FROM crates as c INNER JOIN releases AS r ON c.id = r.crate_id + LEFT OUTER JOIN doc_coverage AS cov ON r.id = cov.release_id WHERE c.name = $1 AND r.version = $2"#, @@ -2285,6 +2294,8 @@ mod tests { assert_contains(&targets, "x86_64-apple-darwin"); // Part of the default targets. assert_contains(&targets, "aarch64-apple-darwin"); + assert!(row.total_items.unwrap() > 0); + assert!(row.documented_items.unwrap() > 0); Ok(()) }