diff options
author | Treehugger Robot <android-test-infra-autosubmit@system.gserviceaccount.com> | 2024-04-17 19:26:40 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2024-04-17 19:26:40 +0000 |
commit | 2d340ba5bc117b35218ec5f1e1bdcb3cd9937bc6 (patch) | |
tree | 80f13aa8cd6fa4222a67fb349b3e38ee0dbe97cb | |
parent | fbb70489fd4484a41076c1e8cf60cc9398d8bff0 (diff) | |
parent | c7d610df5a41c944e5a47460677367083a5f6332 (diff) | |
download | development-2d340ba5bc117b35218ec5f1e1bdcb3cd9937bc6.tar.gz |
Merge changes I6e2dcaef,Ie653d82b,I3d8e80b6 into main
* changes:
Allow crates with multiple target kinds.
Allow externs without a hash.
Ignore more rustc arguments.
-rw-r--r-- | tools/cargo_embargo/src/cargo/cargo_out.rs | 6 | ||||
-rw-r--r-- | tools/cargo_embargo/src/cargo/metadata.rs | 45 |
2 files changed, 28 insertions, 23 deletions
diff --git a/tools/cargo_embargo/src/cargo/cargo_out.rs b/tools/cargo_embargo/src/cargo/cargo_out.rs index bb91b8569..01ca55c95 100644 --- a/tools/cargo_embargo/src/cargo/cargo_out.rs +++ b/tools/cargo_embargo/src/cargo/cargo_out.rs @@ -276,9 +276,9 @@ impl Crate { if let Some((name, path)) = arg.split_once('=') { let filename = path.split('/').last().unwrap(); - // Example filename: "libgetrandom-fd8800939535fc59.rmeta" + // Example filename: "libgetrandom-fd8800939535fc59.rmeta" or "libmls_rs_uniffi.rlib". static REGEX: Lazy<Regex> = Lazy::new(|| { - Regex::new(r"^lib(.*)-[0-9a-f]*.(rlib|so|rmeta)$").unwrap() + Regex::new(r"^lib([^-]*)(?:-[0-9a-f]*)?.(rlib|so|rmeta)$").unwrap() }); let Some(lib_name) = REGEX.captures(filename).and_then(|x| x.get(1)) else { @@ -361,6 +361,8 @@ impl Crate { _ if arg.starts_with("--allow=clippy") => {} _ if arg.starts_with("-Wclippy") => {} _ if arg.starts_with("--warn=clippy") => {} + _ if arg.starts_with("-A=rustdoc") => {} + _ if arg.starts_with("--allow=rustdoc") => {} _ if arg.starts_with("-D") => {} _ if arg.starts_with("--deny=") => {} _ if arg.starts_with("-W") => {} diff --git a/tools/cargo_embargo/src/cargo/metadata.rs b/tools/cargo_embargo/src/cargo/metadata.rs index c937ae925..2958a0117 100644 --- a/tools/cargo_embargo/src/cargo/metadata.rs +++ b/tools/cargo_embargo/src/cargo/metadata.rs @@ -19,7 +19,6 @@ use crate::config::VariantConfig; use anyhow::{bail, Context, Result}; use serde::Deserialize; use std::collections::BTreeMap; -use std::ops::Deref; use std::path::{Path, PathBuf}; /// `cfg` strings for dependencies which should be considered enabled. It would be better to parse @@ -124,20 +123,24 @@ fn parse_cargo_metadata( let package_dir = package_dir_from_id(&package.id)?; for target in &package.targets { - let [target_kind] = target.kind.deref() else { - bail!("Target kind had unexpected length: {:?}", target.kind); - }; - if ![ - TargetKind::Bin, - TargetKind::Cdylib, - TargetKind::Lib, - TargetKind::ProcMacro, - TargetKind::Rlib, - TargetKind::Staticlib, - TargetKind::Test, - ] - .contains(target_kind) - { + let target_kinds = target + .kind + .clone() + .into_iter() + .filter(|kind| { + [ + TargetKind::Bin, + TargetKind::Cdylib, + TargetKind::Lib, + TargetKind::ProcMacro, + TargetKind::Rlib, + TargetKind::Staticlib, + TargetKind::Test, + ] + .contains(kind) + }) + .collect::<Vec<_>>(); + if target_kinds.is_empty() { // Only binaries, libraries and integration tests are supported. continue; } @@ -146,14 +149,14 @@ fn parse_cargo_metadata( // https://github.com/rust-lang/rfcs/blob/master/text/0940-hyphens-considered-harmful.md // for background. let target_name = target.name.replace('-', "_"); - let target_triple = if *target_kind == TargetKind::ProcMacro { + let target_triple = if target_kinds == [TargetKind::ProcMacro] { None } else { Some("x86_64-unknown-linux-gnu".to_string()) }; // Don't generate an entry for integration tests, they will be covered by the test case // below. - if *target_kind != TargetKind::Test { + if target_kinds != [TargetKind::Test] { crates.push(Crate { name: target_name.clone(), package_name: package.name.to_owned(), @@ -168,7 +171,7 @@ fn parse_cargo_metadata( package, &metadata.packages, &features, - *target_kind, + &target_kinds, false, )?, ..Default::default() @@ -190,7 +193,7 @@ fn parse_cargo_metadata( package, &metadata.packages, &features, - *target_kind, + &target_kinds, true, )?, ..Default::default() @@ -205,7 +208,7 @@ fn get_externs( package: &PackageMetadata, packages: &[PackageMetadata], features: &[String], - target_kind: TargetKind, + target_kinds: &[TargetKind], test: bool, ) -> Result<Vec<Extern>> { let mut externs = package @@ -226,7 +229,7 @@ fn get_externs( // If there is a library target and this is a binary or integration test, add the library as an // extern. - if matches!(target_kind, TargetKind::Bin | TargetKind::Test) { + if matches!(target_kinds, [TargetKind::Bin] | [TargetKind::Test]) { for target in &package.targets { if target.kind.contains(&TargetKind::Lib) { let lib_name = target.name.replace('-', "_"); |