Skip to content

Commit 74299d8

Browse files
author
Kevin Pyle
committed
Stage generated files to a temporary name
Generate to a temporary name, so that a failure in the script does not leave behind an up-to-date incomplete file. If the script exits successfully, then rename the file to its proper name.
1 parent 86bb5c8 commit 74299d8

File tree

1 file changed

+8
-3
lines changed

1 file changed

+8
-3
lines changed

Makefile

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -193,11 +193,16 @@ autogenerated-EXTRA_CFLAGS.txt: autogenerated-config.h
193193
# autogenerated-casts.h is a byproduct of making autogenerated-casts.c
194194
autogenerated-casts.h: autogenerated-casts.c
195195

196+
# Generate to a temporary name, so that a failure in the script does not
197+
# leave behind an up-to-date incomplete file.
196198
$(PLUGIN_GENERATED_SOURCE_FILES): autogenerated-%.c: $(addprefix $(srcdir),generate-%-c.py $(GENERATOR_DEPS))
197-
$(PYTHON) $< > $@
199+
$(PYTHON) $< > "$@.part" || { rc=$$?; $(RM) "$@.part"; exit $$rc; }
200+
mv -f "$@.part" "$@"
198201

199-
autogenerated-casts.c: autogenerated-gimple-types.txt autogenerated-tree-types.txt autogenerated-rtl-types.txt $(srcdir)generate-casts-c.py
200-
$(PYTHON) $(srcdir)generate-casts-c.py autogenerated-casts.c autogenerated-casts.h
202+
autogenerated-casts.c: GENERATED_FILES:=autogenerated-casts.c autogenerated-casts.h
203+
autogenerated-casts.c: $(srcdir)generate-casts-c.py autogenerated-gimple-types.txt autogenerated-tree-types.txt autogenerated-rtl-types.txt
204+
$(PYTHON) $< $(addsuffix .part,$(GENERATED_FILES)) || { rc=$$?; $(RM) $(addsuffix .part,$(GENERATED_FILES)); exit $$rc; }
205+
: $(foreach f,$(GENERATED_FILES),&& mv -f "$f.part" "$f")
201206

202207
autogenerated-gimple.c: autogenerated-gimple-types.txt autogenerated-tree-types.txt autogenerated-rtl-types.txt $(srcdir)maketreetypes.py
203208
autogenerated-tree.c: autogenerated-tree-types.txt $(srcdir)maketreetypes.py

0 commit comments

Comments
 (0)