diff options
12 files changed, 66 insertions, 49 deletions
diff --git a/core/binary.mk b/core/binary.mk index 0582920c14..b14d8b82bf 100644 --- a/core/binary.mk +++ b/core/binary.mk @@ -1570,28 +1570,22 @@ my_ldlibs += $(my_cxx_ldlibs) ## Define PRIVATE_ variables from global vars ########################################################### ifndef LOCAL_IS_HOST_MODULE + ifdef LOCAL_USE_VNDK -my_target_global_c_includes := \ - $($(LOCAL_2ND_ARCH_VAR_PREFIX)$(my_prefix)PROJECT_INCLUDES) -my_target_global_c_system_includes := \ - $(TARGET_OUT_HEADERS) \ - $($(LOCAL_2ND_ARCH_VAR_PREFIX)$(my_prefix)PROJECT_SYSTEM_INCLUDES) + my_target_global_c_includes := + my_target_global_c_system_includes := $(TARGET_OUT_HEADERS) else ifdef LOCAL_SDK_VERSION -my_target_global_c_includes := -my_target_global_c_system_includes := $(my_ndk_stl_include_path) $(my_ndk_sysroot_include) + my_target_global_c_includes := + my_target_global_c_system_includes := $(my_ndk_stl_include_path) $(my_ndk_sysroot_include) else ifdef BOARD_VNDK_VERSION -my_target_global_c_includes := $(SRC_HEADERS) \ - $($(LOCAL_2ND_ARCH_VAR_PREFIX)$(my_prefix)PROJECT_INCLUDES) \ + my_target_global_c_includes := $(SRC_HEADERS) \ $($(LOCAL_2ND_ARCH_VAR_PREFIX)$(my_prefix)C_INCLUDES) -my_target_global_c_system_includes := $(SRC_SYSTEM_HEADERS) \ - $($(LOCAL_2ND_ARCH_VAR_PREFIX)$(my_prefix)PROJECT_SYSTEM_INCLUDES) \ + my_target_global_c_system_includes := $(SRC_SYSTEM_HEADERS) \ $($(LOCAL_2ND_ARCH_VAR_PREFIX)$(my_prefix)C_SYSTEM_INCLUDES) else -my_target_global_c_includes := $(SRC_HEADERS) \ - $($(LOCAL_2ND_ARCH_VAR_PREFIX)$(my_prefix)PROJECT_INCLUDES) \ + my_target_global_c_includes := $(SRC_HEADERS) \ $($(LOCAL_2ND_ARCH_VAR_PREFIX)$(my_prefix)C_INCLUDES) -my_target_global_c_system_includes := $(SRC_SYSTEM_HEADERS) $(TARGET_OUT_HEADERS) \ - $($(LOCAL_2ND_ARCH_VAR_PREFIX)$(my_prefix)PROJECT_SYSTEM_INCLUDES) \ + my_target_global_c_system_includes := $(SRC_SYSTEM_HEADERS) $(TARGET_OUT_HEADERS) \ $($(LOCAL_2ND_ARCH_VAR_PREFIX)$(my_prefix)C_SYSTEM_INCLUDES) endif @@ -1674,9 +1668,22 @@ endif #################################################### ## Import includes #################################################### +imported_includes := + +ifdef LOCAL_USE_VNDK + imported_includes += $(call intermediates-dir-for,HEADER_LIBRARIES,device_kernel_headers,$(my_kind),,$(LOCAL_2ND_ARCH_VAR_PREFIX),$(my_host_cross)) +else ifdef LOCAL_SDK_VERSION + # Apps shouldn't need device-specific kernel headers +else ifdef BOARD_VNDK_VERSION + # For devices building with the VNDK, only the VNDK gets device-specific kernel headers by default + # In soong, it's entirely opt-in +else + # For older non-VNDK builds, continue adding in kernel headers to everything like we used to + imported_includes += $(call intermediates-dir-for,HEADER_LIBRARIES,device_kernel_headers,$(my_kind),,$(LOCAL_2ND_ARCH_VAR_PREFIX),$(my_host_cross)) +endif + imported_includes := $(strip \ - $(if $(LOCAL_USE_VNDK),\ - $(call intermediates-dir-for,HEADER_LIBRARIES,device_kernel_headers,$(my_kind),,$(LOCAL_2ND_ARCH_VAR_PREFIX),$(my_host_cross))) \ + $(imported_includes) \ $(foreach l, $(installed_shared_library_module_names), \ $(call intermediates-dir-for,SHARED_LIBRARIES,$(l),$(my_kind),,$(LOCAL_2ND_ARCH_VAR_PREFIX),$(my_host_cross))) \ $(foreach l, $(my_static_libraries) $(my_whole_static_libraries), \ diff --git a/core/config.mk b/core/config.mk index 69e2b5c960..8910c11664 100644 --- a/core/config.mk +++ b/core/config.mk @@ -135,6 +135,12 @@ $(KATI_obsolete_var \ LOCAL_IS_AUX_MODULE \ ,AUX support has been removed) $(KATI_obsolete_var HOST_OUT_TEST_CONFIG TARGET_OUT_TEST_CONFIG LOCAL_TEST_CONFIG_OPTIONS) +$(KATI_obsolete_var \ + TARGET_PROJECT_INCLUDES \ + 2ND_TARGET_PROJECT_INCLUDES \ + TARGET_PROJECT_SYSTEM_INCLUDES \ + 2ND_TARGET_PROJECT_SYSTEM_INCLUDES \ + ,Project include variables have been removed) # Used to force goals to build. Only use for conditionally defined goals. .PHONY: FORCE @@ -1057,16 +1063,6 @@ else RELATIVE_PWD := endif -TARGET_PROJECT_INCLUDES := -TARGET_PROJECT_SYSTEM_INCLUDES := \ - $(TARGET_DEVICE_KERNEL_HEADERS) $(TARGET_BOARD_KERNEL_HEADERS) \ - $(TARGET_PRODUCT_KERNEL_HEADERS) - -ifdef TARGET_2ND_ARCH -$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_PROJECT_INCLUDES := $(TARGET_PROJECT_INCLUDES) -$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_PROJECT_SYSTEM_INCLUDES := $(TARGET_PROJECT_SYSTEM_INCLUDES) -endif - # Flags for DEX2OAT first_non_empty_of_three = $(if $(1),$(1),$(if $(2),$(2),$(3))) DEX2OAT_TARGET_ARCH := $(TARGET_ARCH) diff --git a/core/soong_config.mk b/core/soong_config.mk index f0b6be88c6..18949bef28 100644 --- a/core/soong_config.mk +++ b/core/soong_config.mk @@ -121,7 +121,7 @@ $(call add_json_bool, SamplingPGO, $(filter true,$(SAMPLIN $(call add_json_bool, ArtUseReadBarrier, $(call invert_bool,$(filter false,$(PRODUCT_ART_USE_READ_BARRIER)))) $(call add_json_bool, Binder32bit, $(BINDER32BIT)) $(call add_json_str, BtConfigIncludeDir, $(BOARD_BLUETOOTH_BDROID_BUILDCFG_INCLUDE_DIR)) -$(call add_json_list, DeviceKernelHeaders, $(TARGET_PROJECT_SYSTEM_INCLUDES)) +$(call add_json_list, DeviceKernelHeaders, $(TARGET_DEVICE_KERNEL_HEADERS) $(TARGET_BOARD_KERNEL_HEADERS) $(TARGET_PRODUCT_KERNEL_HEADERS)) $(call add_json_bool, DevicePrefer32BitApps, $(filter true,$(TARGET_PREFER_32_BIT_APPS))) $(call add_json_bool, DevicePrefer32BitExecutables, $(filter true,$(TARGET_PREFER_32_BIT_EXECUTABLES))) $(call add_json_str, DeviceVndkVersion, $(BOARD_VNDK_VERSION)) diff --git a/core/tasks/boot_jars_package_check.mk b/core/tasks/boot_jars_package_check.mk index cbaa682b77..02d7212b5d 100644 --- a/core/tasks/boot_jars_package_check.mk +++ b/core/tasks/boot_jars_package_check.mk @@ -26,7 +26,7 @@ stamp := $(intermediates)/stamp # Convert the colon-separated components <apex>:<jar> to <jar>.<apex> names # (e.g. com.android.media:updatable-media -> updatable-media.com.android.media). # Special cases: -# - for the "platform" apex drop the .<apex> suffix +# - for the "platform" or "system_ext" apex drop the .<apex> suffix # - for the ART apex select release variant boot_jars := $(foreach pair,$(PRODUCT_BOOT_JARS) $(PRODUCT_UPDATABLE_BOOT_JARS), \ $(eval apex := $(call word-colon,1,$(pair))) \ @@ -34,6 +34,7 @@ boot_jars := $(foreach pair,$(PRODUCT_BOOT_JARS) $(PRODUCT_UPDATABLE_BOOT_JARS), $(eval q := :) \ $(eval sfx := $(q).$(apex)$(q)) \ $(eval sfx := $(subst $(q).platform$(q),$(q)$(q),$(sfx))) \ + $(eval sfx := $(subst $(q).system_ext$(q),$(q)$(q),$(sfx))) \ $(eval sfx := $(subst $(q).com.android.art$(q),$(q).com.android.art.release$(q),$(sfx))) \ $(eval sfx := $(patsubst $(q)%$(q),%,$(sfx))) \ $(jar)$(sfx)) diff --git a/tools/releasetools/common.py b/tools/releasetools/common.py index cdb10fa7b6..1abf5a5cc6 100644 --- a/tools/releasetools/common.py +++ b/tools/releasetools/common.py @@ -361,10 +361,13 @@ class BuildInfo(object): self.oem_dicts = oem_dicts self._is_ab = info_dict.get("ab_update") == "true" - self._oem_props = info_dict.get("oem_fingerprint_properties") - if self._oem_props: - assert oem_dicts, "OEM source required for this build" + # Skip _oem_props if oem_dicts is None to use BuildInfo in + # sign_target_files_apks + if self.oem_dicts: + self._oem_props = info_dict.get("oem_fingerprint_properties") + else: + self._oem_props = None def check_fingerprint(fingerprint): if (" " in fingerprint or any(ord(ch) > 127 for ch in fingerprint)): diff --git a/tools/releasetools/sign_apex.py b/tools/releasetools/sign_apex.py index b0128dc10e..fb947f4ec6 100755 --- a/tools/releasetools/sign_apex.py +++ b/tools/releasetools/sign_apex.py @@ -35,6 +35,10 @@ Usage: sign_apex [flags] input_apex_file output_apex_file -e (--extra_apks) <name,name,...=key> Add extra APK name/key pairs. This is useful to sign the apk files in the apex payload image. + + --codename_to_api_level_map Q:29,R:30,... + A Mapping of codename to api level. This is useful to provide sdk targeting + information to APK Signer. """ import logging @@ -48,7 +52,7 @@ logger = logging.getLogger(__name__) def SignApexFile(avbtool, apex_file, payload_key, container_key, no_hashtree, - apk_keys=None, signing_args=None): + apk_keys=None, signing_args=None, codename_to_api_level_map=None): """Signs the given apex file.""" with open(apex_file, 'rb') as input_fp: apex_data = input_fp.read() @@ -59,7 +63,7 @@ def SignApexFile(avbtool, apex_file, payload_key, container_key, no_hashtree, payload_key=payload_key, container_key=container_key, container_pw=None, - codename_to_api_level_map=None, + codename_to_api_level_map=codename_to_api_level_map, no_hashtree=no_hashtree, apk_keys=apk_keys, signing_args=signing_args) @@ -82,6 +86,13 @@ def main(argv): options['payload_key'] = a elif o == '--payload_extra_args': options['payload_extra_args'] = a + elif o == '--codename_to_api_level_map': + versions = a.split(",") + for v in versions: + key, value = v.split(":") + if 'codename_to_api_level_map' not in options: + options['codename_to_api_level_map'] = {} + options['codename_to_api_level_map'].update({key: value}) elif o in ("-e", "--extra_apks"): names, key = a.split("=") names = names.split(",") @@ -98,6 +109,7 @@ def main(argv): extra_opts='e:', extra_long_opts=[ 'avbtool=', + 'codename_to_api_level_map=', 'container_key=', 'payload_extra_args=', 'payload_key=', @@ -119,7 +131,9 @@ def main(argv): options['container_key'], no_hashtree=False, apk_keys=options.get('extra_apks', {}), - signing_args=options.get('payload_extra_args')) + signing_args=options.get('payload_extra_args'), + codename_to_api_level_map=options.get( + 'codename_to_api_level_map', {})) shutil.copyfile(signed_apex, args[1]) logger.info("done.") diff --git a/tools/releasetools/test_check_target_files_vintf.py b/tools/releasetools/test_check_target_files_vintf.py index 79f9018774..d32622932a 100644 --- a/tools/releasetools/test_check_target_files_vintf.py +++ b/tools/releasetools/test_check_target_files_vintf.py @@ -35,20 +35,20 @@ SKELETON_TARGET_FILE_STRUCTURE = { 'SYSTEM_EXT/etc/build.prop': '', # Non-empty files - 'SYSTEM/compatibility_matrix.xml':""" - <compatibility-matrix version="1.0" type="framework"> + 'SYSTEM/etc/vintf/compatibility_matrix.1.xml':""" + <compatibility-matrix version="1.0" level="1" type="framework"> <sepolicy> <sepolicy-version>0.0</sepolicy-version> <kernel-sepolicy-version>0</kernel-sepolicy-version> </sepolicy> </compatibility-matrix>""", 'SYSTEM/manifest.xml': - '<manifest version="1.0" type="framework" />', + '<manifest version="1.0" type="framework"/>', 'VENDOR/build.prop': 'ro.product.first_api_level=29\n', 'VENDOR/compatibility_matrix.xml': '<compatibility-matrix version="1.0" type="device" />', - 'VENDOR/manifest.xml': - '<manifest version="1.0" type="device"/>', + 'VENDOR/etc/vintf/manifest.xml': + '<manifest version="1.0" target-level="1" type="device"/>', 'META/misc_info.txt': 'recovery_api_version=3\nfstab_version=2\nvintf_enforce=true\n', } @@ -140,6 +140,6 @@ class CheckTargetFilesVintfTest(test_utils.ReleaseToolsTestCase): def test_CheckVintf_bad_xml(self): test_dir = self.prepare_test_dir('does-not-exist') write_string_to_file('not an XML', - os.path.join(test_dir, 'VENDOR/manifest.xml')) + os.path.join(test_dir, 'VENDOR/etc/vintf/manifest.xml')) # Should raise an error because a file has invalid format. self.assertRaises(common.ExternalError, CheckVintf, test_dir) diff --git a/tools/releasetools/test_common.py b/tools/releasetools/test_common.py index f1971d3b44..665eb513d6 100644 --- a/tools/releasetools/test_common.py +++ b/tools/releasetools/test_common.py @@ -176,10 +176,6 @@ class BuildInfoTest(test_utils.ReleaseToolsTestCase): self.assertEqual('brand3/product-name/device3:build-thumbprint', target_info.fingerprint) - # Missing oem_dict should be rejected. - self.assertRaises(AssertionError, common.BuildInfo, - self.TEST_INFO_DICT_USES_OEM_PROPS, None) - def test_init_badFingerprint(self): info_dict = copy.deepcopy(self.TEST_INFO_DICT) info_dict['build.prop']['ro.build.fingerprint'] = 'bad fingerprint' diff --git a/tools/releasetools/testdata/vintf/kernel/SYSTEM/compatibility_matrix.xml b/tools/releasetools/testdata/vintf/kernel/SYSTEM/etc/vintf/compatibility_matrix.1.xml index ed46b6b761..a92dd6e667 100644 --- a/tools/releasetools/testdata/vintf/kernel/SYSTEM/compatibility_matrix.xml +++ b/tools/releasetools/testdata/vintf/kernel/SYSTEM/etc/vintf/compatibility_matrix.1.xml @@ -1,4 +1,4 @@ -<compatibility-matrix version="1.0" type="framework"> +<compatibility-matrix version="1.0" level="1" type="framework"> <kernel version="4.14.1" /> <sepolicy> <sepolicy-version>0.0</sepolicy-version> diff --git a/tools/releasetools/testdata/vintf/matrix_incompat/SYSTEM/compatibility_matrix.xml b/tools/releasetools/testdata/vintf/matrix_incompat/SYSTEM/etc/vintf/compatibility_matrix.1.xml index 5d891fa4a1..1700e214e9 100644 --- a/tools/releasetools/testdata/vintf/matrix_incompat/SYSTEM/compatibility_matrix.xml +++ b/tools/releasetools/testdata/vintf/matrix_incompat/SYSTEM/etc/vintf/compatibility_matrix.1.xml @@ -1,4 +1,4 @@ -<compatibility-matrix version="1.0" type="framework"> +<compatibility-matrix version="1.0" level="1" type="framework"> <sepolicy> <sepolicy-version>1.0</sepolicy-version> <kernel-sepolicy-version>0</kernel-sepolicy-version> diff --git a/tools/releasetools/testdata/vintf/sku_compat/SYSTEM/compatibility_matrix.xml b/tools/releasetools/testdata/vintf/sku_compat/SYSTEM/etc/vintf/compatibility_matrix.1.xml index 19a9b6a0d4..22272fd30e 100644 --- a/tools/releasetools/testdata/vintf/sku_compat/SYSTEM/compatibility_matrix.xml +++ b/tools/releasetools/testdata/vintf/sku_compat/SYSTEM/etc/vintf/compatibility_matrix.1.xml @@ -1,4 +1,4 @@ -<compatibility-matrix version="1.0" type="framework"> +<compatibility-matrix version="1.0" level="1" type="framework"> <hal format="hidl" optional="false"> <name>foo</name> <version>1.0</version> diff --git a/tools/releasetools/testdata/vintf/sku_incompat/SYSTEM/compatibility_matrix.xml b/tools/releasetools/testdata/vintf/sku_incompat/SYSTEM/etc/vintf/compatibility_matrix.1.xml index e0e0d6c20a..1a3fc43f5a 100644 --- a/tools/releasetools/testdata/vintf/sku_incompat/SYSTEM/compatibility_matrix.xml +++ b/tools/releasetools/testdata/vintf/sku_incompat/SYSTEM/etc/vintf/compatibility_matrix.1.xml @@ -1,4 +1,4 @@ -<compatibility-matrix version="1.0" type="framework"> +<compatibility-matrix version="1.0" level="1" type="framework"> <hal format="hidl" optional="false"> <name>foo</name> <version>1.1</version> |