speed up ports install

Eitan Adler eitanadlerlist at gmail.com
Sun Oct 19 14:57:50 UTC 2008

Hash: SHA1

Jeremy Chadwick wrote:
> 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:
>>> 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".
If you use packages/ports and you don't want to download the perl source
in this case you would use make onlyinstall.
Perhaps instead there could be a make fetchinstall or make fastinstall
for this type of thing.	
> More food for thought.

- --
GNU Key fingerptrint: 2E13 BC16 5F54 0FBD 62ED 42B6 B65F 24AB E9C2 CCD1
Version: GnuPG v2.0.9 (FreeBSD)


More information about the freebsd-ports mailing list