[Nix-dev] Re: Another approach at parallelizing in-build jobs

Marc Weber marco-oweber at gmx.de
Sat Jun 19 20:45:18 CEST 2010


> [...]
> the purpose of make. The tool has been specifically designed to do that.

Let me rephrase your question: When is make known to produce different
results when run with -j x where x > 1

One case - which is worse because it only seem to happen when -j8 or
greater is used:
http://old.nabble.com/Re%3A--GHC---3763%3A-make--j8-fails-for-ghc-6.12.1-pre-td28874091.html

http://bugs.mysql.com/bug.php?id=16282

If you start some googling it should be easy to find more cases.

The interesting question is: How likely is it that a build fails
silently. Eg it suceeds but has bad files or missing files.

About missing files we can run a build multiple times and compare to get
some kind of confidence.
About wrong files this is not that easy. Maybe comparing file sizes is
enough? However the impurities can change file sizes as well.
Eg "compiled on Monday xxx using nix user xy" instead of "compiled on
Tuesday xxx using other nix user".

Maybe hex editor can tell us what happened.

Because most developers should be using make -j today I don't expect too
much trouble. And if you opted in or out a package the env passed to the
builder changes so the hash changes. Everything will be rebuild. So you
can fix problems if you have identified them easily.

About how often such builds fail silently ? I haven't seen such a case
yet. I've seen many cases where make -j x fails loudly.

This thread shows that gentoo seems to be using opt-out:
http://bugs.gentoo.org/show_bug.cgi?id=208577

Marc Weber



More information about the nix-dev mailing list