← Back to team overview

kicad-developers team mailing list archive

Wrong dependencies in build

 

Hi,

we have some intermittent build failures that I've tried to debug today. As
parallelism is involved, I now want to set everything on fire.

Symptom: if we have enough CPUs, the lexer generation is started multiple
times in parallel for the same outputs. The first platform where we saw
this was MSVC, but I can also get it on Linux, although the timing is a bit
tighter there. As a result, the generated header file is broken in various
ways -- on MSVC, every second token in the enumeration swaps place with its
comma, on Linux we get two copies of the file interleaved.

According to the fine folks on the #cmake IRC channel, what we're doing
since b7f890adb "Fix parallel build bugs." is illegal, because output files
from a custom command are consumed by two different projects -- i.e. rather
than the intention that the files are built in the custom target, now the
custom target causes another avenue where a parallel build needs to prepare
the files.

I have no immediate idea how to write this so it is safe for any number of
CPUs and portable everywhere, so if anyone does, it'd be nice if they'd fix
it, because I probably won't get around to it for a while.

   Simon


Follow ups