blackbox does not compile with latest cygwin

Carlo Florendo list-subscriber@hq.astra.ph
Wed Apr 28 07:02:00 GMT 2004


Igor Pechtchanski wrote:

>>I installed the exact blackbox version as last time which is the latest
>>official release.  This latest official release has one file that calls
>>assert() but does not #include it.  I checked its include tree and, as
>>far as I looked, have not found the #include <assert.h> anywhere on the
>>tree.
>>    
>>
>
>Yes, because it expects <assert.h> to be included from one of the system
>headers.
>
Ok.  I see.  Now I'm starting to see the big picture.

>>Other files that call assert have the header included in them. The
>>strangest thing is that the same version compiles under the current
>>linux that I have (Redhat 9.0), the former cygwin, but *not* the latest
>>cygwin.
>>    
>>
>
>That's because some Cygwin system headers got changed to not include
><assert.h> where they previously did.
>
Bingo!  Thanks for this info or I would not be able to sleep being 
bothered by why it behaves differently across different
platforms.    Oh, I made the assumption that blackbox would compile 
under different platforms!  That's it!  I almost forgot that
different platforms have different characteristics and different issues!

>  
>
>>It compiles with the latest cygwin if I #include <assert.h> on
>>the file in question.
>>
>>Does this mean that there is a problem with gcc?   or configure?  I'm
>>confused now whether the problem resides in the packaging of blackbox,
>>in the way ./configure runs on the old cygwin, or on the way ./configure
>>runs on the new cygwin, or in Linux or even in gcc.    Why doesn't gcc
>>complain in the old cygwin and in Linux?
>>    
>>
>
>The problem is with blackbox.  Apparently, some of the Linux system
>headers[*] include <assert.h>, and so did some of the Cygwin ones.  So
>this particular file in blackbox relied on a needed header (<assert.h>) to
>be inluded from elsewhere (another header).  This is a bug.  Cygwin's
>headers got changed, and <assert.h> is no longer in the include chain, so
>blackbox broke.  The fix is to #include <assert.h> in the file that calls
>assert(). It may also be possible to do this through some configure magic
>if the project maintainers *really* want to avoid including <assert.h>
>twice in the project code, but why bother?
>
Absolutely.  Thanks for this wonderful explanation.  I really see the 
problem with blackbox now.

>>I could submit a patch to the blackbox maintainers but will have to tell
>>them that the reason for it is so that it will compile with the latest
>>cygwin.  Or could it be that ./configure needs to be patched?
>>
>>    
>>
>The reason for the patch is portability.  Sure, it will compile on the
>current Linux, but POSIX doesn't require any other header to include
><assert.h>, so blackbox should do it itself.  As I said above, I don't
>think you should bother with patching configure.
>	Igor
>[*] If you want to find out which header includes <assert.h> on Linux,
>simply preprocess the broken file on Linux using gcc -E and see where
>"assert.h" got included from.
>

Ok.  I will submit a patch to the blackbox maintainers and clarify this 
issue with its mailing list.  Thank  you
very much  Igor for this entire clarification. You cygwin people are 
really the best :)

Best Regards,

Carlo
------
Carlo Florendo
Astra Philippipnes Inc.
www.astra.ph


--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/



More information about the Cygwin mailing list