[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