summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLee Campbell <leecam@google.com>2018-01-21 00:37:57 +0000
committerandroid-build-merger <android-build-merger@google.com>2018-01-21 00:37:57 +0000
commit97d14469e5a3f1b0a8587a8ca8df7f534b12208b (patch)
treee3fb7c085161e3c6d7fda74cbd3317df99f2d18e
parenta0d738624afdabbcd570772046bd5f3538ddf316 (diff)
parentcb05c54cae193110cc33a4e16f271ca596ae4406 (diff)
downloadbpt-97d14469e5a3f1b0a8587a8ca8df7f534b12208b.tar.gz
Add support for "persist" option am: 42ce7943e1
am: cb05c54cae Change-Id: I821ce7715c611ce50953732c504590e0dea5e382
-rw-r--r--README4
-rwxr-xr-xbpt_unittest.py20
-rwxr-xr-xbpttool14
-rw-r--r--test/expected_json_alignment.bpt7
-rw-r--r--test/expected_json_base.bpt7
-rw-r--r--test/expected_json_disk_guid.bpt7
-rw-r--r--test/expected_json_partitions_offset_begin.bpt7
-rw-r--r--test/expected_json_persist.bpt81
-rw-r--r--test/expected_json_size.bpt7
-rw-r--r--test/expected_json_stacked_change_ab_size.bpt7
-rw-r--r--test/expected_json_stacked_change_flags.bpt7
-rw-r--r--test/expected_json_stacked_disable_ab.bpt5
-rw-r--r--test/expected_json_stacked_ignore.bpt6
-rw-r--r--test/expected_json_stacked_new_partition.bpt8
-rw-r--r--test/expected_json_stacked_new_partition_on_top.bpt8
-rw-r--r--test/expected_json_stacked_override_settings.bpt7
-rw-r--r--test/expected_json_stacked_positions.bpt10
-rw-r--r--test/expected_json_stacked_size.bpt7
-rw-r--r--test/expected_json_suffixes.bpt7
-rw-r--r--test/persist.bpt40
20 files changed, 265 insertions, 1 deletions
diff --git a/README b/README
index eed9542..67c0b43 100644
--- a/README
+++ b/README
@@ -113,6 +113,10 @@ well-known key/value pairs:
flags: A 64-bit integer (decimal or hexadecimal representations are
accepted) for GPT flags. Default value is 0.
+ persist: If 'true', the parition will be marked persistant. This will
+ set bit 0 of flags to 1. This will OR with the value of
+ 'flags'.
+
ignore: If 'true', the partition will not be included in the final
output.
diff --git a/bpt_unittest.py b/bpt_unittest.py
index f42b43a..814e122 100755
--- a/bpt_unittest.py
+++ b/bpt_unittest.py
@@ -322,6 +322,12 @@ class MakeTableTest(unittest.TestCase):
disk_size=bpttool.ParseSize('10 GiB'),
disk_guid='01234567-89ab-cdef-0123-00000000002a')
+ def testPersist(self):
+ """Checks that persist flags are generated"""
+ self._MakeTable(['test/persist.bpt'],
+ 'test/expected_json_persist.bpt',
+ disk_size=bpttool.ParseSize('10 GiB'))
+
def testSuffixes(self):
"""Checks that A/B-suffixes can be changed on the command-line."""
self._MakeTable(['test/base.bpt'],
@@ -459,6 +465,20 @@ class QueryPartitionTest(unittest.TestCase):
'userdata', 'flags', False),
'0x0420000000000000')
+ def testQueryPersistTrue(self):
+ """Checks query for persist."""
+ self.assertEqual(
+ self.bpt.query_partition(
+ open('test/persist.bpt'),
+ 'true_persist', 'persist', False), 'True')
+
+ def testQueryPersistFalse(self):
+ """Checks query for persist."""
+ self.assertEqual(
+ self.bpt.query_partition(
+ open('test/persist.bpt'),
+ 'false_persist', 'persist', False), 'False')
+
def testQuerySizeCollapse(self):
"""Checks query for size when collapsing A/B partitions."""
self.assertEqual(
diff --git a/bpttool b/bpttool
index 53b4578..ae4bc8e 100755
--- a/bpttool
+++ b/bpttool
@@ -44,6 +44,7 @@ JSON_KEYWORD_PARTITIONS_GROW = 'grow'
JSON_KEYWORD_PARTITIONS_GUID = 'guid'
JSON_KEYWORD_PARTITIONS_TYPE_GUID = 'type_guid'
JSON_KEYWORD_PARTITIONS_FLAGS = 'flags'
+JSON_KEYWORD_PARTITIONS_PERSIST = 'persist'
JSON_KEYWORD_PARTITIONS_IGNORE = 'ignore'
JSON_KEYWORD_PARTITIONS_AB = 'ab'
JSON_KEYWORD_PARTITIONS_AB_EXPANDED = 'ab_expanded'
@@ -56,7 +57,8 @@ QUERY_PARTITION_TYPES = ['size',
'offset',
'guid',
'type_guid',
- 'flags']
+ 'flags',
+ 'persist']
BPT_VERSION_MAJOR = 1
BPT_VERSION_MINOR = 0
@@ -231,6 +233,8 @@ class Partition(object):
type_guid: Type GUID (RFC 4122 compliant) as a string or a known type
from the |KNOWN_TYPE_GUIDS| map.
flags: GUID flags.
+ persist: If true, sets bit 0 of flags indicating that this partition should
+ not be deleted by the bootloader.
ab: If True, the partition is an A/B partition.
ab_expanded: If True, the A/B partitions have been generated.
ignore: If True, the partition should not be included in the final output.
@@ -246,6 +250,7 @@ class Partition(object):
self.guid = None
self.type_guid = None
self.flags = 0
+ self.persist = False
self.ab = False
self.ab_expanded = False
self.ignore = False
@@ -287,6 +292,11 @@ class Partition(object):
value = pobj.get(JSON_KEYWORD_PARTITIONS_FLAGS)
if value is not None:
self.flags = ParseNumber(value)
+ value = pobj.get(JSON_KEYWORD_PARTITIONS_PERSIST)
+ if value is not None:
+ self.persist = value
+ if value:
+ self.flags = self.flags | 0x1
value = pobj.get(JSON_KEYWORD_PARTITIONS_POSITION)
if value is not None:
self.position = ParseNumber(value)
@@ -508,6 +518,7 @@ class Bpt(object):
' "' + JSON_KEYWORD_PARTITIONS_GUID + '": "{}",\n'
' "' + JSON_KEYWORD_PARTITIONS_TYPE_GUID + '": "{}",\n'
' "' + JSON_KEYWORD_PARTITIONS_FLAGS + '": "{:#018x}",\n'
+ ' "' + JSON_KEYWORD_PARTITIONS_PERSIST + '": {},\n'
' "' + JSON_KEYWORD_PARTITIONS_IGNORE + '": {},\n'
' "' + JSON_KEYWORD_PARTITIONS_AB + '": {},\n'
' "' + JSON_KEYWORD_PARTITIONS_AB_EXPANDED + '": {},\n'
@@ -519,6 +530,7 @@ class Bpt(object):
p.guid,
p.type_guid,
p.flags,
+ 'true' if p.persist else 'false',
'true' if p.ignore else 'false',
'true' if p.ab else 'false',
'true' if p.ab_expanded else 'false',
diff --git a/test/expected_json_alignment.bpt b/test/expected_json_alignment.bpt
index 1996359..f34b9ed 100644
--- a/test/expected_json_alignment.bpt
+++ b/test/expected_json_alignment.bpt
@@ -15,6 +15,7 @@
"guid": "01234567-89ab-cdef-0123-000000000001",
"type_guid": "bb499290-b57e-49f6-bf41-190386693794",
"flags": "0x0000000000000000",
+ "persist": false,
"ignore": false,
"ab": true,
"ab_expanded": true,
@@ -28,6 +29,7 @@
"guid": "01234567-89ab-cdef-0123-000000000002",
"type_guid": "bb499290-b57e-49f6-bf41-190386693794",
"flags": "0x0000000000000000",
+ "persist": false,
"ignore": false,
"ab": true,
"ab_expanded": true,
@@ -41,6 +43,7 @@
"guid": "01234567-89ab-cdef-0123-000000000003",
"type_guid": "0f2778c4-5cc1-4300-8670-6c88b7e57ed6",
"flags": "0x0000000000000000",
+ "persist": false,
"ignore": false,
"ab": true,
"ab_expanded": true,
@@ -54,6 +57,7 @@
"guid": "01234567-89ab-cdef-0123-000000000004",
"type_guid": "0f2778c4-5cc1-4300-8670-6c88b7e57ed6",
"flags": "0x0000000000000000",
+ "persist": false,
"ignore": false,
"ab": true,
"ab_expanded": true,
@@ -67,6 +71,7 @@
"guid": "01234567-89ab-cdef-0123-000000000005",
"type_guid": "e99d84d7-2c1b-44cf-8c58-effae2dc2558",
"flags": "0x0000000000000000",
+ "persist": false,
"ignore": false,
"ab": true,
"ab_expanded": true,
@@ -80,6 +85,7 @@
"guid": "01234567-89ab-cdef-0123-000000000006",
"type_guid": "e99d84d7-2c1b-44cf-8c58-effae2dc2558",
"flags": "0x0000000000000000",
+ "persist": false,
"ignore": false,
"ab": true,
"ab_expanded": true,
@@ -93,6 +99,7 @@
"guid": "01234567-89ab-cdef-0123-000000000007",
"type_guid": "0bb7e6ed-4424-49c0-9372-7fbab465ab4c",
"flags": "0x0000000000000000",
+ "persist": false,
"ignore": false,
"ab": false,
"ab_expanded": false,
diff --git a/test/expected_json_base.bpt b/test/expected_json_base.bpt
index 189684a..2a135f1 100644
--- a/test/expected_json_base.bpt
+++ b/test/expected_json_base.bpt
@@ -15,6 +15,7 @@
"guid": "01234567-89ab-cdef-0123-000000000001",
"type_guid": "bb499290-b57e-49f6-bf41-190386693794",
"flags": "0x0000000000000000",
+ "persist": false,
"ignore": false,
"ab": true,
"ab_expanded": true,
@@ -28,6 +29,7 @@
"guid": "01234567-89ab-cdef-0123-000000000002",
"type_guid": "bb499290-b57e-49f6-bf41-190386693794",
"flags": "0x0000000000000000",
+ "persist": false,
"ignore": false,
"ab": true,
"ab_expanded": true,
@@ -41,6 +43,7 @@
"guid": "01234567-89ab-cdef-0123-000000000003",
"type_guid": "0f2778c4-5cc1-4300-8670-6c88b7e57ed6",
"flags": "0x0000000000000000",
+ "persist": false,
"ignore": false,
"ab": true,
"ab_expanded": true,
@@ -54,6 +57,7 @@
"guid": "01234567-89ab-cdef-0123-000000000004",
"type_guid": "0f2778c4-5cc1-4300-8670-6c88b7e57ed6",
"flags": "0x0000000000000000",
+ "persist": false,
"ignore": false,
"ab": true,
"ab_expanded": true,
@@ -67,6 +71,7 @@
"guid": "01234567-89ab-cdef-0123-000000000005",
"type_guid": "e99d84d7-2c1b-44cf-8c58-effae2dc2558",
"flags": "0x0000000000000000",
+ "persist": false,
"ignore": false,
"ab": true,
"ab_expanded": true,
@@ -80,6 +85,7 @@
"guid": "01234567-89ab-cdef-0123-000000000006",
"type_guid": "e99d84d7-2c1b-44cf-8c58-effae2dc2558",
"flags": "0x0000000000000000",
+ "persist": false,
"ignore": false,
"ab": true,
"ab_expanded": true,
@@ -93,6 +99,7 @@
"guid": "01234567-89ab-cdef-0123-000000000007",
"type_guid": "0bb7e6ed-4424-49c0-9372-7fbab465ab4c",
"flags": "0x0000000000000000",
+ "persist": false,
"ignore": false,
"ab": false,
"ab_expanded": false,
diff --git a/test/expected_json_disk_guid.bpt b/test/expected_json_disk_guid.bpt
index 82265e7..9246ebf 100644
--- a/test/expected_json_disk_guid.bpt
+++ b/test/expected_json_disk_guid.bpt
@@ -15,6 +15,7 @@
"guid": "01234567-89ab-cdef-0123-000000000001",
"type_guid": "bb499290-b57e-49f6-bf41-190386693794",
"flags": "0x0000000000000000",
+ "persist": false,
"ignore": false,
"ab": true,
"ab_expanded": true,
@@ -28,6 +29,7 @@
"guid": "01234567-89ab-cdef-0123-000000000002",
"type_guid": "bb499290-b57e-49f6-bf41-190386693794",
"flags": "0x0000000000000000",
+ "persist": false,
"ignore": false,
"ab": true,
"ab_expanded": true,
@@ -41,6 +43,7 @@
"guid": "01234567-89ab-cdef-0123-000000000003",
"type_guid": "0f2778c4-5cc1-4300-8670-6c88b7e57ed6",
"flags": "0x0000000000000000",
+ "persist": false,
"ignore": false,
"ab": true,
"ab_expanded": true,
@@ -54,6 +57,7 @@
"guid": "01234567-89ab-cdef-0123-000000000004",
"type_guid": "0f2778c4-5cc1-4300-8670-6c88b7e57ed6",
"flags": "0x0000000000000000",
+ "persist": false,
"ignore": false,
"ab": true,
"ab_expanded": true,
@@ -67,6 +71,7 @@
"guid": "01234567-89ab-cdef-0123-000000000005",
"type_guid": "e99d84d7-2c1b-44cf-8c58-effae2dc2558",
"flags": "0x0000000000000000",
+ "persist": false,
"ignore": false,
"ab": true,
"ab_expanded": true,
@@ -80,6 +85,7 @@
"guid": "01234567-89ab-cdef-0123-000000000006",
"type_guid": "e99d84d7-2c1b-44cf-8c58-effae2dc2558",
"flags": "0x0000000000000000",
+ "persist": false,
"ignore": false,
"ab": true,
"ab_expanded": true,
@@ -93,6 +99,7 @@
"guid": "01234567-89ab-cdef-0123-000000000007",
"type_guid": "0bb7e6ed-4424-49c0-9372-7fbab465ab4c",
"flags": "0x0000000000000000",
+ "persist": false,
"ignore": false,
"ab": false,
"ab_expanded": false,
diff --git a/test/expected_json_partitions_offset_begin.bpt b/test/expected_json_partitions_offset_begin.bpt
index bb66b19..4964dab 100644
--- a/test/expected_json_partitions_offset_begin.bpt
+++ b/test/expected_json_partitions_offset_begin.bpt
@@ -15,6 +15,7 @@
"guid": "01234567-89ab-cdef-0123-000000000001",
"type_guid": "bb499290-b57e-49f6-bf41-190386693794",
"flags": "0x0000000000000000",
+ "persist": false,
"ignore": false,
"ab": true,
"ab_expanded": true,
@@ -28,6 +29,7 @@
"guid": "01234567-89ab-cdef-0123-000000000002",
"type_guid": "bb499290-b57e-49f6-bf41-190386693794",
"flags": "0x0000000000000000",
+ "persist": false,
"ignore": false,
"ab": true,
"ab_expanded": true,
@@ -41,6 +43,7 @@
"guid": "01234567-89ab-cdef-0123-000000000003",
"type_guid": "0f2778c4-5cc1-4300-8670-6c88b7e57ed6",
"flags": "0x0000000000000000",
+ "persist": false,
"ignore": false,
"ab": true,
"ab_expanded": true,
@@ -54,6 +57,7 @@
"guid": "01234567-89ab-cdef-0123-000000000004",
"type_guid": "0f2778c4-5cc1-4300-8670-6c88b7e57ed6",
"flags": "0x0000000000000000",
+ "persist": false,
"ignore": false,
"ab": true,
"ab_expanded": true,
@@ -67,6 +71,7 @@
"guid": "01234567-89ab-cdef-0123-000000000005",
"type_guid": "e99d84d7-2c1b-44cf-8c58-effae2dc2558",
"flags": "0x0000000000000000",
+ "persist": false,
"ignore": false,
"ab": true,
"ab_expanded": true,
@@ -80,6 +85,7 @@
"guid": "01234567-89ab-cdef-0123-000000000006",
"type_guid": "e99d84d7-2c1b-44cf-8c58-effae2dc2558",
"flags": "0x0000000000000000",
+ "persist": false,
"ignore": false,
"ab": true,
"ab_expanded": true,
@@ -93,6 +99,7 @@
"guid": "01234567-89ab-cdef-0123-000000000007",
"type_guid": "0bb7e6ed-4424-49c0-9372-7fbab465ab4c",
"flags": "0x0000000000000000",
+ "persist": false,
"ignore": false,
"ab": false,
"ab_expanded": false,
diff --git a/test/expected_json_persist.bpt b/test/expected_json_persist.bpt
new file mode 100644
index 0000000..0d3b263
--- /dev/null
+++ b/test/expected_json_persist.bpt
@@ -0,0 +1,81 @@
+{
+ "settings": {
+ "ab_suffixes": ["_a", "_b"],
+ "partitions_offset_begin": 0,
+ "disk_size": 10737418240,
+ "disk_alignment": 4096,
+ "disk_guid": "01234567-89ab-cdef-0123-000000000000"
+ },
+ "partitions": [
+ {
+ "label": "no_persist",
+ "offset": 20480,
+ "size": 134217728,
+ "grow": false,
+ "guid": "01234567-89ab-cdef-0123-000000000001",
+ "type_guid": "bb499290-b57e-49f6-bf41-190386693794",
+ "flags": "0x0000000000000000",
+ "persist": false,
+ "ignore": false,
+ "ab": false,
+ "ab_expanded": false,
+ "position": 1
+ },
+ {
+ "label": "false_persist",
+ "offset": 134238208,
+ "size": 134217728,
+ "grow": false,
+ "guid": "01234567-89ab-cdef-0123-000000000002",
+ "type_guid": "bb499290-b57e-49f6-bf41-190386693794",
+ "flags": "0x0000000000000000",
+ "persist": false,
+ "ignore": false,
+ "ab": false,
+ "ab_expanded": false,
+ "position": 2
+ },
+ {
+ "label": "true_persist",
+ "offset": 268455936,
+ "size": 134217728,
+ "grow": false,
+ "guid": "01234567-89ab-cdef-0123-000000000003",
+ "type_guid": "bb499290-b57e-49f6-bf41-190386693794",
+ "flags": "0x0000000000000001",
+ "persist": true,
+ "ignore": false,
+ "ab": false,
+ "ab_expanded": false,
+ "position": 3
+ },
+ {
+ "label": "false_persist_with_flags",
+ "offset": 402673664,
+ "size": 134217728,
+ "grow": false,
+ "guid": "01234567-89ab-cdef-0123-000000000004",
+ "type_guid": "bb499290-b57e-49f6-bf41-190386693794",
+ "flags": "0x0000000000000010",
+ "persist": false,
+ "ignore": false,
+ "ab": false,
+ "ab_expanded": false,
+ "position": 4
+ },
+ {
+ "label": "true_persist_with_flags",
+ "offset": 536891392,
+ "size": 134217728,
+ "grow": false,
+ "guid": "01234567-89ab-cdef-0123-000000000005",
+ "type_guid": "bb499290-b57e-49f6-bf41-190386693794",
+ "flags": "0x0000000000000011",
+ "persist": true,
+ "ignore": false,
+ "ab": false,
+ "ab_expanded": false,
+ "position": 5
+ }
+ ]
+}
diff --git a/test/expected_json_size.bpt b/test/expected_json_size.bpt
index b72452f..d31ab10 100644
--- a/test/expected_json_size.bpt
+++ b/test/expected_json_size.bpt
@@ -15,6 +15,7 @@
"guid": "01234567-89ab-cdef-0123-000000000001",
"type_guid": "bb499290-b57e-49f6-bf41-190386693794",
"flags": "0x0000000000000000",
+ "persist": false,
"ignore": false,
"ab": true,
"ab_expanded": true,
@@ -28,6 +29,7 @@
"guid": "01234567-89ab-cdef-0123-000000000002",
"type_guid": "bb499290-b57e-49f6-bf41-190386693794",
"flags": "0x0000000000000000",
+ "persist": false,
"ignore": false,
"ab": true,
"ab_expanded": true,
@@ -41,6 +43,7 @@
"guid": "01234567-89ab-cdef-0123-000000000003",
"type_guid": "0f2778c4-5cc1-4300-8670-6c88b7e57ed6",
"flags": "0x0000000000000000",
+ "persist": false,
"ignore": false,
"ab": true,
"ab_expanded": true,
@@ -54,6 +57,7 @@
"guid": "01234567-89ab-cdef-0123-000000000004",
"type_guid": "0f2778c4-5cc1-4300-8670-6c88b7e57ed6",
"flags": "0x0000000000000000",
+ "persist": false,
"ignore": false,
"ab": true,
"ab_expanded": true,
@@ -67,6 +71,7 @@
"guid": "01234567-89ab-cdef-0123-000000000005",
"type_guid": "e99d84d7-2c1b-44cf-8c58-effae2dc2558",
"flags": "0x0000000000000000",
+ "persist": false,
"ignore": false,
"ab": true,
"ab_expanded": true,
@@ -80,6 +85,7 @@
"guid": "01234567-89ab-cdef-0123-000000000006",
"type_guid": "e99d84d7-2c1b-44cf-8c58-effae2dc2558",
"flags": "0x0000000000000000",
+ "persist": false,
"ignore": false,
"ab": true,
"ab_expanded": true,
@@ -93,6 +99,7 @@
"guid": "01234567-89ab-cdef-0123-000000000007",
"type_guid": "0bb7e6ed-4424-49c0-9372-7fbab465ab4c",
"flags": "0x0000000000000000",
+ "persist": false,
"ignore": false,
"ab": false,
"ab_expanded": false,
diff --git a/test/expected_json_stacked_change_ab_size.bpt b/test/expected_json_stacked_change_ab_size.bpt
index be02d8f..0d16099 100644
--- a/test/expected_json_stacked_change_ab_size.bpt
+++ b/test/expected_json_stacked_change_ab_size.bpt
@@ -15,6 +15,7 @@
"guid": "01234567-89ab-cdef-0123-000000000001",
"type_guid": "bb499290-b57e-49f6-bf41-190386693794",
"flags": "0x0000000000000000",
+ "persist": false,
"ignore": false,
"ab": true,
"ab_expanded": true,
@@ -28,6 +29,7 @@
"guid": "01234567-89ab-cdef-0123-000000000002",
"type_guid": "bb499290-b57e-49f6-bf41-190386693794",
"flags": "0x0000000000000000",
+ "persist": false,
"ignore": false,
"ab": true,
"ab_expanded": true,
@@ -41,6 +43,7 @@
"guid": "01234567-89ab-cdef-0123-000000000003",
"type_guid": "0f2778c4-5cc1-4300-8670-6c88b7e57ed6",
"flags": "0x0000000000000000",
+ "persist": false,
"ignore": false,
"ab": true,
"ab_expanded": true,
@@ -54,6 +57,7 @@
"guid": "01234567-89ab-cdef-0123-000000000004",
"type_guid": "0f2778c4-5cc1-4300-8670-6c88b7e57ed6",
"flags": "0x0000000000000000",
+ "persist": false,
"ignore": false,
"ab": true,
"ab_expanded": true,
@@ -67,6 +71,7 @@
"guid": "01234567-89ab-cdef-0123-000000000005",
"type_guid": "e99d84d7-2c1b-44cf-8c58-effae2dc2558",
"flags": "0x0000000000000000",
+ "persist": false,
"ignore": false,
"ab": true,
"ab_expanded": true,
@@ -80,6 +85,7 @@
"guid": "01234567-89ab-cdef-0123-000000000006",
"type_guid": "e99d84d7-2c1b-44cf-8c58-effae2dc2558",
"flags": "0x0000000000000000",
+ "persist": false,
"ignore": false,
"ab": true,
"ab_expanded": true,
@@ -93,6 +99,7 @@
"guid": "01234567-89ab-cdef-0123-000000000007",
"type_guid": "0bb7e6ed-4424-49c0-9372-7fbab465ab4c",
"flags": "0x0000000000000000",
+ "persist": false,
"ignore": false,
"ab": false,
"ab_expanded": false,
diff --git a/test/expected_json_stacked_change_flags.bpt b/test/expected_json_stacked_change_flags.bpt
index 0ae8461..094e4bb 100644
--- a/test/expected_json_stacked_change_flags.bpt
+++ b/test/expected_json_stacked_change_flags.bpt
@@ -15,6 +15,7 @@
"guid": "01234567-89ab-cdef-0123-000000000001",
"type_guid": "bb499290-b57e-49f6-bf41-190386693794",
"flags": "0x0000000000000000",
+ "persist": false,
"ignore": false,
"ab": true,
"ab_expanded": true,
@@ -28,6 +29,7 @@
"guid": "01234567-89ab-cdef-0123-000000000002",
"type_guid": "bb499290-b57e-49f6-bf41-190386693794",
"flags": "0x0000000000000000",
+ "persist": false,
"ignore": false,
"ab": true,
"ab_expanded": true,
@@ -41,6 +43,7 @@
"guid": "01234567-89ab-cdef-0123-000000000003",
"type_guid": "0f2778c4-5cc1-4300-8670-6c88b7e57ed6",
"flags": "0x0000000000000000",
+ "persist": false,
"ignore": false,
"ab": true,
"ab_expanded": true,
@@ -54,6 +57,7 @@
"guid": "01234567-89ab-cdef-0123-000000000004",
"type_guid": "0f2778c4-5cc1-4300-8670-6c88b7e57ed6",
"flags": "0x0000000000000000",
+ "persist": false,
"ignore": false,
"ab": true,
"ab_expanded": true,
@@ -67,6 +71,7 @@
"guid": "01234567-89ab-cdef-0123-000000000005",
"type_guid": "e99d84d7-2c1b-44cf-8c58-effae2dc2558",
"flags": "0x0000000000000000",
+ "persist": false,
"ignore": false,
"ab": true,
"ab_expanded": true,
@@ -80,6 +85,7 @@
"guid": "01234567-89ab-cdef-0123-000000000006",
"type_guid": "e99d84d7-2c1b-44cf-8c58-effae2dc2558",
"flags": "0x0000000000000000",
+ "persist": false,
"ignore": false,
"ab": true,
"ab_expanded": true,
@@ -93,6 +99,7 @@
"guid": "01234567-89ab-cdef-0123-000000000007",
"type_guid": "0bb7e6ed-4424-49c0-9372-7fbab465ab4c",
"flags": "0x0420000000000000",
+ "persist": false,
"ignore": false,
"ab": false,
"ab_expanded": false,
diff --git a/test/expected_json_stacked_disable_ab.bpt b/test/expected_json_stacked_disable_ab.bpt
index e980b36..0558206 100644
--- a/test/expected_json_stacked_disable_ab.bpt
+++ b/test/expected_json_stacked_disable_ab.bpt
@@ -1,6 +1,7 @@
{
"settings": {
"ab_suffixes": ["_a", "_b"],
+ "partitions_offset_begin": 0,
"disk_size": 10737418240,
"disk_alignment": 4096,
"disk_guid": "01234567-89ab-cdef-0123-000000000000"
@@ -14,6 +15,7 @@
"guid": "01234567-89ab-cdef-0123-000000000001",
"type_guid": "bb499290-b57e-49f6-bf41-190386693794",
"flags": "0x0000000000000000",
+ "persist": false,
"ignore": false,
"ab": false,
"ab_expanded": false,
@@ -27,6 +29,7 @@
"guid": "01234567-89ab-cdef-0123-000000000002",
"type_guid": "0f2778c4-5cc1-4300-8670-6c88b7e57ed6",
"flags": "0x0000000000000000",
+ "persist": false,
"ignore": false,
"ab": false,
"ab_expanded": false,
@@ -40,6 +43,7 @@
"guid": "01234567-89ab-cdef-0123-000000000003",
"type_guid": "e99d84d7-2c1b-44cf-8c58-effae2dc2558",
"flags": "0x0000000000000000",
+ "persist": false,
"ignore": false,
"ab": false,
"ab_expanded": false,
@@ -53,6 +57,7 @@
"guid": "01234567-89ab-cdef-0123-000000000004",
"type_guid": "0bb7e6ed-4424-49c0-9372-7fbab465ab4c",
"flags": "0x0000000000000000",
+ "persist": false,
"ignore": false,
"ab": false,
"ab_expanded": false,
diff --git a/test/expected_json_stacked_ignore.bpt b/test/expected_json_stacked_ignore.bpt
index 858162a..9fac092 100644
--- a/test/expected_json_stacked_ignore.bpt
+++ b/test/expected_json_stacked_ignore.bpt
@@ -15,6 +15,7 @@
"guid": "01234567-89ab-cdef-0123-000000000001",
"type_guid": "bb499290-b57e-49f6-bf41-190386693794",
"flags": "0x0000000000000000",
+ "persist": false,
"ignore": false,
"ab": true,
"ab_expanded": true,
@@ -28,6 +29,7 @@
"guid": "01234567-89ab-cdef-0123-000000000002",
"type_guid": "bb499290-b57e-49f6-bf41-190386693794",
"flags": "0x0000000000000000",
+ "persist": false,
"ignore": false,
"ab": true,
"ab_expanded": true,
@@ -41,6 +43,7 @@
"guid": "01234567-89ab-cdef-0123-000000000003",
"type_guid": "0f2778c4-5cc1-4300-8670-6c88b7e57ed6",
"flags": "0x0000000000000000",
+ "persist": false,
"ignore": false,
"ab": true,
"ab_expanded": true,
@@ -54,6 +57,7 @@
"guid": "01234567-89ab-cdef-0123-000000000004",
"type_guid": "0f2778c4-5cc1-4300-8670-6c88b7e57ed6",
"flags": "0x0000000000000000",
+ "persist": false,
"ignore": false,
"ab": true,
"ab_expanded": true,
@@ -67,6 +71,7 @@
"guid": "01234567-89ab-cdef-0123-000000000005",
"type_guid": "e99d84d7-2c1b-44cf-8c58-effae2dc2558",
"flags": "0x0000000000000000",
+ "persist": false,
"ignore": false,
"ab": true,
"ab_expanded": true,
@@ -80,6 +85,7 @@
"guid": "01234567-89ab-cdef-0123-000000000006",
"type_guid": "e99d84d7-2c1b-44cf-8c58-effae2dc2558",
"flags": "0x0000000000000000",
+ "persist": false,
"ignore": false,
"ab": true,
"ab_expanded": true,
diff --git a/test/expected_json_stacked_new_partition.bpt b/test/expected_json_stacked_new_partition.bpt
index 0ca2443..5553c60 100644
--- a/test/expected_json_stacked_new_partition.bpt
+++ b/test/expected_json_stacked_new_partition.bpt
@@ -15,6 +15,7 @@
"guid": "01234567-89ab-cdef-0123-000000000001",
"type_guid": "bb499290-b57e-49f6-bf41-190386693794",
"flags": "0x0000000000000000",
+ "persist": false,
"ignore": false,
"ab": true,
"ab_expanded": true,
@@ -28,6 +29,7 @@
"guid": "01234567-89ab-cdef-0123-000000000002",
"type_guid": "bb499290-b57e-49f6-bf41-190386693794",
"flags": "0x0000000000000000",
+ "persist": false,
"ignore": false,
"ab": true,
"ab_expanded": true,
@@ -41,6 +43,7 @@
"guid": "01234567-89ab-cdef-0123-000000000003",
"type_guid": "0f2778c4-5cc1-4300-8670-6c88b7e57ed6",
"flags": "0x0000000000000000",
+ "persist": false,
"ignore": false,
"ab": true,
"ab_expanded": true,
@@ -54,6 +57,7 @@
"guid": "01234567-89ab-cdef-0123-000000000004",
"type_guid": "0f2778c4-5cc1-4300-8670-6c88b7e57ed6",
"flags": "0x0000000000000000",
+ "persist": false,
"ignore": false,
"ab": true,
"ab_expanded": true,
@@ -67,6 +71,7 @@
"guid": "01234567-89ab-cdef-0123-000000000005",
"type_guid": "e99d84d7-2c1b-44cf-8c58-effae2dc2558",
"flags": "0x0000000000000000",
+ "persist": false,
"ignore": false,
"ab": true,
"ab_expanded": true,
@@ -80,6 +85,7 @@
"guid": "01234567-89ab-cdef-0123-000000000006",
"type_guid": "e99d84d7-2c1b-44cf-8c58-effae2dc2558",
"flags": "0x0000000000000000",
+ "persist": false,
"ignore": false,
"ab": true,
"ab_expanded": true,
@@ -93,6 +99,7 @@
"guid": "01234567-89ab-cdef-0123-000000000007",
"type_guid": "0bb7e6ed-4424-49c0-9372-7fbab465ab4c",
"flags": "0x0000000000000000",
+ "persist": false,
"ignore": false,
"ab": false,
"ab_expanded": false,
@@ -106,6 +113,7 @@
"guid": "01234567-89ab-cdef-0123-000000000008",
"type_guid": "ebd0a0a2-b9e5-4433-87c0-68b6b72699c7",
"flags": "0x8000000000000000",
+ "persist": false,
"ignore": false,
"ab": false,
"ab_expanded": false,
diff --git a/test/expected_json_stacked_new_partition_on_top.bpt b/test/expected_json_stacked_new_partition_on_top.bpt
index 79c3fdc..cd1d18e 100644
--- a/test/expected_json_stacked_new_partition_on_top.bpt
+++ b/test/expected_json_stacked_new_partition_on_top.bpt
@@ -15,6 +15,7 @@
"guid": "01234567-89ab-cdef-0123-000000000001",
"type_guid": "bb499290-b57e-49f6-bf41-190386693794",
"flags": "0x0000000000000000",
+ "persist": false,
"ignore": false,
"ab": true,
"ab_expanded": true,
@@ -28,6 +29,7 @@
"guid": "01234567-89ab-cdef-0123-000000000002",
"type_guid": "bb499290-b57e-49f6-bf41-190386693794",
"flags": "0x0000000000000000",
+ "persist": false,
"ignore": false,
"ab": true,
"ab_expanded": true,
@@ -41,6 +43,7 @@
"guid": "01234567-89ab-cdef-0123-000000000003",
"type_guid": "0f2778c4-5cc1-4300-8670-6c88b7e57ed6",
"flags": "0x0000000000000000",
+ "persist": false,
"ignore": false,
"ab": true,
"ab_expanded": true,
@@ -54,6 +57,7 @@
"guid": "01234567-89ab-cdef-0123-000000000004",
"type_guid": "0f2778c4-5cc1-4300-8670-6c88b7e57ed6",
"flags": "0x0000000000000000",
+ "persist": false,
"ignore": false,
"ab": true,
"ab_expanded": true,
@@ -67,6 +71,7 @@
"guid": "01234567-89ab-cdef-0123-000000000005",
"type_guid": "e99d84d7-2c1b-44cf-8c58-effae2dc2558",
"flags": "0x0000000000000000",
+ "persist": false,
"ignore": false,
"ab": true,
"ab_expanded": true,
@@ -80,6 +85,7 @@
"guid": "01234567-89ab-cdef-0123-000000000006",
"type_guid": "e99d84d7-2c1b-44cf-8c58-effae2dc2558",
"flags": "0x0000000000000000",
+ "persist": false,
"ignore": false,
"ab": true,
"ab_expanded": true,
@@ -93,6 +99,7 @@
"guid": "01234567-89ab-cdef-0123-000000000007",
"type_guid": "0bb7e6ed-4424-49c0-9372-7fbab465ab4c",
"flags": "0x0000000000000000",
+ "persist": false,
"ignore": false,
"ab": false,
"ab_expanded": false,
@@ -106,6 +113,7 @@
"guid": "01234567-89ab-cdef-0123-000000000008",
"type_guid": "0fc63daf-8483-4772-8e79-3d69d8477de4",
"flags": "0x0000000000000000",
+ "persist": false,
"ignore": false,
"ab": false,
"ab_expanded": false,
diff --git a/test/expected_json_stacked_override_settings.bpt b/test/expected_json_stacked_override_settings.bpt
index d1c7b7d..ab40651 100644
--- a/test/expected_json_stacked_override_settings.bpt
+++ b/test/expected_json_stacked_override_settings.bpt
@@ -15,6 +15,7 @@
"guid": "01234567-89ab-cdef-0123-000000000001",
"type_guid": "bb499290-b57e-49f6-bf41-190386693794",
"flags": "0x0000000000000000",
+ "persist": false,
"ignore": false,
"ab": true,
"ab_expanded": true,
@@ -28,6 +29,7 @@
"guid": "01234567-89ab-cdef-0123-000000000002",
"type_guid": "bb499290-b57e-49f6-bf41-190386693794",
"flags": "0x0000000000000000",
+ "persist": false,
"ignore": false,
"ab": true,
"ab_expanded": true,
@@ -41,6 +43,7 @@
"guid": "01234567-89ab-cdef-0123-000000000003",
"type_guid": "0f2778c4-5cc1-4300-8670-6c88b7e57ed6",
"flags": "0x0000000000000000",
+ "persist": false,
"ignore": false,
"ab": true,
"ab_expanded": true,
@@ -54,6 +57,7 @@
"guid": "01234567-89ab-cdef-0123-000000000004",
"type_guid": "0f2778c4-5cc1-4300-8670-6c88b7e57ed6",
"flags": "0x0000000000000000",
+ "persist": false,
"ignore": false,
"ab": true,
"ab_expanded": true,
@@ -67,6 +71,7 @@
"guid": "01234567-89ab-cdef-0123-000000000005",
"type_guid": "e99d84d7-2c1b-44cf-8c58-effae2dc2558",
"flags": "0x0000000000000000",
+ "persist": false,
"ignore": false,
"ab": true,
"ab_expanded": true,
@@ -80,6 +85,7 @@
"guid": "01234567-89ab-cdef-0123-000000000006",
"type_guid": "e99d84d7-2c1b-44cf-8c58-effae2dc2558",
"flags": "0x0000000000000000",
+ "persist": false,
"ignore": false,
"ab": true,
"ab_expanded": true,
@@ -93,6 +99,7 @@
"guid": "01234567-89ab-cdef-0123-000000000007",
"type_guid": "0bb7e6ed-4424-49c0-9372-7fbab465ab4c",
"flags": "0x0000000000000000",
+ "persist": false,
"ignore": false,
"ab": false,
"ab_expanded": false,
diff --git a/test/expected_json_stacked_positions.bpt b/test/expected_json_stacked_positions.bpt
index 0c11be3..8469bec 100644
--- a/test/expected_json_stacked_positions.bpt
+++ b/test/expected_json_stacked_positions.bpt
@@ -15,6 +15,7 @@
"guid": "01234567-89ab-cdef-0123-000000000001",
"type_guid": "314f99d5-b2bf-4883-8d03-e2f2ce507d6a",
"flags": "0x0000000000000000",
+ "persist": false,
"ignore": false,
"ab": false,
"ab_expanded": false,
@@ -28,6 +29,7 @@
"guid": "01234567-89ab-cdef-0123-000000000002",
"type_guid": "314f99d5-b2bf-4883-8d03-e2f2ce507d6a",
"flags": "0x0000000000000000",
+ "persist": false,
"ignore": false,
"ab": false,
"ab_expanded": false,
@@ -41,6 +43,7 @@
"guid": "01234567-89ab-cdef-0123-000000000003",
"type_guid": "0f2778c4-5cc1-4300-8670-6c88b7e57ed6",
"flags": "0x0000000000000000",
+ "persist": false,
"ignore": false,
"ab": true,
"ab_expanded": true,
@@ -54,6 +57,7 @@
"guid": "01234567-89ab-cdef-0123-000000000004",
"type_guid": "0f2778c4-5cc1-4300-8670-6c88b7e57ed6",
"flags": "0x0000000000000000",
+ "persist": false,
"ignore": false,
"ab": true,
"ab_expanded": true,
@@ -67,6 +71,7 @@
"guid": "01234567-89ab-cdef-0123-000000000005",
"type_guid": "314f99d5-b2bf-4883-8d03-e2f2ce507d6a",
"flags": "0x0000000000000000",
+ "persist": false,
"ignore": false,
"ab": false,
"ab_expanded": false,
@@ -80,6 +85,7 @@
"guid": "01234567-89ab-cdef-0123-000000000006",
"type_guid": "bb499290-b57e-49f6-bf41-190386693794",
"flags": "0x0000000000000000",
+ "persist": false,
"ignore": false,
"ab": true,
"ab_expanded": true,
@@ -93,6 +99,7 @@
"guid": "01234567-89ab-cdef-0123-000000000007",
"type_guid": "bb499290-b57e-49f6-bf41-190386693794",
"flags": "0x0000000000000000",
+ "persist": false,
"ignore": false,
"ab": true,
"ab_expanded": true,
@@ -106,6 +113,7 @@
"guid": "01234567-89ab-cdef-0123-000000000008",
"type_guid": "e99d84d7-2c1b-44cf-8c58-effae2dc2558",
"flags": "0x0000000000000000",
+ "persist": false,
"ignore": false,
"ab": true,
"ab_expanded": true,
@@ -119,6 +127,7 @@
"guid": "01234567-89ab-cdef-0123-000000000009",
"type_guid": "e99d84d7-2c1b-44cf-8c58-effae2dc2558",
"flags": "0x0000000000000000",
+ "persist": false,
"ignore": false,
"ab": true,
"ab_expanded": true,
@@ -132,6 +141,7 @@
"guid": "01234567-89ab-cdef-0123-00000000000a",
"type_guid": "0bb7e6ed-4424-49c0-9372-7fbab465ab4c",
"flags": "0x0000000000000000",
+ "persist": false,
"ignore": false,
"ab": false,
"ab_expanded": false,
diff --git a/test/expected_json_stacked_size.bpt b/test/expected_json_stacked_size.bpt
index eb089da..43837cc 100644
--- a/test/expected_json_stacked_size.bpt
+++ b/test/expected_json_stacked_size.bpt
@@ -15,6 +15,7 @@
"guid": "01234567-89ab-cdef-0123-000000000001",
"type_guid": "bb499290-b57e-49f6-bf41-190386693794",
"flags": "0x0000000000000000",
+ "persist": false,
"ignore": false,
"ab": true,
"ab_expanded": true,
@@ -28,6 +29,7 @@
"guid": "01234567-89ab-cdef-0123-000000000002",
"type_guid": "bb499290-b57e-49f6-bf41-190386693794",
"flags": "0x0000000000000000",
+ "persist": false,
"ignore": false,
"ab": true,
"ab_expanded": true,
@@ -41,6 +43,7 @@
"guid": "01234567-89ab-cdef-0123-000000000003",
"type_guid": "0f2778c4-5cc1-4300-8670-6c88b7e57ed6",
"flags": "0x0000000000000000",
+ "persist": false,
"ignore": false,
"ab": true,
"ab_expanded": true,
@@ -54,6 +57,7 @@
"guid": "01234567-89ab-cdef-0123-000000000004",
"type_guid": "0f2778c4-5cc1-4300-8670-6c88b7e57ed6",
"flags": "0x0000000000000000",
+ "persist": false,
"ignore": false,
"ab": true,
"ab_expanded": true,
@@ -67,6 +71,7 @@
"guid": "01234567-89ab-cdef-0123-000000000005",
"type_guid": "e99d84d7-2c1b-44cf-8c58-effae2dc2558",
"flags": "0x0000000000000000",
+ "persist": false,
"ignore": false,
"ab": true,
"ab_expanded": true,
@@ -80,6 +85,7 @@
"guid": "01234567-89ab-cdef-0123-000000000006",
"type_guid": "e99d84d7-2c1b-44cf-8c58-effae2dc2558",
"flags": "0x0000000000000000",
+ "persist": false,
"ignore": false,
"ab": true,
"ab_expanded": true,
@@ -93,6 +99,7 @@
"guid": "01234567-89ab-cdef-0123-000000000007",
"type_guid": "0bb7e6ed-4424-49c0-9372-7fbab465ab4c",
"flags": "0x0000000000000000",
+ "persist": false,
"ignore": false,
"ab": false,
"ab_expanded": false,
diff --git a/test/expected_json_suffixes.bpt b/test/expected_json_suffixes.bpt
index 1e15d5c..ec50d5d 100644
--- a/test/expected_json_suffixes.bpt
+++ b/test/expected_json_suffixes.bpt
@@ -15,6 +15,7 @@
"guid": "01234567-89ab-cdef-0123-000000000001",
"type_guid": "bb499290-b57e-49f6-bf41-190386693794",
"flags": "0x0000000000000000",
+ "persist": false,
"ignore": false,
"ab": true,
"ab_expanded": true,
@@ -28,6 +29,7 @@
"guid": "01234567-89ab-cdef-0123-000000000002",
"type_guid": "bb499290-b57e-49f6-bf41-190386693794",
"flags": "0x0000000000000000",
+ "persist": false,
"ignore": false,
"ab": true,
"ab_expanded": true,
@@ -41,6 +43,7 @@
"guid": "01234567-89ab-cdef-0123-000000000003",
"type_guid": "0f2778c4-5cc1-4300-8670-6c88b7e57ed6",
"flags": "0x0000000000000000",
+ "persist": false,
"ignore": false,
"ab": true,
"ab_expanded": true,
@@ -54,6 +57,7 @@
"guid": "01234567-89ab-cdef-0123-000000000004",
"type_guid": "0f2778c4-5cc1-4300-8670-6c88b7e57ed6",
"flags": "0x0000000000000000",
+ "persist": false,
"ignore": false,
"ab": true,
"ab_expanded": true,
@@ -67,6 +71,7 @@
"guid": "01234567-89ab-cdef-0123-000000000005",
"type_guid": "e99d84d7-2c1b-44cf-8c58-effae2dc2558",
"flags": "0x0000000000000000",
+ "persist": false,
"ignore": false,
"ab": true,
"ab_expanded": true,
@@ -80,6 +85,7 @@
"guid": "01234567-89ab-cdef-0123-000000000006",
"type_guid": "e99d84d7-2c1b-44cf-8c58-effae2dc2558",
"flags": "0x0000000000000000",
+ "persist": false,
"ignore": false,
"ab": true,
"ab_expanded": true,
@@ -93,6 +99,7 @@
"guid": "01234567-89ab-cdef-0123-000000000007",
"type_guid": "0bb7e6ed-4424-49c0-9372-7fbab465ab4c",
"flags": "0x0000000000000000",
+ "persist": false,
"ignore": false,
"ab": false,
"ab_expanded": false,
diff --git a/test/persist.bpt b/test/persist.bpt
new file mode 100644
index 0000000..06f39d4
--- /dev/null
+++ b/test/persist.bpt
@@ -0,0 +1,40 @@
+{
+ "partitions": [
+ {
+ "label": "no_persist",
+ "size": "128 MiB",
+ "position": 1,
+ "type_guid": "brillo_boot"
+ },
+ {
+ "label": "false_persist",
+ "size": "128 MiB",
+ "position": 2,
+ "persist": false,
+ "type_guid": "brillo_boot"
+ },
+ {
+ "label": "true_persist",
+ "size": "128 MiB",
+ "position": 3,
+ "persist": true,
+ "type_guid": "brillo_boot"
+ },
+ {
+ "label": "false_persist_with_flags",
+ "size": "128 MiB",
+ "flags": "0x10",
+ "persist": false,
+ "position": 4,
+ "type_guid": "brillo_boot"
+ },
+ {
+ "label": "true_persist_with_flags",
+ "size": "128 MiB",
+ "flags": "0x10",
+ "persist": true,
+ "position": 5,
+ "type_guid": "brillo_boot"
+ }
+ ]
+}