kicad-developers team mailing list archive
-
kicad-developers team
-
Mailing list archive
-
Message #41267
Bug 1833851 - Massively Parallel Builds
Hi Devs-
I'm stuck at a decision on this bug and would like some opinions from
others.
The background is the GNU make is not intelligent about parallel builds
and doesn't merge generated targets. So we need to serialize the
dependencies but this breaks everytime we include the lexer header file
in a different object or use the generated DSO for more than one target.
Eventually, we have sufficient parallel processes that the header gets
generated twice. If this happens at the same time, the build breaks.
The two (ok, three) options I see are as follows:
1) Build the header file into a target directory instead of the source
directory. Then everyone gets to build their own with no conflict. We
end up building lots and lots of header/lexer files. Developers won't
see the files in the usual location.
2) We build the files like bitmap pngs. That is, they are re-built by a
different CMAKE flag and their header/cpp files are checked into the
repository. When we add tags to the parser, we need to explicitly
regenerate the lexer files and check them in.
3) External scripting. We could utilize an external python script to
force one build at a time using lockfiles. This would add python as a
build dependency. We could alternatively use flock in a shell script
but I'm not sure that exists on all platforms.
Does anyone have preference for which option we take?
-Seth
Follow ups