diff options
Diffstat (limited to 'core')
-rw-r--r-- | core/Makefile | 55 | ||||
-rw-r--r-- | core/base_rules.mk | 6 | ||||
-rw-r--r-- | core/clear_vars.mk | 1 | ||||
-rw-r--r-- | core/main.mk | 7 | ||||
-rw-r--r-- | core/tasks/tools/package-modules.mk | 52 |
5 files changed, 65 insertions, 56 deletions
diff --git a/core/Makefile b/core/Makefile index ba373a5..471dcb4 100644 --- a/core/Makefile +++ b/core/Makefile @@ -13,8 +13,6 @@ else FILE_NAME_TAG := $(BUILD_NUMBER) endif -is_tests_build := $(filter tests,$(MAKECMDGOALS)) - # ----------------------------------------------------------------- # Define rules to copy PRODUCT_COPY_FILES defined by the product. # PRODUCT_COPY_FILES contains words like <source file>:<dest file>[:<owner>]. @@ -797,14 +795,6 @@ INTERNAL_SYSTEMIMAGE_FILES := $(filter $(TARGET_OUT)/%, \ $(PDK_FUSION_SYSIMG_FILES) \ $(RECOVERY_RESOURCE_ZIP)) -ifdef is_tests_build -# We don't want to install tests modules to the system partition -# when building "tests", because now "tests" may be built in a user, userdebug -# or eng build variant and we don't want to pollute the system partition. -# INTERNAL_SYSTEMIMAGE_FILES += $(filter $(TARGET_OUT)/%, \ -# $(tests_MODULES)) -endif - FULL_SYSTEMIMAGE_DEPS := $(INTERNAL_SYSTEMIMAGE_FILES) $(INTERNAL_USERIMAGES_DEPS) # ----------------------------------------------------------------- # installed file list @@ -981,12 +971,6 @@ boottarball-nodeps btnod: $(FS_GET_STATS) \ INTERNAL_USERDATAIMAGE_FILES := \ $(filter $(TARGET_OUT_DATA)/%,$(ALL_DEFAULT_INSTALLED_MODULES)) -# If we build "tests" at the same time, make sure $(tests_MODULES) get covered. -ifdef is_tests_build -INTERNAL_USERDATAIMAGE_FILES += \ - $(filter $(TARGET_OUT_DATA)/%,$(tests_MODULES)) -endif - # Don't build userdata.img if it's extfs but no partition size skip_userdata.img := ifdef INTERNAL_USERIMAGES_EXT_VARIANT @@ -1362,45 +1346,6 @@ endif # TARGET_NO_KERNEL != true endif # TARGET_DEVICE != generic* endif # TARGET_PRODUCT != sdk -ifdef is_tests_build -# ----------------------------------------------------------------- -# A zip of the tests that are built when running "make tests". -# This is very similar to BUILT_TARGET_FILES_PACKAGE, but we -# only grab DATA, and it's called "*-tests-*.zip". -# -name := $(TARGET_PRODUCT) -ifeq ($(TARGET_BUILD_TYPE),debug) - name := $(name)_debug -endif -name := $(name)-tests-$(FILE_NAME_TAG) - -intermediates := $(call intermediates-dir-for,PACKAGING,tests_zip) -BUILT_TESTS_ZIP_PACKAGE := $(intermediates)/$(name).zip -$(BUILT_TESTS_ZIP_PACKAGE): intermediates := $(intermediates) -$(BUILT_TESTS_ZIP_PACKAGE): zip_root := $(intermediates)/$(name) - -# Depending on the image dependency files, instead of the image files itself, -# guarantees that the underlying directories are up-to-date, -# but don't really build the image. -$(BUILT_TESTS_ZIP_PACKAGE): \ - $(INTERNAL_USERDATAIMAGE_FILES) \ - | $(ACP) - @echo "Package test files: $@" - $(hide) rm -rf $@ $(zip_root) - $(hide) mkdir -p $(dir $@) $(zip_root) - @# Contents of the data image - $(hide) $(call package_files-copy-root, \ - $(TARGET_OUT_DATA),$(zip_root)/DATA) - $(hide) (cd $(zip_root) && zip -qry ../$(notdir $@) .) - -.PHONY: tests -tests: $(BUILT_TESTS_ZIP_PACKAGE) - -ifneq (,$(filter tests, $(MAKECMDGOALS))) - $(call dist-for-goals, tests, $(BUILT_TESTS_ZIP_PACKAGE)) -endif -endif # is_tests_build - # ----------------------------------------------------------------- # A zip of the symbols directory. Keep the full paths to make it # more obvious where these files came from. diff --git a/core/base_rules.mk b/core/base_rules.mk index 673fdd8..c68fba7 100644 --- a/core/base_rules.mk +++ b/core/base_rules.mk @@ -598,6 +598,12 @@ ALL_MODULES.$(my_register_name).BUILT := \ $(ALL_MODULES.$(my_register_name).BUILT) $(LOCAL_BUILT_MODULE) ALL_MODULES.$(my_register_name).INSTALLED := \ $(strip $(ALL_MODULES.$(my_register_name).INSTALLED) $(LOCAL_INSTALLED_MODULE)) +ifdef LOCAL_PICKUP_FILES +# Files or directories ready to pick up by the build system +# when $(LOCAL_BUILT_MODULE) is done. +ALL_MODULES.$(my_register_name).PICKUP_FILES := \ + $(ALL_MODULES.$(my_register_name).PICKUP_FILES) $(LOCAL_PICKUP_FILES) +endif ALL_MODULES.$(my_register_name).REQUIRED := \ $(strip $(ALL_MODULES.$(my_register_name).REQUIRED) $(LOCAL_REQUIRED_MODULES) \ $(LOCAL_REQUIRED_MODULES_$(TARGET_$(LOCAL_2ND_ARCH_VAR_PREFIX)ARCH))) diff --git a/core/clear_vars.mk b/core/clear_vars.mk index ea47003..5342fd2 100644 --- a/core/clear_vars.mk +++ b/core/clear_vars.mk @@ -13,6 +13,7 @@ LOCAL_BUILT_MODULE_STEM:= OVERRIDE_BUILT_MODULE_PATH:= LOCAL_INSTALLED_MODULE:= LOCAL_INSTALLED_MODULE_STEM:= +LOCAL_PICKUP_FILES:= LOCAL_UNINSTALLABLE_MODULE:= LOCAL_INTERMEDIATE_TARGETS:= LOCAL_UNSTRIPPED_PATH:= diff --git a/core/main.mk b/core/main.mk index 5175bef..8f60da7 100644 --- a/core/main.mk +++ b/core/main.mk @@ -393,6 +393,10 @@ ifneq ($(filter ro.setupwizard.mode=ENABLED, $(call collapse-pairs, $(ADDITIONAL $(call collapse-pairs, $(ADDITIONAL_BUILD_PROPERTIES))) \ ro.setupwizard.mode=OPTIONAL endif +# Don't even verify the image on eng builds to speed startup +ADDITIONAL_BUILD_PROPERTIES += dalvik.vm.image-dex2oat-flags=--compiler-filter=verify-none +# Don't compile apps on eng builds to speed startup +ADDITIONAL_BUILD_PROPERTIES += dalvik.vm.dex2oat-flags=--compiler-filter=interpret-only endif ## sdk ## @@ -1000,7 +1004,7 @@ $(call dist-for-goals,sdk win_sdk, \ # umbrella targets to assit engineers in verifying builds .PHONY: java native target host java-host java-target native-host native-target \ java-host-tests java-target-tests native-host-tests native-target-tests \ - java-tests native-tests host-tests target-tests + java-tests native-tests host-tests target-tests tests # some synonyms .PHONY: host-java target-java host-native target-native \ target-java-tests target-native-tests @@ -1010,6 +1014,7 @@ host-native : native-host target-native : native-target target-java-tests : java-target-tests target-native-tests : native-target-tests +tests : host-tests target-tests .PHONY: lintall diff --git a/core/tasks/tools/package-modules.mk b/core/tasks/tools/package-modules.mk new file mode 100644 index 0000000..19e756a --- /dev/null +++ b/core/tasks/tools/package-modules.mk @@ -0,0 +1,52 @@ +# Package up modules to a zip file. +# It preserves the install path of the modules' installed files. +# +# Input variables: +# my_modules: a list of module names +# my_package_name: the name of the output zip file. +# Output variables: +# my_package_zip: the path to the output zip file. +# +# + +my_staging_dir := $(call intermediates-dir-for,PACKAGING,$(my_package_name)) +my_built_modules := +my_copy_pairs := +my_pickup_files := + +# Search for modules' built files and installed files; +# Calculate the dest files in the output zip file. +# If for 1 module name we found multiple installed files, +# we use suffix matching to find the corresponding built file. +$(foreach m,$(my_modules),\ + $(if $(ALL_MODULES.$(m).INSTALLED),,\ + $(warning Unknown installed file for module '$(m)'))\ + $(eval my_pickup_files += $(ALL_MODULES.$(m).PICKUP_FILES))\ + $(foreach i,$(filter $(TARGET_OUT_ROOT)/%,$(ALL_MODULES.$(m).INSTALLED)),\ + $(eval my_suffix := $(suffix $(i))) \ + $(if $(my_suffix),\ + $(eval my_patt := $(TARGET_OUT_ROOT)/%$(my_suffix)),\ + $(eval my_patt := $(TARGET_OUT_ROOT)/%$(notdir $(i))))\ + $(eval b := $(filter $(my_patt),$(ALL_MODULES.$(m).BUILT)))\ + $(if $(filter 1,$(words $(b))),\ + $(eval my_built_modules += $(b))\ + $(eval my_copy_dest := $(patsubst data/%,DATA/%,\ + $(patsubst system/%,SYSTEM/%,\ + $(patsubst $(PRODUCT_OUT)/%,%,$(i)))))\ + $(eval my_copy_pairs += $(b):$(my_staging_dir)/$(my_copy_dest)),\ + $(warning Unexpected module built file '$(b)' for module '$(m)'))\ + )) + +my_package_zip := $(my_staging_dir)/$(my_package_name).zip +$(my_package_zip): PRIVATE_COPY_PAIRS := $(my_copy_pairs) +$(my_package_zip): PRIVATE_PICKUP_FILES := $(my_pickup_files) +$(my_package_zip) : $(my_built_modules) + @echo "Package $@" + @rm -rf $(dir $@) && mkdir -p $(dir $@) + $(hide) $(foreach p, $(PRIVATE_COPY_PAIRS), \ + $(eval pair := $(subst :,$(space),$(p)))\ + mkdir -p $(dir $(word 2,$(pair))); \ + cp -rf $(word 1,$(pair)) $(word 2,$(pair));) + $(hide) $(foreach f, $(PRIVATE_PICKUP_FILES), \ + cp -rf $(f) $(dir $@);) + $(hide) cd $(dir $@) && zip -rq $(notdir $@) * |