Re: Build failures with high parallel make(1) jobs with GCC
On Tue, 2014-04-22 at 00:13 -0400, Glen Barber wrote: On Mon, Apr 21, 2014 at 10:05:57PM -0600, Ian Lepore wrote: 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. This patch applies fine. It seems to already have an effect, but I won't go so far to say it works until I see the 'World build completed: ' message. I'll follow up tomorrow once build is done. Thanks! Glen I think the change to lib/Makefile was not sufficient. After looking at the notes on dependenices at the top of the makefile, I think the attached has some chance of helping. The bsd.subdir.mk changes are now commited as r264822. -- Ian Index: lib/Makefile === --- lib/Makefile (revision 264768) +++ lib/Makefile (working copy) @@ -31,9 +31,12 @@ # Except it appears bind needs to be compiled last SUBDIR_ORDERED= ${_csu} \ + .WAIT \ libc \ libc_nonshared \ + .WAIT \ libbsm \ + .WAIT \ libauditd \ libutil \ libpjdlog \ @@ -54,6 +57,7 @@ SUBDIR_ORDERED= ${_csu} \ libsbuf \ libtacplus \ ${_libypclnt} \ + .WAIT \ ${_libcxxrt} \ ${_libcplusplus} @@ -62,6 +66,7 @@ SUBDIR_ORDERED+= libcom_err .endif SUBDIR= ${SUBDIR_ORDERED} \ + .WAIT \ libalias \ libarchive \ ${_libatm} \ ___ freebsd-current@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-current To unsubscribe, send any mail to freebsd-current-unsubscr...@freebsd.org
Re: Build failures with high parallel make(1) jobs with GCC
On Wed, Apr 23, 2014 at 07:04:46AM -0600, Ian Lepore wrote: I think the change to lib/Makefile was not sufficient. After looking at the notes on dependenices at the top of the makefile, I think the attached has some chance of helping. The bsd.subdir.mk changes are now commited as r264822. Thanks, I'll let you know in a few hours when the builds that are in progress now are finished. Glen pgpinVhb98T9b.pgp Description: PGP signature
Re: Build failures with high parallel make(1) jobs with GCC
On Mon, 2014-04-21 at 22:54 -0400, Glen Barber wrote: I have been pounding my head against the desk for longer than I care to admit with this failure. I see this with powerpc, powerpc64, and now ia64. I initially thought it was specific to powerpc{,64}, but now realize ia64 is also affected. This build was running with -j48 on a 48-core machine, when the following caused build failure: === /usr/obj/ia64.ia64/usr/src/tmp/usr/bin/ld: cannot find -lm --- libstdc++.so.6 --- *** [libstdc++.so.6] Error code 1 make[4]: stopped in /usr/src/gnu/lib/libstdc++ A failure has been detected in another branch of the parallel make === It is unclear to me when exactly this started happening, but it seems at least two weeks is a reasonable estimate. I realize this is not an entirely large chunk of useful information regarding the build failure, but I have determined it is entirely reproducible. I have determined that the failure case seems to disappear with make(1) jobs = 10, at least for powerpc. 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. Glen 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. -- Ian diff -r 67802e319fc6 share/mk/bsd.subdir.mk --- a/share/mk/bsd.subdir.mk Sun Apr 20 21:01:07 2014 -0600 +++ b/share/mk/bsd.subdir.mk Mon Apr 21 06:59:37 2014 -0600 @@ -4,10 +4,10 @@ # The include file bsd.subdir.mk contains the default targets # for building subdirectories. # -# For all of the directories listed in the variable SUBDIRS, the +# For all of the directories listed in the variable SUBDIR, the # specified directory will be visited and the target made. There is # also a default target which allows the command make subdir where -# subdir is any directory listed in the variable SUBDIRS. +# subdir is any directory listed in the variable SUBDIR. # # # +++ variables +++ @@ -42,7 +42,7 @@ distribute: _SUBDIR: .USE .if defined(SUBDIR) !empty(SUBDIR) !defined(NO_SUBDIR) - @${_+_}for entry in ${SUBDIR}; do \ + @${_+_}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}; \ @@ -57,7 +57,7 @@ distribute: done .endif -${SUBDIR}: .PHONY +${SUBDIR:N.WAIT}: .PHONY ${_+_}@if test -d ${.TARGET}.${MACHINE_ARCH}; then \ cd ${.CURDIR}/${.TARGET}.${MACHINE_ARCH}; \ else \ @@ -65,13 +65,18 @@ distribute: fi; \ ${MAKE} all +__wait=.WAIT .for __target in all all-man checkdpadd clean cleandepend cleandir \ 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 \ @@ -85,7 +90,9 @@ distribute: fi; \ ${MAKE} ${__target:realinstall=install} \ DIRPRFX=${DIRPRFX}$$edir/ +.endif .endfor +${__target}: ${__subdir_targets} .else ${__target}: _SUBDIR .endif ___ freebsd-current@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-current To unsubscribe, send any mail to freebsd-current-unsubscr...@freebsd.org
Re: Build failures with high parallel make(1) jobs with GCC
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. Thanks. Glen pgp87jr3EfwFQ.pgp Description: PGP signature
Re: Build failures with high parallel make(1) jobs with GCC
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 pgp_zIs2itvGG.pgp Description: PGP signature
Re: Build failures with high parallel make(1) jobs with GCC
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 Doh! I completely forgot that's against 8.2 that we use at work. I'll re-spin it for -current. -- Ina ___ freebsd-current@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-current To unsubscribe, send any mail to freebsd-current-unsubscr...@freebsd.org
Re: Build failures with high parallel make(1) jobs with GCC
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 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} \ ___ freebsd-current@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-current To unsubscribe, send any mail to freebsd-current-unsubscr...@freebsd.org
Re: Build failures with high parallel make(1) jobs with GCC
On Mon, Apr 21, 2014 at 10:05:57PM -0600, Ian Lepore wrote: 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. This patch applies fine. It seems to already have an effect, but I won't go so far to say it works until I see the 'World build completed: ' message. I'll follow up tomorrow once build is done. Thanks! Glen pgpLJk4hZ47Ik.pgp Description: PGP signature