Package: src:python-scrapli Version: 2023.7.30-5 Severity: serious Tags: ftbfs forky sid
Dear maintainer: During a rebuild of all packages in unstable, this package failed to build. Below you will find the last part of the build log (probably the most relevant part, but not necessarily). If required, the full build log is available here: https://people.debian.org/~sanvila/build-logs/202606/ 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 cannot 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-scrapli, so that this is still visible in the BTS web page for this package. Thanks. -------------------------------------------------------------------------------- [...] debian/rules clean make: pyversions: No such file or directory py3versions: no X-Python3-Version in control file, using supported versions dh clean --with python3 --buildsystem=pybuild debian/rules override_dh_auto_clean make[1]: Entering directory '/<<PKGBUILDDIR>>' make[1]: pyversions: No such file or directory py3versions: no X-Python3-Version in control file, using supported versions rm -rf build *.egg-info .pybuild find . -iname '*.pyc' -delete for i in $(find . -type d -iname __pycache__) ; do rm -rf $i ; done make[1]: Leaving directory '/<<PKGBUILDDIR>>' dh_autoreconf_clean -O--buildsystem=pybuild dh_clean -O--buildsystem=pybuild debian/rules binary [... snipped ...] monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x7f261b6f1710> asyncssh_transport = <scrapli.transport.plugins.asyncssh.transport.AsyncsshTransport object at 0x7f26176c0ad0> def test_close_catch_brokenpipe(monkeypatch, asyncssh_transport): def _close(cls): raise BrokenPipeError monkeypatch.setattr( "asyncssh.connection.SSHClientConnection.close", _close, ) # lie and pretend the session is already assigned options = DumbContainer() asyncssh_transport.session = SSHClientConnection( > loop=asyncio.get_event_loop_policy().get_event_loop(), > options=options ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) tests/unit/transport/plugins/asyncssh/test_asyncssh_transport.py:59: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7f261b935be0> def get_event_loop(self): """Get the event loop for the current context. Returns an instance of EventLoop or raises an exception. """ if (self._local._loop is None and not self._local._set_called and threading.current_thread() is threading.main_thread()): stacklevel = 2 try: f = sys._getframe(1) except AttributeError: pass else: # Move up the call stack so that the warning is attached # to the line outside asyncio itself. while f: module = f.f_globals.get('__name__') if not (module == 'asyncio' or module.startswith('asyncio.')): break f = f.f_back stacklevel += 1 import warnings warnings.warn('There is no current event loop', DeprecationWarning, stacklevel=stacklevel) self.set_event_loop(self.new_event_loop()) if self._local._loop is None: > raise RuntimeError('There is no current event loop in thread %r.' % threading.current_thread().name) E RuntimeError: There is no current event loop in thread 'MainThread'. /usr/lib/python3.13/asyncio/events.py:716: RuntimeError _________________________________ test_isalive _________________________________ asyncssh_transport = <scrapli.transport.plugins.asyncssh.transport.AsyncsshTransport object at 0x7f26176c12b0> def test_isalive(asyncssh_transport): # lie and pretend the session is already assigned options = DumbContainer() asyncssh_transport.session = SSHClientConnection( > loop=asyncio.get_event_loop_policy().get_event_loop(), > options=options ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) tests/unit/transport/plugins/asyncssh/test_asyncssh_transport.py:77: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7f261b935be0> def get_event_loop(self): """Get the event loop for the current context. Returns an instance of EventLoop or raises an exception. """ if (self._local._loop is None and not self._local._set_called and threading.current_thread() is threading.main_thread()): stacklevel = 2 try: f = sys._getframe(1) except AttributeError: pass else: # Move up the call stack so that the warning is attached # to the line outside asyncio itself. while f: module = f.f_globals.get('__name__') if not (module == 'asyncio' or module.startswith('asyncio.')): break f = f.f_back stacklevel += 1 import warnings warnings.warn('There is no current event loop', DeprecationWarning, stacklevel=stacklevel) self.set_event_loop(self.new_event_loop()) if self._local._loop is None: > raise RuntimeError('There is no current event loop in thread %r.' % threading.current_thread().name) E RuntimeError: There is no current event loop in thread 'MainThread'. /usr/lib/python3.13/asyncio/events.py:716: RuntimeError _________________________ test_isalive_attribute_error _________________________ asyncssh_transport = <scrapli.transport.plugins.asyncssh.transport.AsyncsshTransport object at 0x7f2616b97110> def test_isalive_attribute_error(asyncssh_transport): # lie and pretend the session is already assigned options = DumbContainer() asyncssh_transport.session = SSHClientConnection( > loop=asyncio.get_event_loop_policy().get_event_loop(), > options=options ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) tests/unit/transport/plugins/asyncssh/test_asyncssh_transport.py:94: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7f261b935be0> def get_event_loop(self): """Get the event loop for the current context. Returns an instance of EventLoop or raises an exception. """ if (self._local._loop is None and not self._local._set_called and threading.current_thread() is threading.main_thread()): stacklevel = 2 try: f = sys._getframe(1) except AttributeError: pass else: # Move up the call stack so that the warning is attached # to the line outside asyncio itself. while f: module = f.f_globals.get('__name__') if not (module == 'asyncio' or module.startswith('asyncio.')): break f = f.f_back stacklevel += 1 import warnings warnings.warn('There is no current event loop', DeprecationWarning, stacklevel=stacklevel) self.set_event_loop(self.new_event_loop()) if self._local._loop is None: > raise RuntimeError('There is no current event loop in thread %r.' % threading.current_thread().name) E RuntimeError: There is no current event loop in thread 'MainThread'. /usr/lib/python3.13/asyncio/events.py:716: RuntimeError __________________________________ test_close __________________________________ asynctelnet_transport = <scrapli.transport.plugins.asynctelnet.transport.AsynctelnetTransport object at 0x7f2616c19bd0> def test_close(asynctelnet_transport): # lie like connection is open asynctelnet_transport.stdout = asyncio.StreamReader( > loop=asyncio.get_event_loop_policy().get_event_loop() ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) tests/unit/transport/plugins/asynctelnet/test_asynctelnet_transport.py:85: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7f261b935be0> def get_event_loop(self): """Get the event loop for the current context. Returns an instance of EventLoop or raises an exception. """ if (self._local._loop is None and not self._local._set_called and threading.current_thread() is threading.main_thread()): stacklevel = 2 try: f = sys._getframe(1) except AttributeError: pass else: # Move up the call stack so that the warning is attached # to the line outside asyncio itself. while f: module = f.f_globals.get('__name__') if not (module == 'asyncio' or module.startswith('asyncio.')): break f = f.f_back stacklevel += 1 import warnings warnings.warn('There is no current event loop', DeprecationWarning, stacklevel=stacklevel) self.set_event_loop(self.new_event_loop()) if self._local._loop is None: > raise RuntimeError('There is no current event loop in thread %r.' % threading.current_thread().name) E RuntimeError: There is no current event loop in thread 'MainThread'. /usr/lib/python3.13/asyncio/events.py:716: RuntimeError _________________________________ test_isalive _________________________________ asynctelnet_transport = <scrapli.transport.plugins.asynctelnet.transport.AsynctelnetTransport object at 0x7f2616c1a210> def test_isalive(asynctelnet_transport): # lie like connection is open asynctelnet_transport.stdout = asyncio.StreamReader( > loop=asyncio.get_event_loop_policy().get_event_loop() ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ) tests/unit/transport/plugins/asynctelnet/test_asynctelnet_transport.py:105: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <asyncio.unix_events._UnixDefaultEventLoopPolicy object at 0x7f261b935be0> def get_event_loop(self): """Get the event loop for the current context. Returns an instance of EventLoop or raises an exception. """ if (self._local._loop is None and not self._local._set_called and threading.current_thread() is threading.main_thread()): stacklevel = 2 try: f = sys._getframe(1) except AttributeError: pass else: # Move up the call stack so that the warning is attached # to the line outside asyncio itself. while f: module = f.f_globals.get('__name__') if not (module == 'asyncio' or module.startswith('asyncio.')): break f = f.f_back stacklevel += 1 import warnings warnings.warn('There is no current event loop', DeprecationWarning, stacklevel=stacklevel) self.set_event_loop(self.new_event_loop()) if self._local._loop is None: > raise RuntimeError('There is no current event loop in thread %r.' % threading.current_thread().name) E RuntimeError: There is no current event loop in thread 'MainThread'. /usr/lib/python3.13/asyncio/events.py:716: RuntimeError =============================== warnings summary =============================== scrapli/helper.py:10 /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_scrapli/build/scrapli/helper.py:10: DeprecationWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html import pkg_resources tests/unit/transport/plugins/asyncssh/test_asyncssh_transport.py:11 /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_scrapli/build/tests/unit/transport/plugins/asyncssh/test_asyncssh_transport.py:11: DeprecationWarning: There is no current event loop asyncio.get_event_loop() -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html =========================== short test summary info ============================ FAILED tests/unit/transport/plugins/asyncssh/test_asyncssh_transport.py::test_close FAILED tests/unit/transport/plugins/asyncssh/test_asyncssh_transport.py::test_close_catch_brokenpipe FAILED tests/unit/transport/plugins/asyncssh/test_asyncssh_transport.py::test_isalive FAILED tests/unit/transport/plugins/asyncssh/test_asyncssh_transport.py::test_isalive_attribute_error FAILED tests/unit/transport/plugins/asynctelnet/test_asynctelnet_transport.py::test_close FAILED tests/unit/transport/plugins/asynctelnet/test_asynctelnet_transport.py::test_isalive ===== 6 failed, 488 passed, 4 skipped, 43 deselected, 2 warnings in 7.83s ====== E: pybuild pybuild:485: test: plugin pyproject failed with: exit code=1: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_scrapli/build; python3.13 -m pytest -v tests/unit -k 'not test_factory_community_platform_defaults and not test_factory_community_platform_variant and not test_factory_no_scrapli_community_platform and not test_textfsm_get_template and not test_textfsm_parse and not test_ttp_parse and not test_response_parse_textfsm and not test_response_parse_ttp and not test_open_channel_no_session and not test_isalive_no_session and not test_write_exception and not test_socket_open_connection_refused and not test_socket_open_close_isalive and not test_socket_bool' dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p "3.14 3.13" --parallel=2 returned exit code 13 make: *** [debian/rules:50: binary] Error 25 dpkg-buildpackage: error: debian/rules binary subprocess failed with exit status 2 --------------------------------------------------------------------------------

