diff options
53 files changed, 611 insertions, 203 deletions
diff --git a/core/Makefile b/core/Makefile index 49fbc5ebcf..7083f83f4b 100644 --- a/core/Makefile +++ b/core/Makefile @@ -5272,6 +5272,62 @@ $(call dist-for-goals, otatools-package, \ endif # build_otatools_package # ----------------------------------------------------------------- +# fastboot-info.txt +FASTBOOT_INFO_VERSION = 1.0 + +INSTALLED_FASTBOOT_INFO_TARGET := $(PRODUCT_OUT)/fastboot-info.txt + +$(INSTALLED_FASTBOOT_INFO_TARGET): + rm -f $@ + $(call pretty,"Target fastboot-info.txt: $@") + $(hide) echo "# fastboot-info for $(TARGET_PRODUCT)" >> $@ + $(hide) echo "version $(FASTBOOT_INFO_VERSION)" >> $@ +ifneq ($(INSTALLED_BOOTIMAGE_TARGET),) + $(hide) echo "flash boot" >> $@ +endif +ifneq ($(INSTALLED_INIT_BOOT_IMAGE_TARGET),) + $(hide) echo "flash init_boot" >> $@ +endif +ifdef BOARD_PREBUILT_DTBOIMAGE + $(hide) echo "flash dtbo" >> $@ +endif +ifeq ($(BOARD_USES_PVMFWIMAGE),true) + $(hide) echo "flash pvmfw" >> $@ +endif +ifeq ($(BOARD_AVB_ENABLE),true) +ifeq ($(BUILDING_VBMETA_IMAGE),true) + $(hide) echo "flash --apply-vbmeta vbmeta" >> $@ +endif +ifneq (,$(strip $(BOARD_AVB_VBMETA_SYSTEM))) + $(hide) echo "flash --apply-vbmeta vbmeta_system" >> $@ +endif +ifneq (,$(strip $(BOARD_AVB_VBMETA_VENDOR))) + $(hide) echo "flash --apply-vbmeta vbmeta_vendor" >> $@ +endif +ifneq ($(INSTALLED_VENDOR_BOOTIMAGE_TARGET),) + $(hide) echo "flash vendor_boot" >> $@ +endif +ifneq (,$(strip $(BOARD_AVB_VBMETA_CUSTOM_PARTITIONS))) + $(hide) $(foreach partition,$(BOARD_AVB_VBMETA_CUSTOM_PARTITIONS),\ + $(hide) echo "flash --apply-vbmeta vbmeta_$(partition)" >> $@;) +endif +endif # BOARD_AVB_ENABLE + $(hide) echo "reboot fastboot" >> $@ + $(hide) echo "update-super" >> $@ + $(foreach partition,$(BOARD_SUPER_PARTITION_PARTITION_LIST), \ + echo "flash $(partition)" >> $@;) +ifdef BUILDING_SYSTEM_OTHER_IMAGE + $(hide) echo "flash --slot-other system system_other.img" >> $@ +endif +ifdef BUILDING_CACHE_IMAGE + $(hide) echo "if-wipe erase cache" >> $@ +endif + $(hide) echo "if-wipe erase userdata" >> $@ +ifeq ($(BOARD_USES_METADATA_PARTITION),true) + $(hide) echo "if-wipe erase metadata" >> $@ +endif + +# ----------------------------------------------------------------- # misc_info.txt INSTALLED_MISC_INFO_TARGET := $(PRODUCT_OUT)/misc_info.txt @@ -5521,6 +5577,11 @@ ifeq ($(TARGET_FLATTEN_APEX),false) $(hide) echo "target_flatten_apex=false" >> $@ endif +$(call declare-0p-target,$(INSTALLED_FASTBOOT_INFO_TARGET)) + +.PHONY: fastboot_info +fastboot_info: $(INSTALLED_FASTBOOT_INFO_TARGET) + $(call declare-0p-target,$(INSTALLED_MISC_INFO_TARGET)) .PHONY: misc_info @@ -5540,10 +5601,12 @@ endif name := $(name)-target_files-$(FILE_NAME_TAG) intermediates := $(call intermediates-dir-for,PACKAGING,target_files) +BUILT_TARGET_FILES_DIR := $(intermediates)/$(name).zip.list BUILT_TARGET_FILES_PACKAGE := $(intermediates)/$(name).zip -$(BUILT_TARGET_FILES_PACKAGE): intermediates := $(intermediates) -$(BUILT_TARGET_FILES_PACKAGE): \ - zip_root := $(intermediates)/$(name) +$(BUILT_TARGET_FILES_PACKAGE): zip_root := $(intermediates)/$(name) +$(BUILT_TARGET_FILES_DIR): zip_root := $(intermediates)/$(name) +$(BUILT_TARGET_FILES_DIR): intermediates := $(intermediates) + # $(1): Directory to copy # $(2): Location to copy it to @@ -5563,10 +5626,10 @@ built_ota_tools += \ $(call intermediates-dir-for,EXECUTABLES,updater)/updater endif -$(BUILT_TARGET_FILES_PACKAGE): PRIVATE_OTA_TOOLS := $(built_ota_tools) +$(BUILT_TARGET_FILES_DIR): PRIVATE_OTA_TOOLS := $(built_ota_tools) tool_extension := $(wildcard $(tool_extensions)/releasetools.py) -$(BUILT_TARGET_FILES_PACKAGE): PRIVATE_TOOL_EXTENSION := $(tool_extension) +$(BUILT_TARGET_FILES_DIR): PRIVATE_TOOL_EXTENSION := $(tool_extension) updater_dep := ifeq ($(AB_OTA_UPDATER),true) @@ -5582,23 +5645,23 @@ ifeq ($(TARGET_OTA_ALLOW_NON_AB),true) updater_dep += $(built_ota_tools) endif -$(BUILT_TARGET_FILES_PACKAGE): $(updater_dep) +$(BUILT_TARGET_FILES_DIR): $(updater_dep) # If we are using recovery as boot, output recovery files to BOOT/. # If we are moving recovery resources to vendor_boot, output recovery files to VENDOR_BOOT/. ifeq ($(BOARD_USES_RECOVERY_AS_BOOT),true) -$(BUILT_TARGET_FILES_PACKAGE): PRIVATE_RECOVERY_OUT := BOOT +$(BUILT_TARGET_FILES_DIR): PRIVATE_RECOVERY_OUT := BOOT else ifeq ($(BOARD_MOVE_RECOVERY_RESOURCES_TO_VENDOR_BOOT),true) -$(BUILT_TARGET_FILES_PACKAGE): PRIVATE_RECOVERY_OUT := VENDOR_BOOT +$(BUILT_TARGET_FILES_DIR): PRIVATE_RECOVERY_OUT := VENDOR_BOOT else -$(BUILT_TARGET_FILES_PACKAGE): PRIVATE_RECOVERY_OUT := RECOVERY +$(BUILT_TARGET_FILES_DIR): PRIVATE_RECOVERY_OUT := RECOVERY endif ifeq ($(AB_OTA_UPDATER),true) ifdef OSRELEASED_DIRECTORY - $(BUILT_TARGET_FILES_PACKAGE): $(TARGET_OUT_OEM)/$(OSRELEASED_DIRECTORY)/product_id - $(BUILT_TARGET_FILES_PACKAGE): $(TARGET_OUT_OEM)/$(OSRELEASED_DIRECTORY)/product_version - $(BUILT_TARGET_FILES_PACKAGE): $(TARGET_OUT_ETC)/$(OSRELEASED_DIRECTORY)/system_version + $(BUILT_TARGET_FILES_DIR): $(TARGET_OUT_OEM)/$(OSRELEASED_DIRECTORY)/product_id + $(BUILT_TARGET_FILES_DIR): $(TARGET_OUT_OEM)/$(OSRELEASED_DIRECTORY)/product_version + $(BUILT_TARGET_FILES_DIR): $(TARGET_OUT_ETC)/$(OSRELEASED_DIRECTORY)/system_version endif # Not checking in board_config.mk, since AB_OTA_PARTITIONS may be updated in Android.mk (e.g. to @@ -5706,28 +5769,28 @@ endef # full system image deps, we speed up builds that do not build the system # image. ifdef BUILDING_SYSTEM_IMAGE - $(BUILT_TARGET_FILES_PACKAGE): $(FULL_SYSTEMIMAGE_DEPS) + $(BUILT_TARGET_FILES_DIR): $(FULL_SYSTEMIMAGE_DEPS) else # releasetools may need the system build.prop even when building a # system-image-less product. - $(BUILT_TARGET_FILES_PACKAGE): $(INSTALLED_BUILD_PROP_TARGET) + $(BUILT_TARGET_FILES_DIR): $(INSTALLED_BUILD_PROP_TARGET) endif ifdef BUILDING_USERDATA_IMAGE - $(BUILT_TARGET_FILES_PACKAGE): $(INTERNAL_USERDATAIMAGE_FILES) + $(BUILT_TARGET_FILES_DIR): $(INTERNAL_USERDATAIMAGE_FILES) endif ifdef BUILDING_SYSTEM_OTHER_IMAGE - $(BUILT_TARGET_FILES_PACKAGE): $(INTERNAL_SYSTEMOTHERIMAGE_FILES) + $(BUILT_TARGET_FILES_DIR): $(INTERNAL_SYSTEMOTHERIMAGE_FILES) endif ifdef BUILDING_VENDOR_BOOT_IMAGE - $(BUILT_TARGET_FILES_PACKAGE): $(INTERNAL_VENDOR_RAMDISK_FILES) - $(BUILT_TARGET_FILES_PACKAGE): $(INTERNAL_VENDOR_RAMDISK_FRAGMENT_TARGETS) - $(BUILT_TARGET_FILES_PACKAGE): $(INTERNAL_VENDOR_BOOTCONFIG_TARGET) + $(BUILT_TARGET_FILES_DIR): $(INTERNAL_VENDOR_RAMDISK_FILES) + $(BUILT_TARGET_FILES_DIR): $(INTERNAL_VENDOR_RAMDISK_FRAGMENT_TARGETS) + $(BUILT_TARGET_FILES_DIR): $(INTERNAL_VENDOR_BOOTCONFIG_TARGET) # The vendor ramdisk may be built from the recovery ramdisk. ifeq (true,$(BOARD_MOVE_RECOVERY_RESOURCES_TO_VENDOR_BOOT)) - $(BUILT_TARGET_FILES_PACKAGE): $(INTERNAL_RECOVERY_RAMDISK_FILES_TIMESTAMP) + $(BUILT_TARGET_FILES_DIR): $(INTERNAL_RECOVERY_RAMDISK_FILES_TIMESTAMP) endif endif @@ -5737,11 +5800,11 @@ ifdef BUILDING_RECOVERY_IMAGE # commands in build-recoveryimage-target, which would touch the files under # TARGET_RECOVERY_OUT and race with packaging target-files.zip. ifeq ($(BOARD_USES_RECOVERY_AS_BOOT),true) - $(BUILT_TARGET_FILES_PACKAGE): $(INSTALLED_BOOTIMAGE_TARGET) + $(BUILT_TARGET_FILES_DIR): $(INSTALLED_BOOTIMAGE_TARGET) else - $(BUILT_TARGET_FILES_PACKAGE): $(INSTALLED_RECOVERYIMAGE_TARGET) + $(BUILT_TARGET_FILES_DIR): $(INSTALLED_RECOVERYIMAGE_TARGET) endif - $(BUILT_TARGET_FILES_PACKAGE): $(INTERNAL_RECOVERYIMAGE_FILES) + $(BUILT_TARGET_FILES_DIR): $(INTERNAL_RECOVERYIMAGE_FILES) endif # Conditionally depend on the image files if the image is being built so the @@ -5749,68 +5812,68 @@ endif # if it is coming from a prebuilt. ifdef BUILDING_VENDOR_IMAGE - $(BUILT_TARGET_FILES_PACKAGE): $(INTERNAL_VENDORIMAGE_FILES) + $(BUILT_TARGET_FILES_DIR): $(INTERNAL_VENDORIMAGE_FILES) else ifdef BOARD_PREBUILT_VENDORIMAGE - $(BUILT_TARGET_FILES_PACKAGE): $(INSTALLED_VENDORIMAGE_TARGET) + $(BUILT_TARGET_FILES_DIR): $(INSTALLED_VENDORIMAGE_TARGET) endif ifdef BUILDING_PRODUCT_IMAGE - $(BUILT_TARGET_FILES_PACKAGE): $(INTERNAL_PRODUCTIMAGE_FILES) + $(BUILT_TARGET_FILES_DIR): $(INTERNAL_PRODUCTIMAGE_FILES) else ifdef BOARD_PREBUILT_PRODUCTIMAGE - $(BUILT_TARGET_FILES_PACKAGE): $(INSTALLED_PRODUCTIMAGE_TARGET) + $(BUILT_TARGET_FILES_DIR): $(INSTALLED_PRODUCTIMAGE_TARGET) endif ifdef BUILDING_SYSTEM_EXT_IMAGE - $(BUILT_TARGET_FILES_PACKAGE): $(INTERNAL_SYSTEM_EXTIMAGE_FILES) + $(BUILT_TARGET_FILES_DIR): $(INTERNAL_SYSTEM_EXTIMAGE_FILES) else ifdef BOARD_PREBUILT_SYSTEM_EXTIMAGE - $(BUILT_TARGET_FILES_PACKAGE): $(INSTALLED_SYSTEM_EXTIMAGE_TARGET) + $(BUILT_TARGET_FILES_DIR): $(INSTALLED_SYSTEM_EXTIMAGE_TARGET) endif ifneq (,$(BUILDING_BOOT_IMAGE)$(BUILDING_INIT_BOOT_IMAGE)) - $(BUILT_TARGET_FILES_PACKAGE): $(INTERNAL_RAMDISK_FILES) + $(BUILT_TARGET_FILES_DIR): $(INTERNAL_RAMDISK_FILES) endif # BUILDING_BOOT_IMAGE != "" || BUILDING_INIT_BOOT_IMAGE != "" ifneq (,$(INTERNAL_PREBUILT_BOOTIMAGE) $(filter true,$(BOARD_COPY_BOOT_IMAGE_TO_TARGET_FILES))) - $(BUILT_TARGET_FILES_PACKAGE): $(INSTALLED_BOOTIMAGE_TARGET) + $(BUILT_TARGET_FILES_DIR): $(INSTALLED_BOOTIMAGE_TARGET) endif ifdef BUILDING_ODM_IMAGE - $(BUILT_TARGET_FILES_PACKAGE): $(INTERNAL_ODMIMAGE_FILES) + $(BUILT_TARGET_FILES_DIR): $(INTERNAL_ODMIMAGE_FILES) else ifdef BOARD_PREBUILT_ODMIMAGE - $(BUILT_TARGET_FILES_PACKAGE): $(INSTALLED_ODMIMAGE_TARGET) + $(BUILT_TARGET_FILES_DIR): $(INSTALLED_ODMIMAGE_TARGET) endif ifdef BUILDING_VENDOR_DLKM_IMAGE - $(BUILT_TARGET_FILES_PACKAGE): $(INTERNAL_VENDOR_DLKMIMAGE_FILES) + $(BUILT_TARGET_FILES_DIR): $(INTERNAL_VENDOR_DLKMIMAGE_FILES) else ifdef BOARD_PREBUILT_VENDOR_DLKMIMAGE - $(BUILT_TARGET_FILES_PACKAGE): $(INSTALLED_VENDOR_DLKMIMAGE_TARGET) + $(BUILT_TARGET_FILES_DIR): $(INSTALLED_VENDOR_DLKMIMAGE_TARGET) endif ifdef BUILDING_ODM_DLKM_IMAGE - $(BUILT_TARGET_FILES_PACKAGE): $(INTERNAL_ODM_DLKMIMAGE_FILES) + $(BUILT_TARGET_FILES_DIR): $(INTERNAL_ODM_DLKMIMAGE_FILES) else ifdef BOARD_PREBUILT_ODM_DLKMIMAGE - $(BUILT_TARGET_FILES_PACKAGE): $(INSTALLED_ODM_DLKMIMAGE_TARGET) + $(BUILT_TARGET_FILES_DIR): $(INSTALLED_ODM_DLKMIMAGE_TARGET) endif ifdef BUILDING_SYSTEM_DLKM_IMAGE - $(BUILT_TARGET_FILES_PACKAGE): $(INTERNAL_SYSTEM_DLKMIMAGE_FILES) + $(BUILT_TARGET_FILES_DIR): $(INTERNAL_SYSTEM_DLKMIMAGE_FILES) else ifdef BOARD_PREBUILT_SYSTEM_DLKMIMAGE - $(BUILT_TARGET_FILES_PACKAGE): $(INSTALLED_SYSTEM_DLKMIMAGE_TARGET) + $(BUILT_TARGET_FILES_DIR): $(INSTALLED_SYSTEM_DLKMIMAGE_TARGET) endif ifeq ($(BUILD_QEMU_IMAGES),true) MK_VBMETA_BOOT_KERNEL_CMDLINE_SH := device/generic/goldfish/tools/mk_vbmeta_boot_params.sh - $(BUILT_TARGET_FILES_PACKAGE): $(MK_VBMETA_BOOT_KERNEL_CMDLINE_SH) + $(BUILT_TARGET_FILES_DIR): $(MK_VBMETA_BOOT_KERNEL_CMDLINE_SH) endif ifdef BOARD_PREBUILT_BOOTLOADER -$(BUILT_TARGET_FILES_PACKAGE): $(INSTALLED_BOOTLOADER_MODULE) +$(BUILT_TARGET_FILES_DIR): $(INSTALLED_BOOTLOADER_MODULE) droidcore-unbundled: $(INSTALLED_BOOTLOADER_MODULE) endif # Depending on the various images guarantees that the underlying # directories are up-to-date. -$(BUILT_TARGET_FILES_PACKAGE): \ +$(BUILT_TARGET_FILES_DIR): \ $(INSTALLED_RADIOIMAGE_TARGET) \ $(INSTALLED_RECOVERYIMAGE_TARGET) \ $(INSTALLED_CACHEIMAGE_TARGET) \ @@ -5847,7 +5910,7 @@ $(BUILT_TARGET_FILES_PACKAGE): \ $(BUILT_KERNEL_CONFIGS_FILE) \ $(BUILT_KERNEL_VERSION_FILE) \ | $(ACP) - @echo "Package target files: $@" + @echo "Building target files: $@" $(hide) rm -rf $@ $@.list $(zip_root) $(hide) mkdir -p $(dir $@) $(zip_root) ifneq (,$(INSTALLED_RECOVERYIMAGE_TARGET)$(filter true,$(BOARD_USES_RECOVERY_AS_BOOT))$(filter true,$(BOARD_MOVE_RECOVERY_RESOURCES_TO_VENDOR_BOOT))) @@ -6250,13 +6313,19 @@ ifeq ($(BUILD_QEMU_IMAGES),true) endif @# Zip everything up, preserving symlinks and placing META/ files first to @# help early validation of the .zip file while uploading it. - $(hide) find $(zip_root)/META | sort >$@.list - $(hide) find $(zip_root) -path $(zip_root)/META -prune -o -print | sort >>$@.list + $(hide) find $(zip_root)/META | sort >$@ + $(hide) find $(zip_root) -path $(zip_root)/META -prune -o -print | sort >>$@ + +$(BUILT_TARGET_FILES_PACKAGE): $(BUILT_TARGET_FILES_DIR) + @echo "Packaging target files: $@" $(hide) $(SOONG_ZIP) -d -o $@ -C $(zip_root) -r $@.list .PHONY: target-files-package target-files-package: $(BUILT_TARGET_FILES_PACKAGE) +.PHONY: target-files-dir +target-files-dir: $(BUILT_TARGET_FILES_DIR) + $(call declare-1p-container,$(BUILT_TARGET_FILES_PACKAGE),) $(call declare-container-license-deps,$(BUILT_TARGET_FILES_PACKAGE), $(INSTALLED_RADIOIMAGE_TARGET) \ $(INSTALLED_RECOVERYIMAGE_TARGET) \ @@ -6284,6 +6353,7 @@ $(call declare-container-license-deps,$(BUILT_TARGET_FILES_PACKAGE), $(INSTALLED $(LPMAKE) \ $(SELINUX_FC) \ $(INSTALLED_MISC_INFO_TARGET) \ + $(INSTALLED_FASTBOOT_INFO_TARGET) \ $(APKCERTS_FILE) \ $(SOONG_APEX_KEYS_FILE) \ $(HOST_OUT_EXECUTABLES)/fs_config \ diff --git a/core/android_soong_config_vars.mk b/core/android_soong_config_vars.mk index 718adb53a4..c52fa9272e 100644 --- a/core/android_soong_config_vars.mk +++ b/core/android_soong_config_vars.mk @@ -101,6 +101,9 @@ else endif $(call soong_config_set,art_module,source_build,$(ART_MODULE_BUILD_FROM_SOURCE)) +ifdef ART_DEBUG_OPT_FLAG +$(call soong_config_set,art_module,art_debug_opt_flag,$(ART_DEBUG_OPT_FLAG)) +endif ifdef TARGET_BOARD_AUTO $(call add_soong_config_var_value, ANDROID, target_board_auto, $(TARGET_BOARD_AUTO)) diff --git a/core/config.mk b/core/config.mk index 26e90efe9e..430080093f 100644 --- a/core/config.mk +++ b/core/config.mk @@ -42,6 +42,7 @@ endif # Mark variables deprecated/obsolete CHANGES_URL := https://android.googlesource.com/platform/build/+/master/Changes.md .KATI_READONLY := CHANGES_URL +$(KATI_deprecated_var TARGET_USES_64_BIT_BINDER,All devices use 64-bit binder by default now. Uses of TARGET_USES_64_BIT_BINDER should be removed.) $(KATI_obsolete_var PATH,Do not use PATH directly. See $(CHANGES_URL)#PATH) $(KATI_obsolete_var PYTHONPATH,Do not use PYTHONPATH directly. See $(CHANGES_URL)#PYTHONPATH) $(KATI_obsolete_var OUT,Use OUT_DIR instead. See $(CHANGES_URL)#OUT) @@ -358,6 +359,51 @@ endif # are specific to the user's build configuration. include $(BUILD_SYSTEM)/envsetup.mk +# Returns true if it is a low memory device, otherwise it returns false. +define is-low-mem-device +$(if $(findstring ro.config.low_ram=true,$(PRODUCT_PROPERTY_OVERRIDES)),true,\ +$(if $(findstring ro.config.low_ram=true,$(PRODUCT_DEFAULT_PROPERTY_OVERRIDES)),true,\ +$(if $(findstring ro.config.low_ram=true,$(PRODUCT_COMPATIBLE_PROPERTY_OVERRIDE)),true,\ +$(if $(findstring ro.config.low_ram=true,$(PRODUCT_COMPATIBLE_PROPERTY)),true,\ +$(if $(findstring ro.config.low_ram=true,$(PRODUCT_SYSTEM_DEFAULT_PROPERTIES)),true,\ +$(if $(findstring ro.config.low_ram=true,$(PRODUCT_SYSTEM_EXT_PROPERTIES)),true,\ +$(if $(findstring ro.config.low_ram=true,$(PRODUCT_PRODUCT_PROPERTIES)),true,\ +$(if $(findstring ro.config.low_ram=true,$(PRODUCT_VENDOR_PROPERTIES)),true,\ +$(if $(findstring ro.config.low_ram=true,$(PRODUCT_ODM_PROPERTIES)),true,false))))))))) +endef + +# Get the board API level. +board_api_level := $(PLATFORM_SDK_VERSION) +ifdef BOARD_API_LEVEL + board_api_level := $(BOARD_API_LEVEL) +else ifdef BOARD_SHIPPING_API_LEVEL + # Vendors with GRF must define BOARD_SHIPPING_API_LEVEL for the vendor API level. + board_api_level := $(BOARD_SHIPPING_API_LEVEL) +endif + +# Calculate the VSR vendor API level. +vsr_vendor_api_level := $(board_api_level) + +ifdef PRODUCT_SHIPPING_API_LEVEL + vsr_vendor_api_level := $(call math_min,$(PRODUCT_SHIPPING_API_LEVEL),$(board_api_level)) +endif + +# Set TARGET_MAX_PAGE_SIZE_SUPPORTED. +ifdef PRODUCT_MAX_PAGE_SIZE_SUPPORTED + TARGET_MAX_PAGE_SIZE_SUPPORTED := $(PRODUCT_MAX_PAGE_SIZE_SUPPORTED) +else ifeq ($(strip $(call is-low-mem-device)),true) + # Low memory device will have 4096 binary alignment. + TARGET_MAX_PAGE_SIZE_SUPPORTED := 4096 +else + # The default binary alignment for userspace is 4096. + TARGET_MAX_PAGE_SIZE_SUPPORTED := 4096 + # When VSR vendor API level >= 34, binary alignment will be 65536. + ifeq ($(call math_gt_or_eq,$(vsr_vendor_api_level),34),true) + TARGET_MAX_PAGE_SIZE_SUPPORTED := 65536 + endif +endif +.KATI_READONLY := TARGET_MAX_PAGE_SIZE_SUPPORTED + # Pruned directory options used when using findleaves.py # See envsetup.mk for a description of SCAN_EXCLUDE_DIRS FIND_LEAVES_EXCLUDES := $(addprefix --prune=, $(SCAN_EXCLUDE_DIRS) .repo .git) @@ -783,13 +829,6 @@ ifdef PRODUCT_SHIPPING_API_LEVEL ifneq ($(call numbers_less_than,$(min_systemsdk_version),$(BOARD_SYSTEMSDK_VERSIONS)),) $(error BOARD_SYSTEMSDK_VERSIONS ($(BOARD_SYSTEMSDK_VERSIONS)) must all be greater than or equal to BOARD_API_LEVEL, BOARD_SHIPPING_API_LEVEL or PRODUCT_SHIPPING_API_LEVEL ($(min_systemsdk_version))) endif - ifneq ($(call math_gt_or_eq,$(PRODUCT_SHIPPING_API_LEVEL),28),) - ifneq ($(TARGET_IS_64_BIT), true) - ifneq ($(TARGET_USES_64_BIT_BINDER), true) - $(error When PRODUCT_SHIPPING_API_LEVEL >= 28, TARGET_USES_64_BIT_BINDER must be true) - endif - endif - endif ifneq ($(call math_gt_or_eq,$(PRODUCT_SHIPPING_API_LEVEL),29),) ifneq ($(BOARD_OTA_FRAMEWORK_VBMETA_VERSION_OVERRIDE),) $(error When PRODUCT_SHIPPING_API_LEVEL >= 29, BOARD_OTA_FRAMEWORK_VBMETA_VERSION_OVERRIDE cannot be set) diff --git a/core/config_sanitizers.mk b/core/config_sanitizers.mk index 35c632c039..0e84f51647 100644 --- a/core/config_sanitizers.mk +++ b/core/config_sanitizers.mk @@ -155,6 +155,17 @@ ifeq ($(filter memtag_heap, $(my_sanitize)),) endif endif +# Enable HWASan in included paths. +ifeq ($(filter hwaddress, $(my_sanitize)),) + combined_include_paths := $(HWASAN_INCLUDE_PATHS) \ + $(PRODUCT_HWASAN_INCLUDE_PATHS) + + ifneq ($(strip $(foreach dir,$(subst $(comma),$(space),$(combined_include_paths)),\ + $(filter $(dir)%,$(LOCAL_PATH)))),) + my_sanitize := hwaddress $(my_sanitize) + endif +endif + # If CFI is disabled globally, remove it from my_sanitize. ifeq ($(strip $(ENABLE_CFI)),false) my_sanitize := $(filter-out cfi,$(my_sanitize)) diff --git a/core/definitions.mk b/core/definitions.mk index ce1248e2e9..e4cee7ab5a 100644 --- a/core/definitions.mk +++ b/core/definitions.mk @@ -597,7 +597,7 @@ endef define declare-copy-target-license-metadata $(strip $(if $(filter $(OUT_DIR)%,$(2)),\ $(eval _tgt:=$(strip $(1)))\ - $(eval ALL_COPIED_TARGETS.$(_tgt).SOURCES := $(ALL_COPIED_TARGETS.$(_tgt).SOURCES) $(filter $(OUT_DIR)%,$(2)))\ + $(eval ALL_COPIED_TARGETS.$(_tgt).SOURCES := $(sort $(ALL_COPIED_TARGETS.$(_tgt).SOURCES) $(filter $(OUT_DIR)%,$(2))))\ $(eval ALL_COPIED_TARGETS += $(_tgt)))) endef @@ -2960,7 +2960,7 @@ $(hide) \ $(extract-package) \ echo "Module name in Android tree: $(PRIVATE_MODULE)" >> $(PRODUCT_OUT)/appcompat/$(PRIVATE_MODULE).log && \ echo "Local path in Android tree: $(PRIVATE_PATH)" >> $(PRODUCT_OUT)/appcompat/$(PRIVATE_MODULE).log && \ - echo "Install path on $(TARGET_PRODUCT)-$(TARGET_BUILD_VARIANT): $(PRIVATE_INSTALLED_MODULE)" >> $(PRODUCT_OUT)/appcompat/$(PRIVATE_MODULE).log && \ + echo "Install path: $(patsubst $(PRODUCT_OUT)/%,%,$(PRIVATE_INSTALLED_MODULE))" >> $(PRODUCT_OUT)/appcompat/$(PRIVATE_MODULE).log && \ echo >> $(PRODUCT_OUT)/appcompat/$(PRIVATE_MODULE).log endef ART_VERIDEX_APPCOMPAT_SCRIPT:=$(HOST_OUT)/bin/appcompat.sh diff --git a/core/dex_preopt_odex_install.mk b/core/dex_preopt_odex_install.mk index d4988750dc..cb16321de2 100644 --- a/core/dex_preopt_odex_install.mk +++ b/core/dex_preopt_odex_install.mk @@ -240,7 +240,7 @@ ifeq (true,$(LOCAL_ENFORCE_USES_LIBRARIES)) --enforce-uses-libraries-relax,) my_dexpreopt_config_args := $(patsubst %,--dexpreopt-config %,$(my_dexpreopt_dep_configs)) - my_enforced_uses_libraries := $(intermediates.COMMON)/enforce_uses_libraries.status + my_enforced_uses_libraries := $(intermediates)/enforce_uses_libraries.status $(my_enforced_uses_libraries): PRIVATE_USES_LIBRARIES := $(my_uses_libs_args) $(my_enforced_uses_libraries): PRIVATE_OPTIONAL_USES_LIBRARIES := $(my_optional_uses_libs_args) $(my_enforced_uses_libraries): PRIVATE_DEXPREOPT_CONFIGS := $(my_dexpreopt_config_args) @@ -473,7 +473,7 @@ ifdef LOCAL_DEX_PREOPT my_dexpreopt_deps += $(my_dexpreopt_images_deps) my_dexpreopt_deps += $(DEXPREOPT_BOOTCLASSPATH_DEX_FILES) ifeq ($(LOCAL_ENFORCE_USES_LIBRARIES),true) - my_dexpreopt_deps += $(intermediates.COMMON)/enforce_uses_libraries.status + my_dexpreopt_deps += $(intermediates)/enforce_uses_libraries.status endif $(my_dexpreopt_zip): PRIVATE_MODULE := $(LOCAL_MODULE) diff --git a/core/generate_enforce_rro.mk b/core/generate_enforce_rro.mk index 9079981856..e149ef4ec3 100644 --- a/core/generate_enforce_rro.mk +++ b/core/generate_enforce_rro.mk @@ -1,6 +1,6 @@ include $(CLEAR_VARS) -enforce_rro_module := $(enforce_rro_source_module)__auto_generated_rro_$(enforce_rro_partition) +enforce_rro_module := $(enforce_rro_source_module)__$(PRODUCT_NAME)__auto_generated_rro_$(enforce_rro_partition) LOCAL_PACKAGE_NAME := $(enforce_rro_module) intermediates := $(call intermediates-dir-for,APPS,$(LOCAL_PACKAGE_NAME),,COMMON) diff --git a/core/main.mk b/core/main.mk index 09616d08dc..6a24bd3050 100644 --- a/core/main.mk +++ b/core/main.mk @@ -347,6 +347,10 @@ ifeq ($(AB_OTA_UPDATER),true) ADDITIONAL_PRODUCT_PROPERTIES += ro.product.ab_ota_partitions=$(subst $(space),$(comma),$(sort $(AB_OTA_PARTITIONS))) endif +# Set this property for VTS to skip large page size tests on unsupported devices. +ADDITIONAL_PRODUCT_PROPERTIES += \ + ro.product.cpu.pagesize.max=$(TARGET_MAX_PAGE_SIZE_SUPPORTED) + # ----------------------------------------------------------------- ### ### In this section we set up the things that are different diff --git a/core/package_internal.mk b/core/package_internal.mk index c7a173b71f..2d0a569f5e 100644 --- a/core/package_internal.mk +++ b/core/package_internal.mk @@ -201,10 +201,10 @@ my_res_resources := $(if $(my_res_dir),$(strip \ all_resources := $(strip $(my_res_resources) $(my_overlay_resources)) # The linked resource package. -my_res_package := $(intermediates)/package-res.apk +my_res_package := $(intermediates.COMMON)/package-res.apk LOCAL_INTERMEDIATE_TARGETS += $(my_res_package) -my_bundle_module := $(intermediates)/base.zip +my_bundle_module := $(intermediates.COMMON)/base.zip LOCAL_INTERMEDIATE_TARGETS += $(my_bundle_module) # Always run aapt2, because we need to at least compile the AndroidManifest.xml. @@ -570,7 +570,7 @@ ifdef LOCAL_COMPRESSED_MODULE $(compress-package) endif # LOCAL_COMPRESSED_MODULE -my_package_res_pb := $(intermediates)/package-res.pb.apk +my_package_res_pb := $(intermediates.COMMON)/package-res.pb.apk $(my_package_res_pb): $(my_res_package) $(AAPT2) $(AAPT2) convert --output-format proto $< -o $@ diff --git a/core/product.mk b/core/product.mk index cdc3d091ee..e90e27b003 100644 --- a/core/product.mk +++ b/core/product.mk @@ -27,7 +27,13 @@ _product_single_value_vars += PRODUCT_MODEL _product_single_value_vars += PRODUCT_NAME_FOR_ATTESTATION _product_single_value_vars += PRODUCT_MODEL_FOR_ATTESTATION -# The resoure configuration options to use for this product. +# Defines the ELF segment alignment for binaries (executables and shared libraries). +# The ELF segment alignment has to be a PAGE_SIZE multiple. For example, if +# PRODUCT_MAX_PAGE_SIZE_SUPPORTED=65536, the possible values for PAGE_SIZE could be +# 4096, 16384 and 65536. +_product_single_value_vars += PRODUCT_MAX_PAGE_SIZE_SUPPORTED + +# The resource configuration options to use for this product. _product_list_vars += PRODUCT_LOCALES _product_list_vars += PRODUCT_AAPT_CONFIG _product_single_value_vars += PRODUCT_AAPT_PREF_CONFIG @@ -41,7 +47,6 @@ _product_list_vars += PRODUCT_PACKAGES_ARM64 _product_list_vars += PRODUCT_PACKAGES_DEBUG_JAVA_COVERAGE _product_list_vars += PRODUCT_PACKAGES_ENG _product_list_vars += PRODUCT_PACKAGES_TESTS -_product_list_vars += PRODUCT_AFDO_PROFILES # The device that this product maps to. _product_single_value_vars += PRODUCT_DEVICE @@ -239,6 +244,9 @@ _product_list_vars += PRODUCT_CFI_INCLUDE_PATHS # Whether any paths are excluded from sanitization when SANITIZE_TARGET=cfi _product_list_vars += PRODUCT_CFI_EXCLUDE_PATHS +# Whether any paths should have HWASan enabled for components +_product_list_vars += PRODUCT_HWASAN_INCLUDE_PATHS + # Whether the Scudo hardened allocator is disabled platform-wide _product_single_value_vars += PRODUCT_DISABLE_SCUDO @@ -396,6 +404,8 @@ _product_list_vars += PRODUCT_VENDOR_LINKER_CONFIG_FRAGMENTS # supports it _product_single_value_vars += PRODUCT_ENABLE_UFFD_GC +_product_list_vars += PRODUCT_AFDO_PROFILES + .KATI_READONLY := _product_single_value_vars _product_list_vars _product_var_list :=$= $(_product_single_value_vars) $(_product_list_vars) diff --git a/core/product_config.mk b/core/product_config.mk index 1ef8890d46..9db881f7e5 100644 --- a/core/product_config.mk +++ b/core/product_config.mk @@ -517,7 +517,8 @@ ifdef OVERRIDE_PRODUCT_ENFORCE_PRODUCT_PARTITION_INTERFACE PRODUCT_ENFORCE_PRODUCT_PARTITION_INTERFACE := $(OVERRIDE_PRODUCT_ENFORCE_PRODUCT_PARTITION_INTERFACE) endif else ifeq ($(PRODUCT_SHIPPING_API_LEVEL),) - # No shipping level defined + # No shipping level defined. Enforce the product interface by default. + PRODUCT_ENFORCE_PRODUCT_PARTITION_INTERFACE := true else ifeq ($(call math_gt,$(PRODUCT_SHIPPING_API_LEVEL),29),true) # Enforce product interface if PRODUCT_SHIPPING_API_LEVEL is greater than 29. PRODUCT_ENFORCE_PRODUCT_PARTITION_INTERFACE := true @@ -532,7 +533,8 @@ PRODUCT_USE_PRODUCT_VNDK := false ifneq ($(PRODUCT_USE_PRODUCT_VNDK_OVERRIDE),) PRODUCT_USE_PRODUCT_VNDK := $(PRODUCT_USE_PRODUCT_VNDK_OVERRIDE) else ifeq ($(PRODUCT_SHIPPING_API_LEVEL),) - # No shipping level defined + # No shipping level defined. Enforce the product interface by default. + PRODUCT_USE_PRODUCT_VNDK := true else ifeq ($(call math_gt,$(PRODUCT_SHIPPING_API_LEVEL),29),true) # Enforce product interface for VNDK if PRODUCT_SHIPPING_API_LEVEL is greater # than 29. diff --git a/core/product_config.rbc b/core/product_config.rbc index 97c1d00471..a5e5721270 100644 --- a/core/product_config.rbc +++ b/core/product_config.rbc @@ -394,6 +394,10 @@ def _soong_config_namespace(g, nsname): def _soong_config_set(g, nsname, var, value): """Assigns the value to the variable in the namespace.""" _soong_config_namespace(g, nsname) + if type(value) == "string": + # Trim right spaces, because in make the variable is set in an $(eval), + # which will ignore trailing spaces. + value = value.rstrip(" ") g[_soong_config_namespaces_key][nsname][var]=value def _soong_config_append(g, nsname, var, value): diff --git a/core/soong_config.mk b/core/soong_config.mk index 6348cf0457..90a2f75aa9 100644 --- a/core/soong_config.mk +++ b/core/soong_config.mk @@ -2,16 +2,19 @@ SOONG_MAKEVARS_MK := $(SOONG_OUT_DIR)/make_vars-$(TARGET_PRODUCT).mk SOONG_VARIABLES := $(SOONG_OUT_DIR)/soong.variables SOONG_ANDROID_MK := $(SOONG_OUT_DIR)/Android-$(TARGET_PRODUCT).mk -BINDER32BIT := -ifneq ($(TARGET_USES_64_BIT_BINDER),true) -ifneq ($(TARGET_IS_64_BIT),true) -BINDER32BIT := true -endif -endif - include $(BUILD_SYSTEM)/art_config.mk include $(BUILD_SYSTEM)/dex_preopt_config.mk +ifndef AFDO_PROFILES +# Set AFDO_PROFILES +-include vendor/google_data/pgo_profile/sampling/afdo_profiles.mk +else +$(error AFDO_PROFILES can only be set from soong_config.mk. For product-specific fdo_profiles, please use PRODUCT_AFDO_PROFILES) +endif + +# PRODUCT_AFDO_PROFILES takes precedence over product-agnostic profiles in AFDO_PROFILES +ALL_AFDO_PROFILES := $(PRODUCT_AFDO_PROFILES) $(AFDO_PROFILES) + ifeq ($(WRITE_SOONG_VARIABLES),true) # Create soong.variables with copies of makefile settings. Runs every build, @@ -110,6 +113,7 @@ $(call add_json_bool, EnableCFI, $(call invert_bool,$(fi $(call add_json_list, CFIExcludePaths, $(CFI_EXCLUDE_PATHS) $(PRODUCT_CFI_EXCLUDE_PATHS)) $(call add_json_list, CFIIncludePaths, $(CFI_INCLUDE_PATHS) $(PRODUCT_CFI_INCLUDE_PATHS)) $(call add_json_list, IntegerOverflowExcludePaths, $(INTEGER_OVERFLOW_EXCLUDE_PATHS) $(PRODUCT_INTEGER_OVERFLOW_EXCLUDE_PATHS)) +$(call add_json_list, HWASanIncludePaths, $(HWASAN_INCLUDE_PATHS) $(PRODUCT_HWASAN_INCLUDE_PATHS)) $(call add_json_list, MemtagHeapExcludePaths, $(MEMTAG_HEAP_EXCLUDE_PATHS) $(PRODUCT_MEMTAG_HEAP_EXCLUDE_PATHS)) $(call add_json_list, MemtagHeapAsyncIncludePaths, $(MEMTAG_HEAP_ASYNC_INCLUDE_PATHS) $(PRODUCT_MEMTAG_HEAP_ASYNC_INCLUDE_PATHS)) @@ -132,7 +136,6 @@ $(call add_json_list, NativeCoverageExcludePaths, $(NATIVE_COVERAGE_EXCLU $(call add_json_bool, SamplingPGO, $(filter true,$(SAMPLING_PGO))) $(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_DEVICE_KERNEL_HEADERS) $(TARGET_BOARD_KERNEL_HEADERS) $(TARGET_PRODUCT_KERNEL_HEADERS)) $(call add_json_str, DeviceVndkVersion, $(BOARD_VNDK_VERSION)) @@ -146,6 +149,7 @@ $(call add_json_bool, Malloc_not_svelte, $(call invert_bool,$(fi $(call add_json_bool, Malloc_zero_contents, $(call invert_bool,$(filter false,$(MALLOC_ZERO_CONTENTS)))) $(call add_json_bool, Malloc_pattern_fill_contents, $(MALLOC_PATTERN_FILL_CONTENTS)) $(call add_json_str, Override_rs_driver, $(OVERRIDE_RS_DRIVER)) +$(call add_json_str, DeviceMaxPageSizeSupported, $(TARGET_MAX_PAGE_SIZE_SUPPORTED)) $(call add_json_bool, UncompressPrivAppDex, $(call invert_bool,$(filter true,$(DONT_UNCOMPRESS_PRIV_APPS_DEXS)))) $(call add_json_list, ModulesLoadedByPrivilegedModules, $(PRODUCT_LOADED_BY_PRIVILEGED_MODULES)) @@ -309,7 +313,7 @@ $(call add_json_bool, IgnorePrefer32OnDevice, $(filter true,$(IGNORE_PREFER32_ON $(call add_json_list, IncludeTags, $(PRODUCT_INCLUDE_TAGS)) $(call add_json_list, SourceRootDirs, $(PRODUCT_SOURCE_ROOT_DIRS)) -$(call add_json_list, AfdoProfiles, $(PRODUCT_AFDO_PROFILES)) +$(call add_json_list, AfdoProfiles, $(ALL_AFDO_PROFILES)) $(call json_end) diff --git a/core/tasks/tools/compatibility.mk b/core/tasks/tools/compatibility.mk index 94008909cc..c770b34925 100644 --- a/core/tasks/tools/compatibility.mk +++ b/core/tasks/tools/compatibility.mk @@ -30,8 +30,6 @@ test_suite_subdir := android-$(test_suite_name) out_dir := $(HOST_OUT)/$(test_suite_name)/$(test_suite_subdir) test_artifacts := $(COMPATIBILITY.$(test_suite_name).FILES) test_tools := $(HOST_OUT_JAVA_LIBRARIES)/tradefed.jar \ - $(HOST_OUT_JAVA_LIBRARIES)/tradefed-no-fwk.jar \ - $(HOST_OUT_JAVA_LIBRARIES)/tradefed-test-framework.jar \ $(HOST_OUT_JAVA_LIBRARIES)/loganalysis.jar \ $(HOST_OUT_JAVA_LIBRARIES)/compatibility-host-util.jar \ $(HOST_OUT_JAVA_LIBRARIES)/compatibility-tradefed.jar \ diff --git a/core/version_defaults.mk b/core/version_defaults.mk index b160648f29..9e9e74bee0 100644 --- a/core/version_defaults.mk +++ b/core/version_defaults.mk @@ -40,7 +40,7 @@ ifdef INTERNAL_BUILD_ID_MAKEFILE include $(INTERNAL_BUILD_ID_MAKEFILE) endif -DEFAULT_PLATFORM_VERSION := UP1A +DEFAULT_PLATFORM_VERSION := VP1A .KATI_READONLY := DEFAULT_PLATFORM_VERSION MIN_PLATFORM_VERSION := UP1A MAX_PLATFORM_VERSION := VP1A @@ -91,7 +91,7 @@ PLATFORM_VERSION_KNOWN_CODENAMES := \ Base Base11 Cupcake Donut Eclair Eclair01 EclairMr1 Froyo Gingerbread GingerbreadMr1 \ Honeycomb HoneycombMr1 HoneycombMr2 IceCreamSandwich IceCreamSandwichMr1 \ JellyBean JellyBeanMr1 JellyBeanMr2 Kitkat KitkatWatch Lollipop LollipopMr1 M N NMr1 O OMr1 P \ -Q R S Sv2 Tiramisu UpsideDownCake +Q R S Sv2 Tiramisu UpsideDownCake VanillaIceCream # Convert from space separated list to comma separated PLATFORM_VERSION_KNOWN_CODENAMES := \ diff --git a/envsetup.sh b/envsetup.sh index 905635c890..17d8a5d3b9 100644 --- a/envsetup.sh +++ b/envsetup.sh @@ -1096,12 +1096,12 @@ function qpid() { # # Easy way to make system.img/etc writable function syswrite() { - adb wait-for-device && adb root || return 1 + adb wait-for-device && adb root && adb wait-for-device || return 1 if [[ $(adb disable-verity | grep -i "reboot") ]]; then echo "rebooting" - adb reboot && adb wait-for-device && adb root || return 1 + adb reboot && adb wait-for-device && adb root && adb wait-for-device || return 1 fi - adb wait-for-device && adb remount || return 1 + adb remount || return 1 } # coredump_setup - enable core dumps globally for any process diff --git a/target/board/BoardConfigMainlineCommon.mk b/target/board/BoardConfigMainlineCommon.mk index e5ac5cf546..01ebe56ba6 100644 --- a/target/board/BoardConfigMainlineCommon.mk +++ b/target/board/BoardConfigMainlineCommon.mk @@ -24,9 +24,6 @@ BOARD_USES_METADATA_PARTITION := true # Default is current, but allow devices to override vndk version if needed. BOARD_VNDK_VERSION ?= current -# Required flag for non-64 bit devices from P. -TARGET_USES_64_BIT_BINDER := true - # 64 bit mediadrmserver TARGET_ENABLE_MEDIADRM_64 := true diff --git a/target/board/BoardConfigModuleCommon.mk b/target/board/BoardConfigModuleCommon.mk deleted file mode 100644 index 24c01a58ef..0000000000 --- a/target/board/BoardConfigModuleCommon.mk +++ /dev/null @@ -1,6 +0,0 @@ -# BoardConfigModuleCommon.mk -# -# Common compile-time settings for module builds. - -# Required for all module devices. -TARGET_USES_64_BIT_BINDER := true diff --git a/target/board/mainline_sdk/BoardConfig.mk b/target/board/mainline_sdk/BoardConfig.mk index f5c2dc6b49..84f8b2dac6 100644 --- a/target/board/mainline_sdk/BoardConfig.mk +++ b/target/board/mainline_sdk/BoardConfig.mk @@ -18,6 +18,3 @@ TARGET_ARCH_SUITE := mainline_sdk HOST_CROSS_OS := linux_bionic HOST_CROSS_ARCH := x86_64 HOST_CROSS_2ND_ARCH := - -# Required flag for non-64 bit devices from P. -TARGET_USES_64_BIT_BINDER := true diff --git a/target/board/module_arm/BoardConfig.mk b/target/board/module_arm/BoardConfig.mk index 3f35c060e1..565efc8425 100644 --- a/target/board/module_arm/BoardConfig.mk +++ b/target/board/module_arm/BoardConfig.mk @@ -13,8 +13,6 @@ # limitations under the License. # -include build/make/target/board/BoardConfigModuleCommon.mk - TARGET_ARCH := arm TARGET_ARCH_VARIANT := armv7-a-neon TARGET_CPU_VARIANT := generic diff --git a/target/board/module_arm64/BoardConfig.mk b/target/board/module_arm64/BoardConfig.mk index 3700056da3..66e3792640 100644 --- a/target/board/module_arm64/BoardConfig.mk +++ b/target/board/module_arm64/BoardConfig.mk @@ -13,8 +13,6 @@ # limitations under the License. # -include build/make/target/board/BoardConfigModuleCommon.mk - TARGET_ARCH := arm64 TARGET_ARCH_VARIANT := armv8-a TARGET_CPU_VARIANT := generic diff --git a/target/board/module_arm64only/BoardConfig.mk b/target/board/module_arm64only/BoardConfig.mk index 3cabf05d94..6c265799e7 100644 --- a/target/board/module_arm64only/BoardConfig.mk +++ b/target/board/module_arm64only/BoardConfig.mk @@ -13,8 +13,6 @@ # limitations under the License. # -include build/make/target/board/BoardConfigModuleCommon.mk - TARGET_ARCH := arm64 TARGET_ARCH_VARIANT := armv8-a TARGET_CPU_VARIANT := generic diff --git a/target/board/module_x86/BoardConfig.mk b/target/board/module_x86/BoardConfig.mk index a93ac9779c..af3fffd067 100644 --- a/target/board/module_x86/BoardConfig.mk +++ b/target/board/module_x86/BoardConfig.mk @@ -13,8 +13,6 @@ # limitations under the License. # -include build/make/target/board/BoardConfigModuleCommon.mk - TARGET_CPU_ABI := x86 TARGET_ARCH := x86 TARGET_ARCH_VARIANT := x86 diff --git a/target/board/module_x86_64/BoardConfig.mk b/target/board/module_x86_64/BoardConfig.mk index 1ed3be0ba6..1ada02729e 100644 --- a/target/board/module_x86_64/BoardConfig.mk +++ b/target/board/module_x86_64/BoardConfig.mk @@ -13,8 +13,6 @@ # limitations under the License. # -include build/make/target/board/BoardConfigModuleCommon.mk - TARGET_CPU_ABI := x86_64 TARGET_ARCH := x86_64 TARGET_ARCH_VARIANT := x86_64 diff --git a/target/board/module_x86_64only/BoardConfig.mk b/target/board/module_x86_64only/BoardConfig.mk index b0676cbe22..5b86f0a8a3 100644 --- a/target/board/module_x86_64only/BoardConfig.mk +++ b/target/board/module_x86_64only/BoardConfig.mk @@ -13,8 +13,6 @@ # limitations under the License. # -include build/make/target/board/BoardConfigModuleCommon.mk - TARGET_CPU_ABI := x86_64 TARGET_ARCH := x86_64 TARGET_ARCH_VARIANT := x86_64 diff --git a/target/board/ndk/BoardConfig.mk b/target/board/ndk/BoardConfig.mk index da8b5f3e74..b485f8b79e 100644 --- a/target/board/ndk/BoardConfig.mk +++ b/target/board/ndk/BoardConfig.mk @@ -14,7 +14,6 @@ # TARGET_ARCH_SUITE := ndk -TARGET_USES_64_BIT_BINDER := true MALLOC_SVELTE := true diff --git a/target/product/angle.mk b/target/product/angle.mk new file mode 100644 index 0000000000..0d7f8cb1c0 --- /dev/null +++ b/target/product/angle.mk @@ -0,0 +1,26 @@ +# +# Copyright 2023 The Android Open-Source Project +# +# 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. +# + +# To include ANGLE drivers into the build, add +# $(call inherit-product, $(SRC_TARGET_DIR)/product/angle.mk) to the Makefile. + +PRODUCT_PACKAGES := \ + libEGL_angle \ + libGLESv1_CM_angle \ + libGLESv2_angle + +# Set ro.gfx.angle.supported based on if ANGLE is installed in vendor partition +PRODUCT_VENDOR_PROPERTIES := ro.gfx.angle.supported=true diff --git a/target/product/aosp_64bitonly_x86_64.mk b/target/product/aosp_64bitonly_x86_64.mk index b8ca3aa634..75fd3c8f17 100644 --- a/target/product/aosp_64bitonly_x86_64.mk +++ b/target/product/aosp_64bitonly_x86_64.mk @@ -58,6 +58,9 @@ $(call inherit-product, $(SRC_TARGET_DIR)/board/generic_x86_64/device.mk) # Special settings for GSI releasing # ifeq (aosp_64bitonly_x86_64,$(TARGET_PRODUCT)) +# Build modules from source if this has not been pre-configured +MODULE_BUILD_FROM_SOURCE ?= true + $(call inherit-product, $(SRC_TARGET_DIR)/product/gsi_release.mk) endif diff --git a/target/product/aosp_arm.mk b/target/product/aosp_arm.mk index 5f200aafb6..61c13169b9 100644 --- a/target/product/aosp_arm.mk +++ b/target/product/aosp_arm.mk @@ -57,6 +57,9 @@ $(call inherit-product, $(SRC_TARGET_DIR)/board/generic_x86/device.mk) # Special settings for GSI releasing # ifeq (aosp_arm,$(TARGET_PRODUCT)) +# Build modules from source if this has not been pre-configured +MODULE_BUILD_FROM_SOURCE ?= true + $(call inherit-product, $(SRC_TARGET_DIR)/product/gsi_release.mk) endif diff --git a/target/product/aosp_arm64.mk b/target/product/aosp_arm64.mk index ffc37a9bd2..6c907db0ed 100644 --- a/target/product/aosp_arm64.mk +++ b/target/product/aosp_arm64.mk @@ -62,6 +62,9 @@ $(call inherit-product, $(SRC_TARGET_DIR)/product/non_ab_device.mk) # Special settings for GSI releasing # ifeq (aosp_arm64,$(TARGET_PRODUCT)) +# Build modules from source if this has not been pre-configured +MODULE_BUILD_FROM_SOURCE ?= true + $(call inherit-product, $(SRC_TARGET_DIR)/product/gsi_release.mk) endif diff --git a/target/product/aosp_riscv64.mk b/target/product/aosp_riscv64.mk index 0e5d9fec07..270a989620 100644 --- a/target/product/aosp_riscv64.mk +++ b/target/product/aosp_riscv64.mk @@ -53,6 +53,9 @@ $(call inherit-product, $(SRC_TARGET_DIR)/board/generic_riscv64/device.mk) # Special settings for GSI releasing # ifeq (aosp_riscv64,$(TARGET_PRODUCT)) +# Build modules from source if this has not been pre-configured +MODULE_BUILD_FROM_SOURCE ?= true + $(call inherit-product, $(SRC_TARGET_DIR)/product/gsi_release.mk) endif diff --git a/target/product/aosp_x86.mk b/target/product/aosp_x86.mk index 669874e3ad..a2f0390c22 100644 --- a/target/product/aosp_x86.mk +++ b/target/product/aosp_x86.mk @@ -55,6 +55,9 @@ $(call inherit-product, $(SRC_TARGET_DIR)/board/generic_x86/device.mk) # Special settings for GSI releasing # ifeq (aosp_x86,$(TARGET_PRODUCT)) +# Build modules from source if this has not been pre-configured +MODULE_BUILD_FROM_SOURCE ?= true + $(call inherit-product, $(SRC_TARGET_DIR)/product/gsi_release.mk) endif diff --git a/target/product/aosp_x86_64.mk b/target/product/aosp_x86_64.mk index deaa3b1df3..535ee3f0a7 100644 --- a/target/product/aosp_x86_64.mk +++ b/target/product/aosp_x86_64.mk @@ -64,6 +64,9 @@ $(call inherit-product, $(SRC_TARGET_DIR)/product/non_ab_device.mk) # Special settings for GSI releasing # ifeq (aosp_x86_64,$(TARGET_PRODUCT)) +# Build modules from source if this has not been pre-configured +MODULE_BUILD_FROM_SOURCE ?= true + $(call inherit-product, $(SRC_TARGET_DIR)/product/gsi_release.mk) endif diff --git a/target/product/gsi_release.mk b/target/product/gsi_release.mk index 09d4bc9a6b..3b977927d1 100644 --- a/target/product/gsi_release.mk +++ b/target/product/gsi_release.mk @@ -36,7 +36,7 @@ PRODUCT_ARTIFACT_PATH_REQUIREMENT_ALLOWED_LIST += \ # GSI should always support up-to-date platform features. # Keep this value at the latest API level to ensure latest build system # default configs are applied. -PRODUCT_SHIPPING_API_LEVEL := 31 +PRODUCT_SHIPPING_API_LEVEL := 34 # Enable dynamic partitions to facilitate mixing onto Cuttlefish PRODUCT_USE_DYNAMIC_PARTITIONS := true @@ -88,9 +88,6 @@ PRODUCT_BUILD_SUPER_EMPTY_IMAGE := false PRODUCT_BUILD_SYSTEM_DLKM_IMAGE := false PRODUCT_EXPORT_BOOT_IMAGE_TO_DIST := true -# Always build modules from source -MODULE_BUILD_FROM_SOURCE := true - # Additional settings used in all GSI builds PRODUCT_PRODUCT_PROPERTIES += \ ro.crypto.metadata_init_delete_all_keys.enabled=false \ diff --git a/tests/product.rbc b/tests/product.rbc index 9ae6393e8e..b4c6d45ced 100644 --- a/tests/product.rbc +++ b/tests/product.rbc @@ -54,6 +54,7 @@ def init(g, handle): rblf.soong_config_append(g, "NS1", "v2", "def") rblf.soong_config_set(g, "NS2", "v3", "abc") rblf.soong_config_set(g, "NS2", "v3", "xyz") + rblf.soong_config_set(g, "NS2", "v4", "xyz ") rblf.mkdist_for_goals(g, "goal", "dir1/file1:out1 dir1/file2:out2") rblf.mkdist_for_goals(g, "goal", "dir2/file2:") diff --git a/tests/run.rbc b/tests/run.rbc index 33583eb3cd..85d6c09bc5 100644 --- a/tests/run.rbc +++ b/tests/run.rbc @@ -144,7 +144,8 @@ assert_eq( "v2": "def" }, "NS2": { - "v3": "xyz" + "v3": "xyz", + "v4": "xyz" } }, {k:v for k, v in sorted(ns.items()) } diff --git a/tools/aconfig/Android.bp b/tools/aconfig/Android.bp new file mode 100644 index 0000000000..b3813bfe5e --- /dev/null +++ b/tools/aconfig/Android.bp @@ -0,0 +1,33 @@ +package { + default_applicable_licenses: ["Android-Apache-2.0"], +} + +rust_protobuf_host { + name: "libaconfig_protos", + protos: ["protos/aconfig.proto"], + crate_name: "aconfig_protos", + source_stem: "aconfig_protos", + use_protobuf3: true, +} + +rust_defaults { + name: "aconfig.defaults", + edition: "2021", + clippy_lints: "android", + lints: "android", + srcs: ["src/main.rs"], + rustlibs: [ + "libaconfig_protos", + "libprotobuf", + ], +} + +rust_binary_host { + name: "aconfig", + defaults: ["aconfig.defaults"], +} + +rust_test_host { + name: "aconfig.test", + defaults: ["aconfig.defaults"], +} diff --git a/tools/aconfig/MODULE_LICENSE_APACHE2 b/tools/aconfig/MODULE_LICENSE_APACHE2 new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/tools/aconfig/MODULE_LICENSE_APACHE2 diff --git a/tools/aconfig/OWNERS b/tools/aconfig/OWNERS new file mode 100644 index 0000000000..4e05b0020e --- /dev/null +++ b/tools/aconfig/OWNERS @@ -0,0 +1,5 @@ +amhk@google.com +jham@google.com +joeo@google.com +opg@google.com +zhidou@google.com diff --git a/tools/aconfig/PREUPLOAD.cfg b/tools/aconfig/PREUPLOAD.cfg new file mode 100644 index 0000000000..75ed57ce3e --- /dev/null +++ b/tools/aconfig/PREUPLOAD.cfg @@ -0,0 +1,5 @@ +[Builtin Hooks] +rustfmt = true + +[Builtin Hooks Options] +rustfmt = --config-path=rustfmt.toml diff --git a/tools/aconfig/protos/aconfig.proto b/tools/aconfig/protos/aconfig.proto new file mode 100644 index 0000000000..989c39866c --- /dev/null +++ b/tools/aconfig/protos/aconfig.proto @@ -0,0 +1,23 @@ +// Copyright (C) 2023 The Android Open Source Project +// +// 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 + +// Placeholder proto file. Will be replaced by actual contents. + +syntax = "proto3"; + +package android.aconfig; + +message Placeholder { + string name = 1; +} diff --git a/tools/aconfig/rustfmt.toml b/tools/aconfig/rustfmt.toml new file mode 120000 index 0000000000..291e99b28f --- /dev/null +++ b/tools/aconfig/rustfmt.toml @@ -0,0 +1 @@ +../../../soong/scripts/rustfmt.toml
\ No newline at end of file diff --git a/tools/aconfig/src/main.rs b/tools/aconfig/src/main.rs new file mode 100644 index 0000000000..2f7255edab --- /dev/null +++ b/tools/aconfig/src/main.rs @@ -0,0 +1,53 @@ +/* + * Copyright (C) 2023 The Android Open Source Project + * + * 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. + */ + +//! `aconfig` is a build time tool to manage build time configurations, such as feature flags. + +use aconfig_protos::aconfig::Placeholder; +use protobuf::text_format::{parse_from_str, ParseError}; + +fn foo() -> Result<String, ParseError> { + let placeholder = parse_from_str::<Placeholder>(r#"name: "aconfig""#)?; + Ok(placeholder.name) +} + +fn main() { + println!("{:?}", foo()); +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_foo() { + assert_eq!("aconfig", foo().unwrap()); + } + + #[test] + fn test_binary_protobuf() { + use protobuf::Message; + let mut buffer = Vec::new(); + + let mut original = Placeholder::new(); + original.name = "test".to_owned(); + original.write_to_writer(&mut buffer).unwrap(); + + let copy = Placeholder::parse_from_reader(&mut buffer.as_slice()).unwrap(); + + assert_eq!(original, copy); + } +} diff --git a/tools/compliance/cmd/sbom/sbom.go b/tools/compliance/cmd/sbom/sbom.go index c378e39efd..f61289e742 100644 --- a/tools/compliance/cmd/sbom/sbom.go +++ b/tools/compliance/cmd/sbom/sbom.go @@ -55,6 +55,7 @@ type context struct { product string stripPrefix []string creationTime creationTimeGetter + buildid string } func (ctx context) strip(installPath string) string { @@ -124,6 +125,7 @@ Options: depsFile := flags.String("d", "", "Where to write the deps file") product := flags.String("product", "", "The name of the product for which the notice is generated.") stripPrefix := newMultiString(flags, "strip_prefix", "Prefix to remove from paths. i.e. path to root (multiple allowed)") + buildid := flags.String("build_id", "", "Uniquely identifies the build. (default timestamp)") flags.Parse(expandedArgs) @@ -162,7 +164,7 @@ Options: ofile = obuf } - ctx := &context{ofile, os.Stderr, compliance.FS, *product, *stripPrefix, actualTime} + ctx := &context{ofile, os.Stderr, compliance.FS, *product, *stripPrefix, actualTime, *buildid} spdxDoc, deps, err := sbomGenerator(ctx, flags.Args()...) @@ -317,14 +319,21 @@ func inputFiles(lg *compliance.LicenseGraph, pmix *projectmetadata.Index, licens } // generateSPDXNamespace generates a unique SPDX Document Namespace using a SHA1 checksum -// and the CreationInfo.Created field as the date. -func generateSPDXNamespace(created string) string { - // Compute a SHA1 checksum of the CreationInfo.Created field. - hash := sha1.Sum([]byte(created)) - checksum := hex.EncodeToString(hash[:]) +func generateSPDXNamespace(buildid string, created string, files ...string) string { - // Combine the checksum and timestamp to generate the SPDX Namespace. - namespace := fmt.Sprintf("SPDXRef-DOCUMENT-%s-%s", created, checksum) + seed := strings.Join(files, "") + + if buildid == "" { + seed += created + } else { + seed += buildid + } + + // Compute a SHA1 checksum of the seed. + hash := sha1.Sum([]byte(seed)) + uuid := hex.EncodeToString(hash[:]) + + namespace := fmt.Sprintf("SPDXRef-DOCUMENT-%s", uuid) return namespace } @@ -523,7 +532,7 @@ func sbomGenerator(ctx *context, files ...string) (*spdx.Document, []string, err DataLicense: "CC0-1.0", SPDXIdentifier: "DOCUMENT", DocumentName: docName, - DocumentNamespace: generateSPDXNamespace(ci.Created), + DocumentNamespace: generateSPDXNamespace(ctx.buildid, ci.Created, files...), CreationInfo: ci, Packages: pkgs, Relationships: relationships, diff --git a/tools/compliance/cmd/sbom/sbom_test.go b/tools/compliance/cmd/sbom/sbom_test.go index 6472f517cb..8a62713a83 100644 --- a/tools/compliance/cmd/sbom/sbom_test.go +++ b/tools/compliance/cmd/sbom/sbom_test.go @@ -59,7 +59,7 @@ func Test(t *testing.T) { DataLicense: "CC0-1.0", SPDXIdentifier: "DOCUMENT", DocumentName: "testdata-firstparty-highest.apex", - DocumentNamespace: generateSPDXNamespace("1970-01-01T00:00:00Z"), + DocumentNamespace: generateSPDXNamespace("", "1970-01-01T00:00:00Z", "testdata/firstparty/highest.apex.meta_lic"), CreationInfo: getCreationInfo(t), Packages: []*spdx.Package{ { @@ -187,7 +187,7 @@ func Test(t *testing.T) { DataLicense: "CC0-1.0", SPDXIdentifier: "DOCUMENT", DocumentName: "testdata-firstparty-application", - DocumentNamespace: generateSPDXNamespace("1970-01-01T00:00:00Z"), + DocumentNamespace: generateSPDXNamespace("", "1970-01-01T00:00:00Z", "testdata/firstparty/application.meta_lic"), CreationInfo: getCreationInfo(t), Packages: []*spdx.Package{ { @@ -266,7 +266,7 @@ func Test(t *testing.T) { DataLicense: "CC0-1.0", SPDXIdentifier: "DOCUMENT", DocumentName: "testdata-firstparty-container.zip", - DocumentNamespace: generateSPDXNamespace("1970-01-01T00:00:00Z"), + DocumentNamespace: generateSPDXNamespace("", "1970-01-01T00:00:00Z", "testdata/firstparty/container.zip.meta_lic"), CreationInfo: getCreationInfo(t), Packages: []*spdx.Package{ { @@ -394,7 +394,7 @@ func Test(t *testing.T) { DataLicense: "CC0-1.0", SPDXIdentifier: "DOCUMENT", DocumentName: "testdata-firstparty-bin-bin1", - DocumentNamespace: generateSPDXNamespace("1970-01-01T00:00:00Z"), + DocumentNamespace: generateSPDXNamespace("", "1970-01-01T00:00:00Z", "testdata/firstparty/bin/bin1.meta_lic"), CreationInfo: getCreationInfo(t), Packages: []*spdx.Package{ { @@ -460,7 +460,7 @@ func Test(t *testing.T) { DataLicense: "CC0-1.0", SPDXIdentifier: "DOCUMENT", DocumentName: "testdata-firstparty-lib-libd.so", - DocumentNamespace: generateSPDXNamespace("1970-01-01T00:00:00Z"), + DocumentNamespace: generateSPDXNamespace("", "1970-01-01T00:00:00Z", "testdata/firstparty/lib/libd.so.meta_lic"), CreationInfo: getCreationInfo(t), Packages: []*spdx.Package{ { @@ -500,7 +500,7 @@ func Test(t *testing.T) { DataLicense: "CC0-1.0", SPDXIdentifier: "DOCUMENT", DocumentName: "testdata-notice-highest.apex", - DocumentNamespace: generateSPDXNamespace("1970-01-01T00:00:00Z"), + DocumentNamespace: generateSPDXNamespace("", "1970-01-01T00:00:00Z", "testdata/notice/highest.apex.meta_lic"), CreationInfo: getCreationInfo(t), Packages: []*spdx.Package{ { @@ -634,7 +634,7 @@ func Test(t *testing.T) { DataLicense: "CC0-1.0", SPDXIdentifier: "DOCUMENT", DocumentName: "testdata-notice-container.zip", - DocumentNamespace: generateSPDXNamespace("1970-01-01T00:00:00Z"), + DocumentNamespace: generateSPDXNamespace("", "1970-01-01T00:00:00Z", "testdata/notice/container.zip.meta_lic"), CreationInfo: getCreationInfo(t), Packages: []*spdx.Package{ { @@ -768,7 +768,7 @@ func Test(t *testing.T) { DataLicense: "CC0-1.0", SPDXIdentifier: "DOCUMENT", DocumentName: "testdata-notice-application", - DocumentNamespace: generateSPDXNamespace("1970-01-01T00:00:00Z"), + DocumentNamespace: generateSPDXNamespace("", "1970-01-01T00:00:00Z", "testdata/notice/application.meta_lic"), CreationInfo: getCreationInfo(t), Packages: []*spdx.Package{ { @@ -853,7 +853,7 @@ func Test(t *testing.T) { DataLicense: "CC0-1.0", SPDXIdentifier: "DOCUMENT", DocumentName: "testdata-notice-bin-bin1", - DocumentNamespace: generateSPDXNamespace("1970-01-01T00:00:00Z"), + DocumentNamespace: generateSPDXNamespace("", "1970-01-01T00:00:00Z", "testdata/notice/bin/bin1.meta_lic"), CreationInfo: getCreationInfo(t), Packages: []*spdx.Package{ { @@ -925,7 +925,7 @@ func Test(t *testing.T) { DataLicense: "CC0-1.0", SPDXIdentifier: "DOCUMENT", DocumentName: "testdata-notice-lib-libd.so", - DocumentNamespace: generateSPDXNamespace("1970-01-01T00:00:00Z"), + DocumentNamespace: generateSPDXNamespace("", "1970-01-01T00:00:00Z", "testdata/notice/lib/libd.so.meta_lic"), CreationInfo: getCreationInfo(t), Packages: []*spdx.Package{ { @@ -965,7 +965,7 @@ func Test(t *testing.T) { DataLicense: "CC0-1.0", SPDXIdentifier: "DOCUMENT", DocumentName: "testdata-reciprocal-highest.apex", - DocumentNamespace: generateSPDXNamespace("1970-01-01T00:00:00Z"), + DocumentNamespace: generateSPDXNamespace("", "1970-01-01T00:00:00Z", "testdata/reciprocal/highest.apex.meta_lic"), CreationInfo: getCreationInfo(t), Packages: []*spdx.Package{ { @@ -1105,7 +1105,7 @@ func Test(t *testing.T) { DataLicense: "CC0-1.0", SPDXIdentifier: "DOCUMENT", DocumentName: "testdata-reciprocal-application", - DocumentNamespace: generateSPDXNamespace("1970-01-01T00:00:00Z"), + DocumentNamespace: generateSPDXNamespace("", "1970-01-01T00:00:00Z", "testdata/reciprocal/application.meta_lic"), CreationInfo: getCreationInfo(t), Packages: []*spdx.Package{ { @@ -1196,7 +1196,7 @@ func Test(t *testing.T) { DataLicense: "CC0-1.0", SPDXIdentifier: "DOCUMENT", DocumentName: "testdata-reciprocal-bin-bin1", - DocumentNamespace: generateSPDXNamespace("1970-01-01T00:00:00Z"), + DocumentNamespace: generateSPDXNamespace("", "1970-01-01T00:00:00Z", "testdata/reciprocal/bin/bin1.meta_lic"), CreationInfo: getCreationInfo(t), Packages: []*spdx.Package{ { @@ -1268,7 +1268,7 @@ func Test(t *testing.T) { DataLicense: "CC0-1.0", SPDXIdentifier: "DOCUMENT", DocumentName: "testdata-reciprocal-lib-libd.so", - DocumentNamespace: generateSPDXNamespace("1970-01-01T00:00:00Z"), + DocumentNamespace: generateSPDXNamespace("", "1970-01-01T00:00:00Z", "testdata/reciprocal/lib/libd.so.meta_lic"), CreationInfo: getCreationInfo(t), Packages: []*spdx.Package{ { @@ -1308,7 +1308,7 @@ func Test(t *testing.T) { DataLicense: "CC0-1.0", SPDXIdentifier: "DOCUMENT", DocumentName: "testdata-restricted-highest.apex", - DocumentNamespace: generateSPDXNamespace("1970-01-01T00:00:00Z"), + DocumentNamespace: generateSPDXNamespace("", "1970-01-01T00:00:00Z", "testdata/restricted/highest.apex.meta_lic"), CreationInfo: getCreationInfo(t), Packages: []*spdx.Package{ { @@ -1454,7 +1454,7 @@ func Test(t *testing.T) { DataLicense: "CC0-1.0", SPDXIdentifier: "DOCUMENT", DocumentName: "testdata-restricted-container.zip", - DocumentNamespace: generateSPDXNamespace("1970-01-01T00:00:00Z"), + DocumentNamespace: generateSPDXNamespace("", "1970-01-01T00:00:00Z", "testdata/restricted/container.zip.meta_lic"), CreationInfo: getCreationInfo(t), Packages: []*spdx.Package{ { @@ -1600,7 +1600,7 @@ func Test(t *testing.T) { DataLicense: "CC0-1.0", SPDXIdentifier: "DOCUMENT", DocumentName: "testdata-restricted-bin-bin1", - DocumentNamespace: generateSPDXNamespace("1970-01-01T00:00:00Z"), + DocumentNamespace: generateSPDXNamespace("", "1970-01-01T00:00:00Z", "testdata/restricted/bin/bin1.meta_lic"), CreationInfo: getCreationInfo(t), Packages: []*spdx.Package{ { @@ -1678,7 +1678,7 @@ func Test(t *testing.T) { DataLicense: "CC0-1.0", SPDXIdentifier: "DOCUMENT", DocumentName: "testdata-restricted-lib-libd.so", - DocumentNamespace: generateSPDXNamespace("1970-01-01T00:00:00Z"), + DocumentNamespace: generateSPDXNamespace("", "1970-01-01T00:00:00Z", "testdata/restricted/lib/libd.so.meta_lic"), CreationInfo: getCreationInfo(t), Packages: []*spdx.Package{ { @@ -1718,7 +1718,7 @@ func Test(t *testing.T) { DataLicense: "CC0-1.0", SPDXIdentifier: "DOCUMENT", DocumentName: "testdata-proprietary-highest.apex", - DocumentNamespace: generateSPDXNamespace("1970-01-01T00:00:00Z"), + DocumentNamespace: generateSPDXNamespace("", "1970-01-01T00:00:00Z", "testdata/proprietary/highest.apex.meta_lic"), CreationInfo: getCreationInfo(t), Packages: []*spdx.Package{ { @@ -1864,7 +1864,7 @@ func Test(t *testing.T) { DataLicense: "CC0-1.0", SPDXIdentifier: "DOCUMENT", DocumentName: "testdata-proprietary-container.zip", - DocumentNamespace: generateSPDXNamespace("1970-01-01T00:00:00Z"), + DocumentNamespace: generateSPDXNamespace("", "1970-01-01T00:00:00Z", "testdata/proprietary/container.zip.meta_lic"), CreationInfo: getCreationInfo(t), Packages: []*spdx.Package{ { @@ -2010,7 +2010,7 @@ func Test(t *testing.T) { DataLicense: "CC0-1.0", SPDXIdentifier: "DOCUMENT", DocumentName: "testdata-proprietary-application", - DocumentNamespace: generateSPDXNamespace("1970-01-01T00:00:00Z"), + DocumentNamespace: generateSPDXNamespace("", "1970-01-01T00:00:00Z", "testdata/proprietary/application.meta_lic"), CreationInfo: getCreationInfo(t), Packages: []*spdx.Package{ { @@ -2101,7 +2101,7 @@ func Test(t *testing.T) { DataLicense: "CC0-1.0", SPDXIdentifier: "DOCUMENT", DocumentName: "testdata-proprietary-bin-bin1", - DocumentNamespace: generateSPDXNamespace("1970-01-01T00:00:00Z"), + DocumentNamespace: generateSPDXNamespace("", "1970-01-01T00:00:00Z", "testdata/proprietary/bin/bin1.meta_lic"), CreationInfo: getCreationInfo(t), Packages: []*spdx.Package{ { @@ -2173,7 +2173,7 @@ func Test(t *testing.T) { DataLicense: "CC0-1.0", SPDXIdentifier: "DOCUMENT", DocumentName: "testdata-proprietary-lib-libd.so", - DocumentNamespace: generateSPDXNamespace("1970-01-01T00:00:00Z"), + DocumentNamespace: generateSPDXNamespace("", "1970-01-01T00:00:00Z", "testdata/proprietary/lib/libd.so.meta_lic"), CreationInfo: getCreationInfo(t), Packages: []*spdx.Package{ { @@ -2215,7 +2215,7 @@ func Test(t *testing.T) { rootFiles = append(rootFiles, "testdata/"+tt.condition+"/"+r) } - ctx := context{stdout, stderr, compliance.GetFS(tt.outDir), "", []string{tt.stripPrefix}, fakeTime} + ctx := context{stdout, stderr, compliance.GetFS(tt.outDir), "", []string{tt.stripPrefix}, fakeTime, ""} spdxDoc, deps, err := sbomGenerator(&ctx, rootFiles...) if err != nil { @@ -2262,6 +2262,96 @@ func Test(t *testing.T) { } } +func TestGenerateSPDXNamespace(t *testing.T) { + + buildID1 := "example-1" + buildID2 := "example-2" + files1 := "file1" + timestamp1 := "2022-05-01" + timestamp2 := "2022-05-02" + files2 := "file2" + + // Test case 1: different timestamps, same files + nsh1 := generateSPDXNamespace("", timestamp1, files1) + nsh2 := generateSPDXNamespace("", timestamp2, files1) + + if nsh1 == "" { + t.Errorf("generateSPDXNamespace(%s, %s, %s): expected non-empty string, but got empty string", "", timestamp1, files1) + } + + if nsh2 == "" { + t.Errorf("generateSPDXNamespace(%s, %s, %s): expected non-empty string, but got empty string", "", timestamp2, files1) + } + + if nsh1 == nsh2 { + t.Errorf("generateSPDXNamespace(%s, %s, %s) and generateSPDXNamespace(%s, %s, %s): expected different namespace hashes, but got the same", "", timestamp1, files1, "", timestamp2, files1) + } + + // Test case 2: different build ids, same timestamps and files + nsh1 = generateSPDXNamespace(buildID1, timestamp1, files1) + nsh2 = generateSPDXNamespace(buildID2, timestamp1, files1) + + if nsh1 == "" { + t.Errorf("generateSPDXNamespace(%s, %s, %s): expected non-empty string, but got empty string", buildID1, timestamp1, files1) + } + + if nsh2 == "" { + t.Errorf("generateSPDXNamespace(%s, %s, %s): expected non-empty string, but got empty string", buildID2, timestamp1, files1) + } + + if nsh1 == nsh2 { + t.Errorf("generateSPDXNamespace(%s, %s, %s) and generateSPDXNamespace(%s, %s, %s): expected different namespace hashes, but got the same", buildID1, timestamp1, files1, buildID2, timestamp1, files1) + } + + // Test case 3: same build ids and files, different timestamps + nsh1 = generateSPDXNamespace(buildID1, timestamp1, files1) + nsh2 = generateSPDXNamespace(buildID1, timestamp2, files1) + + if nsh1 == "" { + t.Errorf("generateSPDXNamespace(%s, %s, %s): expected non-empty string, but got empty string", buildID1, timestamp1, files1) + } + + if nsh2 == "" { + t.Errorf("generateSPDXNamespace(%s, %s, %s): expected non-empty string, but got empty string", buildID1, timestamp2, files1) + } + + if nsh1 != nsh2 { + t.Errorf("generateSPDXNamespace(%s, %s, %s) and generateSPDXNamespace(%s, %s, %s): expected same namespace hashes, but got different: %s and %s", buildID1, timestamp1, files1, buildID2, timestamp1, files1, nsh1, nsh2) + } + + // Test case 4: same build ids and timestamps, different files + nsh1 = generateSPDXNamespace(buildID1, timestamp1, files1) + nsh2 = generateSPDXNamespace(buildID1, timestamp1, files2) + + if nsh1 == "" { + t.Errorf("generateSPDXNamespace(%s, %s, %s): expected non-empty string, but got empty string", buildID1, timestamp1, files1) + } + + if nsh2 == "" { + t.Errorf("generateSPDXNamespace(%s, %s, %s): expected non-empty string, but got empty string", buildID1, timestamp1, files2) + } + + if nsh1 == nsh2 { + t.Errorf("generateSPDXNamespace(%s, %s, %s) and generateSPDXNamespace(%s, %s, %s): expected different namespace hashes, but got the same", buildID1, timestamp1, files1, buildID1, timestamp1, files2) + } + + // Test case 5: empty build ids, same timestamps and different files + nsh1 = generateSPDXNamespace("", timestamp1, files1) + nsh2 = generateSPDXNamespace("", timestamp1, files2) + + if nsh1 == "" { + t.Errorf("generateSPDXNamespace(%s, %s, %s): expected non-empty string, but got empty string", "", timestamp1, files1) + } + + if nsh2 == "" { + t.Errorf("generateSPDXNamespace(%s, %s, %s): expected non-empty string, but got empty string", "", timestamp1, files2) + } + + if nsh1 == nsh2 { + t.Errorf("generateSPDXNamespace(%s, %s, %s) and generateSPDXNamespace(%s, %s, %s): expected different namespace hashes, but got the same", "", timestamp1, files1, "", timestamp1, files2) + } +} + func getCreationInfo(t *testing.T) *spdx.CreationInfo { ci, err := builder2v2.BuildCreationInfoSection2_2("Organization", "Google LLC", nil) if err != nil { diff --git a/tools/finalization/environment.sh b/tools/finalization/environment.sh index 8c838aa633..b0ed645a46 100755 --- a/tools/finalization/environment.sh +++ b/tools/finalization/environment.sh @@ -2,17 +2,21 @@ set -ex -export FINAL_BUG_ID='0' +export FINAL_BUG_ID='0' # CI only -export FINAL_PLATFORM_CODENAME='UpsideDownCake' -export CURRENT_PLATFORM_CODENAME='UpsideDownCake' -export FINAL_PLATFORM_CODENAME_JAVA='UPSIDE_DOWN_CAKE' -export FINAL_PLATFORM_SDK_VERSION='34' -export FINAL_PLATFORM_VERSION='14' +export FINAL_PLATFORM_CODENAME='VanillaIceCream' +export CURRENT_PLATFORM_CODENAME='VanillaIceCream' +export FINAL_PLATFORM_CODENAME_JAVA='VANILLA_ICE_CREAM' +export FINAL_BUILD_PREFIX='VP1A' +export FINAL_PLATFORM_VERSION='15' -export FINAL_BUILD_PREFIX='UP1A' - -export FINAL_MAINLINE_EXTENSION='7' +# Set arbitrary large values for CI. +# SDK_VERSION needs to be <61 (lint/libs/lint-api/src/main/java/com/android/tools/lint/detector/api/ApiConstraint.kt) +# There are multiple places where we rely on next SDK version to be previous + 1, e.g. RESOURCES_SDK_INT. +# We might or might not fix this in future, but for now let's keep it +1. +export FINAL_PLATFORM_SDK_VERSION='35' +# Feel free to randomize once in a while to detect buggy version detection code. +export FINAL_MAINLINE_EXTENSION='58' # Options: # 'unfinalized' - branch is in development state, diff --git a/tools/finalization/finalize-aidl-vndk-sdk-resources.sh b/tools/finalization/finalize-aidl-vndk-sdk-resources.sh index 049170131f..d977a6538d 100755 --- a/tools/finalization/finalize-aidl-vndk-sdk-resources.sh +++ b/tools/finalization/finalize-aidl-vndk-sdk-resources.sh @@ -92,9 +92,7 @@ function finalize_aidl_vndk_sdk_resources() { AIDL_TRANSITIVE_FREEZE=true $m aidl-freeze-api create_reference_dumps # Generate ABI dumps - ANDROID_BUILD_TOP="$top" \ - out/host/linux-x86/bin/create_reference_dumps \ - -p aosp_arm64 --build-variant user + ANDROID_BUILD_TOP="$top" out/host/linux-x86/bin/create_reference_dumps echo "NOTE: THIS INTENTIONALLY MAY FAIL AND REPAIR ITSELF (until 'DONE')" # Update new versions of files. See update-vndk-list.sh (which requires envsetup.sh) @@ -107,6 +105,12 @@ function finalize_aidl_vndk_sdk_resources() { # frameworks/libs/modules-utils finalize_modules_utils + # development/sdk + local platform_source="$top/development/sdk/platform_source.prop_template" + sed -i -e 's/Pkg\.Revision.*/Pkg\.Revision=1/g' $platform_source + local build_tools_source="$top/development/sdk/build_tools_source.prop_template" + sed -i -e 's/Pkg\.Revision.*/Pkg\.Revision=${PLATFORM_SDK_VERSION}.0.0/g' $build_tools_source + # build/make local version_defaults="$top/build/make/core/version_defaults.mk" sed -i -e "s/PLATFORM_SDK_VERSION := .*/PLATFORM_SDK_VERSION := ${FINAL_PLATFORM_SDK_VERSION}/g" $version_defaults @@ -114,10 +118,10 @@ function finalize_aidl_vndk_sdk_resources() { sed -i -e "s/sepolicy_major_vers := .*/sepolicy_major_vers := ${FINAL_PLATFORM_SDK_VERSION}/g" "$top/build/make/core/config.mk" cp "$top/build/make/target/product/gsi/current.txt" "$top/build/make/target/product/gsi/$FINAL_PLATFORM_SDK_VERSION.txt" - # build/soong - local codename_version="\"${FINAL_PLATFORM_CODENAME}\": ${FINAL_PLATFORM_SDK_VERSION}" - if ! grep -q "$codename_version" "$top/build/soong/android/api_levels.go" ; then - sed -i -e "/:.*$((${FINAL_PLATFORM_SDK_VERSION}-1)),/a \\\t\t$codename_version," "$top/build/soong/android/api_levels.go" + # build/bazel + local codename_version="\"${FINAL_PLATFORM_CODENAME}\": ${FINAL_PLATFORM_SDK_VERSION}" + if ! grep -q "$codename_version" "$top/build/bazel/rules/common/api_constants.bzl" ; then + sed -i -e "/:.*$((${FINAL_PLATFORM_SDK_VERSION}-1)),/a \\ $codename_version," "$top/build/bazel/rules/common/api_constants.bzl" fi # cts diff --git a/tools/finalization/finalize-sdk-rel.sh b/tools/finalization/finalize-sdk-rel.sh index 6cf4124e35..84ad2a70da 100755 --- a/tools/finalization/finalize-sdk-rel.sh +++ b/tools/finalization/finalize-sdk-rel.sh @@ -56,7 +56,7 @@ function finalize_sdk_rel() { mkdir -p "$top/prebuilts/abi-dumps/platform/$FINAL_PLATFORM_SDK_VERSION" cp -r "$top/prebuilts/abi-dumps/platform/current/64/" "$top/prebuilts/abi-dumps/platform/$FINAL_PLATFORM_SDK_VERSION/" - if [ "$FINAL_STATE" != "sdk" ] ; then + if [ "$FINAL_STATE" != "sdk" ] || [ "$FINAL_PLATFORM_CODENAME" == "$CURRENT_PLATFORM_CODENAME" ] ; then # prebuilts/abi-dumps/vndk mv "$top/prebuilts/abi-dumps/vndk/$CURRENT_PLATFORM_CODENAME" "$top/prebuilts/abi-dumps/vndk/$FINAL_PLATFORM_SDK_VERSION" fi; diff --git a/tools/releasetools/common.py b/tools/releasetools/common.py index 699c8b2c23..940ac1d4d1 100644 --- a/tools/releasetools/common.py +++ b/tools/releasetools/common.py @@ -450,10 +450,7 @@ class BuildInfo(object): @property def is_vabc(self): - vendor_prop = self.info_dict.get("vendor.build.prop") - vabc_enabled = vendor_prop and \ - vendor_prop.GetProp("ro.virtual_ab.compression.enabled") == "true" - return vabc_enabled + return self.info_dict.get("virtual_ab_compression") == "true" @property def is_android_r(self): @@ -474,9 +471,9 @@ class BuildInfo(object): for prop in props: value = vendor_prop.GetProp(prop) try: - return int(value) + return int(value) except: - pass + pass return -1 @property @@ -1396,7 +1393,8 @@ def RunHostInitVerifier(product_out, partition_map): def AppendAVBSigningArgs(cmd, partition): """Append signing arguments for avbtool.""" # e.g., "--key path/to/signing_key --algorithm SHA256_RSA4096" - key_path = ResolveAVBSigningPathArgs(OPTIONS.info_dict.get("avb_" + partition + "_key_path")) + key_path = ResolveAVBSigningPathArgs( + OPTIONS.info_dict.get("avb_" + partition + "_key_path")) algorithm = OPTIONS.info_dict.get("avb_" + partition + "_algorithm") if key_path and algorithm: cmd.extend(["--key", key_path, "--algorithm", algorithm]) @@ -1415,7 +1413,7 @@ def ResolveAVBSigningPathArgs(split_args): if os.path.exists(new_path): return new_path raise ExternalError( - "Failed to find {}".format(new_path)) + "Failed to find {}".format(new_path)) if not split_args: return split_args diff --git a/tools/releasetools/merge/merge_utils.py b/tools/releasetools/merge/merge_utils.py index c284338a6e..b5683a854a 100644 --- a/tools/releasetools/merge/merge_utils.py +++ b/tools/releasetools/merge/merge_utils.py @@ -181,6 +181,7 @@ def ValidateConfigLists(): _PARTITION_ITEM_PATTERN = re.compile(r'^([A-Z_]+)/.*$') _IMAGE_PARTITION_PATTERN = re.compile(r'^IMAGES/(.*)\.img$') +_PREBUILT_IMAGE_PARTITION_PATTERN = re.compile(r'^PREBUILT_IMAGES/(.*)\.img$') def ItemListToPartitionSet(item_list): @@ -203,12 +204,12 @@ def ItemListToPartitionSet(item_list): partition_set = set() for item in item_list: - for pattern in (_PARTITION_ITEM_PATTERN, _IMAGE_PARTITION_PATTERN): + for pattern in (_PARTITION_ITEM_PATTERN, _IMAGE_PARTITION_PATTERN, _PREBUILT_IMAGE_PARTITION_PATTERN): partition_match = pattern.search(item.strip()) if partition_match: partition = partition_match.group(1).lower() # These directories in target-files are not actual partitions. - if partition not in ('meta', 'images'): + if partition not in ('meta', 'images', 'prebuilt_images'): partition_set.add(partition) return partition_set @@ -217,7 +218,7 @@ def ItemListToPartitionSet(item_list): # Partitions that are grabbed from the framework partial build by default. _FRAMEWORK_PARTITIONS = { 'system', 'product', 'system_ext', 'system_other', 'root', 'system_dlkm', - 'vbmeta_system' + 'vbmeta_system', 'pvmfw' } @@ -253,7 +254,7 @@ def InferItemList(input_namelist, framework): if partition == 'meta': continue - if partition == 'images': + if partition in ('images', 'prebuilt_images'): image_partition, extension = os.path.splitext(os.path.basename(namelist)) if image_partition == 'vbmeta': # Always regenerate vbmeta.img since it depends on hash information diff --git a/tools/releasetools/ota_from_target_files.py b/tools/releasetools/ota_from_target_files.py index 2d4928883e..e40256c67c 100755 --- a/tools/releasetools/ota_from_target_files.py +++ b/tools/releasetools/ota_from_target_files.py @@ -248,6 +248,9 @@ A/B OTA specific options --security_patch_level Override the security patch level in target files + + --max_threads + Specify max number of threads allowed when generating A/B OTA """ from __future__ import print_function @@ -321,6 +324,8 @@ OPTIONS.enable_zucchini = True OPTIONS.enable_lz4diff = False OPTIONS.vabc_compression_param = None OPTIONS.security_patch_level = None +OPTIONS.max_threads = None + POSTINSTALL_CONFIG = 'META/postinstall_config.txt' DYNAMIC_PARTITION_INFO = 'META/dynamic_partitions_info.txt' @@ -985,6 +990,9 @@ def GenerateAbOtaPackage(target_file, output_file, source_file=None): additional_args += ["--security_patch_level", security_patch_level] + if OPTIONS.max_threads: + additional_args += ["--max_threads", OPTIONS.max_threads] + additional_args += ["--enable_zucchini=" + str(OPTIONS.enable_zucchini).lower()] @@ -1191,6 +1199,12 @@ def main(argv): OPTIONS.vabc_compression_param = a.lower() elif o == "--security_patch_level": OPTIONS.security_patch_level = a + elif o in ("--max_threads"): + if a.isdigit(): + OPTIONS.max_threads = a + else: + raise ValueError("Cannot parse value %r for option %r - only " + "integers are allowed." % (a, o)) else: return False return True @@ -1242,6 +1256,7 @@ def main(argv): "enable_lz4diff=", "vabc_compression_param=", "security_patch_level=", + "max_threads=", ], extra_option_handler=option_handler) common.InitLogging() diff --git a/tools/releasetools/ota_utils.py b/tools/releasetools/ota_utils.py index 80a6c7a39b..3291d56328 100644 --- a/tools/releasetools/ota_utils.py +++ b/tools/releasetools/ota_utils.py @@ -642,8 +642,7 @@ def ConstructOtaApexInfo(target_zip, source_file=None): if not source_file: return target_apex_string - with zipfile.ZipFile(source_file, "r", allowZip64=True) as source_zip: - source_apex_string = _ReadApexInfo(source_zip) + source_apex_string = _ReadApexInfo(source_file) if not source_apex_string: return target_apex_string diff --git a/tools/sbom/generate-sbom.py b/tools/sbom/generate-sbom.py index d2992c58d7..56509c9a11 100755 --- a/tools/sbom/generate-sbom.py +++ b/tools/sbom/generate-sbom.py @@ -51,6 +51,38 @@ ISSUE_UNKNOWN_SECURITY_TAG_TYPE = 'Unknown security tag type:' ISSUE_INSTALLED_FILE_NOT_EXIST = 'Non-exist installed files:' INFO_METADATA_FOUND_FOR_PACKAGE = 'METADATA file found for packages:' +SOONG_PREBUILT_MODULE_TYPES = [ + 'android_app_import', + 'android_library_import', + 'cc_prebuilt_binary', + 'cc_prebuilt_library', + 'cc_prebuilt_library_headers', + 'cc_prebuilt_library_shared', + 'cc_prebuilt_library_static', + 'cc_prebuilt_object', + 'dex_import', + 'java_import', + 'java_sdk_library_import', + 'java_system_modules_import', + 'libclang_rt_prebuilt_library_static', + 'libclang_rt_prebuilt_library_shared', + 'llvm_prebuilt_library_static', + 'ndk_prebuilt_object', + 'ndk_prebuilt_shared_stl', + 'nkd_prebuilt_static_stl', + 'prebuilt_apex', + 'prebuilt_bootclasspath_fragment', + 'prebuilt_dsp', + 'prebuilt_firmware', + 'prebuilt_kernel_modules', + 'prebuilt_rfsa', + 'prebuilt_root', + 'rust_prebuilt_dylib', + 'rust_prebuilt_library', + 'rust_prebuilt_rlib', + 'vndk_prebuilt_shared', +] + def get_args(): parser = argparse.ArgumentParser() @@ -106,35 +138,8 @@ def checksum(file_path): def is_soong_prebuilt_module(file_metadata): - return file_metadata['soong_module_type'] and file_metadata['soong_module_type'] in [ - 'android_app_import', 'android_library_import', 'cc_prebuilt_binary', 'cc_prebuilt_library', - 'cc_prebuilt_library_headers', 'cc_prebuilt_library_shared', 'cc_prebuilt_library_static', 'cc_prebuilt_object', - 'dex_import', 'java_import', 'java_sdk_library_import', 'java_system_modules_import', - 'libclang_rt_prebuilt_library_static', 'libclang_rt_prebuilt_library_shared', 'llvm_prebuilt_library_static', - 'ndk_prebuilt_object', 'ndk_prebuilt_shared_stl', 'nkd_prebuilt_static_stl', 'prebuilt_apex', - 'prebuilt_bootclasspath_fragment', 'prebuilt_dsp', 'prebuilt_firmware', 'prebuilt_kernel_modules', - 'prebuilt_rfsa', 'prebuilt_root', 'rust_prebuilt_dylib', 'rust_prebuilt_library', 'rust_prebuilt_rlib', - 'vndk_prebuilt_shared', - - # 'android_test_import', - # 'cc_prebuilt_test_library_shared', - # 'java_import_host', - # 'java_test_import', - # 'llvm_host_prebuilt_library_shared', - # 'prebuilt_apis', - # 'prebuilt_build_tool', - # 'prebuilt_defaults', - # 'prebuilt_etc', - # 'prebuilt_etc_host', - # 'prebuilt_etc_xml', - # 'prebuilt_font', - # 'prebuilt_hidl_interfaces', - # 'prebuilt_platform_compat_config', - # 'prebuilt_stubs_sources', - # 'prebuilt_usr_share', - # 'prebuilt_usr_share_host', - # 'soong_config_module_type_import', - ] + return (file_metadata['soong_module_type'] and + file_metadata['soong_module_type'] in SOONG_PREBUILT_MODULE_TYPES) def is_source_package(file_metadata): |