From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 18743 invoked by alias); 27 Aug 2008 17:15:19 -0000 Received: (qmail 18733 invoked by uid 22791); 27 Aug 2008 17:15:18 -0000 X-Spam-Check-By: sourceware.org Received: from aquarius.hirmke.de (HELO calimero.vinschen.de) (217.91.18.234) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Wed, 27 Aug 2008 17:14:33 +0000 Received: by calimero.vinschen.de (Postfix, from userid 500) id 5633A6D434C; Wed, 27 Aug 2008 19:14:32 +0200 (CEST) Date: Wed, 27 Aug 2008 17:15:00 -0000 From: Corinna Vinschen To: cygwin-apps@cygwin.com Subject: Re: New Setup for Cygwin 1.7 on cygwin.com Message-ID: <20080827171432.GV29104@calimero.vinschen.de> Reply-To: cygwin-apps@cygwin.com Mail-Followup-To: cygwin-apps@cygwin.com References: <20080822082449.GC29992@calimero.vinschen.de> <48AE7FC8.658A458@dessent.net> <20080822090951.GR29104@calimero.vinschen.de> <20080825102602.GY29104@calimero.vinschen.de> <20080825143300.GA24615@ednor.casa.cgf.cx> <20080825152713.GA24736@ednor.casa.cgf.cx> <20080825153753.GD29104@calimero.vinschen.de> <20080825155733.GC24752@ednor.casa.cgf.cx> <20080825161634.GF29104@calimero.vinschen.de> <20080825172207.GA24956@ednor.casa.cgf.cx> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20080825172207.GA24956@ednor.casa.cgf.cx> User-Agent: Mutt/1.5.16 (2007-06-09) Mailing-List: contact cygwin-apps-help@cygwin.com; run by ezmlm Precedence: bulk Sender: cygwin-apps-owner@cygwin.com List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Mail-Followup-To: cygwin-apps@cygwin.com X-SW-Source: 2008-08/txt/msg00281.txt.bz2 On Aug 25 13:22, Christopher Faylor wrote: > On Mon, Aug 25, 2008 at 06:16:34PM +0200, Corinna Vinschen wrote: > >On Aug 25 11:57, Christopher Faylor wrote: > >> On Mon, Aug 25, 2008 at 05:37:53PM +0200, Corinna Vinschen wrote: > >> >On Aug 25 11:27, Christopher Faylor wrote: > >> >> On Mon, Aug 25, 2008 at 10:33:00AM -0400, Christopher Faylor wrote: > >> >> >Making tweaks by removing valid dependencies in the hopes of improving > >> >> >things is not going to be a win in the long run. We seem to be in a > >> >> >situation that is only solvable by changing setup.exe. > >> >> > >> >> That said, however, I can manage to get base-cygwin first in the > >> >> dependency order by changing all of the "requires: ...cygwin" to > >> >> "requires: ...base-cygwin". base-passwd is still off in the weeds > >> >> somewhere. Maybe those two packages should just be combined? > >> > > >> >The terminfo change would be much simpler. Everything else seems > >> >to fall into place then. > >> > >> I'd consider changes like the terminfo change a rather fragile way of > >> fixing the problem. It looks like all we'd need is for libintl8 to add > >> similar dependencies and everything would fall apart again. And we > >> wouldn't know about it for some time. > >> > >> Creating a package which is designed to be relied on by everyone and is > >> a "terminal node" should ensure that it is always run first. upset could > >> be modified to make sure that everything relies on base-cygwin, too. > >> > >> Btw, did you try running setup after removing terminfo? I get this > > > >I don't understand. Removing terminfo from where? If you mean, > >removing its dependencies... > > >> order (from setup.log.full): > >> > >> Dependency order of packages: terminfo libintl3 texinfo > ^^^^^^^^ > > I meant removing the dependencies. Doing so doesn't seem to solve any > problems. I looked a while into the algorithm doing the dependency ordering. What it does is to create an ordered list sorted by using the algorithm to find the strongly connected components in a directed graph. The problem is that this algorithm works fine and creates a nice dependeny ordered list unless there are loops in the dependencies. In this case you just get a list of strongly connected components in arbitrary order. Today I tried a simple trick. The algorithm now iterates through the package list twice. The first run only visits the packages which itself have no dependencies and puts them first in the dependency ordered list. The second run then visits all other packages. I didn't expect a lot, just a bit better. But the resul was surprisingly good: Dependency order of packages: base-cygwin base-passwd cygwin libiconv2 libintl8 libintl3 alternatives texinfo _update-info-dir gawk tzcode coreutils terminfo libncurses8 libreadline6 bash ash findutils sed base-files libbz2_1 bzip2 libpopt0 cygutils groff gzip termcap libpcre0 less man cygwin-doc editrights grep ipc-utils login rebase run tar which Maybe that's just coincidence. I think I'll apply this patch and tomorrow I'll try to add another loop between the above loops. That loop would only visit packages which have exactly one dependency, and that dependency is to one of the packages which have no dependencies. Or, maybe just visiting packages which have exactly one dependency, no matter what. Anybody having another funny idea? Corinna -- Corinna Vinschen Please, send mails regarding Cygwin to Cygwin Project Co-Leader cygwin AT cygwin DOT com Red Hat