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

Peter Simons simons at cryp.to
Sun Jun 20 22:02:16 CEST 2010


Hi guys,

I believe we have consensus that

 * it should be possible to enable parallel compilation for certain
   packages (like Linux kernel, gcc, or glibc);

 * we unanimously prefer an opt-in policy with regard to parallel
   building, meaning that no package should be built with parallel
   compilation enabled unless the build expression explicitly states
   that this is permissible;

 * no parallel compilation should not be performed at all unless the
   user enables it, i.e. the default choice for all builds performed by
   Nix is -j1, unless the user explicitly changes that.

Now, there is another matter that needs to be discussed before we can
make decisions about an actual implementation of that feature. Assuming
that we can build, say glibc, with parallel compilation enabled, do you
feel that the choice of the -j flag to GNU Make should influence the
store path of the resulting binary package?

In other words, should a glibc that's been built with -j1 have a store
path different from one that's been built with -j2?

And, to take things one step further, do you believe that a glibc that's
been built with -j2 should have a store path different from one that's
been built with -j8?

Last but not least, if we pass Make a -j flag, we also want to pass -l.
Now, is the choice of the -l flag supposed to be baked into the store
path? Is a glibc that's been built with "-j4 -l4" supposed to have a
store path that differs from one that's been built with "-j4 -l2"?

What is your preferred solution? And what are the pros and cons that you
see?

Take care,
Peter




More information about the nix-dev mailing list