Comment 6 for bug 1964791

Revision history for this message
Maia Everett (linneris) wrote (last edit ): Re: [SRU] Please sync quodlibet 4.5.0-1 from Debian unstable into jammy (was: Quod Libet fails to start with python 3.10, the default for Jammy)

[Impact]

With Python 3.10 as default, Quod Libet 4.4.0 is completely broken for Ubuntu 22.04 users. It fails to start with the following error:

E: 0.321: errorreport.main.errorhook: collection.py:27:<module>: ImportError: cannot import name 'Iterable' from 'collections' (/usr/lib64/python3.10/collections/__init__.py)
Error in sys.excepthook:
Traceback (most recent call last):
  File "/usr/lib/python3.10/site-packages/quodlibet/errorreport/main.py", line 175, in errorhook
    sentry_error = sentry.capture(exc_info, fingerprint=fingerprint)
  File "/usr/lib/python3.10/site-packages/quodlibet/errorreport/sentrywrapper.py", line 247, in capture
    client = Client(
  File "/usr/lib/python3.10/site-packages/quodlibet/packages/raven/base.py", line 224, in __init__
    from raven.context import Context
  File "/usr/lib/python3.10/site-packages/quodlibet/_import.py", line 47, in load_module
    mod = importlib.import_module(loadname)
  File "/usr/lib64/python3.10/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "/usr/lib/python3.10/site-packages/quodlibet/packages/raven/context.py", line 10, in <module>
    from collections import Mapping, Iterable
ImportError: cannot import name 'Mapping' from 'collections' (/usr/lib64/python3.10/collections/__init__.py)

The issue is fixed in Quod Libet 4.5.0, which made it into Debian but not the Jammy release. It should therefore be automatically fixed once the Debian package is autosynced into development version 22.10.

[Test Plan]

* Install quodlibet into Ubuntu Jammy: sudo apt-get install quodlibet
* Try to launch it: quodlibet
* Observe the above stack trace.
* Build and install quodlibet package version 4.5.0-1 from Debian.
* Observe that the application correctly starts and runs.

I myself have tested quodlibet 4.5.0-1 on my machine after doing a no-change Jammy build with pbuilder.

[Where problems could occur]

Quod Libet is a GUI application and, as such, should not break any software that could depend on it as a command line application or a library.

The changelog between 4.4.0 and 4.5.0 consists of minor quality of life features and bugfixes, so it is unlikely that anything will be broken. I myself use Quod Libet as my primary music player, and so far 4.5.0-1 from Debian works correctly for me.

In the current Jammy archive, the following packages depend on quodlibet:

 |cairo-dock-musicplayer-plug-in
  task-xfce-desktop
  puddletag
  playerctl
  fvwm-crystal

All of them list quodlibet in the Recommends or Suggests section, not Depends. fvwm-crystal specifically recommends several music player alternatives, not necessarily quodlibet. As the MPRIS functionality did not change in 4.5.0, it is unlikely that any applications using MPRIS to control Quod Libet would be affected.

An alternative to updating to stable release 4.5.0 would be cherry-picking the Python 3.10 incompatibility fix to version 4.4.0. If the SRU for 4.5.0 is denied, I will prepare a patched 4.4.0 package instead.