dbus-python fails to build with Python 3.9.0a2.
ERROR: test/test-p2p
====================
/builddir/build/BUILD/dbus-python-1.2.8/python3-build/./test/test-p2p.py:32: DeprecationWarning: Importing dbus.glib to use the GLib main loop with dbus-python is deprecated.
Instead, use this sequence:
from dbus.mainloop.glib import DBusGMainLoop
DBusGMainLoop(set_as_default=True)
import dbus.glib
Traceback (most recent call last):
File "/builddir/build/BUILD/dbus-python-1.2.8/python3-build/./test/test-p2p.py", line 33, in <module>
import dbus.service
File "/builddir/build/BUILD/dbus-python-1.2.8/python3-build/dbus/service.py", line 33, in <module>
from collections import Sequence
ImportError: cannot import name 'Sequence' from 'collections' (/usr/lib64/python3.9/collections/__init__.py)
ERROR: test/test-p2p.py - missing test plan
ERROR: test/test-p2p.py - exited with status 1
ERROR: test/test-signals
========================
/builddir/build/BUILD/dbus-python-1.2.8/python3-build/./test/test-signals.py:34: DeprecationWarning: Importing dbus.glib to use the GLib main loop with dbus-python is deprecated.
Instead, use this sequence:
from dbus.mainloop.glib import DBusGMainLoop
DBusGMainLoop(set_as_default=True)
import dbus.glib
Traceback (most recent call last):
File "/builddir/build/BUILD/dbus-python-1.2.8/python3-build/./test/test-signals.py", line 35, in <module>
import dbus.service
File "/builddir/build/BUILD/dbus-python-1.2.8/python3-build/dbus/service.py", line 33, in <module>
from collections import Sequence
ImportError: cannot import name 'Sequence' from 'collections' (/usr/lib64/python3.9/collections/__init__.py)
ERROR: test/test-signals.py - missing test plan
ERROR: test/test-signals.py - exited with status 1
ERROR: test/run-test
====================
# DBUS_TOP_SRCDIR=/builddir/build/BUILD/dbus-python-1.2.8/python3-build
# DBUS_TOP_BUILDDIR=/builddir/build/BUILD/dbus-python-1.2.8/python3-build
# PYTHONPATH=/builddir/build/BUILD/dbus-python-1.2.8/python3-build:/builddir/build/BUILD/dbus-python-1.2.8/python3-build/test:/builddir/build/BUILD/dbus-python-1.2.8/python3-build/.libs:/builddir/build/BUILD/dbus-python-1.2.8/python3-build/test/.libs
# PYTHON=/usr/bin/python3
dbus-daemon[16464]: [session uid=1001 pid=16464] Connection :1.0 (uid=1001 pid=16469 comm="dbus-monitor " label="unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023") became a monitor.
/builddir/build/BUILD/dbus-python-1.2.8/python3-build/test/cross-test-server.py:33: DeprecationWarning: Importing dbus.glib to use the GLib main loop with dbus-python is deprecated.
Instead, use this sequence:
from dbus.mainloop.glib import DBusGMainLoop
DBusGMainLoop(set_as_default=True)
import dbus.glib
Traceback (most recent call last):
File "/builddir/build/BUILD/dbus-python-1.2.8/python3-build/test/cross-test-server.py", line 35, in <module>
from dbus.service import BusName
File "/builddir/build/BUILD/dbus-python-1.2.8/python3-build/dbus/service.py", line 33, in <module>
from collections import Sequence
ImportError: cannot import name 'Sequence' from 'collections' (/usr/lib64/python3.9/collections/__init__.py)
dbus-daemon[16464]: [session uid=1001 pid=16464] Reloaded configuration
timed out
# running cross-test (for better diagnostics use mjj29's dbus-test)
ERROR: test/run-test.sh - missing test plan
ERROR: test/run-test.sh - exited with status 1
Importing abc classes from collections was deprecated since at least Python 3.7 and now it is dropped from 3.9.
The easiest way out of this is to drop the Python 2 package (bz1787240) and patch the sources to import Sequence (and possibly others) from collections.abc.
Or alternatively, if Python 2 support is still desired (maybe in upstream):
-from collections import Sequence
from dbus._compat import is_py2
+if is_py2:
+ from collections import Sequence
+else:
+ from collections.abc import Sequence
(That is what we have built in our copr for now.)
For the build logs, see:
https://copr-be.cloud.fedoraproject.org/results/@python/python3.9/fedora-rawhide-x86_64/01139990-dbus-python/
For all our attempts to build dbus-python with Python 3.9, see:
https://copr.fedorainfracloud.org/coprs/g/python/python3.9/package/dbus-python/
Testing and mass rebuild of packages is happening in copr. You can follow these instructions to test locally in mock if your package builds with Python 3.9:
https://copr.fedorainfracloud.org/coprs/g/python/python3.9/
Let us know here if you have any questions.
Python 3.9 will be included in Fedora 33, but the initial bootstrapping has already started.
A build failure this early in the bootstrap sequence blocks us very much.