diff options
author | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2023-05-10 16:04:22 +0000 |
---|---|---|
committer | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2023-05-10 16:04:22 +0000 |
commit | 55a9a577b3524e0926f24bb3d1be6673c6673299 (patch) | |
tree | fac3402310dbc7943bc85f58bfac3dcb7ed806ed | |
parent | da8a949c79242d29f10af9d929e8878c759b7ec5 (diff) | |
parent | 90a0b0e43df99974f3e398f0554927c379c35329 (diff) | |
download | orchestrator-aml_tz5_341510010.tar.gz |
Snap for 10103804 from 90a0b0e43df99974f3e398f0554927c379c35329 to mainline-tzdata5-releaseaml_tz5_341510070aml_tz5_341510050aml_tz5_341510010aml_tz5_341510010
Change-Id: I3ab3da3028546f0da765cb6d622f64141bb637ef
-rw-r--r-- | apis/Android.bp | 347 | ||||
-rw-r--r-- | apis/api_packages.json | 157 | ||||
-rw-r--r-- | core/api_assembly.py | 18 | ||||
-rw-r--r-- | core/cc/api_assembly.py | 55 | ||||
-rw-r--r-- | core/cc/library.py | 6 | ||||
-rwxr-xr-x | inner_build/inner_build_soong.py | 9 |
6 files changed, 40 insertions, 552 deletions
diff --git a/apis/Android.bp b/apis/Android.bp deleted file mode 100644 index 862afd2..0000000 --- a/apis/Android.bp +++ /dev/null @@ -1,347 +0,0 @@ -// Copyright 2022 Google Inc. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package { - default_applicable_licenses: ["Android-Apache-2.0"], -} - -api_domain { - name: "system", - cc_api_contributions: [ - // ndk libraries for publicapi - "libaaudio.ndk", - "libamidi.ndk", - "libandroid.ndk", - "libbinder_ndk.ndk", - "libc.ndk", - "libcamera2ndk.ndk", - "libdl.ndk", - "libEGL.ndk", - "libGLESv1_CM.ndk", - "libGLESv2.ndk", - "libGLESv3.ndk", - "libicu.ndk", - "libjnigraphics.ndk", - "liblog.ndk", - "libm.ndk", - "libnativewindow.ndk", - "libOpenMAXAL.ndk", - "libOpenSLES.ndk", - "libstdc++.ndk", - "libsync.ndk", - "libvulkan.ndk", - "libz.ndk", - - // module-libapi (used by apexes) and vendorapi libraries - "heapprofd_api_noop", - "heapprofd_client_api", - "libaaudio", - "libadbd_auth", - "libadbd_fs", - "libandroid", - "libandroid_net", - "libartpalette-system", - "libbinder_ndk", - "libbinder_rpc_unstable", - "libc", - "libcgrouprc", - "libdl", - "libdl_android", - "libft2", - "libEGL", - "libGLESv1_CM", - "libGLESv2", - "libGLESv3", - "libincident", - "liblog", - "libm", - "libmediametrics", - "libmediandk", - "libnativewindow", - "libneuralnetworks_packageinfo", - "libRS", - "libselinux", - "libsync", - "libvndksupport", - "libvulkan", - "libz", - ], - - java_api_contributions: [ - "api-stubs-docs-non-updatable", - "module-lib-api-stubs-docs-non-updatable", - "system-api-stubs-docs-non-updatable", - "test-api-stubs-docs-non-updatable", - ], -} - -// All the apex api_domains have been suffixed with .contribution for now -// This prevents a name-collision with the actual apex -// Long term, the implementation of these two module types should be merged -api_domain { - name: "com.android.adbd.contribution", - cc_api_contributions: [ - "libadb_pairing_auth", - "libadb_pairing_connection", - "libadb_pairing_server", - "libadbconnection_client", - ], -} - -api_domain { - name: "com.android.art.contribution", - cc_api_contributions: [ - "libandroidio", - "libdexfile", - "libnativebridge", - "libnativehelper", - "libnativeloader", - "libsigchain", - ], - java_api_contributions: [ - "art.module.intra.core.api.stubs.source", - "art.module.public.api.stubs.source", - "art.module.public.api.stubs.source.module_lib", - "art.module.public.api.stubs.source.system", - // ART's contributions to Toolchain API surface - // This is a droidstubs module and not a java_sdk_library - "art.module.toolchain.api", - ], -} - -api_domain { - name: "com.android.adservices.contribution", - // This apex contributes 2 java libraries - java_api_contributions: [ - "framework-adservices.stubs.source", - "framework-adservices.stubs.source.module_lib", - "framework-adservices.stubs.source.system", - "framework-sdksandbox.stubs.source", - "framework-sdksandbox.stubs.source.module_lib", - "framework-sdksandbox.stubs.source.system", - ], -} - -api_domain { - name: "com.android.appsearch.contribution", - java_api_contributions: [ - "framework-appsearch.stubs.source", - "framework-appsearch.stubs.source.module_lib", - "framework-appsearch.stubs.source.system", - ], -} - -api_domain { - name: "com.android.bluetooth.contribution", - java_api_contributions: [ - "framework-bluetooth.stubs.source", - "framework-bluetooth.stubs.source.module_lib", - "framework-bluetooth.stubs.source.system", - ], -} - -api_domain { - name: "com.android.connectivity.contribution", - java_api_contributions: [ - "framework-connectivity.stubs.source", - "framework-connectivity.stubs.source.module_lib", - "framework-connectivity.stubs.source.system", - ], -} - -api_domain { - name: "com.android.connectivity-t.contribution", - java_api_contributions: [ - "framework-connectivity-t.stubs.source", - "framework-connectivity-t.stubs.source.module_lib", - "framework-connectivity-t.stubs.source.system", - ], -} - -api_domain { - name: "com.android.conscrypt.contribution", - java_api_contributions: [ - "conscrypt.module.intra.core.api.stubs.source", - "conscrypt.module.platform.api.stubs.source", - "conscrypt.module.public.api.stubs.source", - "conscrypt.module.public.api.stubs.source.module_lib", - "conscrypt.module.public.api.stubs.source.system", - ], -} - -api_domain { - name: "com.android.graphics.contribution", - java_api_contributions: [ - "framework-graphics.stubs.source", - "framework-graphics.stubs.source.module_lib", - "framework-graphics.stubs.source.system", - ], -} - -api_domain { - name: "com.android.i18n.contribution", - cc_api_contributions: [ - "libandroidicu", - "libicu", - ], - java_api_contributions: [ - "i18n.module.intra.core.api.stubs.source", - "i18n.module.public.api.stubs.source", - "i18n.module.public.api.stubs.source.module_lib", - "i18n.module.public.api.stubs.source.system", - // i18n exports two versions of CorePlatformApi (stable and legacy) - "legacy.i18n.module.platform.api.stubs.source", - "stable.i18n.module.platform.api.stubs.source", - ], -} - -api_domain { - name: "com.android.ipsec.contribution", - java_api_contributions: [ - "android.net.ipsec.ike.stubs.source", - "android.net.ipsec.ike.stubs.source.module_lib", - "android.net.ipsec.ike.stubs.source.system", - ], -} - -api_domain { - name: "com.android.media.contribution", - java_api_contributions: [ - "framework-media.stubs.source", - "framework-media.stubs.source.module_lib", - "framework-media.stubs.source.system", - ], -} - -api_domain { - name: "com.android.mediaprovider.contribution", - java_api_contributions: [ - "framework-mediaprovider.stubs.source", - "framework-mediaprovider.stubs.source.module_lib", - "framework-mediaprovider.stubs.source.system", - ], -} - -api_domain { - name: "com.android.neuralnetworks.contribution", - cc_api_contributions: [ - "libneuralnetworks.ndk", - "libneuralnetworks", - ], -} - -api_domain { - name: "com.android.ondevicepersonalization.contribution", - java_api_contributions: [ - "framework-ondevicepersonalization.stubs.source", - "framework-ondevicepersonalization.stubs.source.module_lib", - "framework-ondevicepersonalization.stubs.source.system", - ], -} - -api_domain { - name: "com.android.os.statsd.contribution", - cc_api_contributions: [ - "libstatspull", - "libstatssocket", - ], - java_api_contributions: [ - "framework-statsd.stubs.source", - "framework-statsd.stubs.source.module_lib", - "framework-statsd.stubs.source.system", - ], -} - -api_domain { - name: "com.android.permission.contribution", - java_api_contributions: [ - "framework-permission.stubs.source", - "framework-permission.stubs.source.module_lib", - "framework-permission.stubs.source.system", - ], -} - -api_domain { - name: "com.android.permission-s.contribution", - java_api_contributions: [ - "framework-permission-s.stubs.source", - "framework-permission-s.stubs.source.module_lib", - "framework-permission-s.stubs.source.system", - ], -} - -api_domain { - name: "com.android.resolv.contribution", - cc_api_contributions: [ - "libnetd_resolv", - ], -} - -api_domain { - name: "com.android.scheduling.contribution", - java_api_contributions: [ - "framework-scheduling.stubs.source", - "framework-scheduling.stubs.source.module_lib", - "framework-scheduling.stubs.source.system", - ], -} - -api_domain { - name: "com.android.sdkext.contribution", - java_api_contributions: [ - "framework-sdkextensions.stubs.source", - "framework-sdkextensions.stubs.source.module_lib", - "framework-sdkextensions.stubs.source.system", - ], -} - -api_domain { - name: "com.android.tethering.contribution", - cc_api_contributions: [ - "libnetd_updatable", - ], - java_api_contributions: [ - "framework-tethering.stubs.source", - "framework-tethering.stubs.source.module_lib", - "framework-tethering.stubs.source.system", - ], -} - -api_domain { - name: "com.android.uwb.contribution", - java_api_contributions: [ - "framework-uwb.stubs.source", - "framework-uwb.stubs.source.module_lib", - "framework-uwb.stubs.source.system", - ], -} - -api_domain { - name: "com.android.virt.contribution", - java_api_contributions: [ - "framework-virtualization.stubs.source", - "framework-virtualization.stubs.source.module_lib", - "framework-virtualization.stubs.source.system", - "framework-virtualization.stubs.source.test", - ], -} - -api_domain { - name: "com.android.wifi.contribution", - java_api_contributions: [ - "framework-wifi.stubs.source", - "framework-wifi.stubs.source.module_lib", - "framework-wifi.stubs.source.system", - ], -} diff --git a/apis/api_packages.json b/apis/api_packages.json deleted file mode 100644 index 244930b..0000000 --- a/apis/api_packages.json +++ /dev/null @@ -1,157 +0,0 @@ -[ - { - "api_domain": "com.android.adbd", - "api_package": "//build/orchestrator/apis", - "api_target": "com.android.adbd.contribution", - "is_apex": true - }, - { - "api_domain": "com.android.art", - "api_package": "//build/orchestrator/apis", - "api_target": "com.android.art.contribution", - "is_apex": true - }, - { - "api_domain": "com.android.adservices", - "api_package": "//build/orchestrator/apis", - "api_target": "com.android.adservices.contribution", - "is_apex": true - }, - { - "api_domain": "com.android.appsearch", - "api_package": "//build/orchestrator/apis", - "api_target": "com.android.appsearch.contribution", - "is_apex": true - }, - { - "api_domain": "com.android.bluetooth", - "api_package": "//build/orchestrator/apis", - "api_target": "com.android.bluetooth.contribution", - "is_apex": true - }, - { - "api_domain": "com.android.connectivity", - "api_package": "//build/orchestrator/apis", - "api_target": "com.android.connectivity.contribution", - "is_apex": true - }, - { - "api_domain": "com.android.connectivity-t", - "api_package": "//build/orchestrator/apis", - "api_target": "com.android.connectivity-t.contribution", - "is_apex": true - }, - { - "api_domain": "com.android.conscrypt", - "api_package": "//build/orchestrator/apis", - "api_target": "com.android.conscrypt.contribution", - "is_apex": true - }, - { - "api_domain": "com.android.graphics", - "api_package": "//build/orchestrator/apis", - "api_target": "com.android.graphics.contribution", - "is_apex": true - }, - { - "api_domain": "com.android.i18n", - "api_package": "//build/orchestrator/apis", - "api_target": "com.android.i18n.contribution", - "is_apex": true - }, - { - "api_domain": "com.android.ipsec", - "api_package": "//build/orchestrator/apis", - "api_target": "com.android.ipsec.contribution", - "is_apex": true - }, - { - "api_domain": "com.android.media", - "api_package": "//build/orchestrator/apis", - "api_target": "com.android.media.contribution", - "is_apex": true - }, - { - "api_domain": "com.android.mediaprovider", - "api_package": "//build/orchestrator/apis", - "api_target": "com.android.mediaprovider.contribution", - "is_apex": true - }, - { - "api_domain": "com.android.neuralnetworks", - "api_package": "//build/orchestrator/apis", - "api_target": "com.android.neuralnetworks.contribution", - "is_apex": true - }, - { - "api_domain": "com.android.os.statsd", - "api_package": "//build/orchestrator/apis", - "api_target": "com.android.os.statsd.contribution", - "is_apex": true - }, - { - "api_domain": "com.android.ondevicepersonalization", - "api_package": "//build/orchestrator/apis", - "api_target": "com.android.ondevicepersonalization.contribution", - "is_apex": true - }, - { - "api_domain": "com.android.permission", - "api_package": "//build/orchestrator/apis", - "api_target": "com.android.permission.contribution", - "is_apex": true - }, - { - "api_domain": "com.android.permission-s", - "api_package": "//build/orchestrator/apis", - "api_target": "com.android.permission-s.contribution", - "is_apex": true - }, - { - "api_domain": "com.android.resolv", - "api_package": "//build/orchestrator/apis", - "api_target": "com.android.resolv.contribution", - "is_apex": true - }, - { - "api_domain": "com.android.scheduling", - "api_package": "//build/orchestrator/apis", - "api_target": "com.android.scheduling.contribution", - "is_apex": true - }, - { - "api_domain": "com.android.sdkext", - "api_package": "//build/orchestrator/apis", - "api_target": "com.android.sdkext.contribution", - "is_apex": true - }, - { - "api_domain": "com.android.tethering", - "api_package": "//build/orchestrator/apis", - "api_target": "com.android.tethering.contribution", - "is_apex": true - }, - { - "api_domain": "com.android.uwb", - "api_package": "//build/orchestrator/apis", - "api_target": "com.android.uwb.contribution", - "is_apex": true - }, - { - "api_domain": "com.android.virt", - "api_package": "//build/orchestrator/apis", - "api_target": "com.android.virt.contribution", - "is_apex": true - }, - { - "api_domain": "com.android.wifi", - "api_package": "//build/orchestrator/apis", - "api_target": "com.android.wifi.contribution", - "is_apex": true - }, - { - "api_domain": "system", - "api_package": "//build/orchestrator/apis", - "api_target": "system" - } -] diff --git a/core/api_assembly.py b/core/api_assembly.py index ea63a07..0844d4b 100644 --- a/core/api_assembly.py +++ b/core/api_assembly.py @@ -61,9 +61,6 @@ def assemble_apis(context, inner_trees): # and Android.bp/BUILD files to make those available to inner trees. # TODO: Parallelize? Skip unnecessary work? for stub_library in stub_libraries: - STUB_LANGUAGE_HANDLERS[stub_library.language](context, ninja, - build_file_generator, - stub_library) # TODO (b/265962882): Export APIs of version < current. # API files of older versions (29,30,...) are currently not # available in out/api_surfaces. @@ -74,12 +71,19 @@ def assemble_apis(context, inner_trees): # modules for all NDK libraries, starting from version=1. # This does not compromise on API correctness though, since the correct # version number will be passed to the ndkstubgen invocation. - if stub_library.language == "cc_libraries" and stub_library.api_surface == "publicapi": - for additional_version in range(1, - 34): # Till 33, 34 is current - stub_library.api_surface_version = str(additional_version) + # TODO(b/266830850): Revisit stubs versioning for Module-lib API + # surface. + if stub_library.language == "cc_libraries" and stub_library.api_surface in ["publicapi", "module-libapi"]: + versions = list(range(1,34)) # 34 is current + versions.append("current") + for version in versions: + stub_library.api_surface_version = str(version) STUB_LANGUAGE_HANDLERS[stub_library.language]( context, ninja, build_file_generator, stub_library) + else: + STUB_LANGUAGE_HANDLERS[stub_library.language](context, ninja, + build_file_generator, + stub_library) # TODO: Handle host_executables separately or as a StubLibrary language? diff --git a/core/cc/api_assembly.py b/core/cc/api_assembly.py index 73d0bf1..f7395f3 100644 --- a/core/cc/api_assembly.py +++ b/core/cc/api_assembly.py @@ -38,7 +38,9 @@ DEVICE_CLANG_TRIPLES = { # API surfaces that should be imported into an inner tree. # TODO: Add `module-libapi` -_SUPPORTED_API_SURFACES_FOR_IMPORT = {"publicapi", "vendorapi"} +_SUPPORTED_API_SURFACES_FOR_IMPORT = { + "publicapi", "vendorapi", "module-libapi" +} class CcApiAssemblyContext(object): @@ -50,12 +52,6 @@ class CcApiAssemblyContext(object): self._linker = Linker() self._api_levels_file_added = False self._api_imports_module_added = False - self._api_library_src_added = { - "arm": set(), - "arm64": set(), - "x86": set(), - "x86_64": set(), - } self._api_stub_library_bp_file = None def get_cc_api_assembler(self): @@ -135,6 +131,7 @@ class CcApiAssemblyContext(object): api_imports_module = self._api_imports_module(context, bp_file) # TODO: Add header_libs explicitly if necessary. api_imports_module.extend_property("shared_libs", [library_name]) + api_imports_module.extend_property("apex_shared_libs", [library_name]) return stub_module def _api_stub_variant_module( @@ -170,11 +167,23 @@ class CcApiAssemblyContext(object): stub_variant.add_property("variant", "ndk") stub_variant.add_property("version", stub_library.api_surface_version) + stub_module.extend_property( + "variants", [f"ndk.{stub_library.api_surface_version}"]) bp_file.add_module(stub_variant) return stub_variant - # TODO : Handle other variants - return None + if stub_library.api_surface == "module-libapi": + stub_variant.add_property("variant", "apex") + stub_variant.add_property("version", + stub_library.api_surface_version) + stub_module.extend_property( + "variants", [f"apex.{stub_library.api_surface_version}"]) + bp_file.add_module(stub_variant) + return stub_variant + + raise Exception( + f"API surface {stub_library.api_surface} of library {stub_library.name} is not a recognized API surface." + ) def assemble_cc_api_library(self, context, ninja, build_file_generator, stub_library): @@ -317,6 +326,7 @@ class CcApiAssemblyContext(object): out=output_so, frontend=context.tools.clang_cxx(), ) + link_context.add_implicits(api_deps) self._linker.link(ninja, link_context) # TODO: Short term hack to make the stub library available to @@ -336,33 +346,6 @@ class CcApiAssemblyContext(object): # Assemble the header files in out before compiling the rdeps ninja.add_global_phony(src_path_in_inner_tree, api_deps) - # TODO: Hack to make analysis of apex modules pass. - # Tracking bug: b/264963986 - # Creates an so file as `src` for the top-level - # `cc_api_library`. - # This is necessary since SystemApi import for apexes is WIP, - # and the mainline module variants (incorrectly) try to link - # against the `src` of the top-level `cc_api_library`. - # This property should be a no-op anyways, so hardcode it to - # arm64 for now. - if stub_library.name not in self._api_library_src_added[arch]: - for tree in ["system", "vendor", "apexes"]: - # Copy the file to the top-level cc_api_library in out. - # e.g. src: - # out/api_surfaces/publicapi/current/libc/arm/libc.so - # e.g. dst: out/api_surfaces/arm/libc.so - top_level_output_so = os.path.join( - context.out.api_surfaces_dir(), arch, soname) - ninja.add_copy_file(top_level_output_so, output_so) - # Create a phony target of this to inner tree - # e.g. src: out/api_surfaces/arm/libc.so - # e.g. dst: vendor/out/api_surfaces/arm/libc.so - ninja.add_global_phony( - os.path.join(tree, top_level_output_so), - [top_level_output_so]) - self._api_library_src_added[arch].add( - stub_library.name) - # Add the prebuilt stub library as src to Android.bp # The layout is # out/../libfoo diff --git a/core/cc/library.py b/core/cc/library.py index f7c908b..fb3576b 100644 --- a/core/cc/library.py +++ b/core/cc/library.py @@ -59,6 +59,10 @@ class LinkContext(): self.flags = flags self.out = out self.frontend = frontend + self.implicits = [frontend] + + def add_implicits(self, implicits: List[str]): + self.implicits.extend(implicits) class Linker(): @@ -76,7 +80,7 @@ class Linker(): link_action = BuildAction(output=link_context.out, inputs=link_context.objs, rule=link_rule.name, - implicits=[link_context.frontend] + implicits=link_context.implicits, ) link_action.add_variable("ldFrontend", link_context.frontend) link_action.add_variable("ldFlags", link_context.flags) diff --git a/inner_build/inner_build_soong.py b/inner_build/inner_build_soong.py index e51711c..b11cc32 100755 --- a/inner_build/inner_build_soong.py +++ b/inner_build/inner_build_soong.py @@ -72,7 +72,7 @@ class InnerBuildSoong(common.Commands): cmd = [ "build/soong/soong_ui.bash", "--build-mode", f"--dir={args.inner_tree}", "-all-modules", "nothing", - "--search-api-dir" + "--skip-soong-tests", "--search-api-dir", "--multitree-build" ] p = subprocess.run(cmd, shell=False, check=False) @@ -83,8 +83,7 @@ class InnerBuildSoong(common.Commands): # Capture the environment variables passed by soong_ui to single-tree # ninja. - env_path = os.path.join(args.out_dir, 'soong', - 'ninja.environment') + env_path = os.path.join(args.out_dir, 'soong', 'ninja.environment') with open(env_path, "r", encoding='iso-8859-1') as f: try: env_json = json.load(f) @@ -110,7 +109,8 @@ class InnerBuildSoong(common.Commands): class ApiMetadataFile(object): """Utility class that wraps the generated API surface metadata files""" - def __init__(self, inner_tree: str, path: str, bazel_output_user_root: str): + def __init__(self, inner_tree: str, path: str, + bazel_output_user_root: str): self.inner_tree = inner_tree self.path = path self.bazel_output_user_root = bazel_output_user_root @@ -305,6 +305,7 @@ class ApiExporterBazel(object): f"--dir={self.inner_tree}", "api_bp2build", "--skip-soong-tests", + "--multitree-build", "--search-api-dir", # This ensures that Android.bp.list remains the same in the analysis step. ] return self._run_cmd(cmd, **kwargs) |