Issue6558
Created on 2009-07-24 01:17 by yaneurabeya, last changed 2009-07-25 00:20 by yaneurabeya.
| Messages (3) | |||
|---|---|---|---|
| msg90868 - (view) | Author: Garrett Cooper (yaneurabeya) | Date: 2009-07-24 01:17 | |
The following files are looking for the `linux' constant, when it fact they should be looking for `__linux__' (from 2.6.2 release's sources): Modules/_ctypes/libffi/src/mips/ffitarget.h:#ifdef linux Modules/socketmodule.c:#ifdef linux Modules/socketmodule.c:#ifdef linux The correct check is being made for FreeBSD (__FreeBSD__), for instance. This is a defacto standard set by gcc, as discussed here: <http://lists.debian.org/debian-devel/2001/01/msg00951.html>. You can dump out all of the available constants for any given gcc compiler via: [garrcoop@sjc-lds-102 ~/Python-2.6.2]$ echo "" | gcc -E -dM -c - | grep linux #define __linux 1 #define __linux__ 1 #define __gnu_linux__ 1 #define linux 1 I point this out because one of our compilers, doesn't have this definition and it's tossing up errors with the linuxaudiodev and oss modules periodically when cross-compiling, as shown below :(: /nobackup/shujagan/tmp/contrib/python/Modules/linuxaudiodev.c:31: error: conflicting types for 'uint32_t' /nobackup/shujagan/tmp/linkfarm/mips32/usr/include/stdint.h:52: error: previous declaration of 'uint32_t' was here /nobackup/shujagan/tmp/contrib/python/Modules/ossaudiodev.c:37: error: conflicting types for 'uint32_t' /nobackup/shujagan/tmp/linkfarm/mips32/usr/include/stdint.h:52: error: previous declaration of 'uint32_t' was here We've suggested using --without-audio, but this is a standard which should be adhered to as __linux__ is the constant of choice when looking for the Linux compiler... Thanks! -Garrett |
|||
| msg90881 - (view) | Author: Roumen Petrov (rpetrov) | Date: 2009-07-24 12:09 | |
Did my patch python-trunk-20081209-c89.patch from issue 4558 work for you ? Is the issue fixed in original libffi ? |
|||
| msg90905 - (view) | Author: Garrett Cooper (yaneurabeya) | Date: 2009-07-25 00:20 | |
__linux is legitimate too, so the patch looks ok, but... 1) It won't apply cleanly against 2.4.5, most likely. 2) Why __linux instead of __linux__ ? gcooper@orangebox ~ $ echo "" | gcc --std=c89 -E -dM -c - | grep linux #define __linux 1 #define __linux__ 1 #define __gnu_linux__ 1 __linux__ is the preferred nomenclature in the kernel.org sources, IIRC... |
|||
| History | |||
|---|---|---|---|
| Date | User | Action | Args |
| 2009-07-25 00:20:46 | yaneurabeya | set | messages: + msg90905 |
| 2009-07-24 12:09:34 | rpetrov | set | nosy:
+ rpetrov messages: + msg90881 |
| 2009-07-24 01:17:52 | yaneurabeya | create | |