Hi Tim,
On 2013-05-17 4:18 PM, "Tim Northover" <t.p.northover at
gmail.com> wrote:
>Hi Paul,
>
>> I'm getting a "random" build failure related to AArch64
when building
>>with cmake.
>> The build is running with -j32 so it seems that there is some
>>dependency issue
>> that causes the build to fail when things build in a certain order.
>
>> 3008 make[2]: *** No rule to make target
>>`lib/Target/AArch64/AArch64GenDAGISel.inc', needed by
>
>Hmm. That file's generated by TableGen (via some kind of custom make
>magic) and included by the "regular" sources, so it's entirely
>possible there's a race hiding. I always thought all TableGen commands
>were run before the main sources got compiled, but at 32 threads
>perhaps that doesn't matter so much.
>
>Has this just started since AArch64 was added, or have you only
>recently started building at -j32? As far as I can see AArch64 is
>unexceptional in its dependencies, except for being lexicographically
>the first target. I'd be interested in your results if AArch64 was
>disabled.
I can't say for sure if this is a new problem but we've been building on
this machine for a few weeks now.
I commented out AArch64 from LLVM_ALL_TARGETS and rebuilt but I can't
reproduce the error in this case--it appears to be AArch64 specific.
One thing I forgot to mention is that our build machines use ccache. When
I don't use ccache I can't reproduce the error either. However, I
don't
think ccache is the problem it just makes the race easier to reproduce.
>
>There's clearly some issue though. I've only got 4 cores (+ 4 faked)
>here so I'm not optimistic about reproducing any races you're
seeing,
>though I'll keep trying periodic builds. How many cores do you have
>and how frequently does this seem to occur? Your host compiler and
>configure command-line could be useful for controlling the environment
>too.
The machine has 16 physical cores each hyper-threaded. I'm just using gcc
4.7.2 from Ubuntu 12.10.
I can reproduce this with the following:
$cmake -DCMAKE_CXX_COMPILER="ccache"
-DCMAKE_CXX_COMPILER_ARG1="c++"
../llvm/
$make -j32
$make clean
$make -j32
The second make will fail with the error I pasted before.
paul
>
>Tim.