Mail Archives: cygwin/2004/04/27/21:11:50
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/
- Raw text -