aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2023-05-10 16:04:22 +0000
committerAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2023-05-10 16:04:22 +0000
commit55a9a577b3524e0926f24bb3d1be6673c6673299 (patch)
treefac3402310dbc7943bc85f58bfac3dcb7ed806ed
parentda8a949c79242d29f10af9d929e8878c759b7ec5 (diff)
parent90a0b0e43df99974f3e398f0554927c379c35329 (diff)
downloadorchestrator-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.bp347
-rw-r--r--apis/api_packages.json157
-rw-r--r--core/api_assembly.py18
-rw-r--r--core/cc/api_assembly.py55
-rw-r--r--core/cc/library.py6
-rwxr-xr-xinner_build/inner_build_soong.py9
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)