Hello,

As some of you already know I've been doing some work on Cython on
Cygwin [in the process I I'm constantly mixing the two up in speech,
but maybe in writing I'll do better :)].

There are several issues with the tests on Cygwin, and that's one
thing I'll work on.  But a major annoyance I've encountered when
running any tests is a huge number of warnings from gcc such as:

embray@PC-pret-47 ~/src/cython
$ CFLAGS="-O0" ./runtests.py -vv --no-cpp addloop
Python 2.7.10 (default, Jun  1 2015, 18:05:38)
[GCC 4.9.2]

Running tests against Cython 0.24 f68b5bd0fa620d0dc26166bffe5fe42d94068720
Backends: c

runTest (__main__.CythonRunTestCase)
compiling (c) and running addloop ...
=== C/C++ compiler error output: ===
In file included from /usr/include/python2.7/Python.h:58:0,
                 from addloop.c:4:
/usr/include/python2.7/pyport.h:69:27: warning: ISO C90 does not
support ‘long long’ [-Wlong-long]
 #define PY_LONG_LONG long long
                           ^
/usr/include/python2.7/pyport.h:793:34: note: in definition of macro
‘PyAPI_FUNC’
 #       define PyAPI_FUNC(RTYPE) RTYPE
                                  ^
/usr/include/python2.7/intobject.h:46:21: note: in expansion of macro
‘PY_LONG_LONG’
 PyAPI_FUNC(unsigned PY_LONG_LONG) PyInt_AsUnsignedLongLongMask(PyObject *);
                     ^
In file included from /usr/include/python2.7/Python.h:58:0,
                 from addloop.c:4:
...

And so on.

For now an easy workaround is to add -Wno-long-long to the compiler
flags.  But I was curious why I was seeing this in Cygwin but not on
my Ubuntu system, and here's why:

In runtests.py there is a check

https://github.com/cython/cython/blob/master/runtests.py#L829

if self.language=='c' and compiler='gcc':
    ext_compile_flags.extend(['-std=c89', '-pedantic'])

where in this case `compiler` is assigned
`sysconfig.get_config_var('CC')`.  On my Linux system this expands to
"x86_64-linux-gnu-gcc -pthread".  Whereas on Cygwin (and probably many
other systems) it expands simply to "gcc".

I'm guessing that to do what it intended the above line should read
"and 'gcc' in compiler".

But this also raises the question: Why are the tests run with these
flags?  If Python was configured with HAVE_LONG_LONG, then these
warnings will be inevitable.

Thanks,
Erik
_______________________________________________
cython-devel mailing list
cython-devel@python.org
https://mail.python.org/mailman/listinfo/cython-devel

Reply via email to