svn commit: r335643 - stable/11/share/mk

Bryan Drewery bdrewery at FreeBSD.org
Mon Jun 25 18:53:07 UTC 2018


Author: bdrewery
Date: Mon Jun 25 18:53:06 2018
New Revision: 335643
URL: https://svnweb.freebsd.org/changeset/base/335643

Log:
  MFC r321427,r321445:
  
    r321427:
      PROGS: Fix ESTALE errors on NFS while cleaning in directories with PROGS.
    r321445:
      cleandir: Fix ESTALE errors from parallel removals.

Modified:
  stable/11/share/mk/bsd.obj.mk
  stable/11/share/mk/bsd.progs.mk
Directory Properties:
  stable/11/   (props changed)

Modified: stable/11/share/mk/bsd.obj.mk
==============================================================================
--- stable/11/share/mk/bsd.obj.mk	Mon Jun 25 17:17:47 2018	(r335642)
+++ stable/11/share/mk/bsd.obj.mk	Mon Jun 25 18:53:06 2018	(r335643)
@@ -157,6 +157,7 @@ whereobj:
 	@echo ${.OBJDIR}
 .endif
 
+# Same check in bsd.progs.mk
 .if ${CANONICALOBJDIR} != ${.CURDIR} && exists(${CANONICALOBJDIR}/)
 cleanobj:
 	-rm -rf ${CANONICALOBJDIR}
@@ -182,9 +183,9 @@ clean:
 .endif
 .ORDER: clean all
 
-cleandir: cleanobj
-
 .include <bsd.subdir.mk>
+
+cleandir: .WAIT cleanobj
 
 .if make(destroy*) && defined(OBJROOT)
 # this (rm -rf objdir) is much faster and more reliable than cleaning.

Modified: stable/11/share/mk/bsd.progs.mk
==============================================================================
--- stable/11/share/mk/bsd.progs.mk	Mon Jun 25 17:17:47 2018	(r335642)
+++ stable/11/share/mk/bsd.progs.mk	Mon Jun 25 18:53:06 2018	(r335643)
@@ -116,7 +116,16 @@ ${_PROGS_COMMON_OBJS}: .NOMETA
 
 .if !empty(PROGS) && !defined(_RECURSING_PROGS) && !defined(PROG)
 # tell progs.mk we might want to install things
-PROGS_TARGETS+= checkdpadd clean cleandepend cleandir depend install
+PROGS_TARGETS+= checkdpadd clean depend install
+# Only handle removing depend files from the main process.
+_PROG_MK.cleandir=	CLEANDEPENDFILES= CLEANDEPENDDIRS=
+_PROG_MK.cleanobj=	CLEANDEPENDFILES= CLEANDEPENDDIRS=
+# Only recurse on these if there is no objdir, meaning a normal
+# 'clean' gets ran via the target defined in bsd.obj.mk.
+# Same check from cleanobj: in bsd.obj.mk
+.if ${CANONICALOBJDIR} == ${.CURDIR} || !exists(${CANONICALOBJDIR}/)
+PROGS_TARGETS+=	cleandir cleanobj
+.endif
 
 # Ensure common objects are built before recursing.
 .if !empty(_PROGS_COMMON_OBJS)
@@ -142,7 +151,7 @@ $p.$t: .PHONY .MAKE
 	(cd ${.CURDIR} && \
 	    DEPENDFILE=.depend.$p \
 	    NO_SUBDIR=1 ${MAKE} -f ${MAKEFILE} _RECURSING_PROGS=t \
-	    PROG=$p ${x.$p} ${@:E})
+	    ${_PROG_MK.${t}} PROG=$p ${x.$p} ${@:E})
 .endfor
 .endfor
 


More information about the svn-src-all mailing list