[Python-modules-team] Bug#811953: python-cffi: FTBFS with GCC 6: left shift of negative value

Martin Michlmayr tbm at hpe.com
Wed Jan 20 04:00:38 UTC 2016


Package: python-cffi
Version: 1.4.2-2
Severity: important
User: debian-gcc at lists.debian.org
Usertags: ftbfs-gcc-6 gcc-6-shift-negative-value

This package fails to build with GCC 6.  GCC 6 has not been released
yet, but it's expected that GCC 6 will become the default compiler for
stretch.

Note that only the first error is reported; there might be more.  You
can find a snapshot of GCC 6 in experimental.  To build with GCC 6,
you can set CC=gcc-6 CXX=g++-6 explicitly.

You may be able to find out more about this issue at
https://gcc.gnu.org/gcc-6/changes.html

> sbuild (Debian sbuild) 0.67.0 (26 Dec 2015) on dl580gen9-02.hlinux
...
> building 'verify209' extension
> x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/usr/include/python2.7 -c verify209.c -o ./verify209.o -Werror -Wall -Wextra -Wconversion
> ----------------------------- Captured stderr call -----------------------------
> verify209.c: In function '_cffi_const_BB':
> verify209.c:437:34: error: left shift of negative value [-Werror=shift-negative-value]
>    *o = (unsigned long long)((BB) << 0);  /* check that BB is an integer */
>                                   ^~
> 
> cc1: all warnings being treated as errors
> __________________________ test_global_const_int_size __________________________
> 
>     def test_global_const_int_size():
>         # integer constants: ignore the declared type, always just use the value
>         for value in [-2**63, -2**31, -2**15,
>                       2**15-1, 2**15, 2**31-1, 2**31, 2**32-1, 2**32,
>                       2**63-1, 2**63, 2**64-1]:
>             ffi = FFI()
>             if value == int(ffi.cast("long long", value)):
>                 if value < 0:
>                     vstr = '(-%dLL-1)' % (~value,)
>                 else:
>                     vstr = '%dLL' % value
>             elif value == int(ffi.cast("unsigned long long", value)):
>                 vstr = '%dULL' % value
>             else:
>                 raise AssertionError(value)
>             ffi.cdef("static const unsigned short AA;")
> >           lib = ffi.verify("#define AA %s\n" % vstr)
> 
> testing/cffi1/test_verify1.py:678: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> testing/cffi1/test_verify1.py:41: in verify
>     **kwds)
> cffi/recompiler.py:1356: in _verify
>     outputfilename = recompile(ffi, module_name, preamble, *args, **kwds)
> cffi/recompiler.py:1334: in recompile
>     outputfilename = ffiplatform.compile('.', ext, compiler_verbose)
> cffi/ffiplatform.py:29: in compile
>     outputfilename = _build(tmpdir, ext, compiler_verbose)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> tmpdir = '.', ext = <distutils.extension.Extension instance at 0x7faeb0d68560>
> compiler_verbose = 1
> 
>     def _build(tmpdir, ext, compiler_verbose=0):
>         # XXX compact but horrible :-(
>         from distutils.core import Distribution
>         import distutils.errors, distutils.log
>         #
>         dist = Distribution({'ext_modules': [ext]})
>         dist.parse_config_files()
>         options = dist.get_option_dict('build_ext')
>         options['force'] = ('ffiplatform', True)
>         options['build_lib'] = ('ffiplatform', tmpdir)
>         options['build_temp'] = ('ffiplatform', tmpdir)
>         #
>         try:
>             old_level = distutils.log.set_threshold(0) or 0
>             try:
>                 distutils.log.set_verbosity(compiler_verbose)
>                 dist.run_command('build_ext')
>             finally:
>                 distutils.log.set_threshold(old_level)
>         except (distutils.errors.CompileError,
>                 distutils.errors.LinkError) as e:
> >           raise VerificationError('%s: %s' % (e.__class__.__name__, e))
> E           VerificationError: CompileError: command 'x86_64-linux-gnu-gcc' failed with exit status 1
> 
> cffi/ffiplatform.py:60: VerificationError
> ----------------------------- Captured stdout call -----------------------------
> running build_ext
> building 'verify210' extension
> x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/usr/include/python2.7 -c verify210.c -o ./verify210.o -Werror -Wall -Wextra -Wconversion
> ----------------------------- Captured stderr call -----------------------------
> verify210.c: In function '_cffi_const_AA':
> verify210.c:426:34: error: left shift of negative value [-Werror=shift-negative-value]
>    *o = (unsigned long long)((AA) << 0);  /* check that AA is an integer */
>                                   ^~
> 
> cc1: all warnings being treated as errors



More information about the Python-modules-team mailing list