Merge "Apply module_name_overrides and module_blocklist to genrule too." into main am: 45b2c07827

Original change: https://android-review.googlesource.com/c/platform/development/+/2862485

Change-Id: Ia9d148c46d0dac3424f82a898a26580d968f450f
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Treehugger Robot
2023-12-07 02:17:57 +00:00
committed by Automerger Merge Worker
2 changed files with 47 additions and 26 deletions

View File

@@ -18,7 +18,7 @@ use super::{
add_defaults_to_variant, default_apex_available, default_true, PackageConfig, add_defaults_to_variant, default_apex_available, default_true, PackageConfig,
PackageVariantConfig, PackageVariantConfig,
}; };
use crate::renamed_module; use crate::RENAME_MAP;
use anyhow::{anyhow, bail, Context, Result}; use anyhow::{anyhow, bail, Context, Result};
use serde::Deserialize; use serde::Deserialize;
use serde_json::{Map, Value}; use serde_json::{Map, Value};
@@ -294,7 +294,11 @@ impl VariantConfig {
fn package_to_library_name(package_name: &str) -> String { fn package_to_library_name(package_name: &str) -> String {
let module_name = format!("lib{}", package_name); let module_name = format!("lib{}", package_name);
renamed_module(&module_name).to_owned() if let Some(renamed) = RENAME_MAP.get(module_name.as_str()) {
renamed.to_string()
} else {
module_name
}
} }
fn test_filename_to_module_name(package_name: &str, test_filename: &str) -> String { fn test_filename_to_module_name(package_name: &str, test_filename: &str) -> String {

View File

@@ -60,7 +60,7 @@ use std::process::Command;
// * handle warnings. put them in comments in the android.bp, some kind of report section // * handle warnings. put them in comments in the android.bp, some kind of report section
/// Rust modules which shouldn't use the default generated names, to avoid conflicts or confusion. /// Rust modules which shouldn't use the default generated names, to avoid conflicts or confusion.
static RENAME_MAP: Lazy<BTreeMap<&str, &str>> = Lazy::new(|| { pub static RENAME_MAP: Lazy<BTreeMap<&str, &str>> = Lazy::new(|| {
[ [
("libash", "libash_rust"), ("libash", "libash_rust"),
("libatomic", "libatomic_rust"), ("libatomic", "libatomic_rust"),
@@ -80,11 +80,21 @@ static RENAME_MAP: Lazy<BTreeMap<&str, &str>> = Lazy::new(|| {
.collect() .collect()
}); });
fn renamed_module(name: &str) -> &str { /// Given a proposed module name, returns `None` if it is blocked by the given config, or
if let Some(renamed) = RENAME_MAP.get(name) { /// else apply any name overrides and returns the name to use.
renamed fn override_module_name(
module_name: &str,
blocklist: &[String],
module_name_overrides: &BTreeMap<String, String>,
) -> Option<String> {
if blocklist.iter().any(|blocked_name| blocked_name == module_name) {
None
} else if let Some(overridden_name) = module_name_overrides.get(module_name) {
Some(overridden_name.to_string())
} else if let Some(renamed) = RENAME_MAP.get(module_name) {
Some(renamed.to_string())
} else { } else {
name Some(module_name.to_string())
} }
} }
@@ -561,14 +571,21 @@ fn generate_android_bp(
.collect(); .collect();
let mut m = BpModule::new("genrule".to_string()); let mut m = BpModule::new("genrule".to_string());
let module_name = format!("copy_{}_build_out", package_name); if let Some(module_name) = override_module_name(
m.props.set("name", module_name.clone()); &format!("copy_{}_build_out", package_name),
m.props.set("srcs", vec!["out/*"]); &cfg.module_blocklist,
m.props.set("cmd", "cp $(in) $(genDir)"); &cfg.module_name_overrides,
m.props.set("out", outs); ) {
modules.push(m); m.props.set("name", module_name.clone());
m.props.set("srcs", vec!["out/*"]);
m.props.set("cmd", "cp $(in) $(genDir)");
m.props.set("out", outs);
modules.push(m);
vec![":".to_string() + &module_name] vec![":".to_string() + &module_name]
} else {
vec![]
}
} else { } else {
vec![] vec![]
}; };
@@ -699,11 +716,11 @@ fn crate_to_bp_modules(
}; };
let mut m = BpModule::new(module_type.clone()); let mut m = BpModule::new(module_type.clone());
if cfg.module_blocklist.iter().any(|blocked_name| blocked_name == &module_name) { let Some(module_name) =
override_module_name(&module_name, &cfg.module_blocklist, &cfg.module_name_overrides)
else {
continue; continue;
} };
let module_name = cfg.module_name_overrides.get(&module_name).unwrap_or(&module_name);
let module_name = renamed_module(module_name);
if matches!( if matches!(
crate_type, crate_type,
CrateType::Lib CrateType::Lib
@@ -715,7 +732,7 @@ fn crate_to_bp_modules(
{ {
bail!("Module name must start with lib{} but was {}", crate_.name, module_name); bail!("Module name must start with lib{} but was {}", crate_.name, module_name);
} }
m.props.set("name", module_name); m.props.set("name", module_name.clone());
if let Some(defaults) = &cfg.global_defaults { if let Some(defaults) = &cfg.global_defaults {
m.props.set("defaults", vec![defaults.clone()]); m.props.set("defaults", vec![defaults.clone()]);
@@ -788,13 +805,13 @@ fn crate_to_bp_modules(
let mut result = Vec::new(); let mut result = Vec::new();
for x in libs { for x in libs {
let module_name = "lib".to_string() + x.as_str(); let module_name = "lib".to_string() + x.as_str();
let module_name = if let Some(module_name) = override_module_name(
cfg.module_name_overrides.get(&module_name).unwrap_or(&module_name); &module_name,
let module_name = renamed_module(module_name); &package_cfg.dep_blocklist,
if package_cfg.dep_blocklist.iter().any(|blocked| blocked == module_name) { &cfg.module_name_overrides,
continue; ) {
result.push(module_name);
} }
result.push(module_name.to_string());
} }
result.sort(); result.sort();
result result
@@ -853,7 +870,7 @@ fn crate_to_bp_modules(
m.props.set("stdlibs", stdlibs); m.props.set("stdlibs", stdlibs);
} }
if let Some(visibility) = cfg.module_visibility.get(module_name) { if let Some(visibility) = cfg.module_visibility.get(&module_name) {
m.props.set("visibility", visibility.clone()); m.props.set("visibility", visibility.clone());
} }