Unbelievably obscure setup bug

Christopher Faylor cgf-use-the-mailinglist-please@cygwin.com
Fri Nov 19 15:16:00 GMT 2010


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.

cgf



More information about the Cygwin-apps mailing list