Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 17 May 2006 09:00:26 +0300
From:      Vasil Dimov <vd@FreeBSD.org>
To:        Paul Koch <paul.koch@statseeker.com>
Cc:        ports@freebsd.org, Edwin Groothuis <edwin@mavetju.org>
Subject:   Re: Is it safe to compile multiple ports at the same time ?
Message-ID:  <20060517060026.GA40653@qlovarnika.bg.datamax>
In-Reply-To: <200605171508.07228.paul.koch@statseeker.com>
References:  <200605171353.37745.paul.koch@statseeker.com> <20060517045403.GI1113@k7.mavetju> <200605171508.07228.paul.koch@statseeker.com>

next in thread | previous in thread | raw e-mail | index | archive | help

--opJtzjQTFsWo+cga
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

On Wed, May 17, 2006 at 03:08:07PM +1000, Paul Koch wrote:
> On Wed, 17 May 2006 02:54 pm, Edwin Groothuis wrote:
> > On Wed, May 17, 2006 at 01:53:37PM +1000, Paul Koch wrote:
> > > Is it safe to compile multiple ports at the same time and not get
> > > the makes to run into each other when building dependency ports ?
> >
> > I once submitted a patch which checked for this. Now that I've
> > learned about lockf(1) I think there is a chance a next one will
> > be approved too!
> >
> > Edwin
>=20
> So.... it would be nice to have some type of locking in the ports build. =
=20
> For example, when a make enters /usr/ports/{category}/{port}, it gets=20
> an exclusive lock on that port (maybe on the Makefile itself, or a=20
> specific lock file) before it attempts to build/install the port.  It=20
> could be done by using lockf, but that just forks more processes, and=20
> there are already lots of them. I'd dare to say.... maybe it could be a=
=20
> function of make itself. As in, extend make so it understands a new=20
> keyword that makes it get an exclusive lock, using flock(2). =20
>=20
> With locking, you should then be able to fire off lots of port builds=20
> and use up all those cpu cores :)
>=20

Not really, locking will just prevent breakages. Let me illustrate my
thought with an example:

port A depends on X
port B depends on X

You start building A which results in building X via exclusive lock on X.
During the build of X you decide to build B which results in building X
(X is not yet installed) but you block trying to acquire the exclusive
lock on X so you wait _idling_ until building of X is done. Furthermore
what do you suggest to do when the lock is released?

Ofcourse if B depends also on Y it can fallback to building Y if it
cannot gain exclusive lock on X.

--=20
Vasil Dimov
gro.DSBeerF@dv

Testing can show the presence of bugs, but not their absence.
                -- Edsger W. Dijkstra

--opJtzjQTFsWo+cga
Content-Type: application/pgp-signature
Content-Disposition: inline

-----BEGIN PGP SIGNATURE-----

iD8DBQFEarv6Fw6SP/bBpCARAhUmAKDPZ0G9mp2qObPpXLX9N+Qg0psXwACdGqTI
8zELyZKIrJB4eDq4w41fMKQ=
=aUG9
-----END PGP SIGNATURE-----

--opJtzjQTFsWo+cga--



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