← Back to team overview

touch-packages team mailing list archive

[Bug 1477759] Re: pyqt5 misbuild with python3.5

 

This is a bug in either python3.5 or in dh-python, I'm not sure which.
dh-python inspects sysconfig for the interpreter version to determine
the filenames it should use.  The code it runs is:

$ python3.5
>>> import sysconfig as s
>>> print("__SEP__".join(i or "" for i in s.get_config_vars("SOABI","MULTIARCH","INCLUDEPY","LIBPL","LDLIBRARY")))
cpython-35m-x86_64-linux-gnu__SEP__x86_64-linux-gnu__SEP__/usr/include/python3.5m__SEP__${prefix}/lib/python3.5/config-3.5m-x86_64-linux-gnu__SEP__libpython3.5m.so
>>>

on python3.4, this gives:

$ python3.4
>>> import sysconfig as s
>>> print("__SEP__".join(i or "" for i in s.get_config_vars("SOABI","MULTIARCH","INCLUDEPY","LIBPL","LDLIBRARY")))
cpython-34m__SEP__x86_64-linux-gnu__SEP__/usr/include/python3.4m__SEP__/usr/lib/python3.4/config-3.4m-x86_64-linux-gnu__SEP__libpython3.4m.so
>>> 

The difference between 3.4 and 3.5 is that the multiarch string is now
included as *part of* the SOABI variable; so concatenating the two
variables to form the filename means that the architecture name is
doubled when it shouldn't be.

This is bound to cause misbuilds of a number of python extensions, which
will need to be rebuilt once this is fixed.

Assuming the python3.5 behavior is a deliberate change that should not
be reverted, it seems it should be a simple thing to check that the
multiarch value isn't a substring of the SOABI.

** Changed in: dh-python (Ubuntu)
   Importance: High => Critical

-- 
You received this bug notification because you are a member of Ubuntu
Touch seeded packages, which is subscribed to dh-python in Ubuntu.
https://bugs.launchpad.net/bugs/1477759

Title:
  pyqt5 misbuild with python3.5

Status in dh-python package in Ubuntu:
  Triaged
Status in pyqt5 package in Ubuntu:
  Triaged
Status in python3.5 package in Ubuntu:
  Triaged
Status in dh-python source package in Wily:
  Triaged
Status in pyqt5 source package in Wily:
  Triaged
Status in python3.5 source package in Wily:
  Triaged

Bug description:
  pyqt5 fails its autopkgtests after rebuild with python3.5, with a
  failure to find the enginio module under python3.5:

  testing python3.5
  Traceback (most recent call last):
    File "test_import.py", line 1, in <module>
      from PyQt5.Enginio import EnginioClient
  ImportError: No module named 'PyQt5.Enginio'

  <http://d-jenkins.ubuntu-ci:8080/view/Wily/view/AutoPkgTest/job/wily-
  adt-pyqt5/35/ARCH=i386,label=adt/console>

  This is because the filename is wrong inside the package; the
  architecture string is doubled:

  $ dpkg -L python3-pyqt5.enginio | grep '\.so'
  /usr/lib/python3/dist-packages/PyQt5/Enginio.cpython-35m-x86_64-linux-gnu-x86_64-linux-gnu.so
  /usr/lib/python3/dist-packages/PyQt5/Enginio.cpython-34m-x86_64-linux-gnu.so
  $

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/dh-python/+bug/1477759/+subscriptions