Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 21 Apr 2014 22:05:57 -0600
From:      Ian Lepore <ian@FreeBSD.org>
To:        Glen Barber <gjb@FreeBSD.org>
Cc:        freebsd-current@FreeBSD.org, freebsd-ppc@FreeBSD.org, freebsd-ia64@FreeBSD.org
Subject:   Re: Build failures with high parallel make(1) jobs with GCC
Message-ID:  <1398139557.1124.396.camel@revolution.hippie.lan>
In-Reply-To: <20140422032638.GN49791@glenbarber.us>
References:  <20140422025435.GL49791@glenbarber.us> <1398136182.1124.394.camel@revolution.hippie.lan> <20140422032124.GM49791@glenbarber.us> <20140422032638.GN49791@glenbarber.us>

next in thread | previous in thread | raw e-mail | index | archive | help

--=-4vT4niMGycC0cJObroG9
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit

On Mon, 2014-04-21 at 23:26 -0400, Glen Barber wrote:
> On Mon, Apr 21, 2014 at 11:21:24PM -0400, Glen Barber wrote:
> > On Mon, Apr 21, 2014 at 09:09:42PM -0600, Ian Lepore wrote:
> > > > The last successful build for powerpc on head/ was April 8.  But I am
> > > > having trouble tracking down what commits may (or may not) have
> > > > contributed to recent high-parallel build failures.
> > > > 
> > > 
> > > A couple weeks corresponds somewhat with the parallel subdir build
> > > changes (it's about 3 weeks now).  Try this patch I cooked up today for
> > > $work, and in src/lib/Makefile add .WAIT (as if it were a directory
> > > name) between ${SUBDIR_ORDERED} and the rest of the directories.
> > > 
> > 
> > The patch fails to apply cleanly, but as far as I can tell, it is due to
> > whitespace.
> > 
> > I'll hand-patch it, and report back.
> > 
> 
> Nope, I'm getting conflicts on revisions as far back as r251749.
> 
> Glen
> 

This one should work better.  The lib/Makefile is included this time.

-- Ian


--=-4vT4niMGycC0cJObroG9
Content-Disposition: inline; filename="parallel_make_wait.diff"
Content-Type: text/x-patch; name="parallel_make_wait.diff"; charset="us-ascii"
Content-Transfer-Encoding: 7bit

Index: share/mk/bsd.subdir.mk
===================================================================
--- share/mk/bsd.subdir.mk	(revision 264744)
+++ share/mk/bsd.subdir.mk	(working copy)
@@ -45,7 +45,7 @@ distribute: .MAKE
 
 _SUBDIR: .USE .MAKE
 .if defined(SUBDIR) && !empty(SUBDIR) && !defined(NO_SUBDIR)
-	@${_+_}set -e; for entry in ${SUBDIR}; do \
+	@${_+_}set -e; for entry in ${SUBDIR:N.WAIT}; do \
 		if test -d ${.CURDIR}/$${entry}.${MACHINE_ARCH}; then \
 			${ECHODIR} "===> ${DIRPRFX}$${entry}.${MACHINE_ARCH} (${.TARGET:realinstall=install})"; \
 			edir=$${entry}.${MACHINE_ARCH}; \
@@ -60,7 +60,7 @@ _SUBDIR: .USE .MAKE
 	done
 .endif
 
-${SUBDIR}: .PHONY .MAKE
+${SUBDIR:N.WAIT}: .PHONY .MAKE
 	${_+_}@if test -d ${.TARGET}.${MACHINE_ARCH}; then \
 		cd ${.CURDIR}/${.TARGET}.${MACHINE_ARCH}; \
 	else \
@@ -68,12 +68,18 @@ _SUBDIR: .USE .MAKE
 	fi; \
 	${MAKE} all
 
+# Work around parsing of .if nested in .for by putting .WAIT string into a var.
+__wait= .WAIT
 .for __target in all all-man checkdpadd clean cleandepend cleandir \
     cleanilinks depend distribute lint maninstall manlint obj objlink \
     realinstall regress tags ${SUBDIR_TARGETS}
 .ifdef SUBDIR_PARALLEL
+__subdir_targets=
 .for __dir in ${SUBDIR}
-${__target}: ${__target}_subdir_${__dir}
+.if ${__wait} == ${__dir}
+__subdir_targets+= .WAIT
+.else
+__subdir_targets+= ${__target}_subdir_${__dir}
 ${__target}_subdir_${__dir}: .MAKE
 	@${_+_}set -e; \
 		if test -d ${.CURDIR}/${__dir}.${MACHINE_ARCH}; then \
@@ -87,7 +93,9 @@ ${__target}_subdir_${__dir}: .MAKE
 		fi; \
 		${MAKE} ${__target:realinstall=install} \
 		    DIRPRFX=${DIRPRFX}$$edir/
+.endif
 .endfor
+${__target}: ${__subdir_targets}
 .else
 ${__target}: _SUBDIR
 .endif
Index: lib/Makefile
===================================================================
--- lib/Makefile	(revision 264744)
+++ lib/Makefile	(working copy)
@@ -62,6 +62,7 @@ SUBDIR_ORDERED+=	libcom_err
 .endif
 
 SUBDIR=	${SUBDIR_ORDERED} \
+	.WAIT \
 	libalias \
 	libarchive \
 	${_libatm} \

--=-4vT4niMGycC0cJObroG9--




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?1398139557.1124.396.camel>