Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 16 May 2007 09:29:46 -0500
From:      Stephen Montgomery-Smith <stephen@math.missouri.edu>
To:        "[LoN]Kamikaze" <LoN_Kamikaze@gmx.de>
Cc:        Pav Lucistnik <pav@freebsd.org>, freebsd-ports@freebsd.org, Kris Kennaway <kris@obsecurity.org>
Subject:   Re: Time to abandon recursive pulling of dependencies?
Message-ID:  <464B155A.1080105@math.missouri.edu>
In-Reply-To: <46488168.3030300@math.missouri.edu>
References:  <464597C6.3030406@gmx.de>	<20070512174011.GA22526@xor.obsecurity.org>	<4645FF71.60100@gmx.de>	<20070512175824.GA23103@xor.obsecurity.org>	<20070512133054.B5588@math.missouri.edu>	<4646193E.5040503@gmx.de>	<464665D5.1090509@math.missouri.edu>	<464676CC.2000203@math.missouri.edu>	<46469BF5.9030603@math.missouri.edu>	<1179058696.13237.3.camel@ikaros.oook.cz>	<20070513101332.L82202@math.missouri.edu>	<46479215.1080401@math.missouri.edu>	<4647C4FB.9050607@math.missouri.edu>	<4647F182.6000402@gmx.de> <46487491.6020806@math.missouri.edu> <46488168.3030300@math.missouri.edu>

next in thread | previous in thread | raw e-mail | index | archive | help
Stephen Montgomery-Smith wrote:
> Stephen Montgomery-Smith wrote:
>> [LoN]Kamikaze wrote:
>>> Stephen Montgomery-Smith wrote:
>>>> Basically I think we are stuck on making "make package-depends" go any
>>>> faster.
>>>>
>>>> However I do think that the modifications I made to pkg_create go a 
>>>> very
>>>> significant way to solving the problem of registration taking so 
>>>> very long.
>>>>
>>>> Stephen
>>>>
>>>
>>> You are right about invoking make being the problem. However, I was 
>>> able to
>>> increase the performance of package-depends by 20 to 30 percent, by 
>>> avoiding
>>> recursive make calls and moving the recursion into the stack of the 
>>> shell
>>> invocation.
>>>
>>> With my changes there's less than 10% overhead over the sum of make 
>>> calls. I.e.
>>>  for 56 seconds of make calls (x11/xorg on my system) there are only 
>>> 4 more
>>> seconds of processing, instead of 15 to 20 seconds.
>>>
>>> The original make package-depends does some things I don't 
>>> understand. Once
>>> I've figured them out I will post my little patch here.
>>>
>>>
>>
>>
>> Someone pointed out that what I was proposing in +DEPENDENCIES is 
>> already to be found in +CONTENTS.  So here is a proof of concept patch 
>> to /usr/ports/Mk/bsd.port.mk (proof of concept because no error 
>> checking, and things like that).
>>
>> For me it makes registration about 3 times faster.
> 
> And also, the only reason it goes slow is because it has to do
> (cd $$dir; make -V PKGNAME)
> for every dir in _LIB_RUN_DEPENDS.  But if instead we kept a file in 
> /var/db/pkg called something like +PACKAGE_NAMES, where as each port is 
> created we add in a one line entry with this mapping of origin to 
> package name, then registration would take less than a second.  It also 
> has the advantage that the created +REQUIRED_BY really would be an 
> accurate reflection of the true state of affairs rather than what it 
> should be (meaning that if you cvsup ports and then build on top of old 
> dependencies, +REQUIRED_BY would still be accurate).
> 
> Stephen

Another option is to create this +PACKAGE_NAMES file on the fly, 
something like as follows:

	@rm -f /tmp/tempfile; \
	for pkgname in /var/db/pkg/*; do \
		echo `basename $$pkgname``grep "@comment ORIGIN:" $$pkgname/+CONTENTS 
| sed "s/@comment ORIGIN//"` >> /tmp/tempfile; \
	done; \

This process really is rather quick, maybe a few seconds, and certainly 
way quicker than the many invocations of make.




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