diff options
author | Jaewoong Jung <jungjw@google.com> | 2020-06-29 19:37:53 -0700 |
---|---|---|
committer | Jaewoong Jung <jungjw@google.com> | 2020-06-29 19:47:21 -0700 |
commit | 29714ecda6f4a683f6ad7c2349a6e70bbf907864 (patch) | |
tree | c5a2d6784df0de899d88d50be004c6ea903b8bd5 | |
parent | d7dabee7fef3215c8f509d2b0e928fbbbf2fd387 (diff) | |
download | build_make-29714ecda6f4a683f6ad7c2349a6e70bbf907864.tar.gz build_make-29714ecda6f4a683f6ad7c2349a6e70bbf907864.tar.bz2 build_make-29714ecda6f4a683f6ad7c2349a6e70bbf907864.zip |
Add LOCAL_APKCERTS_FILE support.
This is used when Soong and Make don't know the full output file list,
and so use a tool to generate a per-module apkcerts.txt file instead.
Fixes: 160119159
Test: m apkcerts-list
Change-Id: I48183bc8cbf9dcc521f791812734205ed3f28f4c
-rw-r--r-- | core/Makefile | 20 | ||||
-rw-r--r-- | core/clear_vars.mk | 1 | ||||
-rw-r--r-- | core/soong_android_app_set.mk | 14 |
3 files changed, 21 insertions, 14 deletions
diff --git a/core/Makefile b/core/Makefile index e0e6daa357..06cc876c73 100644 --- a/core/Makefile +++ b/core/Makefile @@ -912,6 +912,16 @@ $(hide) echo '' >> $6 endef +# ----------------------------------------------------------------- +# Merge an individual apkcerts output into the final apkcerts.txt output. +# Use a macro to make it compatible with _apkcerts_write_line +# $1 apkcerts file to be merged +# $2 output file +define _apkcerts_merge +$(hide) cat $1 >> $2 + +endef + name := $(TARGET_PRODUCT) ifeq ($(TARGET_BUILD_TYPE),debug) name := $(name)_debug @@ -920,6 +930,8 @@ name := $(name)-apkcerts-$(FILE_NAME_TAG) intermediates := \ $(call intermediates-dir-for,PACKAGING,apkcerts) APKCERTS_FILE := $(intermediates)/$(name).txt +all_apkcerts_files := $(sort $(foreach p,$(PACKAGES),$(PACKAGES.$(p).APKCERTS_FILE))) +$(APKCERTS_FILE): $(all_apkcerts_files) # We don't need to really build all the modules. # TODO: rebuild APKCERTS_FILE if any app change its cert. $(APKCERTS_FILE): @@ -927,9 +939,11 @@ $(APKCERTS_FILE): @mkdir -p $(dir $@) @rm -f $@ $(foreach p,$(sort $(PACKAGES)),\ - $(if $(PACKAGES.$(p).EXTERNAL_KEY),\ - $(call _apkcerts_write_line,$(PACKAGES.$(p).STEM),"EXTERNAL","",$(PACKAGES.$(p).COMPRESSED),$(PACKAGES.$(p).PARTITION),$@),\ - $(call _apkcerts_write_line,$(PACKAGES.$(p).STEM),$(PACKAGES.$(p).CERTIFICATE),$(PACKAGES.$(p).PRIVATE_KEY),$(PACKAGES.$(p).COMPRESSED),$(PACKAGES.$(p).PARTITION),$@))) + $(if $(PACKAGES.$(p).APKCERTS_FILE),\ + $(call _apkcerts_merge,$(PACKAGES.$(p).APKCERTS_FILE), $@),\ + $(if $(PACKAGES.$(p).EXTERNAL_KEY),\ + $(call _apkcerts_write_line,$(PACKAGES.$(p).STEM),"EXTERNAL","",$(PACKAGES.$(p).COMPRESSED),$(PACKAGES.$(p).PARTITION),$@),\ + $(call _apkcerts_write_line,$(PACKAGES.$(p).STEM),$(PACKAGES.$(p).CERTIFICATE),$(PACKAGES.$(p).PRIVATE_KEY),$(PACKAGES.$(p).COMPRESSED),$(PACKAGES.$(p).PARTITION),$@)))) # In case value of PACKAGES is empty. $(hide) touch $@ diff --git a/core/clear_vars.mk b/core/clear_vars.mk index c01912cd81..b9f439fb59 100644 --- a/core/clear_vars.mk +++ b/core/clear_vars.mk @@ -22,6 +22,7 @@ LOCAL_APIDIFF_NEWAPI:= LOCAL_APIDIFF_OLDAPI:= LOCAL_APK_LIBRARIES:= LOCAL_APK_SET_MASTER_FILE:= +LOCAL_APKCERTS_FILE:= LOCAL_ARM_MODE:= LOCAL_ASFLAGS:= LOCAL_ASSET_DIR:= diff --git a/core/soong_android_app_set.mk b/core/soong_android_app_set.mk index eb8e5e7550..c88489427a 100644 --- a/core/soong_android_app_set.mk +++ b/core/soong_android_app_set.mk @@ -31,17 +31,9 @@ LOCAL_POST_INSTALL_CMD := unzip -qo -j -d $(dir $(LOCAL_INSTALLED_MODULE)) \ $(LOCAL_INSTALLED_MODULE): PRIVATE_POST_INSTALL_CMD := $(LOCAL_POST_INSTALL_CMD) PACKAGES.$(LOCAL_MODULE).OVERRIDES := $(strip $(LOCAL_OVERRIDES_PACKAGES)) -# android_app_set modules are always presigned -PACKAGES.$(LOCAL_MODULE).CERTIFICATE := PRESIGNED PACKAGES := $(PACKAGES) $(LOCAL_MODULE) - -ifneq ($(LOCAL_MODULE_STEM),) - PACKAGES.$(LOCAL_MODULE).STEM := $(LOCAL_MODULE_STEM) -else - PACKAGES.$(LOCAL_MODULE).STEM := $(LOCAL_MODULE) -endif - -# Set a actual_partition_tag (calculated in base_rules.mk) for the package. -PACKAGES.$(LOCAL_MODULE).PARTITION := $(actual_partition_tag) +# We can't know exactly what apk files would be outputted yet. +# Let extract_apks generate apkcerts.txt and merge it later. +PACKAGES.$(LOCAL_MODULE).APKCERTS_FILE := $(LOCAL_APKCERTS_FILE) SOONG_ALREADY_CONV += $(LOCAL_MODULE) |