Add a flag to manually override VABC
Test: generate an OTA with --disable_vabc
Change-Id: I4a42319584dc1388d097dba343fe3ace82479bec
diff --git a/payload_generator/generate_delta_main.cc b/payload_generator/generate_delta_main.cc
index a187b32..5e2e555 100644
--- a/payload_generator/generate_delta_main.cc
+++ b/payload_generator/generate_delta_main.cc
@@ -421,6 +421,10 @@
false,
"The payload only targets a subset of partitions on the device,"
"e.g. generic kernel image update.");
+ DEFINE_bool(
+ disable_vabc,
+ false,
+ "Whether to disable Virtual AB Compression when installing the OTA");
brillo::FlagHelper::Init(
argc,
@@ -584,6 +588,7 @@
if (FLAGS_is_partial_update) {
payload_config.is_partial_update = true;
}
+ payload_config.disable_vabc = FLAGS_disable_vabc;
if (!FLAGS_in_file.empty()) {
return ApplyPayload(FLAGS_in_file, payload_config) ? 0 : 1;
diff --git a/payload_generator/payload_file.cc b/payload_generator/payload_file.cc
index 33c0749..1174597 100644
--- a/payload_generator/payload_file.cc
+++ b/payload_generator/payload_file.cc
@@ -71,6 +71,9 @@
*(manifest_.mutable_dynamic_partition_metadata()) =
*(config.target.dynamic_partition_metadata);
+ if (config.disable_vabc) {
+ manifest_.mutable_dynamic_partition_metadata()->set_vabc_enabled(false);
+ }
if (config.is_partial_update) {
manifest_.set_partial_update(true);
}
diff --git a/payload_generator/payload_generation_config.h b/payload_generator/payload_generation_config.h
index 1d88101..64733e1 100644
--- a/payload_generator/payload_generation_config.h
+++ b/payload_generator/payload_generation_config.h
@@ -230,6 +230,11 @@
// The maximum timestamp of the OS allowed to apply this payload.
int64_t max_timestamp = 0;
+
+ // Permit use of VABC by default. Even if this is set to true, the device must
+ // support VABC in order to use it. If this is set to false, device must not
+ // use VABC regardless.
+ bool disable_vabc = false;
};
} // namespace chromeos_update_engine