Source: aioredis
Version: 1.3.1-2
Severity: serious
Justification: FTBFS
Tags: trixie sid ftbfs
User: [email protected]
Usertags: ftbfs-20231212 ftbfs-trixie
Hi,
During a rebuild of all packages in sid, your package failed to build
on amd64.
Relevant part (hopefully):
> debian/rules build
> dh build --with python3 --buildsystem=pybuild
> dh: warning: Compatibility levels before 10 are deprecated (level 9 in use)
> dh_update_autotools_config -O--buildsystem=pybuild
> dh_auto_configure -O--buildsystem=pybuild
> dh_auto_configure: warning: Compatibility levels before 10 are deprecated
> (level 9 in use)
> I: pybuild base:310: python3.12 setup.py config
> running config
> I: pybuild base:310: python3.11 setup.py config
> running config
> dh_auto_build -O--buildsystem=pybuild
> dh_auto_build: warning: Compatibility levels before 10 are deprecated (level
> 9 in use)
> I: pybuild base:310: /usr/bin/python3.12 setup.py build
> running build
> running build_py
> creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_aioredis/build/aioredis
> copying aioredis/__init__.py ->
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_aioredis/build/aioredis
> copying aioredis/pool.py ->
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_aioredis/build/aioredis
> copying aioredis/log.py ->
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_aioredis/build/aioredis
> copying aioredis/parser.py ->
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_aioredis/build/aioredis
> copying aioredis/errors.py ->
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_aioredis/build/aioredis
> copying aioredis/pubsub.py ->
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_aioredis/build/aioredis
> copying aioredis/abc.py ->
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_aioredis/build/aioredis
> copying aioredis/locks.py ->
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_aioredis/build/aioredis
> copying aioredis/util.py ->
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_aioredis/build/aioredis
> copying aioredis/stream.py ->
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_aioredis/build/aioredis
> copying aioredis/connection.py ->
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_aioredis/build/aioredis
> creating
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_aioredis/build/aioredis/sentinel
> copying aioredis/sentinel/__init__.py ->
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_aioredis/build/aioredis/sentinel
> copying aioredis/sentinel/pool.py ->
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_aioredis/build/aioredis/sentinel
> copying aioredis/sentinel/commands.py ->
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_aioredis/build/aioredis/sentinel
> creating
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_aioredis/build/aioredis/commands
> copying aioredis/commands/__init__.py ->
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_aioredis/build/aioredis/commands
> copying aioredis/commands/geo.py ->
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_aioredis/build/aioredis/commands
> copying aioredis/commands/cluster.py ->
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_aioredis/build/aioredis/commands
> copying aioredis/commands/transaction.py ->
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_aioredis/build/aioredis/commands
> copying aioredis/commands/string.py ->
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_aioredis/build/aioredis/commands
> copying aioredis/commands/streams.py ->
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_aioredis/build/aioredis/commands
> copying aioredis/commands/generic.py ->
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_aioredis/build/aioredis/commands
> copying aioredis/commands/list.py ->
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_aioredis/build/aioredis/commands
> copying aioredis/commands/sorted_set.py ->
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_aioredis/build/aioredis/commands
> copying aioredis/commands/pubsub.py ->
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_aioredis/build/aioredis/commands
> copying aioredis/commands/hyperloglog.py ->
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_aioredis/build/aioredis/commands
> copying aioredis/commands/scripting.py ->
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_aioredis/build/aioredis/commands
> copying aioredis/commands/hash.py ->
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_aioredis/build/aioredis/commands
> copying aioredis/commands/server.py ->
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_aioredis/build/aioredis/commands
> copying aioredis/commands/set.py ->
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_aioredis/build/aioredis/commands
> running egg_info
> creating aioredis.egg-info
> writing aioredis.egg-info/PKG-INFO
> writing dependency_links to aioredis.egg-info/dependency_links.txt
> writing requirements to aioredis.egg-info/requires.txt
> writing top-level names to aioredis.egg-info/top_level.txt
> writing manifest file 'aioredis.egg-info/SOURCES.txt'
> reading manifest file 'aioredis.egg-info/SOURCES.txt'
> reading manifest template 'MANIFEST.in'
> warning: no previously-included files matching '*.pyc' found anywhere in
> distribution
> warning: no previously-included files matching '*.swp' found anywhere in
> distribution
> warning: no previously-included files matching '*.*~' found anywhere in
> distribution
> adding license file 'LICENSE'
> writing manifest file 'aioredis.egg-info/SOURCES.txt'
> I: pybuild base:310: /usr/bin/python3 setup.py build
> running build
> running build_py
> creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_aioredis/build/aioredis
> copying aioredis/__init__.py ->
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_aioredis/build/aioredis
> copying aioredis/pool.py ->
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_aioredis/build/aioredis
> copying aioredis/log.py ->
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_aioredis/build/aioredis
> copying aioredis/parser.py ->
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_aioredis/build/aioredis
> copying aioredis/errors.py ->
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_aioredis/build/aioredis
> copying aioredis/pubsub.py ->
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_aioredis/build/aioredis
> copying aioredis/abc.py ->
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_aioredis/build/aioredis
> copying aioredis/locks.py ->
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_aioredis/build/aioredis
> copying aioredis/util.py ->
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_aioredis/build/aioredis
> copying aioredis/stream.py ->
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_aioredis/build/aioredis
> copying aioredis/connection.py ->
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_aioredis/build/aioredis
> creating
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_aioredis/build/aioredis/sentinel
> copying aioredis/sentinel/__init__.py ->
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_aioredis/build/aioredis/sentinel
> copying aioredis/sentinel/pool.py ->
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_aioredis/build/aioredis/sentinel
> copying aioredis/sentinel/commands.py ->
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_aioredis/build/aioredis/sentinel
> creating
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_aioredis/build/aioredis/commands
> copying aioredis/commands/__init__.py ->
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_aioredis/build/aioredis/commands
> copying aioredis/commands/geo.py ->
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_aioredis/build/aioredis/commands
> copying aioredis/commands/cluster.py ->
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_aioredis/build/aioredis/commands
> copying aioredis/commands/transaction.py ->
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_aioredis/build/aioredis/commands
> copying aioredis/commands/string.py ->
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_aioredis/build/aioredis/commands
> copying aioredis/commands/streams.py ->
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_aioredis/build/aioredis/commands
> copying aioredis/commands/generic.py ->
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_aioredis/build/aioredis/commands
> copying aioredis/commands/list.py ->
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_aioredis/build/aioredis/commands
> copying aioredis/commands/sorted_set.py ->
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_aioredis/build/aioredis/commands
> copying aioredis/commands/pubsub.py ->
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_aioredis/build/aioredis/commands
> copying aioredis/commands/hyperloglog.py ->
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_aioredis/build/aioredis/commands
> copying aioredis/commands/scripting.py ->
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_aioredis/build/aioredis/commands
> copying aioredis/commands/hash.py ->
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_aioredis/build/aioredis/commands
> copying aioredis/commands/server.py ->
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_aioredis/build/aioredis/commands
> copying aioredis/commands/set.py ->
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_aioredis/build/aioredis/commands
> running egg_info
> writing aioredis.egg-info/PKG-INFO
> writing dependency_links to aioredis.egg-info/dependency_links.txt
> writing requirements to aioredis.egg-info/requires.txt
> writing top-level names to aioredis.egg-info/top_level.txt
> reading manifest file 'aioredis.egg-info/SOURCES.txt'
> reading manifest template 'MANIFEST.in'
> warning: no previously-included files matching '*.pyc' found anywhere in
> distribution
> warning: no previously-included files matching '*.swp' found anywhere in
> distribution
> warning: no previously-included files matching '*.*~' found anywhere in
> distribution
> adding license file 'LICENSE'
> writing manifest file 'aioredis.egg-info/SOURCES.txt'
> dh_auto_test -O--buildsystem=pybuild
> dh_auto_test: warning: Compatibility levels before 10 are deprecated (level 9
> in use)
> I: pybuild base:310: cd
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_aioredis/build; python3.12 -m pytest
> -ktest_global_loop
> ============================= test session starts
> ==============================
> platform linux -- Python 3.12.1, pytest-7.4.3, pluggy-1.3.0
> rootdir: /<<PKGBUILDDIR>>
> configfile: setup.cfg
> plugins: cov-4.1.0
> collected 799 items / 798 deselected / 1 selected
>
> tests/multi_exec_test.py F
> [100%]
>
> =================================== FAILURES
> ===================================
> _______________________________ test_global_loop
> _______________________________
>
> def test_global_loop():
> conn = mock.Mock(spec=(
> 'execute closed _transaction_error _buffered'
> .split()))
> try:
> old_loop = asyncio.get_event_loop()
> except (AssertionError, RuntimeError):
> old_loop = None
> loop = asyncio.new_event_loop()
> asyncio.set_event_loop(loop)
>
> tr = MultiExec(conn, commands_factory=Redis)
> # assert tr._loop is loop
>
> def make_fut(cmd, *args, **kw):
> fut = asyncio.get_event_loop().create_future()
> if cmd == 'PING':
> fut.set_result(b'QUEUED')
> elif cmd == 'EXEC':
> fut.set_result([b'PONG'])
> else:
> fut.set_result(b'OK')
> return fut
>
> conn.execute.side_effect = make_fut
> conn.closed = False
> conn._transaction_error = None
> conn._buffered.side_effect = lambda: nullcontext(conn)
>
> async def go():
> tr.ping()
> res = await tr.execute()
> assert res == [b'PONG']
> > loop.run_until_complete(go())
>
> tests/multi_exec_test.py:47:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
> _
> /usr/lib/python3.12/asyncio/base_events.py:684: in run_until_complete
> return future.result()
> tests/multi_exec_test.py:45: in go
> res = await tr.execute()
> aioredis/commands/transaction.py:176: in execute
> return await self._do_execute(
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
> _
>
> self = <aioredis.commands.transaction.MultiExec object at 0x7fca9e3fba70>
> conn = <Mock id='140508215083280'>
>
> async def _do_execute(self, conn, *, return_exceptions=False):
> self._waiters = waiters = []
> with conn._buffered():
> multi = conn.execute('MULTI')
> coros = list(self._send_pipeline(conn))
> exec_ = conn.execute('EXEC')
> gather = asyncio.gather(multi, *coros,
> return_exceptions=True)
> last_error = None
> try:
> await asyncio.shield(gather)
> except asyncio.CancelledError:
> await gather
> except Exception as err:
> last_error = err
> raise
> finally:
> if conn.closed:
> if last_error is None:
> last_error = ConnectionClosedError()
> for fut in waiters:
> _set_exception(fut, last_error)
> # fut.cancel()
> for fut in self._results:
> if not fut.done():
> fut.set_exception(last_error)
> # fut.cancel()
> else:
> try:
> results = await exec_
> except RedisError as err:
> for fut in waiters:
> fut.set_exception(err)
> else:
> > assert len(results) == len(waiters), (
> "Results does not match waiters", results, waiters)
> E AssertionError: ('Results does not match waiters',
> [b'PONG'], [<Future pending>])
>
> aioredis/commands/transaction.py:293: AssertionError
> =============================== warnings summary
> ===============================
> tests/conftest.py:33
>
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_aioredis/build/tests/conftest.py:33:
> PytestDeprecationWarning: @pytest.yield_fixture is deprecated.
> Use @pytest.fixture instead; they are the same.
> @pytest.yield_fixture
>
> tests/conftest.py:143
>
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_aioredis/build/tests/conftest.py:143:
> PytestDeprecationWarning: @pytest.yield_fixture is deprecated.
> Use @pytest.fixture instead; they are the same.
> @pytest.yield_fixture
>
> tests/conftest.py:502
>
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_aioredis/build/tests/conftest.py:502:
> PytestDeprecationWarning: @pytest.yield_fixture is deprecated.
> Use @pytest.fixture instead; they are the same.
> @pytest.yield_fixture(scope='session')
>
> tests/conftest.py:527
>
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_aioredis/build/tests/conftest.py:527:
> PytestDeprecationWarning: The hookimpl pytest_pyfunc_call uses old-style
> configuration options (marks or attributes).
> Please use the pytest.hookimpl(tryfirst=True) decorator instead
> to configure the hooks.
> See
> https://docs.pytest.org/en/latest/deprecations.html#configuring-hook-specs-impls-using-markers
> @pytest.mark.tryfirst
>
> ../../../../../../usr/lib/python3/dist-packages/_pytest/config/__init__.py:1373
> /usr/lib/python3/dist-packages/_pytest/config/__init__.py:1373:
> PytestConfigWarning: Unknown config option: restpaths
>
> self._warn_or_fail_if_strict(f"Unknown config option: {key}\n")
>
> .pybuild/cpython3_3.12_aioredis/build/tests/multi_exec_test.py::test_global_loop
>
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_aioredis/build/tests/multi_exec_test.py:19:
> DeprecationWarning: There is no current event loop
> old_loop = asyncio.get_event_loop()
>
> -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
> =========================== short test summary info
> ============================
> FAILED tests/multi_exec_test.py::test_global_loop - AssertionError:
> ('Results...
> ================ 1 failed, 798 deselected, 6 warnings in 1.22s
> =================
> E: pybuild pybuild:395: test: plugin distutils failed with: exit code=1: cd
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_aioredis/build; python3.12 -m pytest
> -ktest_global_loop
> I: pybuild base:310: cd
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_aioredis/build; python3.11 -m pytest
> -ktest_global_loop
> ============================= test session starts
> ==============================
> platform linux -- Python 3.11.7, pytest-7.4.3, pluggy-1.3.0
> rootdir: /<<PKGBUILDDIR>>
> configfile: setup.cfg
> plugins: cov-4.1.0
> collected 799 items / 798 deselected / 1 selected
>
> tests/multi_exec_test.py .
> [100%]
>
> =============================== warnings summary
> ===============================
> tests/conftest.py:33
>
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_aioredis/build/tests/conftest.py:33:
> PytestDeprecationWarning: @pytest.yield_fixture is deprecated.
> Use @pytest.fixture instead; they are the same.
> @pytest.yield_fixture
>
> tests/conftest.py:143
>
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_aioredis/build/tests/conftest.py:143:
> PytestDeprecationWarning: @pytest.yield_fixture is deprecated.
> Use @pytest.fixture instead; they are the same.
> @pytest.yield_fixture
>
> tests/conftest.py:502
>
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_aioredis/build/tests/conftest.py:502:
> PytestDeprecationWarning: @pytest.yield_fixture is deprecated.
> Use @pytest.fixture instead; they are the same.
> @pytest.yield_fixture(scope='session')
>
> tests/conftest.py:527
>
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_aioredis/build/tests/conftest.py:527:
> PytestDeprecationWarning: The hookimpl pytest_pyfunc_call uses old-style
> configuration options (marks or attributes).
> Please use the pytest.hookimpl(tryfirst=True) decorator instead
> to configure the hooks.
> See
> https://docs.pytest.org/en/latest/deprecations.html#configuring-hook-specs-impls-using-markers
> @pytest.mark.tryfirst
>
> ../../../../../../usr/lib/python3/dist-packages/_pytest/config/__init__.py:1373
> /usr/lib/python3/dist-packages/_pytest/config/__init__.py:1373:
> PytestConfigWarning: Unknown config option: restpaths
>
> self._warn_or_fail_if_strict(f"Unknown config option: {key}\n")
>
> -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
> ================ 1 passed, 798 deselected, 5 warnings in 1.27s
> =================
> dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p "3.12
> 3.11" returned exit code 13
The full build log is available from:
http://qa-logs.debian.net/2023/12/12/aioredis_1.3.1-2_unstable.log
All bugs filed during this archive rebuild are listed at:
https://bugs.debian.org/cgi-bin/pkgreport.cgi?tag=ftbfs-20231212;[email protected]
or:
https://udd.debian.org/bugs/?release=na&merged=ign&fnewerval=7&flastmodval=7&fusertag=only&fusertagtag=ftbfs-20231212&[email protected]&allbugs=1&cseverity=1&ctags=1&caffected=1#results
A list of current common problems and possible solutions is available at
http://wiki.debian.org/qa.debian.org/FTBFS . You're welcome to contribute!
If you reassign this bug to another package, please mark it as 'affects'-ing
this package. See https://www.debian.org/Bugs/server-control#affects
If you fail to reproduce this, please provide a build log and diff it with mine
so that we can identify if something relevant changed in the meantime.