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

Reply via email to