From owner-freebsd-ports@FreeBSD.ORG Tue Jun 22 10:57:54 2004 Return-Path: Delivered-To: freebsd-ports@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 18F4B16A4CE for ; Tue, 22 Jun 2004 10:57:54 +0000 (GMT) Received: from fillmore.dyndns.org (port-212-202-50-15.dynamic.qsc.de [212.202.50.15]) by mx1.FreeBSD.org (Postfix) with ESMTP id BEC5543D31 for ; Tue, 22 Jun 2004 10:57:53 +0000 (GMT) (envelope-from eikemeier@fillmore-labs.com) Received: from [172.16.0.4] (helo=[172.16.0.4]) by fillmore.dyndns.org with esmtp (Exim 4.34 (FreeBSD)) id 1BciyJ-000H68-4x; Tue, 22 Jun 2004 12:57:49 +0200 Message-ID: <40D7F5EF.4090406@fillmore-labs.com> Date: Tue, 22 Jun 2004 11:03:43 +0200 From: Oliver Eikemeier Organization: Fillmore Labs GmbH - http://www.fillmore-labs.com/ MIME-Version: 1.0 To: Kris Kennaway References: <20040622083214.GA91013@sanatana.dharma> <20040622100327.GA12999@xor.obsecurity.org> In-Reply-To: <20040622100327.GA12999@xor.obsecurity.org> Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit User-Agent: KMail/1.5.9 cc: ports@freebsd.org Subject: Re: incremental ports/INDEX builder X-BeenThere: freebsd-ports@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: Porting software to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 22 Jun 2004 10:57:54 -0000 Kris Kennaway wrote: > On Tue, Jun 22, 2004 at 10:32:14AM +0200, Radim Kolar wrote: > >>my program for speedups of make index rebuilding after cvsup >> >>http://home.tiscali.cz/~cz210552/bsdportsutils.html > > This is interesting, but based on my attempt to read the code (it's > not commented, and I don't speak ruby) I don't think you catch all the > cases. For example, when something like bsd.kde.mk or > ../../someother/port/Makefile.inc changes, it can also affect ports > that .include those files, and cause a change to 'make index'. This > doesn't happen often, but it happens sometimes, and an incremental > index generator needs to handle it. There are some other corner > cases, but I can't tell whether your code handles them. > > I have a make-based prototype that maintains and updates this > dependency information too, but it currently also has a bug (missing > newline on one of the 'make describe' outputs). I'm hoping to work on > that again this week so I can post the implementation for comments. I have a perl script that does this at The advantage is that it is independent of changes in /etc/make.conf or /usr/local/etc/pkgtools.conf, OPTIONS or OSVERSION which might be important. OTOH potentially all packages can change when something in MK/bsd.*.mk is changed, so in these caese a complete rebuild is necessary. I have this into testing for two weeks now, and the heuristics are pretty reliable. I tried an approach with patching make(1) too, but you won't gain much (there are not many additional files involved), and it is too sensitive to changes outside the ports system, makeing the generated dependency file non-portable. OTOH you handlke border cases better, like setting MASTERDIR twice. I'm pretty happy with my approach, and it is quite fast. -Oliver