All the new features are turned off for now, since multiple branches and products need to be verified before they can be turned on. So everything should behave the same as today, except for no partition-based warnings. Instead of the current link type checks that happen during the build, run as many as possible immediately after loading all the Android.mk files. If we're allowing missing dependencies ('mm', ALLOW_MISSING_DEPENDENCIES, tapas, etc), we'll defer the link type checks to during the build. If we're not allowing missing dependencies, we'll produce a better error message to the user about the missing dependencies. See core/main.mk for a description of the storage format. This also remove the partition-based type checking. It hasn't worked all that well, particularly with ASAN builds. The new VNDK checks will handle the most pressing cases. Test: Verify all link_type files and dependencies are the same: grep link_type: out/build-aosp_arm64.ninja | sed -E "s/ rule[0-9]+//" | sort Change-Id: Id643658b9d9e84f99f5db0d526aad88c1f5d3417
70 lines
2.8 KiB
Makefile
70 lines
2.8 KiB
Makefile
# 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_makefile := $(lastword $(filter-out $(lastword $(MAKEFILE_LIST)),$(MAKEFILE_LIST)))
|
|
my_staging_dir := $(call intermediates-dir-for,PACKAGING,$(my_package_name))
|
|
my_built_modules :=
|
|
my_copy_pairs :=
|
|
my_pickup_files :=
|
|
|
|
# Iterate over the modules and include their direct dependencies stated in the
|
|
# LOCAL_REQUIRED_MODULES.
|
|
my_modules_and_deps := $(my_modules)
|
|
$(foreach m,$(my_modules),\
|
|
$(eval _explicitly_required := \
|
|
$(strip $(ALL_MODULES.$(m).EXPLICITLY_REQUIRED)\
|
|
$(ALL_MODULES.$(m)$(TARGET_2ND_ARCH_MODULE_SUFFIX).EXPLICITLY_REQUIRED)))\
|
|
$(eval my_modules_and_deps += $(_explicitly_required))\
|
|
)
|
|
|
|
# Ignore unknown installed files on partial builds
|
|
my_missing_files :=
|
|
ifneq ($(ALLOW_MISSING_DEPENDENCIES),true)
|
|
my_missing_files = $(shell $(call echo-warning,$(my_makefile),$(my_package_name): Unknown installed file for module '$(1)'))
|
|
endif
|
|
|
|
# Iterate over modules' built files and installed files;
|
|
# Calculate the dest files in the output zip file.
|
|
|
|
$(foreach m,$(my_modules_and_deps),\
|
|
$(eval _pickup_files := $(strip $(ALL_MODULES.$(m).PICKUP_FILES)\
|
|
$(ALL_MODULES.$(m)$(TARGET_2ND_ARCH_MODULE_SUFFIX).PICKUP_FILES)))\
|
|
$(eval _built_files := $(strip $(ALL_MODULES.$(m).BUILT_INSTALLED)\
|
|
$(ALL_MODULES.$(m)$(TARGET_2ND_ARCH_MODULE_SUFFIX).BUILT_INSTALLED)))\
|
|
$(if $(_pickup_files)$(_built_files),,\
|
|
$(call my_missing_files,$(m)))\
|
|
$(eval my_pickup_files += $(_pickup_files))\
|
|
$(foreach i, $(_built_files),\
|
|
$(eval bui_ins := $(subst :,$(space),$(i)))\
|
|
$(eval ins := $(word 2,$(bui_ins)))\
|
|
$(if $(filter $(TARGET_OUT_ROOT)/%,$(ins)),\
|
|
$(eval bui := $(word 1,$(bui_ins)))\
|
|
$(eval my_built_modules += $(bui))\
|
|
$(eval my_copy_dest := $(patsubst data/%,DATA/%,\
|
|
$(patsubst system/%,DATA/%,\
|
|
$(patsubst $(PRODUCT_OUT)/%,%,$(ins)))))\
|
|
$(eval my_copy_pairs += $(bui):$(my_staging_dir)/$(my_copy_dest)))\
|
|
))
|
|
|
|
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 $@)
|
|
$(foreach p, $(PRIVATE_COPY_PAIRS),\
|
|
$(eval pair := $(subst :,$(space),$(p)))\
|
|
mkdir -p $(dir $(word 2,$(pair))) && \
|
|
cp -Rf $(word 1,$(pair)) $(word 2,$(pair)) && ) true
|
|
$(hide) $(foreach f, $(PRIVATE_PICKUP_FILES),\
|
|
cp -RfL $(f) $(dir $@) && ) true
|
|
$(hide) cd $(dir $@) && zip -rqX $(notdir $@) *
|