Mon 30 Nov 2009 06:39:48 PM UTC, original submission:
This only seems to happen with both parallel builds and with 'sparse' checking (C=1 or C=2). However, it's almost 100% reproducable. The actual build itself seems correct, it's just that stdout and stderr don't tell the whole story about what's being built.
I did make mrproper and a make defconfig to ensure that the system was in an identical test for two builds. (A ls -lR proves that both builds were in an identical clean state.)
Then I used the following command:
make ARCH=arm CROSS_COMPILE=arm-linux- -j2 C=1 V=2 >/tmp/C_out 2>/tmp/C_err
(The V=2 is unnecessary, it just adds more info to the output)
Again I grabbed an ls -lR, cleaned, and made again, capturing stdout and stderr to new files.
I sorted the _out files, and then ran diff:
<pre>
$ diff /tmp/[CD]s_out
872d871
< CC [M] net/mac80211/ibss.o - due to target missing
972d970
< CC net/ipv4/tcp_timer.o - due to target missing
1294d1291
< CHECK drivers/mmc/card/queue.c - due to target missing
1902c1899
< CHECK net/ipv4/tcp_timer.c - due to target missing
---
> CHECK net/ipv4/tcp_timer.c - due to target missing CC net/ipv4/tcp_timer.o - due to target missing
</pre>
As you can see - some output (tcp_timer) is mangled, and some files seem to not be CC'd (ibss.o) or CHECK'ed (queue.c).
However, looking at the final ls -lR, all of the required targets have been build correctly. So for example, ibss.o exists both times.
For my sins, I'm using Ubuntu 9.04 on an Intel Core2Duo system.
|