From 7363cde33e4667a011fac2a5fdb6696e35486126 Mon Sep 17 00:00:00 2001 From: Colin Cross Date: Fri, 14 Sep 2018 21:51:11 -0700 Subject: [PATCH] Use soong_zip for platform.zip soong_zip produces more reproducible zip files that are not affected by umask values or timestamps. This partially reapplies I2eca2f7618e06c0b5893ff54c79261921fe051d6 with fixes for 64-bit only builds and directories that are changing during zipping. Bug: 69500920 Test: m checkbuild Test: m checkbuild platform Test: lunch hikey64_only && m platform Test: contents of zips is unchanged Change-Id: Iac5c43276f7ae700d4d13d0ef27003d09c1c87e0 --- core/Makefile | 42 ++++++++++++++++++++++++------------------ core/pdk_config.mk | 14 +++++++++----- 2 files changed, 33 insertions(+), 23 deletions(-) diff --git a/core/Makefile b/core/Makefile index 3794d2b446..a2d93392e9 100644 --- a/core/Makefile +++ b/core/Makefile @@ -2066,39 +2066,45 @@ INSTALLED_PLATFORM_ZIP := $(PRODUCT_OUT)/platform.zip $(INSTALLED_PLATFORM_ZIP): PRIVATE_DEX_FILES := $(pdk_classes_dex) $(INSTALLED_PLATFORM_ZIP): PRIVATE_ODEX_CONFIG := $(pdk_odex_config_mk) +$(INSTALLED_PLATFORM_ZIP) : $(SOONG_ZIP) +# dependencies for the other partitions are defined below after their file lists +# are known $(INSTALLED_PLATFORM_ZIP) : $(INTERNAL_SYSTEMIMAGE_FILES) $(pdk_classes_dex) $(pdk_odex_config_mk) $(call pretty,"Platform zip package: $(INSTALLED_PLATFORM_ZIP)") - $(hide) rm -f $@ - $(hide) cd $(dir $@) && zip -qryX $(notdir $@) \ - $(TARGET_COPY_OUT_SYSTEM) \ - $(patsubst $(PRODUCT_OUT)/%, %, $(TARGET_OUT_NOTICE_FILES)) \ - $(addprefix symbols/,$(PDK_SYMBOL_FILES_LIST)) + rm -f $@ $@.lst + echo "-C $(PRODUCT_OUT)" >> $@.lst + echo "-D $(TARGET_OUT)" >> $@.lst + echo "-D $(TARGET_OUT_NOTICE_FILES)" >> $@.lst + echo "$(addprefix -f $(TARGET_OUT_UNSTRIPPED)/,$(PDK_SYMBOL_FILES_LIST))" >> $@.lst ifdef BOARD_VENDORIMAGE_FILE_SYSTEM_TYPE - $(hide) cd $(dir $@) && zip -qryX $(notdir $@) \ - $(TARGET_COPY_OUT_VENDOR) + echo "-D $(TARGET_OUT_VENDOR)" >> $@.lst endif ifdef BOARD_PRODUCTIMAGE_FILE_SYSTEM_TYPE - $(hide) cd $(dir $@) && zip -qryX $(notdir $@) \ - $(TARGET_COPY_OUT_PRODUCT) + echo "-D $(TARGET_OUT_PRODUCT)" >> $@.lst endif ifdef BOARD_PRODUCT_SERVICESIMAGE_FILE_SYSTEM_TYPE - $(hide) cd $(dir $@) && zip -qryX $(notdir $@) \ - $(TARGET_COPY_OUT_PRODUCT_SERVICES) + echo "-D $(TARGET_OUT_PRODUCT_SERVICES)" >> $@.lst endif ifdef BOARD_ODMIMAGE_FILE_SYSTEM_TYPE - $(hide) cd $(dir $@) && zip -qryX $(notdir $@) \ - $(TARGET_COPY_OUT_ODM) + echo "-D $(TARGET_OUT_ODM)" >> $@.lst endif ifneq ($(PDK_PLATFORM_JAVA_ZIP_CONTENTS),) - $(hide) cd $(OUT_DIR) && zip -qryX $(patsubst $(OUT_DIR)/%,%,$@) $(PDK_PLATFORM_JAVA_ZIP_CONTENTS) + echo "-C $(OUT_DIR)" >> $@.lst + for f in $(filter-out $(PRIVATE_DEX_FILES),$(addprefix -f $(OUT_DIR)/,$(PDK_PLATFORM_JAVA_ZIP_CONTENTS))); do \ + if [ -e $$f ]; then \ + echo "-f $$f"; \ + fi \ + done >> $@.lst endif ifneq ($(PDK_PLATFORM_ZIP_PRODUCT_BINARIES),) - $(hide) zip -qryX $@ $(PDK_PLATFORM_ZIP_PRODUCT_BINARIES) + echo "-C . $(addprefix -f ,$(PDK_PLATFORM_ZIP_PRODUCT_BINARIES))" >> $@.lst endif @# Add dex-preopt files and config. - $(if $(PRIVATE_DEX_FILES),$(hide) cd $(OUT_DIR) && zip -qryX $(patsubst $(OUT_DIR)/%,%,$@ $(PRIVATE_DEX_FILES))) - $(hide) touch $(PRODUCT_OUT)/pdk.mk - $(hide) zip -qryXj $@ $(PRIVATE_ODEX_CONFIG) $(PRODUCT_OUT)/pdk.mk + $(if $(PRIVATE_DEX_FILES),\ + echo "-C $(OUT_DIR) $(addprefix -f ,$(PRIVATE_DEX_FILES))") >> $@.lst + touch $(PRODUCT_OUT)/pdk.mk + echo "-C $(PRODUCT_OUT) -f $(PRIVATE_ODEX_CONFIG) -f $(PRODUCT_OUT)/pdk.mk" >> $@.lst + $(SOONG_ZIP) --ignore_missing_files -o $@ @$@.lst .PHONY: platform platform: $(INSTALLED_PLATFORM_ZIP) diff --git a/core/pdk_config.mk b/core/pdk_config.mk index b3cbb9ce1a..b2c9e9e492 100644 --- a/core/pdk_config.mk +++ b/core/pdk_config.mk @@ -174,11 +174,15 @@ ifneq (,$(filter platform platform-java, $(MAKECMDGOALS))$(filter true,$(TARGET_ # files under $(PRODUCT_OUT)/symbols to help debugging. # Source not included to PDK due to dependency issue, so provide symbols instead. - # We may not be building all of them. - # The platform.zip just silently ignores the nonexistent ones. - PDK_SYMBOL_FILES_LIST := \ - system/bin/app_process32 \ - system/bin/app_process64 + PDK_SYMBOL_FILES_LIST := + ifeq ($(TARGET_IS_64_BIT),true) + PDK_SYMBOL_FILES_LIST += system/bin/app_process64 + ifdef TARGET_2ND_ARCH + PDK_SYMBOL_FILES_LIST += system/bin/app_process32 + endif + else + PDK_SYMBOL_FILES_LIST += system/bin/app_process32 + endif ifneq (,$(PDK_FUSION_PLATFORM_ZIP)$(PDK_FUSION_PLATFORM_DIR)) # symbols should be explicitly pulled for fusion build