Even better solution: make the SAGE_PARALLEL_SPKG_BUILD="yes" behaviour
the default and *remove the environment variabele*. There is absolutely
no reason why anybody would need to set SAGE_PARALLEL_SPKG_BUILD="no".
Simply set MAKE="make -j1" and you get back the old behaviour.
On 2011-10-27 19:14, John H Palmieri wrote:
> The option to build spkg's in Sage in parallel has been available for
> quite a while now, but it has to be enabled by setting the shell
> variable SAGE_PARALLEL_SPKG_BUILD equal to "yes". Should we change the
> default, building in parallel unless this variable is explicitly set to
> "no" (or "n")? I propose that we do. Are there objections to this?
>
> Note any setting of this variable has no effect unless you tell 'make'
> to build in parallel by doing something like 'export MAKE="make -j4" '
> (or as Leif might suggest, something like 'MAKE="make -j4 -l2.5" &&
> export MAKE'). I am not suggesting changing this behavior: you would
> still have to set MAKE yourself.
Even better solution: make the SAGE_PARALLEL_SPKG_BUILD="yes" behaviour
the default and *remove the environment variable*. There is absolutely
no reason why anybody would need to set SAGE_PARALLEL_SPKG_BUILD="no".
Simply set MAKE="make -j1" and you get back the old behaviour.
As it turns out, trying the "wrong" behavior (make -j2 with parallel
spkgs) on one of my one processor machines does lead to unusual build
failures which seem to have to do with waiting for jobs. And then it
finishes the next spkg before actually stopping the Sage build.
Things like errors in zlib... "This may not be fatal", then "read jobs
pipe, Operation not supported, stop".
P.S.: Incidentally I also posted about parallel make on sage-support
today:
http://groups.google.com/group/sage-support/msg/a17f6e561583e1a5
http://groups.google.com/group/sage-support/msg/f4d0c2e3815f1157
make
and all the sub-make
s will communicate to ensure that there are only ‘N’ jobs running at the same time between them all.I think this is only true if make calls make directly, not if make calls
a shell script (spkg/install) which calls make which calls a shell
script (spkg-install) which calls make.