From ab703e0406303d488543b9e32d15494defd5d095 Mon Sep 17 00:00:00 2001 From: Tim Hockin Date: Tue, 19 Jul 2016 16:42:28 -0700 Subject: [PATCH] Make 'make clean all' work In this case, the 'clean' step would nuke the metadata files, but they have already been read, so in-memory state is fine. This triggered a couple of pathological conditions that would not normally be hit. This commit fills in those nodes in the DAG, even though they are not directly needed in most builds. Also fix some whitespace for readability. --- Makefile.generated_files | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/Makefile.generated_files b/Makefile.generated_files index 1e4a83c9137bc..c1c6a4472cb02 100644 --- a/Makefile.generated_files +++ b/Makefile.generated_files @@ -139,12 +139,18 @@ $(foreach dir, $(ALL_GO_DIRS), $(eval \ # We regenerate the output file in order to satisfy make's "newer than" rules, # but we only need to rebuild targets if the contents actually changed. That # is what the .stamp file represents. -$(foreach dir, $(ALL_GO_DIRS), $(META_DIR)/$(dir)/$(GOFILES_META)): +$(foreach dir, $(ALL_GO_DIRS), \ + $(META_DIR)/$(dir)/$(GOFILES_META)): FILES=$$(ls $$@.tmp; \ cmp -s $@.tmp $@ || touch $@.stamp; \ mv $@.tmp $@ +# This is required to fill in the DAG, since some cases (e.g. 'make clean all') +# will reference the .stamp file when it doesn't exist. We don't need to +# rebuild it in that case, just keep make happy. +$(foreach dir, $(ALL_GO_DIRS), \ + $(META_DIR)/$(dir)/$(GOFILES_META).stamp): # Include any deps files as additional Makefile rules. This triggers make to # consider the deps files for rebuild, which makes the whole @@ -219,7 +225,7 @@ gen_deepcopy: $(DEEPCOPY_FILES) # has changed. This allows us to detect deleted input files. $(foreach dir, $(DEEPCOPY_DIRS), $(eval \ $(dir)/$(DEEPCOPY_FILENAME): $(META_DIR)/$(dir)/$(GOFILES_META).stamp \ - $(gofiles__$(dir)) \ + $(gofiles__$(dir)) \ )) # Unilaterally remove any leftovers from previous runs. @@ -228,6 +234,7 @@ $(shell rm -f $(META_DIR)/$(DEEPCOPY_GEN)*.todo) # How to regenerate deep-copy code. This is a little slow to run, so we batch # it up and trigger the batch from the 'generated_files' target. $(DEEPCOPY_FILES): $(DEEPCOPY_GEN) + mkdir -p $$(dirname $(META_DIR)/$(DEEPCOPY_GEN)) echo $(PRJ_SRC_PATH)/$(@D) >> $(META_DIR)/$(DEEPCOPY_GEN).todo # This calculates the dependencies for the generator tool, so we only rebuild @@ -341,8 +348,9 @@ $(foreach dir, $(CONVERSION_DIRS), $(eval \ # We regenerate the output file in order to satisfy make's "newer than" rules, # but we only need to rebuild targets if the contents actually changed. That # is what the .stamp file represents. -$(foreach dir, $(CONVERSION_DIRS), $(META_DIR)/$(dir)/$(CONVERSIONS_META)): - TAGS=$$(grep --color=never -h '^// *+k8s:conversion-gen=' $> $(META_DIR)/$(CONVERSION_GEN).todo # This calculates the dependencies for the generator tool, so we only rebuild