From 2cfbdf460d90b781bb9ceff84bc8e9567c22836e Mon Sep 17 00:00:00 2001 From: Dan Willemsen Date: Fri, 16 Sep 2016 10:03:22 -0700 Subject: [PATCH] Only update previous product config when changed I'm working on removing the --ignore_dirty=$(OUT_DIR)/% argument from Kati. If we're always writing to a file that we're also reading, then with that flag removed, we'll always reparse all the makefiles. So instead, use the method from the generated java file cleanup where we read from a "previous" file, write to a "current" file, then use a cmp || mv to overwrite the "previous" file if necessary. When the flag is removed, this will cause Kati to need to run twice any time this changes, but it's better than forever. Bug: 30947985 Test: Switch between aosp_arm-eng and full-eng Change-Id: Id2d1445809b60ce26700bb2aca765df3b5c2b360 --- core/cleanbuild.mk | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/core/cleanbuild.mk b/core/cleanbuild.mk index e3e039e565..6a295852e4 100644 --- a/core/cleanbuild.mk +++ b/core/cleanbuild.mk @@ -151,6 +151,7 @@ endif # if not ONE_SHOT_MAKEFILE dont_bother # necessary to keep things consistent. previous_build_config_file := $(PRODUCT_OUT)/previous_build_config.mk +current_build_config_file := $(PRODUCT_OUT)/current_build_config.mk current_build_config := \ $(TARGET_PRODUCT)-$(TARGET_BUILD_VARIANT) @@ -176,15 +177,17 @@ endif # else, this is the first build, so no need to clean. # Write the new state to the file. # -ifneq ($(PREVIOUS_BUILD_CONFIG)-$(PREVIOUS_SANITIZE_TARGET),$(current_build_config)-$(current_sanitize_target)) $(shell \ - mkdir -p $(dir $(previous_build_config_file)) && \ + mkdir -p $(dir $(current_build_config_file)) && \ echo "PREVIOUS_BUILD_CONFIG := $(current_build_config)" > \ - $(previous_build_config_file) \ + $(current_build_config_file) \ ) -endif +$(shell cmp $(current_build_config_file) $(previous_build_config_file) > /dev/null 2>&1 || \ + mv -f $(current_build_config_file) $(previous_build_config_file)) + PREVIOUS_BUILD_CONFIG := previous_build_config_file := +current_build_config_file := current_build_config := #