Support host simulation of partial update am: a1e7c8f0e8
Original change: https://android-review.googlesource.com/c/platform/system/update_engine/+/1471172
Change-Id: I57bbc945264638c1c2ab81c77fe0933132a33fdb
diff --git a/payload_consumer/partition_update_generator_android.cc b/payload_consumer/partition_update_generator_android.cc
index 25771e1..4467182 100644
--- a/payload_consumer/partition_update_generator_android.cc
+++ b/payload_consumer/partition_update_generator_android.cc
@@ -41,6 +41,11 @@
BootControlInterface::Slot target_slot,
const std::set<std::string>& partitions_in_payload,
std::vector<PartitionUpdate>* update_list) {
+#ifndef __ANDROID__
+ // Skip copying partitions for host verification.
+ return true;
+#endif
+
auto ab_partitions = GetAbPartitionsOnDevice();
if (ab_partitions.empty()) {
LOG(ERROR) << "Failed to load static a/b partitions";
diff --git a/payload_generator/generate_delta_main.cc b/payload_generator/generate_delta_main.cc
index 2e32f1b..8cda9d1 100644
--- a/payload_generator/generate_delta_main.cc
+++ b/payload_generator/generate_delta_main.cc
@@ -183,8 +183,11 @@
install_plan.source_slot =
config.is_delta ? 0 : BootControlInterface::kInvalidSlot;
install_plan.target_slot = 1;
- payload.type =
- config.is_delta ? InstallPayloadType::kDelta : InstallPayloadType::kFull;
+ // For partial updates, we always write kDelta to the payload. Make it
+ // consistent for host simulation.
+ payload.type = config.is_delta || config.is_partial_update
+ ? InstallPayloadType::kDelta
+ : InstallPayloadType::kFull;
payload.size = utils::FileSize(payload_file);
// TODO(senj): This hash is only correct for unsigned payload, need to support
// signed payload using PayloadSigner.
@@ -576,6 +579,10 @@
}
}
+ if (FLAGS_is_partial_update) {
+ payload_config.is_partial_update = true;
+ }
+
if (!FLAGS_in_file.empty()) {
return ApplyPayload(FLAGS_in_file, payload_config) ? 0 : 1;
}
@@ -604,10 +611,6 @@
CHECK(payload_config.target.ValidateDynamicPartitionMetadata());
}
- if (FLAGS_is_partial_update) {
- payload_config.is_partial_update = true;
- }
-
CHECK(!FLAGS_out_file.empty());
payload_config.rootfs_partition_size = FLAGS_rootfs_partition_size;