Comment 2 for bug 1937261

Revision history for this message
Christian Rohmann (christian-rohmann) wrote (last edit ): Re: msgpack upgrade to 0.6.2 breaks linuxbridge agent

One more update on the actual cause of the missing cmsg shared object of msgpack in the Ubuntu Cloud Archive package for Ussuri on Ubuntu Bionic ...

Even with cython available the build simply fails, but that that is gracefully ignored:

--- cut ---

[...]
running build_py
creating /root/SOURCE/python-msgpack-0.6.2/.pybuild/cpython3_3.6/build/msgpack
copying msgpack/_version.py -> /root/SOURCE/python-msgpack-0.6.2/.pybuild/cpython3_3.6/build/msgpack
copying msgpack/__init__.py -> /root/SOURCE/python-msgpack-0.6.2/.pybuild/cpython3_3.6/build/msgpack
copying msgpack/fallback.py -> /root/SOURCE/python-msgpack-0.6.2/.pybuild/cpython3_3.6/build/msgpack
copying msgpack/exceptions.py -> /root/SOURCE/python-msgpack-0.6.2/.pybuild/cpython3_3.6/build/msgpack
running build_ext
cythonize: 'msgpack/_cmsgpack.pyx'

Error compiling Cython file:
------------------------------------------------------------
...
# coding: utf-8

from cpython cimport *
from cpython.bytearray cimport PyByteArray_Check, PyByteArray_CheckExact
^
------------------------------------------------------------

msgpack/_packer.pyx:4:0: 'cpython/bytearray.pxd' not found

[...]

Error compiling Cython file:
------------------------------------------------------------
...
cdef inline int PyBytesLike_Check(object o):
    return PyBytes_Check(o) or PyByteArray_Check(o)

cdef inline int PyBytesLike_CheckExact(object o):
    return PyBytes_CheckExact(o) or PyByteArray_CheckExact(o)
                                                         ^
------------------------------------------------------------

msgpack/_packer.pyx:53:58: 'PyByteArray_CheckExact' is not a constant, variable or function identifier
building 'msgpack._cmsgpack' extension
creating build
creating build/temp.linux-x86_64-3.6
creating build/temp.linux-x86_64-3.6/msgpack
x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -g -O2 -fdebug-prefix-map=/root/SOURCE/python-msgpack-0.6.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -D__LITTLE_ENDIAN__=1 -I. -I/usr/include/python3.6m -c msgpack/_cmsgpack.cpp -o build/temp.linux-x8
6_64-3.6/msgpack/_cmsgpack.o
msgpack/_cmsgpack.cpp:1:2: error: #error Do not use this file, it is the result of a failed Cython compilation.
 #error Do not use this file, it is the result of a failed Cython compilation.
  ^~~~~
WARNING: Failed to compile extension modules.
msgpack uses fallback pure python implementation.
command 'x86_64-linux-gnu-gcc' failed with exit status 1
   debian/rules override_dh_auto_test
make[1]: Entering directory '/root/SOURCE/python-msgpack-0.6.2'
pyversions: missing X(S)-Python-Version in control file, fall back to debian/pyversions
[...]

--- cut ---

Reason for this should be that Ubuntu Bionic only has Cython 0.26, but PyByteArray was only added with 0.29 ... https://github.com/cython/cython/pull/2573

I installed cython 0.29.24 via pip3

--- cut ---
# pip3 show cython
Name: Cython
Version: 0.29.24
Summary: The Cython compiler for writing C extensions for the Python language.
Home-page: http://cython.org/
Author: Robert Bradshaw, Stefan Behnel, Dag Seljebotn, Greg Ewing, et al.
Author-email: <email address hidden>
License: Apache
Location: /usr/local/lib/python3.6/dist-packages
Requires:
--- cut ---

and rebuild the package otherwise unchanged and things now just work.

So I am pretty certain it's only the Cython version that is too old here.