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>