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.
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.