Please review this small change which will improve incremental build reliability. By defining the pseudo target .DELETE_ON_ERROR, make will automatically remove the target of a rule if the recipe fails or is interrupted (typically ctrl-c). By doing this, the target is automatically rebuilt on the next make invocation instead of left in a possibly broken state.

I was under the impression that this functionality was already active in make, but it appears we have to actively enable it. I chose to put it at the top of make/common/MakeBase.gmk as we tend to include that file everywhere. The alternative would be spec.gmk.in, but I think we should try to keep that file for communication from configure to make.

Bug: https://bugs.openjdk.java.net/browse/JDK-8077814
Patch:
diff -r d0321d15e0a0 make/common/MakeBase.gmk
--- a/make/common/MakeBase.gmk
+++ b/make/common/MakeBase.gmk
@@ -36,6 +36,10 @@
   $(error MakeBase.gmk needs SPEC set to a proper spec.gmk)
 endif

+# By defining this pseudo target, make will automatically remove targets
+# if their recipe fails so that a rebuild is automatically triggered on the
+# next make invocation.
+.DELETE_ON_ERROR:

 ##############################
 # Functions

/Erik

Reply via email to