This is the mail archive of the
cygwin-apps
mailing list for the Cygwin project.
Re: Unbelievably obscure setup bug
On Nov 19 10:15, Christopher Faylor wrote:
> On Fri, Nov 19, 2010 at 02:20:13PM +0000, Jon TURNEY wrote:
> >On 19/11/2010 13:36, Corinna Vinschen wrote:
> >> On Nov 19 13:23, Jon TURNEY wrote:
> >>> On 19/11/2010 13:13, Corinna Vinschen wrote:
> >>>> The code in question was supposed to make sure that the order is always
> >>>> "base-cygwin base-passwd [...]" and that was the case so far. Of
> >>>> course, given the obvious mishandling of the casecompare return value
> >>>> it's not clear why this ever worked. Even more mysterious is the fact
> >>>> that the bugfix *breaks* this order. Well, time to debug...
> >>>
> >>> Well, the bugfix breaks the order because visit() on "base-cygwin" inserts it
> >>> and all it's dependencies depth-first (ignoring loops).
> >>
> >> In theory base-cygwin has no dependecies. Here are the setup.hint
> >> snippets:
> >>
> >> base-cygwin:
> >>
> >> category: Base
> >>
> >> base-passwd:
> >>
> >> requires: base-cygwin
> >> category: Base
> >> noautodep: cygwin
> >>
> >> cygwin:
> >>
> >> requires: base-passwd base-cygwin
> >> noautodep: _update-info-dir
> >>
> >> I think that explains it. The problem in base-cygwin is that it depends
> >> on cygwin since the "noautodep: cygwin" is missing. So there's a
> >> dependency chain which goes "base-cygwin -> cygwin -> base-passwd".
> >> That's how this order is generated. If we add "noautodep: cygwin" to
> >> base-cygwin, it would really have no dependency and should always become
> >> the first package.
> >
> >I wasn't aware of the existence of noautodep. Now it all makes sense :-)
>
> I believe that I actually added this so that we wouldn't need to special-case
> packages in setup.
For some reason, even if I remove the cygwin dependency from base-cygwin
in setup.ini, I still get the "base-passwd cygwin base-cygwin" dependency
order. Hmm.
Corinna
--
Corinna Vinschen Please, send mails regarding Cygwin to
Cygwin Project Co-Leader cygwin AT cygwin DOT com
Red Hat