Installing ports in parallel

Dominik Reichardt domiman at gmail.com
Tue Sep 11 14:04:24 PDT 2012


On 11.09.2012, at 22:58, Peng Yu <pengyu.ut at gmail.com> wrote:

>>> I don't find a way to let port install multiple independent ports in
>>> parallel to maximally use the cores on a machine. Is there a way to do
>>> so? Thanks!
>> 
>> This used to be allowed (unintentionally, I think) and would sometimes work, as long as the ports you were installing were truly independent of one another (including their complete dependency chains). But as soon as you started trying to do simultaneous port installs where parts of the dependency chains overlapped, and some of those overlapping dependencies were outdated or not installed yet, things did not work. Confusing error messages were printed that users often did not understand.
>> 
>> We "fixed" the problem a few versions of MacPorts by introducing a lock mechanism that ensures that you can only install one port at a time. I miss the parallel install capability we used to have, but appreciate that this reduces the number of confusing problems our users could encounter, and thus decreases the number of problem reports we receive, which frees up our time to work on more interesting problems.
> 
> There are many tools out there to handle dependencies for compiling
> software and for many other purpose as well. For example, GNU make,
> cmake, ant, maven, etc. I think that there should be (at least
> theoretically) some way of harness some of these tools to handle
> parallel builds of multiple ports even if they share dependency
> chains. Whether it is easy to implement is another issue and I don't
> know the answer.

The problem is not that something you want to build has the same already installed dependencies but when the same dependencies are needed to be installed first. Imagine you are installing two ports that depend on library foobar. Both are starting to install the same dependency, maybe at the same time which is a big problem. Or not at the same time but at the time you started the process foobar wasn't installed and while the one install process successfully installed it, the other might suddenly stall because something it thought didn't exist suddenly exists...

Take care

Dom


More information about the macports-users mailing list