This is the mail archive of the
mailing list for the Cygwin project.
Re: Unbelievably obscure setup bug
On Sat, Nov 20, 2010 at 01:42:07PM +0000, Jon TURNEY wrote:
>On 19/11/2010 14:20, Jon TURNEY wrote:
>> On 19/11/2010 13:36, Corinna Vinschen wrote:
>>> In theory base-cygwin has no dependecies. Here are the setup.hint
>>> category: Base
>>> requires: base-cygwin
>>> category: Base
>>> noautodep: 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 :-)
>> If everything else depends on cygwin, I think that should give the correct
>> ordering without any special casing?
>I did some tests with these special cases in ConnectedLoopFinder::doIt()
>removed, which seemed to give the required postinstall scripts order
>('base-cygwin base-passwd cygwin'), except that libgcc can appear before that.
>In the current setup.ini, libgcc1 has no requires: line. I don't understand
>why that is, it has a empty requires: in it's setup.hint and no noautodep, so
>it should automatically be given a dependency on cygwin?
It's probably an upset bug. I'll bet the auto-cygwin stuff is triggered
on the existence of a requires: line. I'll look into it.
>> If not, you perhaps might want to tweak the comment to indicate the order
>> which is required, and note that we rely base-cygwin and base-passwd having no
>> unvisited dependencies to get the required ordering.
>s/you perhaps might/I should/ :-)
I don't understand why we need to document this in setup sources. If we can
get the right behavior with no special-case comments then why not just do that.
It was really a setup bug that we couldn't get the ordering we required.