From 8d900929c70ac90e5806098aabe49362b216fbd1 Mon Sep 17 00:00:00 2001 From: Colin Cross Date: Thu, 27 Aug 2020 12:40:57 -0700 Subject: [PATCH 1/4] Remove INSTALLED_VBMETAIMAGE_TARGET dependency from target-files.zip Remove the INSTALLED_VBMETAIMAGE_TARGET, which depends on all the other images, it is no longer necessary after If1eff317621882994e7dcbf37cd35f5bfa16b69a. This will allow the next change to parallelize target-files.zip with the image generation rules. Test: treehugger Change-Id: Ie27bdbd2d414e9b475823639a1b3944fe0756d2a --- core/Makefile | 1 - 1 file changed, 1 deletion(-) diff --git a/core/Makefile b/core/Makefile index 73f2f7ae0e..a02e2a6a20 100644 --- a/core/Makefile +++ b/core/Makefile @@ -4290,7 +4290,6 @@ $(BUILT_TARGET_FILES_PACKAGE): \ $(INSTALLED_VENDORIMAGE_TARGET) \ $(INSTALLED_PRODUCTIMAGE_TARGET) \ $(INSTALLED_SYSTEM_EXTIMAGE_TARGET) \ - $(INSTALLED_VBMETAIMAGE_TARGET) \ $(INSTALLED_ODMIMAGE_TARGET) \ $(INSTALLED_VENDOR_DLKMIMAGE_TARGET) \ $(INSTALLED_ODM_DLKMIMAGE_TARGET) \ From 43f2eb286abeaadf71346dac7af5bd2ad38e8d38 Mon Sep 17 00:00:00 2001 From: Colin Cross Date: Wed, 26 Aug 2020 18:41:29 -0700 Subject: [PATCH 2/4] Make dependencies of target-files.zip conditional Depend on the files going into the images instead of the images themselves when the images are not prebuilts. This will allow paralellizing image generation with target-files.zip. Test: treehugger Test: m installclean && m target-files-package has same files before and after Change-Id: If51d0f53602c08bd946ec34a2edae6f9d95f7bf8 --- core/Makefile | 88 +++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 74 insertions(+), 14 deletions(-) diff --git a/core/Makefile b/core/Makefile index a02e2a6a20..7a413f9d6e 100644 --- a/core/Makefile +++ b/core/Makefile @@ -4264,12 +4264,83 @@ 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_PACKAGE): $(FULL_SYSTEMIMAGE_DEPS) +endif + +ifdef BUILDING_USERDATA_IMAGE + $(BUILT_TARGET_FILES_PACKAGE): $(INTERNAL_USERDATAIMAGE_FILES) +endif + +ifdef BUILDING_SYSTEM_OTHER_IMAGE + $(BUILT_TARGET_FILES_PACKAGE): $(INTERNAL_SYSTEMOTHERIMAGE_FILES) +endif + +ifdef BUILDING_VENDOR_BOOT_IMAGE + $(BUILT_TARGET_FILES_PACKAGE): $(INTERNAL_VENDOR_RAMDISK_FILES) +endif + +ifdef BUILDING_RECOVERY_IMAGE + # TODO(b/30414428): Can't depend on INTERNAL_RECOVERYIMAGE_FILES alone like other + # BUILD_TARGET_FILES_PACKAGE dependencies because currently there're cp/rsync/rm + # 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) + else + $(BUILT_TARGET_FILES_PACKAGE): $(INSTALLED_RECOVERYIMAGE_TARGET) + endif + $(BUILT_TARGET_FILES_PACKAGE): $(INTERNAL_RECOVERYIMAGE_FILES) +endif + +# Conditionally depend on the image files if the image is being built so the +# target-files.zip rule doesn't wait on the image creation rule, or the image +# if it is coming from a prebuilt. + +ifdef BUILDING_VENDOR_IMAGE + $(BUILT_TARGET_FILES_PACKAGE): $(INTERNAL_VENDORIMAGE_FILES) +else ifdef BOARD_PREBUILT_VENDORIMAGE + $(BUILT_TARGET_FILES_PACKAGE): $(INSTALLED_VENDORIMAGE_TARGET) +endif + +ifdef BUILDING_PRODUCT_IMAGE + $(BUILT_TARGET_FILES_PACKAGE): $(INTERNAL_PRODUCTIMAGE_FILES) +else ifdef BOARD_PREBUILT_PRODUCTIMAGE + $(BUILT_TARGET_FILES_PACKAGE): $(INSTALLED_PRODUCTIMAGE_TARGET) +endif + +ifdef BUILDING_SYSTEM_EXT_IMAGE + $(BUILT_TARGET_FILES_PACKAGE): $(INTERNAL_SYSTEM_EXTIMAGE_FILES) +else ifdef BOARD_PREBUILT_SYSTEM_EXTIMAGE + $(BUILT_TARGET_FILES_PACKAGE): $(INSTALLED_SYSTEM_EXTIMAGE_TARGET) +endif + +ifdef BUILDING_BOOT_IMAGE + $(BUILT_TARGET_FILES_PACKAGE): $(INTERNAL_RAMDISK_FILES) +else ifdef BOARD_PREBUILT_BOOTIMAGE + $(BUILT_TARGET_FILES_PACKAGE): $(INSTALLED_BOOTIMAGE_TARGET) +endif + +ifdef BUILDING_ODM_IMAGE + $(BUILT_TARGET_FILES_PACKAGE): $(INTERNAL_ODMIMAGE_FILES) +else ifdef BOARD_PREBUILT_ODMIMAGE + $(BUILT_TARGET_FILES_PACKAGE): $(INSTALLED_ODMIMAGE_TARGET) +endif + +ifdef BUILDING_VENDOR_DLKM_IMAGE + $(BUILT_TARGET_FILES_PACKAGE): $(INTERNAL_VENDOR_DLKMIMAGE_FILES) +else ifdef BOARD_PREBUILT_VENDOR_DLKIMMAGE + $(BUILT_TARGET_FILES_PACKAGE): $(INSTALLED_VENDOR_DLKMIMAGE_TARGET) +endif + +ifdef BUILDING_ODM_DLKM_IMAGE + $(BUILT_TARGET_FILES_PACKAGE): $(INTERNAL_ODM_DLKMIMAGE_FILES) +else ifdef BOARD_ODM_VENDOR_DLKIMMAGE + $(BUILT_TARGET_FILES_PACKAGE): $(INSTALLED_ODM_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) + 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) endif ifdef BOARD_PREBUILT_BOOTLOADER @@ -4280,22 +4351,11 @@ endif # Depending on the various images guarantees that the underlying # directories are up-to-date. $(BUILT_TARGET_FILES_PACKAGE): \ - $(INSTALLED_RAMDISK_TARGET) \ - $(INSTALLED_BOOTIMAGE_TARGET) \ - $(INSTALLED_VENDOR_BOOTIMAGE_TARGET) \ $(INSTALLED_RADIOIMAGE_TARGET) \ $(INSTALLED_RECOVERYIMAGE_TARGET) \ - $(INSTALLED_USERDATAIMAGE_TARGET) \ $(INSTALLED_CACHEIMAGE_TARGET) \ - $(INSTALLED_VENDORIMAGE_TARGET) \ - $(INSTALLED_PRODUCTIMAGE_TARGET) \ - $(INSTALLED_SYSTEM_EXTIMAGE_TARGET) \ - $(INSTALLED_ODMIMAGE_TARGET) \ - $(INSTALLED_VENDOR_DLKMIMAGE_TARGET) \ - $(INSTALLED_ODM_DLKMIMAGE_TARGET) \ $(INSTALLED_DTBOIMAGE_TARGET) \ $(INSTALLED_CUSTOMIMAGES_TARGET) \ - $(INTERNAL_SYSTEMOTHERIMAGE_FILES) \ $(INSTALLED_ANDROID_INFO_TXT_TARGET) \ $(INSTALLED_KERNEL_TARGET) \ $(INSTALLED_DTBIMAGE_TARGET) \ From cda30c73c9b9b4dc0a8ea1bab178998484df4f0f Mon Sep 17 00:00:00 2001 From: Colin Cross Date: Wed, 26 Aug 2020 18:43:21 -0700 Subject: [PATCH 3/4] Make dist zip files depend on files instead of images Depend on the files instead of images so that the dist zip files can run in parallel with the image generation rules. Test: treehugger Change-Id: I1f942dc0ce0a2cbc5288c1f0633ea1019e77f91c --- core/Makefile | 72 ++++++++++++++++++++++++--------------------------- 1 file changed, 34 insertions(+), 38 deletions(-) diff --git a/core/Makefile b/core/Makefile index 7a413f9d6e..490c00314a 100644 --- a/core/Makefile +++ b/core/Makefile @@ -4785,13 +4785,12 @@ endif # build_ota_package APPCOMPAT_ZIP := $(PRODUCT_OUT)/appcompat.zip # For apps_only build we'll establish the dependency later in build/make/core/main.mk. ifeq (,$(TARGET_BUILD_UNBUNDLED)) -$(APPCOMPAT_ZIP): $(INSTALLED_SYSTEMIMAGE_TARGET) \ - $(INSTALLED_RAMDISK_TARGET) \ - $(INSTALLED_BOOTIMAGE_TARGET) \ - $(INSTALLED_USERDATAIMAGE_TARGET) \ - $(INSTALLED_VENDORIMAGE_TARGET) \ - $(INSTALLED_PRODUCTIMAGE_TARGET) \ - $(INSTALLED_SYSTEM_EXTIMAGE_TARGET) +$(APPCOMPAT_ZIP): $(FULL_SYSTEMIMAGE_DEPS) \ + $(INTERNAL_RAMDISK_FILES) \ + $(INTERNAL_USERDATAIMAGE_FILES) \ + $(INTERNAL_VENDORIMAGE_FILES) \ + $(INTERNAL_PRODUCTIMAGE_FILES) \ + $(INTERNAL_SYSTEM_EXTIMAGE_FILES) endif $(APPCOMPAT_ZIP): PRIVATE_LIST_FILE := $(call intermediates-dir-for,PACKAGING,appcompat)/filelist $(APPCOMPAT_ZIP): $(SOONG_ZIP) @@ -4814,16 +4813,15 @@ name := $(name)-symbols-$(FILE_NAME_TAG) SYMBOLS_ZIP := $(PRODUCT_OUT)/$(name).zip # For apps_only build we'll establish the dependency later in build/make/core/main.mk. ifeq (,$(TARGET_BUILD_UNBUNDLED)) -$(SYMBOLS_ZIP): $(INSTALLED_SYSTEMIMAGE_TARGET) \ - $(INSTALLED_RAMDISK_TARGET) \ - $(INSTALLED_BOOTIMAGE_TARGET) \ - $(INSTALLED_USERDATAIMAGE_TARGET) \ - $(INSTALLED_VENDORIMAGE_TARGET) \ - $(INSTALLED_PRODUCTIMAGE_TARGET) \ - $(INSTALLED_SYSTEM_EXTIMAGE_TARGET) \ - $(INSTALLED_ODMIMAGE_TARGET) \ - $(INSTALLED_VENDOR_DLKMIMAGE_TARGET) \ - $(INSTALLED_ODM_DLKMIMAGE_TARGET) \ +$(SYMBOLS_ZIP): $(FULL_SYSTEMIMAGE_DEPS) \ + $(INTERNAL_RAMDISK_FILES) \ + $(INTERNAL_USERDATAIMAGE_FILES) \ + $(INTERNAL_VENDORIMAGE_FILES) \ + $(INTERNAL_PRODUCTIMAGE_FILES) \ + $(INTERNAL_SYSTEM_EXTIMAGE_FILES) \ + $(INTERNAL_ODMIMAGE_FILES) \ + $(INTERNAL_VENDOR_DLKMIMAGE_FILES) \ + $(INTERNAL_ODM_DLKMIMAGE_FILES) \ $(updater_dep) endif $(SYMBOLS_ZIP): PRIVATE_LIST_FILE := $(call intermediates-dir-for,PACKAGING,symbols)/filelist @@ -4842,16 +4840,15 @@ name := $(name)_debug endif COVERAGE_ZIP := $(PRODUCT_OUT)/$(name).zip ifeq (,$(TARGET_BUILD_UNBUNDLED)) -$(COVERAGE_ZIP): $(INSTALLED_SYSTEMIMAGE_TARGET) \ - $(INSTALLED_RAMDISK_TARGET) \ - $(INSTALLED_BOOTIMAGE_TARGET) \ - $(INSTALLED_USERDATAIMAGE_TARGET) \ - $(INSTALLED_VENDORIMAGE_TARGET) \ - $(INSTALLED_PRODUCTIMAGE_TARGET) \ - $(INSTALLED_SYSTEM_EXTIMAGE_TARGET) \ - $(INSTALLED_ODMIMAGE_TARGET) \ - $(INSTALLED_VENDOR_DLKMIMAGE_TARGET) \ - $(INSTALLED_ODM_DLKMIMAGE_TARGET) +$(COVERAGE_ZIP): $(FULL_SYSTEMIMAGE_DEPS) \ + $(INTERNAL_RAMDISK_FILES) \ + $(INTERNAL_USERDATAIMAGE_FILES) \ + $(INTERNAL_VENDORIMAGE_FILES) \ + $(INTERNAL_PRODUCTIMAGE_FILES) \ + $(INTERNAL_SYSTEM_EXTIMAGE_FILES) \ + $(INTERNAL_ODMIMAGE_FILES) \ + $(INTERNAL_VENDOR_DLKMIMAGE_FILES) \ + $(INTERNAL_ODM_DLKMIMAGE_FILES) endif $(COVERAGE_ZIP): PRIVATE_LIST_FILE := $(call intermediates-dir-for,PACKAGING,coverage)/filelist $(COVERAGE_ZIP): $(SOONG_ZIP) @@ -4885,7 +4882,7 @@ endif name := $(name)-apps-$(FILE_NAME_TAG) APPS_ZIP := $(PRODUCT_OUT)/$(name).zip -$(APPS_ZIP): $(INSTALLED_SYSTEMIMAGE_TARGET) +$(APPS_ZIP): $(FULL_SYSTEMIMAGE_DEPS) @echo "Package apps: $@" $(hide) rm -rf $@ $(hide) mkdir -p $(dir $@) @@ -4920,16 +4917,15 @@ PROGUARD_DICT_ZIP := $(PRODUCT_OUT)/$(TARGET_PRODUCT)-proguard-dict-$(FILE_NAME_ # For apps_only build we'll establish the dependency later in build/make/core/main.mk. ifeq (,$(TARGET_BUILD_UNBUNDLED)) $(PROGUARD_DICT_ZIP): \ - $(INSTALLED_SYSTEMIMAGE_TARGET) \ - $(INSTALLED_RAMDISK_TARGET) \ - $(INSTALLED_BOOTIMAGE_TARGET) \ - $(INSTALLED_USERDATAIMAGE_TARGET) \ - $(INSTALLED_VENDORIMAGE_TARGET) \ - $(INSTALLED_PRODUCTIMAGE_TARGET) \ - $(INSTALLED_SYSTEM_EXTIMAGE_TARGET) \ - $(INSTALLED_ODMIMAGE_TARGET) \ - $(INSTALLED_VENDOR_DLKMIMAGE_TARGET) \ - $(INSTALLED_ODM_DLKMIMAGE_TARGET) \ + $(FULL_SYSTEMIMAGE_DEPS) \ + $(INTERNAL_RAMDISK_FILES) \ + $(INTERNAL_USERDATAIMAGE_FILES) \ + $(INTERNAL_VENDORIMAGE_FILES) \ + $(INTERNAL_PRODUCTIMAGE_FILES) \ + $(INTERNAL_SYSTEM_EXTIMAGE_FILES) \ + $(INTERNAL_ODMIMAGE_FILES) \ + $(INTERNAL_VENDOR_DLKMIMAGE_FILES) \ + $(INTERNAL_ODM_DLKMIMAGE_FILES) \ $(updater_dep) endif $(PROGUARD_DICT_ZIP): PRIVATE_LIST_FILE := $(call intermediates-dir-for,PACKAGING,proguard)/filelist From e0dbbd4e9e98f9b58cec285739ac63afbfac7c9d Mon Sep 17 00:00:00 2001 From: Colin Cross Date: Thu, 27 Aug 2020 14:14:26 -0700 Subject: [PATCH 4/4] Remove target-files-package from PARSE_TIME_MAKE_GOALS It isn't doing anything useful that would be necessary to reparse the Makefiles for. Test: m target-files-package Change-Id: I3aa2490480de8dbe0e57fe36221088c3f18017cb --- core/Makefile | 2 -- core/main.mk | 2 +- core/ninja_config.mk | 1 - 3 files changed, 1 insertion(+), 4 deletions(-) diff --git a/core/Makefile b/core/Makefile index 490c00314a..1f9bd14d67 100644 --- a/core/Makefile +++ b/core/Makefile @@ -4709,9 +4709,7 @@ endif .PHONY: target-files-package target-files-package: $(BUILT_TARGET_FILES_PACKAGE) -ifneq ($(filter $(MAKECMDGOALS),target-files-package),) $(call dist-for-goals, target-files-package, $(BUILT_TARGET_FILES_PACKAGE)) -endif # ----------------------------------------------------------------- # NDK Sysroot Package diff --git a/core/main.mk b/core/main.mk index ebee25a044..36071b8d2b 100644 --- a/core/main.mk +++ b/core/main.mk @@ -419,7 +419,7 @@ ifdef is_sdk_build sdk_repo_goal := $(strip $(filter sdk_repo,$(MAKECMDGOALS))) MAKECMDGOALS := $(strip $(filter-out sdk_repo,$(MAKECMDGOALS))) -ifneq ($(words $(sort $(filter-out $(INTERNAL_MODIFIER_TARGETS) checkbuild emulator_tests target-files-package,$(MAKECMDGOALS)))),1) +ifneq ($(words $(sort $(filter-out $(INTERNAL_MODIFIER_TARGETS) checkbuild emulator_tests,$(MAKECMDGOALS)))),1) $(error The 'sdk' target may not be specified with any other targets) endif diff --git a/core/ninja_config.mk b/core/ninja_config.mk index 4d1009fda8..6fccacda29 100644 --- a/core/ninja_config.mk +++ b/core/ninja_config.mk @@ -35,7 +35,6 @@ PARSE_TIME_MAKE_GOALS := \ sdk_addon \ sdk_repo \ stnod \ - target-files-package \ test-art% \ user \ userdataimage \