Jack Jansen wrote:
The comment in pyconfig.h suggests that defining _POSIX_C_SOURCE may enable certain features, but the actual system headers appear to work the other way around: it seems that defining this will disable features that are not strict Posix.

Does anyone know what the real meaning of this define is? Because if it is the former then Python is right, but if it is the latter Python really has no business defining it

As you can see from the formal definition that Tim gave you, both is right: the macro causes system headers to provide the functions that POSIX says they should provide, and remove functions that POSIX does not mention, except when enabled through other feature selection macros.

in general Python isn't 100% posix-compliant because it'll use all sorts of platform-dependent (and, thus, potentially non-posix-compliant) code...

Python is 100% POSIX compliant. It also uses extensions to POSIX on platforms that provide them, but if these extensions are not available, it falls back to just not using them.

So Python really uses "POSIX with extension". A careful operating system
developer will understand that this is a useful programming model, and
provide feature selection macros to enable features that go beyond
POSIX. That's why you can see various feature selection macros at
the beginning of configure.in.

In case you wonder why Python defines this in the first place: some
platforms really need the definition, or else they don't provide
the proper header contents (i.e. they fall back to ISO C for some
headers), most notably Tru64 and HP-UX. Other systems implement
different versions of the same API, e.g. Solaris, and defining
_POSIX_C_SOURCE makes these systems provide the POSIX version of the
API.

This problem is currently stopping Python 2.4.1 to compile on this platform, so if anyone can provide any insight that would be very helpful...

Just define _THIS_PLATFORM_SOURCE. If there is no such define, complain to the vendor of this platform, and ask Apple to provide such a macro. If this falls on deaf ears, go to the block "Some systems cannot stand _XOPEN_SOURCE being defined at all;" in configure.in and make another entry. Make sure that entry: - lists the precise reason for the entry (e.g. what structure/type/function gets hidden that shouldn't be hidden) - lists your name as the contact to ask for details - is specific to the particular release of this platform, so if future versions of this platform fix the bug, the work-around of disabling _XOPEN_SOURCE and _POSIX_C_SOURCE can be removed

Regards,
Martin
_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to