Date: Sun, 19 Oct 2008 06:43:35 -0700 From: Jeremy Chadwick <koitsu@FreeBSD.org> To: Eitan Adler <eitanadlerlist@gmail.com> Cc: freebsd-ports@freebsd.org Subject: Re: speed up ports install Message-ID: <20081019134335.GA77441@icarus.home.lan> In-Reply-To: <20081019133934.GA77293@icarus.home.lan> References: <48FB344E.9040904@gmail.com> <20081019133934.GA77293@icarus.home.lan>
next in thread | previous in thread | raw e-mail | index | archive | help
On Sun, Oct 19, 2008 at 06:39:34AM -0700, Jeremy Chadwick wrote: > On Sun, Oct 19, 2008 at 09:21:18AM -0400, Eitan Adler wrote: > > -----BEGIN PGP SIGNED MESSAGE----- > > Hash: SHA1 > > > > I have a simple idea to make use the threads without any possibility of > > conflicts. I am sure there will be someone to point out a negative, but > > I don't see any. > > When you do "make install" launch a "make fetch-recursive" thread at the > > same time. That way you don't need to wait for the files to > > install->fetch the next one->install it->fetch the next one... > > For those who don't want that you could get the old behavior with "make > > onlyinstall". I currently do this with a "make" wrapper script and I > > find installation to be faster. > > What about this scenario? > > # cd /usr/ports/friendly/apes > # make install > > <forked copy of 'make fetch-recursive' is launched in background> > <fetch for friendly/apes finishes, "make" starts> > <"make" finds a dependency which isn't installed, friendly/dogs> > <"make" begins to build friendly/dogs, but friendly/dogs is still being > downloaded from fetch-recursive, because the source is very large; > say, 30MBytes> > <"make" for friendly/dogs forks another fetch-recursive......> > > What I'm trying to say is, there would need to be mechanisms put in > place to cause the entire build process to block (halt/pause) until the > backgrounded fetch-recursive has completed. And I forgot another scenario: Let's say you've added perl as a package, e.g. pkg_add -r perl, and now you're going to build a program that's dependent upon it. One of the known problems with ports/pkg "stuff" is that in the above scenario, fetch and fetch-recursive will download a copy of the source for perl (when detected as a dependency for something), which ultimately serves zero purpose. This doesn't happen when simply doing "make" or "make install". More food for thought. -- | Jeremy Chadwick jdc at parodius.com | | Parodius Networking http://www.parodius.com/ | | UNIX Systems Administrator Mountain View, CA, USA | | Making life hard for others since 1977. PGP: 4BD6C0CB |
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20081019134335.GA77441>