Current-Users archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[ANALYSED] MKUPDATE=yes build.sh release failures with multiple jobs in parallel
On Mon, May 17, 2010 at 05:15:12PM +0200, Nicolas Joly wrote:
>
> Hi,
>
> Since quite some time now, i'm seeing MKUPDATE=yes build failures when
> multiples jops are run in parallel with -j option. On my -current
> amd64 machine, with 2 CPUs, i never see a successful release build for
> `./build -u -j 4' command.
>
> In the mean time, there seems to be no problem for MKUPDATE=no builds.
Looking closer into this show that this is a problem with MKDEBUG
parallel builds.
> Not sure where it comes from, but it looks like library installation
> triggers a rebuild of the same library in parallel.
The problem arise when building .debug objects (both for programs and
libraries).
${_LIB.debug}: ${_LIB.so}
${_MKTARGET_CREATE}
${OBJCOPY} --only-keep-debug ${_LIB.so} ${_LIB.debug}
${OBJCOPY} --strip-debug \
-R .gnu_debuglink --add-gnu-debuglink=${_LIB.debug}
${_LIB.so} \
|| rm -f ${_LIB.debug}
The commands sequence does not ensure that, at the end, the
XX.so.debug object will have a newer date than the XX.so file. Then,
the .debug installation rule, when verifying dependancies will
triggers a full rebuild (XX.so.debug + XX.so).
Not sure if there is a better way to handle it, but a simple extra
command `touch xx.debug' at the end make the problem goes away ...
--
Nicolas Joly
Biological Software and Databanks.
Institut Pasteur, Paris.
Index: share/mk/bsd.lib.mk
===================================================================
RCS file: /cvsroot/src/share/mk/bsd.lib.mk,v
retrieving revision 1.307
diff -u -p -r1.307 bsd.lib.mk
--- share/mk/bsd.lib.mk 27 Apr 2010 14:32:14 -0000 1.307
+++ share/mk/bsd.lib.mk 21 May 2010 17:44:59 -0000
@@ -599,6 +599,7 @@ ${_LIB.debug}: ${_LIB.so}
${OBJCOPY} --strip-debug \
-R .gnu_debuglink --add-gnu-debuglink=${_LIB.debug} ${_LIB.so} \
|| rm -f ${_LIB.debug}
+ touch ${_LIB.debug}
.endif
.if !empty(LOBJS) # {
Index: share/mk/bsd.prog.mk
===================================================================
RCS file: /cvsroot/src/share/mk/bsd.prog.mk,v
retrieving revision 1.248
diff -u -p -r1.248 bsd.prog.mk
--- share/mk/bsd.prog.mk 24 Apr 2010 07:57:04 -0000 1.248
+++ share/mk/bsd.prog.mk 21 May 2010 17:44:59 -0000
@@ -324,8 +324,10 @@ ${_P}.ro: ${OBJS.${_P}} ${DPADD}
${_PROGDEBUG.${_P}}: ${_P}
${_MKTARGET_CREATE}
${OBJCOPY} --only-keep-debug ${_P} ${_PROGDEBUG.${_P}}
- ${OBJCOPY} --strip-debug -R .gnu_debuglink
--add-gnu-debuglink=${_PROGDEBUG.${_P}} ${_P} \
+ ${OBJCOPY} --strip-debug \
+ -R .gnu_debuglink --add-gnu-debuglink=${_PROGDEBUG.${_P}} ${_P} \
|| rm -f ${_PROGDEBUG.${_P}}
+ touch ${_PROGDEBUG.${_P}}
.endif
.endif # defined(OBJS.${_P}) && !empty(OBJS.${_P}) # }
Home |
Main Index |
Thread Index |
Old Index