Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 25 Jan 2009 17:22:04 -0500
From:      Josh Carroll <josh.carroll@gmail.com>
To:        cpghost <cpghost@cordula.ws>
Cc:        dougb@freebsd.org, freebsd-questions@freebsd.org
Subject:   Re: make -jN build with portmaster
Message-ID:  <8cb6106e0901251422q1412ed38gd14f7591d4dfcabd@mail.gmail.com>
In-Reply-To: <20090125214457.GA4568@phenom.cordula.ws>
References:  <20090125214457.GA4568@phenom.cordula.ws>

next in thread | previous in thread | raw e-mail | index | archive | help
On Sun, Jan 25, 2009 at 4:44 PM, cpghost <cpghost@cordula.ws> wrote:
> To build ports in parallel on a 4 core machine, I usually
> do this manually:
>
>  # cd /usr/ports/some/port
>  # make configure && make -j5 build && make install clean
>
> because all steps except "make build" are not compatible
> with -jN (some ports don't work with -jN in the "make build"
> phase either, but they are quite rare).
>
> Now, is there a way to teach portmaster to build or rebuild
> ports this way? The only workaround for now is something
> like:

What I do is the following via make.conf, which will work for
portmaster/portupgrade or manual builds:

# set MAKE_ARGS for the build target(s)
.if !(make(*install) || make(package))
MAKE_ARGS+=-j8
.endif

Then as you find ports that don't build properly, add an entry like this:

# some ports don't like -j8, so we can undo the MAKE_ARGS addition for those
.if ${.CURDIR:M*/multimedia/mplayer}
MAKE_ARGS:=${MAKE_ARGS:C/-j8//}
.endif

It's a bit of a hack, but I've had decent success with this. Enough
ports fail to build with -jX, that I'd never do the above on a
production machine, especially since it's possible for some sort of
silent error that produces an unpredictable binary. But for my home
machine, I've been pretty happy with it.

Regards,
Josh



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?8cb6106e0901251422q1412ed38gd14f7591d4dfcabd>