From 6e136922f3ec852c923070d60450191286a228d1 Mon Sep 17 00:00:00 2001 From: Colin Cross Date: Tue, 20 Feb 2018 14:31:33 -0800 Subject: [PATCH 1/4] Remove framework_res_package_export_deps framework_res_package_export is now always either the prebuilt android.jar from an SDK or a package-export.apk generated by Soong, so the dependency on R.stamp is never useful. Remove all assignments to framework_res_package_export_deps, and replace usages with frameworks_res_package_export. Test: m checkbuild Change-Id: If484e9eb08061cb0ed0697755f13db71d741aaab --- core/package_internal.mk | 9 +-------- core/prebuilt_internal.mk | 6 +----- core/static_java_library.mk | 8 ++------ 3 files changed, 4 insertions(+), 19 deletions(-) diff --git a/core/package_internal.mk b/core/package_internal.mk index cd3a7410ac..0938c991fe 100644 --- a/core/package_internal.mk +++ b/core/package_internal.mk @@ -465,7 +465,6 @@ $(foreach x,$(sharded_java_source_list_files),$(eval $(x): $(R_file_stamp))) endif # need_compile_res framework_res_package_export := -framework_res_package_export_deps := ifneq ($(LOCAL_NO_STANDARD_LIBRARIES),true) # Most packages should link against the resources defined by framework-res. @@ -477,15 +476,9 @@ else ifneq ($(filter-out current system_current test_current,$(LOCAL_SDK_RES_VER # for released sdk versions, the platform resources were built into android.jar. framework_res_package_export := \ $(HISTORICAL_SDK_VERSIONS_ROOT)/$(LOCAL_SDK_RES_VERSION)/android.jar -framework_res_package_export_deps := $(framework_res_package_export) else # LOCAL_SDK_RES_VERSION framework_res_package_export := \ $(call intermediates-dir-for,APPS,framework-res,,COMMON)/package-export.apk -# We can't depend directly on the export.apk file; it won't get its -# PRIVATE_ vars set up correctly if we do. Instead, depend on the -# corresponding R.stamp file, which lists the export.apk as a dependency. -framework_res_package_export_deps := \ - $(dir $(framework_res_package_export))src/R.stamp endif # LOCAL_SDK_RES_VERSION endif # LOCAL_NO_STANDARD_LIBRARIES @@ -495,7 +488,7 @@ all_library_res_package_exports := \ $(call intermediates-dir-for,APPS,$(lib),,COMMON)/package-export.apk) all_library_res_package_export_deps := \ - $(framework_res_package_export_deps) \ + $(framework_res_package_export) \ $(foreach lib,$(LOCAL_RES_LIBRARIES),\ $(call intermediates-dir-for,APPS,$(lib),,COMMON)/src/R.stamp) $(resource_export_package) $(R_file_stamp) $(LOCAL_BUILT_MODULE): $(all_library_res_package_export_deps) diff --git a/core/prebuilt_internal.mk b/core/prebuilt_internal.mk index d4f552231c..96e26137af 100644 --- a/core/prebuilt_internal.mk +++ b/core/prebuilt_internal.mk @@ -615,18 +615,14 @@ ifeq ($(LOCAL_SDK_RES_VERSION),) endif framework_res_package_export := -framework_res_package_export_deps := # Please refer to package.mk ifneq ($(LOCAL_NO_STANDARD_LIBRARIES),true) ifneq ($(filter-out current system_current test_current,$(LOCAL_SDK_RES_VERSION))$(if $(TARGET_BUILD_APPS),$(filter current system_current test_current,$(LOCAL_SDK_RES_VERSION))),) framework_res_package_export := \ $(HISTORICAL_SDK_VERSIONS_ROOT)/$(LOCAL_SDK_RES_VERSION)/android.jar -framework_res_package_export_deps := $(framework_res_package_export) else framework_res_package_export := \ $(call intermediates-dir-for,APPS,framework-res,,COMMON)/package-export.apk -framework_res_package_export_deps := \ - $(dir $(framework_res_package_export))src/R.stamp endif endif @@ -644,7 +640,7 @@ $(my_res_package): PRIVATE_DEFAULT_APP_TARGET_SDK := $(my_res_package): PRIVATE_PRODUCT_AAPT_CONFIG := $(my_res_package): PRIVATE_PRODUCT_AAPT_PREF_CONFIG := $(my_res_package): PRIVATE_TARGET_AAPT_CHARACTERISTICS := -$(my_res_package) : $(framework_res_package_export_deps) +$(my_res_package) : $(framework_res_package_export) full_android_manifest := my_res_resources := diff --git a/core/static_java_library.mk b/core/static_java_library.mk index 1dc0e71483..77bb498e9a 100644 --- a/core/static_java_library.mk +++ b/core/static_java_library.mk @@ -103,18 +103,14 @@ ifeq ($(LOCAL_SDK_RES_VERSION),) endif framework_res_package_export := -framework_res_package_export_deps := # Please refer to package.mk ifneq ($(LOCAL_NO_STANDARD_LIBRARIES),true) ifneq ($(filter-out current system_current test_current,$(LOCAL_SDK_RES_VERSION))$(if $(TARGET_BUILD_APPS),$(filter current system_current test_current,$(LOCAL_SDK_RES_VERSION))),) framework_res_package_export := \ $(HISTORICAL_SDK_VERSIONS_ROOT)/$(LOCAL_SDK_RES_VERSION)/android.jar -framework_res_package_export_deps := $(framework_res_package_export) else framework_res_package_export := \ $(call intermediates-dir-for,APPS,framework-res,,COMMON)/package-export.apk -framework_res_package_export_deps := \ - $(dir $(framework_res_package_export))src/R.stamp endif endif @@ -175,10 +171,10 @@ my_generated_res_dirs_deps := $(RenderScript_file_stamp) endif # renderscript_target_api < 21 endif # renderscript_target_api is set include $(BUILD_SYSTEM)/aapt2.mk -$(my_res_package) : $(framework_res_package_export_deps) +$(my_res_package) : $(framework_res_package_export) else $(R_file_stamp): PRIVATE_RESOURCE_LIST := $(all_resources) -$(R_file_stamp) : $(all_resources) $(full_android_manifest) $(AAPT) $(framework_res_package_export_deps) +$(R_file_stamp) : $(all_resources) $(full_android_manifest) $(AAPT) $(framework_res_package_export) @echo "target R.java/Manifest.java: $(PRIVATE_MODULE) ($@)" $(create-resource-java-files) $(hide) find $(PRIVATE_SOURCE_INTERMEDIATES_DIR) -name R.java | xargs cat > $@ From f6799e859a3634b358271d530d1699591b6aa6c2 Mon Sep 17 00:00:00 2001 From: Colin Cross Date: Tue, 20 Feb 2018 17:20:33 -0800 Subject: [PATCH 2/4] Silence more duplicate path warnings Silence warnings when merging header jars that were missed by Ifb67dbf7734b5f53941d110f578c4fe642e36005. Bug: 69316739 Test: m checkbuild Change-Id: I5cfea62e46d99f9b315a589d8915bf62307220aa --- core/definitions.mk | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/definitions.mk b/core/definitions.mk index f6f5840fb2..d3d9928af8 100644 --- a/core/definitions.mk +++ b/core/definitions.mk @@ -2326,9 +2326,9 @@ $(hide) if [ -s $(PRIVATE_JAVA_SOURCE_LIST) ] ; then \ $(addprefix --classpath ,$(strip \ $(call normalize-path-list,$(PRIVATE_ALL_JAVA_HEADER_LIBRARIES)))) \ || ( rm -rf $(dir $@)/classes-turbine ; exit 41 ) && \ - $(MERGE_ZIPS) -j -stripDir META-INF $@.tmp $@.premerged $(call reverse-list,$(PRIVATE_STATIC_JAVA_HEADER_LIBRARIES)) ; \ + $(MERGE_ZIPS) -j --ignore-duplicates -stripDir META-INF $@.tmp $@.premerged $(call reverse-list,$(PRIVATE_STATIC_JAVA_HEADER_LIBRARIES)) ; \ else \ - $(MERGE_ZIPS) -j -stripDir META-INF $@.tmp $(call reverse-list,$(PRIVATE_STATIC_JAVA_HEADER_LIBRARIES)) ; \ + $(MERGE_ZIPS) -j --ignore-duplicates -stripDir META-INF $@.tmp $(call reverse-list,$(PRIVATE_STATIC_JAVA_HEADER_LIBRARIES)) ; \ fi $(hide) $(ZIPTIME) $@.tmp $(hide) $(call commit-change-for-toc,$@) From 7874138a8a974e9d97af077d3310767774ca67a7 Mon Sep 17 00:00:00 2001 From: Colin Cross Date: Tue, 20 Feb 2018 17:21:36 -0800 Subject: [PATCH 3/4] Allow soong java libraries to include exported resources and proguard flags Test: m checkbuild Change-Id: Ia02f816084d0eb1c0e0f20e1ecd57aaf3778874c --- core/clear_vars.mk | 1 + core/soong_app_prebuilt.mk | 1 + core/soong_java_prebuilt.mk | 18 ++++++++++++++++++ 3 files changed, 20 insertions(+) diff --git a/core/clear_vars.mk b/core/clear_vars.mk index baa23447e6..3bec869ac6 100644 --- a/core/clear_vars.mk +++ b/core/clear_vars.mk @@ -235,6 +235,7 @@ LOCAL_SHARED_ANDROID_LIBRARIES:= LOCAL_SHARED_LIBRARIES:= LOCAL_SOONG_CLASSES_JAR := LOCAL_SOONG_DEX_JAR := +LOCAL_SOONG_EXPORT_PROGUARD_FLAGS := LOCAL_SOONG_HEADER_JAR := LOCAL_SOONG_JACOCO_REPORT_CLASSES_JAR := LOCAL_SOONG_PROGUARD_DICT := diff --git a/core/soong_app_prebuilt.mk b/core/soong_app_prebuilt.mk index 4c34215327..83982b720f 100644 --- a/core/soong_app_prebuilt.mk +++ b/core/soong_app_prebuilt.mk @@ -55,6 +55,7 @@ $(resource_export_package): $(LOCAL_SOONG_RESOURCE_EXPORT_PACKAGE) @echo "Copy: $$@" $(copy-file-to-target) touch $(PRIVATE_STAMP) +$(call add-dependency,$(LOCAL_BUILT_MODULE),$(resource_export_package)) endif # LOCAL_SOONG_RESOURCE_EXPORT_PACKAGE diff --git a/core/soong_java_prebuilt.mk b/core/soong_java_prebuilt.mk index 7d32e48572..309854c0f7 100644 --- a/core/soong_java_prebuilt.mk +++ b/core/soong_java_prebuilt.mk @@ -39,6 +39,24 @@ ifdef LOCAL_SOONG_JACOCO_REPORT_CLASSES_JAR $(intermediates.COMMON)/jacoco-report-classes.jar) endif +ifdef LOCAL_SOONG_EXPORT_PROGUARD_FLAGS + $(eval $(call copy-one-file,$(LOCAL_SOONG_EXPORT_PROGUARD_FLAGS),\ + $(intermediates.COMMON)/export_proguard_flags)) + $(call add-dependency,$(LOCAL_BUILT_MODULE),\ + $(intermediates.COMMON)/export_proguard_flags) +endif + +ifdef LOCAL_SOONG_RESOURCE_EXPORT_PACKAGE +my_res_package := $(intermediates.COMMON)/package-res.apk + +$(my_res_package): $(LOCAL_SOONG_RESOURCE_EXPORT_PACKAGE) + @echo "Copy: $$@" + $(copy-file-to-target) + +$(call add-dependency,$(LOCAL_BUILT_MODULE),$(my_res_package)) + +endif # LOCAL_SOONG_RESOURCE_EXPORT_PACKAGE + ifneq ($(TURBINE_ENABLED),false) ifdef LOCAL_SOONG_HEADER_JAR $(eval $(call copy-one-file,$(LOCAL_SOONG_HEADER_JAR),$(full_classes_header_jar))) From 8dad6c62d458ca51333622ffac6a703943699fc9 Mon Sep 17 00:00:00 2001 From: Colin Cross Date: Tue, 6 Mar 2018 17:18:54 -0800 Subject: [PATCH 4/4] Remove missed PRODUCT_AAPT_FLAGS PRODUCT_AAPT_FLAGS was removed by Iacc914114616b5bd19d9a1011802f4f9bca9bc19, remove one more that it missed. Test: m checkbuild Change-Id: I31ea4954f5af5af37f13210925ed5d622625d71b --- core/java_common.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/java_common.mk b/core/java_common.mk index 3a5c5c63c0..b94effaa97 100644 --- a/core/java_common.mk +++ b/core/java_common.mk @@ -428,7 +428,7 @@ aapt_flags := endif endif -$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_AAPT_FLAGS := $(LOCAL_AAPT_FLAGS) $(PRODUCT_AAPT_FLAGS) +$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_AAPT_FLAGS := $(LOCAL_AAPT_FLAGS) $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_TARGET_AAPT_CHARACTERISTICS := $(TARGET_AAPT_CHARACTERISTICS) $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_MANIFEST_PACKAGE_NAME := $(LOCAL_MANIFEST_PACKAGE_NAME) $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_MANIFEST_INSTRUMENTATION_FOR := $(LOCAL_MANIFEST_INSTRUMENTATION_FOR)