Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 20 Jan 2006 20:53:11 -0500
From:      Kris Kennaway <kris@obsecurity.org>
To:        babkin@freebsd.org
Cc:        Wesley Shields <wxs@csh.rit.edu>, Ashok Shrestha <ashok.shrestha@gmail.com>, freebsd-hackers@freebsd.org, Brandon Flowers <flowersster@gmail.com>, Mike Meyer <mwm@mired.org>, Gary Thorpe <gthorpe@myrealbox.com>, Kris Kennaway <kris@obsecurity.org>, Dag-Erling Sm?rgrav <des@des.no>
Subject:   Re: speed up port compiling using RAM (tmpfs) ???
Message-ID:  <20060121015311.GA46753@xor.obsecurity.org>
In-Reply-To: <43D19011.D15F8462@verizon.net>
References:  <2209162.1137777933811.JavaMail.root@vms075.mailsrvcs.net> <20060120193741.GC39932@xor.obsecurity.org> <43D15C19.314EC346@verizon.net> <20060120222629.GA43985@xor.obsecurity.org> <43D19011.D15F8462@verizon.net>

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

--lrZ03NoBR/3+SXJZ
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

On Fri, Jan 20, 2006 at 08:36:17PM -0500, Sergey Babkin wrote:

> > If (as I said) you impose the correct dependency information.
> > Currently there is no such information provided.
>=20
> Ah, so we don't have any reliable information about dependencies=20
> between the ports either (not just between files inside each=20
> particular port)?  Hm, I think it would present a problem even=20
> when building them sequentially.

The port dependency checking of one port upon other ports doesn't
really use the make(1) dependency system.  Instead there is a shell
script in bsd.port.mk that looks for the file listed in the *_DEPENDS
variable and goes and explicitly spawns a new make to build the port
if it is not found.  This is fine for building ports serially, but
it's not trivially parallelizable since it only has local knowledge:

In order to do better you either have to:

1a) construct an enormous make(1) dependency web of the entire ports
collection (in order to have global knowledge and be able to direct
makes to avoid collisions), and

1b) somehow keep it up-to-date each time the ports tree is modified.

or

2) Introduce mutual exclusion to prevent conflicts from two makes
trying to operate on the same port at once.  You also need to
serialize in other places, e.g. modifying the database state in
/var/db.  This won't be as efficient as 1) since the second make will
block instead of going off to build some other dependency in the
meantime, which you could do with 1) if you could manage to implement
it.

Kris

--lrZ03NoBR/3+SXJZ
Content-Type: application/pgp-signature
Content-Disposition: inline

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.2 (FreeBSD)

iD8DBQFD0ZQHWry0BWjoQKURAj0oAKDffSa6Rw8XwSbEXTlE8/HWhpLkJACgucjl
cFTTIW7EEBYUq/KmkmQ6uXA=
=5klC
-----END PGP SIGNATURE-----

--lrZ03NoBR/3+SXJZ--



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