diff --git a/tools/releasetools/common.py b/tools/releasetools/common.py index 8a8a613c78..513fce541f 100644 --- a/tools/releasetools/common.py +++ b/tools/releasetools/common.py @@ -1313,7 +1313,11 @@ def MergeDynamicPartitionInfoDicts(framework_dict, vendor_dict): key = "super_%s_partition_list" % partition_group merged_dict[key] = uniq_concat( framework_dict.get(key, ""), vendor_dict.get(key, "")) - + # in the case that vendor is on s build, but is taking a v3 -> v3 vabc ota, we want to fallback to v2 + if "vabc_cow_version" not in vendor_dict or "vabc_cow_version" not in framework_dict: + merged_dict["vabc_cow_version"] = '2' + else: + merged_dict["vabc_cow_version"] = min(vendor_dict["vabc_cow_version"], framework_dict["vabc_cow_version"]) # Various other flags should be copied from the vendor dict, if defined. for key in ("virtual_ab", "virtual_ab_retrofit", "lpmake", "super_metadata_device", "super_partition_error_limit", diff --git a/tools/releasetools/test_common.py b/tools/releasetools/test_common.py index 2989338fe8..89933a00fc 100644 --- a/tools/releasetools/test_common.py +++ b/tools/releasetools/test_common.py @@ -1515,6 +1515,7 @@ class CommonUtilsTest(test_utils.ReleaseToolsTestCase): 'super_group_a_group_size': '1000', 'super_group_b_partition_list': 'product', 'super_group_b_group_size': '2000', + 'vabc_cow_version': '2', } self.assertEqual(merged_dict, expected_merged_dict) @@ -1525,6 +1526,7 @@ class CommonUtilsTest(test_utils.ReleaseToolsTestCase): 'dynamic_partition_list': 'system', 'super_group_a_partition_list': 'system', 'super_group_a_group_size': '5000', + 'vabc_cow_version': '3', } vendor_dict = { 'use_dynamic_partitions': 'true', @@ -1546,6 +1548,7 @@ class CommonUtilsTest(test_utils.ReleaseToolsTestCase): 'super_group_a_group_size': '1000', 'super_group_b_partition_list': 'product', 'super_group_b_group_size': '2000', + 'vabc_cow_version': '2', } self.assertEqual(merged_dict, expected_merged_dict)