compressed usage broke parallel builds
Bernhard Fischer
rep.nop at aon.at
Sun May 21 15:06:35 UTC 2006
On Sun, May 21, 2006 at 11:42:41AM +0200, Yann E. MORIN wrote:
>Denis, Bernhard,
>All,
>
>On Saturday 20 May 2006 213, Denis Vlasenko wrote:
>> Does your .depend contain something like this
>> ...
>> /usr/src2/bbox/busybox.org2.t/applets/applets.o: ...
>> /usr/src2/bbox/busybox.org2.t/include/usage_compressed.h
>> ...
>
>After the same error ( I had to use only -j2 to trigger the bug ), I had no
>file named .depend in $(top_builddir).
>
>If I don't use // build, then I have a .depend which contains the appropriate
>dependency rule:
>
>...
>/home/ymorin/dev/busybox/llist-doubly-linked/applets/applets.o: ... \
> /home/ymorin/dev/busybox/llist-doubly-linked/include/usage_compressed.h
>...
hmz. While i have to admit that vda isn't responsible that the parallel
make was broken, i note that these were bugs which didn't work (in the
version landley applied):
- building out of tree brokenness was twofold; scripts/usage was wrong
and also the invocation of $(top_srcdir)/scripts/usage_compressed
"$(top_srcdir)/scripts" was wrong.
Anyway.
I've installed a workaround for the breakage provoked by the addition of
usage_compressed.
The ChangeLog for r15154 reads:
- fix wrong path to scripts/usage; It is in the builddir and not in the
srcdir.
- flag .depend as .NOTPARALLEL to workaround bug in make-3.80 and
make-3.81
Some more details on the second workaround (i.e. kludge):
make-3.80 silently fails, while make-3.81 is at least self-conscious
enough to
admit:
include/usage_compressed.h: .config scripts/usage
# Implicit rule search has not been done.
# File does not exist.
# File has not been updated.
# Dependencies commands running (THIS IS A BUG).
# commands to execute (from `/home/cow/src/bb2/Makefile', line 430):
$(Q)$(SHELL) $(top_srcdir)/scripts/usage_compressed
"$(top_builddir)/scripts" > $@
I'm giving up on trying to run the rest of the prerequisites of .depend
in
parallel and just (try to) indicate that the prerequisites of .depend
are
not to be run in parallel.
While this makes `make distclean defconfig;make -j´ work for me, it is
not a
real -- longterm -- solution; FIXME
More information about the busybox
mailing list