Author: bdrewery
Date: Fri Mar 11 23:45:23 2016
New Revision: 296699
URL: https://svnweb.freebsd.org/changeset/base/296699

Log:
  DIRDEPS_BUILD: Add a sure way to prohibit building 'all' during dirdeps phase.
  
  This obsoletes the _SKIP_BUILD check but keeps it for now until it
  proves to be enough.
  
  In the dirdeps build the first 'make all' or 'make' ran would invoke
  'make dirdeps' which builds dependencies and then builds the current
  directory in a sub-make (when BUILD_AT_LEVEL0 is no, which for us it
  is).  This behavior causes things attached to 'all:' to build in the
  dirdeps phase AND the sub-make phase which creates all kinds of problems
  for staging, meta file tracking, and races.
  
  Sponsored by: EMC / Isilon Storage Division

Modified:
  head/share/mk/local.meta.sys.mk

Modified: head/share/mk/local.meta.sys.mk
==============================================================================
--- head/share/mk/local.meta.sys.mk     Fri Mar 11 23:45:20 2016        
(r296698)
+++ head/share/mk/local.meta.sys.mk     Fri Mar 11 23:45:23 2016        
(r296699)
@@ -132,6 +132,16 @@ PYTHON ?= /usr/local/bin/python
 .export PYTHON
 # this works best if share/mk is ready for it.
 BUILD_AT_LEVEL0= no
+# _SKIP_BUILD is not 100% as it requires wrapping all 'all:' targets to avoid
+# building in MAKELEVEL0.  Just prohibit 'all' entirely in this case to avoid
+# problems.
+.if ${MK_DIRDEPS_BUILD} == "yes" && \
+    ${.MAKE.LEVEL} == 0 && ${BUILD_AT_LEVEL0:Uyes:tl} == "no"
+.MAIN: dirdeps
+.if make(all)
+.error DIRDEPS_BUILD: Please run '${MAKE}' instead of '${MAKE} all'.
+.endif
+.endif
 
 # we want to end up with a singe stage tree for all machines
 .if ${MK_STAGING} == "yes"
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to