can make -j be used for ports?
Matthias Andree
matthias.andree at gmx.de
Wed Mar 16 10:51:50 UTC 2011
Am 15.03.2011 23:44, schrieb Chuck Swiger:
> On Mar 15, 2011, at 3:35 PM, Eitan Adler wrote:
>> [ ... ]
>>> Yes. Ports which support parallel builds will have MAKE_JOBS_SAFE=yes set in the port Makefile. It defaults to running -j with MAKE_JOBS_NUMBER=`${SYSCTL} -n kern.smp.cpus`, but you can change that to some other # if you like.
>>
>> No, this is incorrect. The MAKE_JOBS_NUMBER and MAKE_JOBS_SAFE is used
>> internally when building a single port.
>
> What is incorrect?
>
>> When the OP is asking if he can manually specify -j on the command line which would end up
>> building multiple ports in parallel. This can not be done (primarily
>> because there is no locking done on ports)
>
>
> It certainly wasn't clear to me that this is what the OP meant. If you:
>
> cd /usr/ports/www/apache22
> make -j 3
make FORCE_MAKE_JOBS=yes
and the -j argument will default to the number of CPU cores as provided
by the corresponding sysctl. If the port breaks with
FORCE_MAKE_JOBS=yes please file a PR with a patch fixing it, or if that
is too much of an effort, a patch to add a line "MAKE_JOBS_UNSAFE= yes"
(on a single line with a TAB between MAKE_JOBS_UNSAFE= and yes).
> ...what do you expect to happen, and how many ports would you expect to be built at once?
>
> (Building one port in parallel is supported, where the port itself is safe to do so; building many at the same time is not. Supporting the former provides more speed gain for many situations as compared to the latter; which doesn't help at all if you are just installing or updating one port.)
I beg to differ on the speed assertion. I own a somewhat fast computer
(Phenom II X4 i. e. 4 x 2.5 GHz) and I find that a lot of serialization
takes place, particularly behind the configure phases and the
mtree/registration stuff.
In that respect, building non-dependent ports in parallel would be
rather useful to actually exploit SMP computers; however it would
require a dependency analysis so that only those ports build in parallel
that do not depend on one another, and I also fear that sometimes mtree
during installation might get in the way.
I seem to recall that Doug stated something to the extent he wouldn't be
doing it in portmaster, and I don't see any other tool that is similarly
mature so it would be worthwhile even trying that.
Best
--
Matthias Andree
More information about the freebsd-ports
mailing list