Split to multiple bash commands.

This can fix the error "/bin/bash: Argument list too long", if we get a
really long apk list.
Bug tracker Link: http://code.google.com/p/android/issues/detail?id=38937

(cherry picked from commit d9a88d585f)

Change-Id: I80cd07cf50cc2b04e4b6aa9d5ecb1faf80d4cb5c
This commit is contained in:
Ying Wang
2012-10-26 09:21:28 -07:00
parent 075f7751fa
commit 2ff73494bc

View File

@@ -240,6 +240,12 @@ package-stats: $(PACKAGE_STATS_FILE)
# ----------------------------------------------------------------- # -----------------------------------------------------------------
# Cert-to-package mapping. Used by the post-build signing tools. # Cert-to-package mapping. Used by the post-build signing tools.
# Use a macro to add newline to each echo command
define _apkcerts_echo_with_newline
$(hide) echo $(1)
endef
name := $(TARGET_PRODUCT) name := $(TARGET_PRODUCT)
ifeq ($(TARGET_BUILD_TYPE),debug) ifeq ($(TARGET_BUILD_TYPE),debug)
name := $(name)_debug name := $(name)_debug
@@ -254,13 +260,15 @@ $(APKCERTS_FILE):
@echo APK certs list: $@ @echo APK certs list: $@
@mkdir -p $(dir $@) @mkdir -p $(dir $@)
@rm -f $@ @rm -f $@
$(hide) $(foreach p,$(PACKAGES),\ $(foreach p,$(PACKAGES),\
$(if $(PACKAGES.$(p).EXTERNAL_KEY),\ $(if $(PACKAGES.$(p).EXTERNAL_KEY),\
echo 'name="$(p).apk" certificate="EXTERNAL" \ $(call _apkcerts_echo_with_newline,\
private_key=""' >> $@;,\ 'name="$(p).apk" certificate="EXTERNAL" \
echo 'name="$(p).apk" certificate="$(PACKAGES.$(p).CERTIFICATE)" \ private_key=""' >> $@),\
private_key="$(PACKAGES.$(p).PRIVATE_KEY)"' >> $@;)) $(call _apkcerts_echo_with_newline,\
# In case $(PACKAGES) is empty. 'name="$(p).apk" certificate="$(PACKAGES.$(p).CERTIFICATE)" \
private_key="$(PACKAGES.$(p).PRIVATE_KEY)"' >> $@)))
# In case value of PACKAGES is empty.
$(hide) touch $@ $(hide) touch $@
.PHONY: apkcerts-list .PHONY: apkcerts-list