From 46628fff98a08488bcf6acf0d3aaf29e18b46660 Mon Sep 17 00:00:00 2001 From: Inseob Kim Date: Tue, 18 Apr 2023 11:31:25 +0900 Subject: [PATCH] Add min_sdk_version prop to snapshots Bug: 277403349 Test: build vndk/vendor snapshot and build Change-Id: I460c69cbc5820132690c9d3fb325c5eb504f5366 --- vendor_snapshot/update.py | 1 + vndk/snapshot/gen_buildfiles.py | 43 ++++++++++++++++++++++----------- 2 files changed, 30 insertions(+), 14 deletions(-) diff --git a/vendor_snapshot/update.py b/vendor_snapshot/update.py index dab78429d..88ea5f1a1 100644 --- a/vendor_snapshot/update.py +++ b/vendor_snapshot/update.py @@ -113,6 +113,7 @@ JSON_TO_BP = { 'CrateName': 'crate_name', 'Prebuilt': 'prebuilt', 'Overrides': 'overrides', + 'MinSdkVersion': 'min_sdk_version', } SANITIZER_VARIANT_PROPS = { diff --git a/vndk/snapshot/gen_buildfiles.py b/vndk/snapshot/gen_buildfiles.py index 0f37b0873..4cbdec8d3 100644 --- a/vndk/snapshot/gen_buildfiles.py +++ b/vndk/snapshot/gen_buildfiles.py @@ -595,7 +595,7 @@ class GenBuildFile(object): break return notice - def get_arch_props(name, arch, src_paths): + def get_arch_props(name, arch, srcs_props): """Returns build rule for arch specific srcs. e.g., @@ -619,7 +619,7 @@ class GenBuildFile(object): Args: name: string, name of prebuilt module arch: string, VNDK snapshot arch (e.g. 'arm64') - src_paths: list of string paths, prebuilt source paths + srcs_props: dict, prebuilt source paths and corresponding flags """ arch_props = '{ind}arch: {{\n'.format(ind=self.INDENT) @@ -639,21 +639,12 @@ class GenBuildFile(object): # Rename out/soong/.intermediates to generated-headers for better readability. return [d.replace(utils.SOONG_INTERMEDIATES_DIR, utils.GENERATED_HEADERS_DIR, 1) for d in dirs] - for src in sorted(src_paths): + for src in sorted(srcs_props.keys()): include_dirs = '' system_include_dirs = '' flags = '' relative_install_path = '' - prop_path = os.path.join(src_root, src+'.json') - props = dict() - try: - with open(prop_path, 'r') as f: - props = json.loads(f.read()) - os.unlink(prop_path) - except: - # TODO(b/70312118): Parse from soong build system - if name == 'android.hidl.memory@1.0-impl': - props['RelativeInstallPath'] = 'hw' + props = srcs_props[src] if 'ExportedDirs' in props: dirs = rename_generated_dirs(props['ExportedDirs']) l = ['include/%s' % d for d in dirs] @@ -733,7 +724,21 @@ class GenBuildFile(object): vndk_sp=vndk_sp, vndk_private=vndk_private)) - arch_props = get_arch_props(name, arch, src_paths) + srcs_props = dict() + for src in src_paths: + props = dict() + prop_path = os.path.join(src_root, src+'.json') + try: + with open(prop_path, 'r') as f: + props = json.loads(f.read()) + os.unlink(prop_path) + except: + # TODO(b/70312118): Parse from soong build system + if name == 'android.hidl.memory@1.0-impl': + props['RelativeInstallPath'] = 'hw' + srcs_props[src] = props + arch_props = get_arch_props(name, arch, srcs_props) + if self._license_in_json: license = get_license_prop(name) else: @@ -743,6 +748,14 @@ class GenBuildFile(object): if is_binder32: binder32bit = '{ind}binder32bit: true,\n'.format(ind=self.INDENT) + min_sdk_version = '' + for src, props in srcs_props.items(): + if 'MinSdkVersion' in props: + min_sdk_version = '{ind}min_sdk_version: "{ver}",\n'.format( + ind=self.INDENT, + ver=props['MinSdkVersion']) + break + return ('vndk_prebuilt_shared {{\n' '{ind}name: "{name}",\n' '{ind}version: "{ver}",\n' @@ -751,6 +764,7 @@ class GenBuildFile(object): '{ind}vendor_available: true,\n' '{product_available}' '{vndk_props}' + '{min_sdk_version}' '{license}' '{arch_props}' '}}\n'.format( @@ -761,6 +775,7 @@ class GenBuildFile(object): binder32bit=binder32bit, product_available=product_available, vndk_props=vndk_props, + min_sdk_version=min_sdk_version, license=license, arch_props=arch_props))