Merge "Define BOARD_API_LEVEL and BOARD_API_LEVEL_FROZEN" into main am: 136fa83d4e am: df2645967d am: d7d7e5c61e

Original change: https://android-review.googlesource.com/c/platform/build/+/2825990

Change-Id: Ifcd1e9f0cd26c72f57652e9eed424ec92e7977f3
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Justin Yun
2023-11-14 01:09:39 +00:00
committed by Automerger Merge Worker
4 changed files with 34 additions and 53 deletions

View File

@@ -39,54 +39,26 @@ def mangle_build_prop(prop_list):
val = val + ",adb"
prop_list.put("persist.sys.usb.config", val)
def validate_grf_props(prop_list, sdk_version):
def validate_grf_props(prop_list):
"""Validate GRF properties if exist.
If ro.board.first_api_level is defined, check if its value is valid for the
sdk version. This is only for the release version.
Also, validate the value of ro.board.api_level if defined.
If ro.board.first_api_level is defined, check if its value is valid.
Returns:
True if the GRF properties are valid.
"""
grf_api_level = prop_list.get_value("ro.board.first_api_level")
board_api_level = prop_list.get_value("ro.board.api_level")
platform_version_codename = prop_list.get_value("ro.build.version.codename")
if not grf_api_level:
if board_api_level:
sys.stderr.write("error: non-GRF device must not define "
"ro.board.api_level\n")
return False
# non-GRF device skips the GRF validation test
return True
grf_api_level = int(grf_api_level)
if board_api_level:
if grf_api_level and board_api_level:
grf_api_level = int(grf_api_level)
board_api_level = int(board_api_level)
if board_api_level < grf_api_level:
sys.stderr.write("error: ro.board.api_level(%d) must be greater than "
sys.stderr.write("error: ro.board.api_level(%d) must not be less than "
"ro.board.first_api_level(%d)\n"
% (board_api_level, grf_api_level))
return False
# skip sdk version validation for dev-stage non-REL devices
if platform_version_codename != "REL":
return True
if grf_api_level > sdk_version:
sys.stderr.write("error: ro.board.first_api_level(%d) must be less than "
"or equal to ro.build.version.sdk(%d)\n"
% (grf_api_level, sdk_version))
return False
if board_api_level:
if board_api_level > sdk_version:
sys.stderr.write("error: ro.board.api_level(%d) must be less than or "
"equal to ro.build.version.sdk(%d)\n"
% (board_api_level, sdk_version))
return False
return True
def validate(prop_list):
@@ -271,7 +243,7 @@ def main(argv):
mangle_build_prop(props)
if not override_optional_props(props, args.allow_dup):
sys.exit(1)
if not validate_grf_props(props, args.sdk_version):
if not validate_grf_props(props):
sys.exit(1)
if not validate(props):
sys.exit(1)

View File

@@ -255,29 +255,17 @@ class PropListTestcase(unittest.TestCase):
stderr_redirect = io.StringIO()
with contextlib.redirect_stderr(stderr_redirect):
props = PropList("hello")
props.put("ro.board.first_api_level","25")
props.put("ro.board.first_api_level","202504")
props.put("ro.build.version.codename", "REL")
# ro.board.first_api_level must be less than or equal to the sdk version
self.assertFalse(validate_grf_props(props, 20))
self.assertTrue(validate_grf_props(props, 26))
self.assertTrue(validate_grf_props(props, 35))
# manually set ro.board.api_level to an invalid value
props.put("ro.board.api_level","20")
self.assertFalse(validate_grf_props(props, 26))
props.put("ro.board.api_level","202404")
self.assertFalse(validate_grf_props(props))
props.get_all_props()[-1].make_as_comment()
# manually set ro.board.api_level to a valid value
props.put("ro.board.api_level","26")
self.assertTrue(validate_grf_props(props, 26))
# ro.board.api_level must be less than or equal to the sdk version
self.assertFalse(validate_grf_props(props, 25))
# allow setting future api_level before release
props.get_all_props()[-2].make_as_comment()
props.put("ro.build.version.codename", "NonRel")
self.assertTrue(validate_grf_props(props, 24))
props.put("ro.board.api_level","202504")
self.assertTrue(validate_grf_props(props))
if __name__ == '__main__':
unittest.main(verbosity=2)