pyqt5 misbuild with python3.5

Bug #1477759 reported by Steve Langasek
8
This bug affects 1 person
Affects Status Importance Assigned to Milestone
comedilib (Ubuntu)
Fix Released
High
Unassigned
Wily
Fix Released
High
Unassigned
dh-python (Ubuntu)
Fix Released
Critical
Matthias Klose
Wily
Fix Released
Critical
Matthias Klose
newt (Ubuntu)
Fix Released
High
Unassigned
Wily
Fix Released
High
Unassigned
pyqt5 (Ubuntu)
Fix Released
High
Unassigned
Wily
Fix Released
High
Unassigned
python3.5 (Ubuntu)
Fix Released
High
Matthias Klose
Wily
Fix Released
High
Matthias Klose

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
$

Steve Langasek (vorlon)
Changed in pyqt5 (Ubuntu):
status: New → Triaged
importance: Undecided → High
Steve Langasek (vorlon)
Changed in python3.5 (Ubuntu):
status: New → Triaged
importance: Undecided → High
assignee: nobody → Barry Warsaw (barry)
Changed in dh-python (Ubuntu):
assignee: nobody → Barry Warsaw (barry)
status: New → Triaged
importance: Undecided → High
Revision history for this message
Steve Langasek (vorlon) wrote :

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
Revision history for this message
Steve Langasek (vorlon) wrote :

The following binary packages appear to be affected by the bug and will need rebuilt:

$ zgrep -h x86_64-linux-gnu-x86_64-linux-gnu ~/ubuntu/dists/wily{-proposed,}/Contents-amd64.gz | sed -e's,.*/,,' | sort -u
python3-comedilib
python3-dbus.mainloop.pyqt5
python3-dbus.mainloop.pyqt5-dbg
python3-newt
python3-newt-dbg
python3-pyqt5
python3-pyqt5-dbg
python3-pyqt5.enginio
python3-pyqt5.enginio-dbg
python3-pyqt5.qtmultimedia
python3-pyqt5.qtmultimedia-dbg
python3-pyqt5.qtopengl
python3-pyqt5.qtopengl-dbg
python3-pyqt5.qtpositioning
python3-pyqt5.qtpositioning-dbg
python3-pyqt5.qtquick
python3-pyqt5.qtquick-dbg
python3-pyqt5.qtsensors
python3-pyqt5.qtsensors-dbg
python3-pyqt5.qtserialport
python3-pyqt5.qtserialport-dbg
python3-pyqt5.qtsql
python3-pyqt5.qtsql-dbg
python3-pyqt5.qtsvg
python3-pyqt5.qtsvg-dbg
python3-pyqt5.qtwebkit
python3-pyqt5.qtwebkit-dbg
python3-pyqt5.qtwebsockets
python3-pyqt5.qtwebsockets-dbg
python3-pyqt5.qtx11extras
python3-pyqt5.qtx11extras-dbg
python3-pyqt5.qtxmlpatterns
python3-pyqt5.qtxmlpatterns-dbg
python3-sip
python3-sip-dbg
$

Affected source packages are comedilib, pyqt5, newt, sip4.

Revision history for this message
Matthias Klose (doko) wrote :

there are two issues, one in dh-python which will be addressed in dh-python, and http://bugs.python.org/issue24705, which I'll address.

Matthias Klose (doko)
Changed in python3.5 (Ubuntu Wily):
assignee: Barry Warsaw (barry) → Matthias Klose (doko)
Matthias Klose (doko)
Changed in dh-python (Ubuntu Wily):
assignee: Barry Warsaw (barry) → Matthias Klose (doko)
Revision history for this message
Steve Langasek (vorlon) wrote :

comedilib is doing its own filename translation, not just relying on dh-python; so further fixes are needed for that package beyond a no-change rebuild.

Changed in comedilib (Ubuntu Wily):
importance: Undecided → High
status: New → Triaged
Revision history for this message
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package python3.5 - 3.5.0~b3-1ubuntu2

---------------
python3.5 (3.5.0~b3-1ubuntu2) wily; urgency=medium

  * Fix expansion of makefile macros for _sysconfigdata. Issue #24705.
    LP: #1477759.

 -- Matthias Klose <email address hidden> Fri, 24 Jul 2015 15:25:23 +0200

Changed in python3.5 (Ubuntu Wily):
status: Triaged → Fix Released
Revision history for this message
Steve Langasek (vorlon) wrote :

newt is also misbuilding including with the new dh-python.

Changed in newt (Ubuntu Wily):
importance: Undecided → High
status: New → Triaged
Steve Langasek (vorlon)
Changed in pyqt5 (Ubuntu Wily):
status: Triaged → Fix Committed
Steve Langasek (vorlon)
Changed in dh-python (Ubuntu Wily):
status: Triaged → Fix Committed
Revision history for this message
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package newt - 0.52.15-3ubuntu4

---------------
newt (0.52.15-3ubuntu4) wily; urgency=medium

  * Fix the abi tag for python3.5. LP: #1477759.

 -- Matthias Klose <email address hidden> Fri, 24 Jul 2015 22:25:34 +0200

Changed in newt (Ubuntu Wily):
status: Triaged → Fix Released
Revision history for this message
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package pyqt5 - 5.4.2+dfsg-1build2

---------------
pyqt5 (5.4.2+dfsg-1build2) wily; urgency=medium

  * No-change rebuild with fixed dh-python. LP: #1477759

 -- Steve Langasek <email address hidden> Fri, 24 Jul 2015 11:12:51 -0700

Changed in pyqt5 (Ubuntu Wily):
status: Fix Committed → Fix Released
Revision history for this message
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package comedilib - 0.10.2-2ubuntu1

---------------
comedilib (0.10.2-2ubuntu1) wily; urgency=medium

  * Fix extension names for python3.5. LP: #1477759.

 -- Matthias Klose <email address hidden> Sat, 25 Jul 2015 11:17:06 +0200

Changed in comedilib (Ubuntu Wily):
status: Triaged → Fix Released
Revision history for this message
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package dh-python - 2.20150719ubuntu2

---------------
dh-python (2.20150719ubuntu2) wily; urgency=medium

  * debian/tests/dh-python: Python 2.6 is uninstallable and unsupported.

 -- Barry Warsaw <email address hidden> Fri, 14 Aug 2015 11:28:09 -0400

Changed in dh-python (Ubuntu Wily):
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.