compiling ports with more than one job
fbsd06 at mlists.homeunix.com
Wed Feb 28 18:37:37 UTC 2007
On Wed, 28 Feb 2007 11:32:57 +0100 (CET)
Christian Baer <christian.baer at uni-dortmund.de> wrote:
> Good morning, folks!
> I am currently setting up a Sun U60 with FreeBSD. A few amount of apps
> will be installed on it, when I'm through with it. And that is where
> it gets a little frustrating.
> The packages for SPARC64 aren't really up to date. That is why using
> them isn't really an option. Besides, some programs actually get a
> real boost if they are compiled with an -mcpu flag, which probably
> isn't set when the packages are compiled. So, I'm down to installing
> them over the ports collection.
> That isn't bad in itself. But even a U60 isn't really a fast machine
> and if you compile bigger collections (like x.org, kde, firefox etc.)
> you can watch yourself aging while the machine is at it. It would be
> a great help if I could really use both CPUs in this machine. But
> somehow that doesn't work. I have observed two things so far (in
> Some ports (like mc) have a menu for choosing the compile options. If
> I try to make one of those with more than one job (make -j 2) I can't
> hit any of the boxes on the list of options or even hit the "ok"
> button. It would seem that make went on to the next job without
> actually waiting for the input.
> The same background but with a slightly different effect is also true
> for ports without a menu. I couldn't make xorg with more than one job
> because make just ran on without waiting for the required things to be
> there and stopped with a "no such file or directory". That is quite a
> drag as on UltraSPARC II CPUs compiling isn't much fun even if you use
> all the CPU-power there is.
> Normally you'd think that a meta-port like xorg just hast to be
> compiled step by step. However, a far more complex system (make -j 4
> buildworld) works just fine.
There are two problems here. The first is that not all of the
underlying builds support this. The second is that we are using Make as
our ports scripting language - I'm guessing that in Gentoo no-one
expects portage itself to be parallel.
Really it's only the build stage that matters. What you might try is
setting the MAKE_ARGS variable, which passes extra arguments to gmake
during build and install. If a port makefile sets it explicitly you'll
be out of luck, but I think most either don't set it, or use +=.
Probably you would want to set it conditionally in make.conf, so you
can exclude any problematical ports.
More information about the freebsd-questions