From b56b25157cb1b06de8f27749398d1807bd81f0e5 Mon Sep 17 00:00:00 2001 From: Felix Date: Sun, 2 Jun 2019 21:00:59 +0200 Subject: [PATCH] core/main: Strip bitness before existence check Strip bitness information for PRODUCT_PACKAGES and PRODUCT_HOST_PACKAGES before checking against ALL_MODULES. Also correct spelling: nonexistant -> nonexistent Bug: If PRODUCT_ENFORCE_PACKAGES_EXIST was set, the build system would complain about nonexistent packages for e.g. HALs where the bitness was specified using a suffix, such as android.hardware.audio@4.0-impl:32 Test: Add android.hardware.audio@4.0-impl:32 to PRODUCT_PACKAGES, specify PRODUCT_ENFORCE_PACKAGES_EXIST, ensure no whilelist is set. "make systemimage vendorimage" -> No error. Signed-off-by: Felix Change-Id: Id59460a19320aa9437b8805411a0d97fa6432633 --- core/main.mk | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/core/main.mk b/core/main.mk index 1afa9504e..5cb1d34c7 100644 --- a/core/main.mk +++ b/core/main.mk @@ -1327,15 +1327,18 @@ ifdef FULL_BUILD ifeq (true,$(PRODUCT_ENFORCE_PACKAGES_EXIST)) _whitelist := $(PRODUCT_ENFORCE_PACKAGES_EXIST_WHITELIST) _modules := $(PRODUCT_PACKAGES) + # Strip :32 and :64 suffixes + _modules := $(patsubst %:32,%,$(_modules)) + _modules := $(patsubst %:64,%,$(_modules)) # Sanity check all modules in PRODUCT_PACKAGES exist. We check for the # existence if either or the _32 variant. - _nonexistant_modules := $(filter-out $(ALL_MODULES),$(_modules)) - _nonexistant_modules := $(foreach m,$(_nonexistant_modules),\ + _nonexistent_modules := $(filter-out $(ALL_MODULES),$(_modules)) + _nonexistent_modules := $(foreach m,$(_nonexistent_modules),\ $(if $(call get-32-bit-modules,$(m)),,$(m))) - $(call maybe-print-list-and-error,$(filter-out $(_whitelist),$(_nonexistant_modules)),\ - $(INTERNAL_PRODUCT) includes non-existant modules in PRODUCT_PACKAGES) - $(call maybe-print-list-and-error,$(filter-out $(_nonexistant_modules),$(_whitelist)),\ - $(INTERNAL_PRODUCT) includes redundant whitelist entries for nonexistant PRODUCT_PACKAGES) + $(call maybe-print-list-and-error,$(filter-out $(_whitelist),$(_nonexistent_modules)),\ + $(INTERNAL_PRODUCT) includes non-existent modules in PRODUCT_PACKAGES) + $(call maybe-print-list-and-error,$(filter-out $(_nonexistent_modules),$(_whitelist)),\ + $(INTERNAL_PRODUCT) includes redundant whitelist entries for nonexistent PRODUCT_PACKAGES) endif # Check to ensure that all modules in PRODUCT_HOST_PACKAGES exist @@ -1344,10 +1347,13 @@ ifdef FULL_BUILD # maybe it would make sense to have PRODUCT_HOST_PACKAGES_LINUX/_DARWIN? ifneq ($(HOST_OS),darwin) _modules := $(PRODUCT_HOST_PACKAGES) - _nonexistant_modules := $(foreach m,$(_modules),\ + # Strip :32 and :64 suffixes + _modules := $(patsubst %:32,%,$(_modules)) + _modules := $(patsubst %:64,%,$(_modules)) + _nonexistent_modules := $(foreach m,$(_modules),\ $(if $(ALL_MODULES.$(m).REQUIRED_FROM_HOST)$(filter $(HOST_OUT_ROOT)/%,$(ALL_MODULES.$(m).INSTALLED)),,$(m))) - $(call maybe-print-list-and-error,$(_nonexistant_modules),\ - $(INTERNAL_PRODUCT) includes non-existant modules in PRODUCT_HOST_PACKAGES) + $(call maybe-print-list-and-error,$(_nonexistent_modules),\ + $(INTERNAL_PRODUCT) includes non-existent modules in PRODUCT_HOST_PACKAGES) endif endif