Package: src:python-bellows Version: 0.40.5-1 Severity: serious Tags: ftbfs trixie sid
Dear maintainer: During a rebuild of all packages in unstable, your package failed to build: -------------------------------------------------------------------------------- [...] debian/rules clean make: pyversions: No such file or directory py3versions: no X-Python3-Version in control file, using supported versions dh clean --buildsystem=pybuild --with python3 dh_auto_clean -O--buildsystem=pybuild dh_autoreconf_clean -O--buildsystem=pybuild dh_clean -O--buildsystem=pybuild debian/rules binary make: pyversions: No such file or directory py3versions: no X-Python3-Version in control file, using supported versions dh binary --buildsystem=pybuild --with python3 dh_update_autotools_config -O--buildsystem=pybuild dh_autoreconf -O--buildsystem=pybuild dh_auto_configure -O--buildsystem=pybuild [... snipped ...] flow_control = 'hardware' monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x7f4e71cddeb0> @pytest.mark.parametrize("flow_control", ["software", "hardware"]) async def test_connect(flow_control, monkeypatch): appmock = MagicMock() transport = MagicMock() async def mockconnect(loop, protocol_factory, **kwargs): protocol = protocol_factory() loop.call_soon(protocol.connection_made, transport) return None, protocol monkeypatch.setattr(serial_asyncio, "create_serial_connection", mockconnect) > gw = await uart.connect( conf.SCHEMA_DEVICE( { conf.CONF_DEVICE_PATH: "/dev/serial", conf.CONF_DEVICE_BAUDRATE: 115200, conf.CONF_DEVICE_FLOW_CONTROL: flow_control, } ), appmock, use_thread=False, ) tests/test_uart.py:24: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ bellows/uart.py:187: in connect protocol, _ = await _connect(config, application) bellows/uart.py:158: in _connect transport, _ = await zigpy.serial.create_serial_connection( /usr/lib/python3/dist-packages/zigpy/serial.py:137: in create_serial_connection raise exc.__context__ from None _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = Serial<id=0x7f4e71c78370, open=False>(port='/dev/serial', baudrate=115200, bytesize=8, parity='N', stopbits=1, timeout=None, xonxoff=False, rtscts=True, dsrdtr=False) def open(self): """\ Open port with current settings. This may throw a SerialException if the port cannot be opened.""" if self._port is None: raise SerialException("Port must be configured before it can be used.") if self.is_open: raise SerialException("Port is already open.") self.fd = None # open try: > self.fd = os.open(self.portstr, os.O_RDWR | os.O_NOCTTY | > os.O_NONBLOCK) E FileNotFoundError: [Errno 2] No such file or directory: '/dev/serial' /usr/lib/python3/dist-packages/serial/serialposix.py:322: FileNotFoundError ____________________________ test_connect_threaded _____________________________ monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x7f4e71c7bb00> async def test_connect_threaded(monkeypatch): appmock = MagicMock() transport = MagicMock() async def mockconnect(loop, protocol_factory, **kwargs): protocol = protocol_factory() loop.call_soon(protocol.connection_made, transport) return None, protocol monkeypatch.setattr(serial_asyncio, "create_serial_connection", mockconnect) def on_transport_close(): gw.connection_lost(None) transport.close.side_effect = on_transport_close > gw = await uart.connect( conf.SCHEMA_DEVICE( {conf.CONF_DEVICE_PATH: "/dev/serial", conf.CONF_DEVICE_BAUDRATE: 115200} ), appmock, ) tests/test_uart.py:56: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ bellows/uart.py:179: in connect protocol, connection_done = await thread.run_coroutine_threadsafe( bellows/uart.py:158: in _connect transport, _ = await zigpy.serial.create_serial_connection( /usr/lib/python3/dist-packages/zigpy/serial.py:137: in create_serial_connection raise exc.__context__ from None _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = Serial<id=0x7f4e71c60f10, open=False>(port='/dev/serial', baudrate=115200, bytesize=8, parity='N', stopbits=1, timeout=None, xonxoff=True, rtscts=False, dsrdtr=False) def open(self): """\ Open port with current settings. This may throw a SerialException if the port cannot be opened.""" if self._port is None: raise SerialException("Port must be configured before it can be used.") if self.is_open: raise SerialException("Port is already open.") self.fd = None # open try: > self.fd = os.open(self.portstr, os.O_RDWR | os.O_NOCTTY | > os.O_NONBLOCK) E FileNotFoundError: [Errno 2] No such file or directory: '/dev/serial' /usr/lib/python3/dist-packages/serial/serialposix.py:322: FileNotFoundError _________________ test_connection_lost_reset_error_propagation _________________ monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x7f4e721997f0> async def test_connection_lost_reset_error_propagation(monkeypatch): app = MagicMock() transport = MagicMock() async def mockconnect(loop, protocol_factory, **kwargs): protocol = protocol_factory() loop.call_soon(protocol.connection_made, transport) return None, protocol monkeypatch.setattr(serial_asyncio, "create_serial_connection", mockconnect) def on_transport_close(): gw.connection_lost(None) transport.close.side_effect = on_transport_close > gw = await uart.connect( conf.SCHEMA_DEVICE( {conf.CONF_DEVICE_PATH: "/dev/serial", conf.CONF_DEVICE_BAUDRATE: 115200} ), app, use_thread=False, # required until #484 is merged ) tests/test_uart.py:203: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ bellows/uart.py:187: in connect protocol, _ = await _connect(config, application) bellows/uart.py:158: in _connect transport, _ = await zigpy.serial.create_serial_connection( /usr/lib/python3/dist-packages/zigpy/serial.py:137: in create_serial_connection raise exc.__context__ from None _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = Serial<id=0x7f4e72ab2c20, open=False>(port='/dev/serial', baudrate=115200, bytesize=8, parity='N', stopbits=1, timeout=None, xonxoff=True, rtscts=False, dsrdtr=False) def open(self): """\ Open port with current settings. This may throw a SerialException if the port cannot be opened.""" if self._port is None: raise SerialException("Port must be configured before it can be used.") if self.is_open: raise SerialException("Port is already open.") self.fd = None # open try: > self.fd = os.open(self.portstr, os.O_RDWR | os.O_NOCTTY | > os.O_NONBLOCK) E FileNotFoundError: [Errno 2] No such file or directory: '/dev/serial' /usr/lib/python3/dist-packages/serial/serialposix.py:322: FileNotFoundError =============================== warnings summary =============================== tests/test_application.py::test_startup_no_status tests/test_application.py::test_startup_status_not_joined tests/test_application.py::test_startup_status_unknown tests/test_application.py::test_startup_end tests/test_application.py::test_shutdown /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/bellows/zigbee/application.py:439: RuntimeWarning: coroutine 'AsyncMockMixin._execute_mock_call' was never awaited self._ezsp.close() Enable tracemalloc to get traceback where the object was allocated. See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. tests/test_application.py::test_ensure_network_running_not_joined_success /usr/lib/python3.12/unittest/mock.py:2217: RuntimeWarning: coroutine 'AsyncMockMixin._execute_mock_call' was never awaited def __init__(self, name, parent): Enable tracemalloc to get traceback where the object was allocated. See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. tests/test_application.py::test_connect_failure /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build/bellows/zigbee/application.py:153: RuntimeWarning: coroutine 'AsyncMockMixin._execute_mock_call' was never awaited ezsp.close() Enable tracemalloc to get traceback where the object was allocated. See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html =========================== short test summary info ============================ FAILED tests/test_uart.py::test_connect[software] - FileNotFoundError: [Errno... FAILED tests/test_uart.py::test_connect[hardware] - FileNotFoundError: [Errno... FAILED tests/test_uart.py::test_connect_threaded - FileNotFoundError: [Errno ... FAILED tests/test_uart.py::test_connection_lost_reset_error_propagation - Fil... ================== 4 failed, 332 passed, 7 warnings in 10.13s ================== E: pybuild pybuild:389: test: plugin pyproject failed with: exit code=1: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12/build; python3.12 -m pytest tests I: pybuild base:311: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build; python3.13 -m pytest tests /usr/lib/python3/dist-packages/pytest_asyncio/plugin.py:207: PytestDeprecationWarning: The configuration option "asyncio_default_fixture_loop_scope" is unset. The event loop scope for asynchronous fixtures will default to the fixture caching scope. Future versions of pytest-asyncio will default the loop scope for asynchronous fixtures to function scope. Set the default fixture loop scope explicitly in order to avoid unexpected behavior in the future. Valid fixture loop scopes are: "function", "class", "module", "package", "session" warnings.warn(PytestDeprecationWarning(_DEFAULT_FIXTURE_LOOP_SCOPE_UNSET)) ============================= test session starts ============================== platform linux -- Python 3.13.2, pytest-8.3.4, pluggy-1.5.0 rootdir: /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build configfile: pyproject.toml plugins: asyncio-0.25.1, mock-3.14.0, typeguard-4.4.1, cov-5.0.0, timeout-2.3.1 asyncio: mode=Mode.AUTO, asyncio_default_fixture_loop_scope=None collected 336 items tests/test_application.py .............................................. [ 13%] ................................... [ 24%] tests/test_ash.py ........................... [ 32%] tests/test_commands.py .................... [ 38%] tests/test_ezsp.py ..................................................... [ 53%] ................. [ 58%] tests/test_ezsp_protocol.py ........ [ 61%] tests/test_ezsp_v10.py .... [ 62%] tests/test_ezsp_v11.py .. [ 63%] tests/test_ezsp_v12.py .. [ 63%] tests/test_ezsp_v13.py ........ [ 66%] tests/test_ezsp_v14.py ...... [ 67%] tests/test_ezsp_v4.py ........................ [ 75%] tests/test_ezsp_v5.py ...... [ 76%] tests/test_ezsp_v6.py ... [ 77%] tests/test_ezsp_v7.py ... [ 78%] tests/test_ezsp_v8.py .... [ 79%] tests/test_ezsp_v9.py ..... [ 81%] tests/test_multicast.py ......... [ 83%] tests/test_thread.py ............ [ 87%] tests/test_types.py ....... [ 89%] tests/test_uart.py FFF........F... [ 94%] tests/test_util.py ...... [ 95%] tests/test_zigbee_repairs.py .............. [100%] =================================== FAILURES =================================== ____________________________ test_connect[software] ____________________________ flow_control = 'software' monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x7f0852ca2e40> @pytest.mark.parametrize("flow_control", ["software", "hardware"]) async def test_connect(flow_control, monkeypatch): appmock = MagicMock() transport = MagicMock() async def mockconnect(loop, protocol_factory, **kwargs): protocol = protocol_factory() loop.call_soon(protocol.connection_made, transport) return None, protocol monkeypatch.setattr(serial_asyncio, "create_serial_connection", mockconnect) > gw = await uart.connect( conf.SCHEMA_DEVICE( { conf.CONF_DEVICE_PATH: "/dev/serial", conf.CONF_DEVICE_BAUDRATE: 115200, conf.CONF_DEVICE_FLOW_CONTROL: flow_control, } ), appmock, use_thread=False, ) tests/test_uart.py:24: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ bellows/uart.py:187: in connect protocol, _ = await _connect(config, application) bellows/uart.py:158: in _connect transport, _ = await zigpy.serial.create_serial_connection( /usr/lib/python3/dist-packages/zigpy/serial.py:137: in create_serial_connection raise exc.__context__ from None _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = Serial<id=0x7f08500a3be0, open=False>(port='/dev/serial', baudrate=115200, bytesize=8, parity='N', stopbits=1, timeout=None, xonxoff=False, rtscts=True, dsrdtr=False) def open(self): """\ Open port with current settings. This may throw a SerialException if the port cannot be opened.""" if self._port is None: raise SerialException("Port must be configured before it can be used.") if self.is_open: raise SerialException("Port is already open.") self.fd = None # open try: > self.fd = os.open(self.portstr, os.O_RDWR | os.O_NOCTTY | > os.O_NONBLOCK) E FileNotFoundError: [Errno 2] No such file or directory: '/dev/serial' /usr/lib/python3/dist-packages/serial/serialposix.py:322: FileNotFoundError ____________________________ test_connect[hardware] ____________________________ flow_control = 'hardware' monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x7f0852ca0f30> @pytest.mark.parametrize("flow_control", ["software", "hardware"]) async def test_connect(flow_control, monkeypatch): appmock = MagicMock() transport = MagicMock() async def mockconnect(loop, protocol_factory, **kwargs): protocol = protocol_factory() loop.call_soon(protocol.connection_made, transport) return None, protocol monkeypatch.setattr(serial_asyncio, "create_serial_connection", mockconnect) > gw = await uart.connect( conf.SCHEMA_DEVICE( { conf.CONF_DEVICE_PATH: "/dev/serial", conf.CONF_DEVICE_BAUDRATE: 115200, conf.CONF_DEVICE_FLOW_CONTROL: flow_control, } ), appmock, use_thread=False, ) tests/test_uart.py:24: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ bellows/uart.py:187: in connect protocol, _ = await _connect(config, application) bellows/uart.py:158: in _connect transport, _ = await zigpy.serial.create_serial_connection( /usr/lib/python3/dist-packages/zigpy/serial.py:137: in create_serial_connection raise exc.__context__ from None _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = Serial<id=0x7f08500a2950, open=False>(port='/dev/serial', baudrate=115200, bytesize=8, parity='N', stopbits=1, timeout=None, xonxoff=False, rtscts=True, dsrdtr=False) def open(self): """\ Open port with current settings. This may throw a SerialException if the port cannot be opened.""" if self._port is None: raise SerialException("Port must be configured before it can be used.") if self.is_open: raise SerialException("Port is already open.") self.fd = None # open try: > self.fd = os.open(self.portstr, os.O_RDWR | os.O_NOCTTY | > os.O_NONBLOCK) E FileNotFoundError: [Errno 2] No such file or directory: '/dev/serial' /usr/lib/python3/dist-packages/serial/serialposix.py:322: FileNotFoundError ____________________________ test_connect_threaded _____________________________ monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x7f0852ca0d70> async def test_connect_threaded(monkeypatch): appmock = MagicMock() transport = MagicMock() async def mockconnect(loop, protocol_factory, **kwargs): protocol = protocol_factory() loop.call_soon(protocol.connection_made, transport) return None, protocol monkeypatch.setattr(serial_asyncio, "create_serial_connection", mockconnect) def on_transport_close(): gw.connection_lost(None) transport.close.side_effect = on_transport_close > gw = await uart.connect( conf.SCHEMA_DEVICE( {conf.CONF_DEVICE_PATH: "/dev/serial", conf.CONF_DEVICE_BAUDRATE: 115200} ), appmock, ) tests/test_uart.py:56: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ bellows/uart.py:179: in connect protocol, connection_done = await thread.run_coroutine_threadsafe( bellows/uart.py:158: in _connect transport, _ = await zigpy.serial.create_serial_connection( /usr/lib/python3/dist-packages/zigpy/serial.py:137: in create_serial_connection raise exc.__context__ from None _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = Serial<id=0x7f0852041f90, open=False>(port='/dev/serial', baudrate=115200, bytesize=8, parity='N', stopbits=1, timeout=None, xonxoff=True, rtscts=False, dsrdtr=False) def open(self): """\ Open port with current settings. This may throw a SerialException if the port cannot be opened.""" if self._port is None: raise SerialException("Port must be configured before it can be used.") if self.is_open: raise SerialException("Port is already open.") self.fd = None # open try: > self.fd = os.open(self.portstr, os.O_RDWR | os.O_NOCTTY | > os.O_NONBLOCK) E FileNotFoundError: [Errno 2] No such file or directory: '/dev/serial' /usr/lib/python3/dist-packages/serial/serialposix.py:322: FileNotFoundError _________________ test_connection_lost_reset_error_propagation _________________ monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x7f0850cb25f0> async def test_connection_lost_reset_error_propagation(monkeypatch): app = MagicMock() transport = MagicMock() async def mockconnect(loop, protocol_factory, **kwargs): protocol = protocol_factory() loop.call_soon(protocol.connection_made, transport) return None, protocol monkeypatch.setattr(serial_asyncio, "create_serial_connection", mockconnect) def on_transport_close(): gw.connection_lost(None) transport.close.side_effect = on_transport_close > gw = await uart.connect( conf.SCHEMA_DEVICE( {conf.CONF_DEVICE_PATH: "/dev/serial", conf.CONF_DEVICE_BAUDRATE: 115200} ), app, use_thread=False, # required until #484 is merged ) tests/test_uart.py:203: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ bellows/uart.py:187: in connect protocol, _ = await _connect(config, application) bellows/uart.py:158: in _connect transport, _ = await zigpy.serial.create_serial_connection( /usr/lib/python3/dist-packages/zigpy/serial.py:137: in create_serial_connection raise exc.__context__ from None _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = Serial<id=0x7f0852041e70, open=False>(port='/dev/serial', baudrate=115200, bytesize=8, parity='N', stopbits=1, timeout=None, xonxoff=True, rtscts=False, dsrdtr=False) def open(self): """\ Open port with current settings. This may throw a SerialException if the port cannot be opened.""" if self._port is None: raise SerialException("Port must be configured before it can be used.") if self.is_open: raise SerialException("Port is already open.") self.fd = None # open try: > self.fd = os.open(self.portstr, os.O_RDWR | os.O_NOCTTY | > os.O_NONBLOCK) E FileNotFoundError: [Errno 2] No such file or directory: '/dev/serial' /usr/lib/python3/dist-packages/serial/serialposix.py:322: FileNotFoundError =============================== warnings summary =============================== tests/test_application.py::test_startup_no_status tests/test_application.py::test_startup_status_not_joined tests/test_application.py::test_startup_status_unknown tests/test_application.py::test_startup_end tests/test_application.py::test_shutdown /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/bellows/zigbee/application.py:439: RuntimeWarning: coroutine 'AsyncMockMixin._execute_mock_call' was never awaited self._ezsp.close() Enable tracemalloc to get traceback where the object was allocated. See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. tests/test_application.py::test_energy_scanning_partial /usr/lib/python3.13/unittest/mock.py:2245: RuntimeWarning: coroutine 'AsyncMockMixin._execute_mock_call' was never awaited def __init__(self, name, parent): Enable tracemalloc to get traceback where the object was allocated. See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. tests/test_application.py::test_connect_failure /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build/bellows/zigbee/application.py:153: RuntimeWarning: coroutine 'AsyncMockMixin._execute_mock_call' was never awaited ezsp.close() Enable tracemalloc to get traceback where the object was allocated. See https://docs.pytest.org/en/stable/how-to/capture-warnings.html#resource-warnings for more info. -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html =========================== short test summary info ============================ FAILED tests/test_uart.py::test_connect[software] - FileNotFoundError: [Errno... FAILED tests/test_uart.py::test_connect[hardware] - FileNotFoundError: [Errno... FAILED tests/test_uart.py::test_connect_threaded - FileNotFoundError: [Errno ... FAILED tests/test_uart.py::test_connection_lost_reset_error_propagation - Fil... ================== 4 failed, 332 passed, 7 warnings in 8.07s =================== E: pybuild pybuild:389: test: plugin pyproject failed with: exit code=1: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13/build; python3.13 -m pytest tests dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p "3.12 3.13" returned exit code 13 make: *** [debian/rules:7: binary] Error 25 dpkg-buildpackage: error: debian/rules binary subprocess returned exit status 2 -------------------------------------------------------------------------------- The above is just how the build ends and not necessarily the most relevant part. If required, the full build log is available here: https://people.debian.org/~sanvila/build-logs/202502/ About the archive rebuild: The build was made on virtual machines from AWS, using sbuild and a reduced chroot with only build-essential packages. If you could not reproduce the bug please contact me privately, as I am willing to provide ssh access to a virtual machine where the bug is fully reproducible. If this is really a bug in one of the build-depends, please use reassign and add an affects on src:python-bellows, so that this is still visible in the BTS web page for this package. Thanks.