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>