Merge "dist-one flag should be a boolean, not a string" into main
diff --git a/core/config.mk b/core/config.mk
index d5fec33..4d79e2b 100644
--- a/core/config.mk
+++ b/core/config.mk
@@ -804,6 +804,10 @@
PRODUCT_FULL_TREBLE \
PRODUCT_NOTICE_SPLIT \
+ifneq ($(PRODUCT_FULL_TREBLE),true)
+ $(warning This device does not have Treble enabled. This is unsafe.)
+endif
+
$(KATI_obsolete_var $(foreach req,$(requirements),$(req)_OVERRIDE) \
,This should be referenced without the _OVERRIDE suffix.)
diff --git a/tools/aconfig/src/commands.rs b/tools/aconfig/src/commands.rs
index 261acec..a121b5e 100644
--- a/tools/aconfig/src/commands.rs
+++ b/tools/aconfig/src/commands.rs
@@ -15,7 +15,9 @@
*/
use anyhow::{bail, ensure, Context, Result};
+use itertools::Itertools;
use protobuf::Message;
+use std::collections::HashMap;
use std::io::Read;
use std::path::PathBuf;
@@ -195,6 +197,7 @@
bail!("no parsed flags, or the parsed flags use different packages");
};
let package = package.to_string();
+ let _flag_ids = assign_flag_ids(&package, modified_parsed_flags.iter())?;
generate_java_code(&package, modified_parsed_flags.into_iter(), codegen_mode)
}
@@ -205,6 +208,7 @@
bail!("no parsed flags, or the parsed flags use different packages");
};
let package = package.to_string();
+ let _flag_ids = assign_flag_ids(&package, modified_parsed_flags.iter())?;
generate_cpp_code(&package, modified_parsed_flags.into_iter(), codegen_mode)
}
@@ -215,6 +219,7 @@
bail!("no parsed flags, or the parsed flags use different packages");
};
let package = package.to_string();
+ let _flag_ids = assign_flag_ids(&package, modified_parsed_flags.iter())?;
generate_rust_code(&package, modified_parsed_flags.into_iter(), codegen_mode)
}
@@ -345,6 +350,21 @@
Ok(modified_parsed_flags)
}
+fn assign_flag_ids<'a, I>(package: &str, parsed_flags_iter: I) -> Result<HashMap<String, u32>>
+where
+ I: Iterator<Item = &'a ProtoParsedFlag> + Clone,
+{
+ assert!(parsed_flags_iter.clone().tuple_windows().all(|(a, b)| a.name() <= b.name()));
+ let mut flag_ids = HashMap::new();
+ for (id_to_assign, pf) in (0_u32..).zip(parsed_flags_iter) {
+ if package != pf.package() {
+ return Err(anyhow::anyhow!("encountered a flag not in current package"));
+ }
+ flag_ids.insert(pf.name().to_string(), id_to_assign);
+ }
+ Ok(flag_ids)
+}
+
#[cfg(test)]
mod tests {
use super::*;
@@ -655,4 +675,23 @@
modify_parsed_flags_based_on_mode(parsed_flags, CodegenMode::Exported).unwrap_err();
assert_eq!("exported library contains no exported flags", format!("{:?}", error));
}
+
+ #[test]
+ fn test_assign_flag_ids() {
+ let parsed_flags = crate::test::parse_test_flags();
+ let package = find_unique_package(&parsed_flags.parsed_flag).unwrap().to_string();
+ let flag_ids = assign_flag_ids(&package, parsed_flags.parsed_flag.iter()).unwrap();
+ let expected_flag_ids = HashMap::from([
+ (String::from("disabled_ro"), 0_u32),
+ (String::from("disabled_rw"), 1_u32),
+ (String::from("disabled_rw_exported"), 2_u32),
+ (String::from("disabled_rw_in_other_namespace"), 3_u32),
+ (String::from("enabled_fixed_ro"), 4_u32),
+ (String::from("enabled_fixed_ro_exported"), 5_u32),
+ (String::from("enabled_ro"), 6_u32),
+ (String::from("enabled_ro_exported"), 7_u32),
+ (String::from("enabled_rw"), 8_u32),
+ ]);
+ assert_eq!(flag_ids, expected_flag_ids);
+ }
}