aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJaewoong Jung <jungjw@google.com>2020-06-29 19:37:53 -0700
committerJaewoong Jung <jungjw@google.com>2020-06-29 19:47:21 -0700
commit29714ecda6f4a683f6ad7c2349a6e70bbf907864 (patch)
treec5a2d6784df0de899d88d50be004c6ea903b8bd5
parentd7dabee7fef3215c8f509d2b0e928fbbbf2fd387 (diff)
downloadbuild_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/Makefile20
-rw-r--r--core/clear_vars.mk1
-rw-r--r--core/soong_android_app_set.mk14
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)