[Pkg-matrix-maintainers] Bug#980647: python-matrix-nio: FTBFS: dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p 3.9 returned exit code 13
Lucas Nussbaum
lucas at debian.org
Wed Jan 20 20:47:12 GMT 2021
Source: python-matrix-nio
Version: 0.15.2-1
Severity: serious
Justification: FTBFS on amd64
Tags: bullseye sid ftbfs
Usertags: ftbfs-20210120 ftbfs-bullseye
Hi,
During a rebuild of all packages in sid, your package failed to build
on amd64.
Relevant part (hopefully):
> dpkg-buildpackage
> -----------------
>
> Command: dpkg-buildpackage -us -uc -sa -rfakeroot
> dpkg-buildpackage: info: source package python-matrix-nio
> dpkg-buildpackage: info: source version 0.15.2-1
> dpkg-buildpackage: info: source distribution unstable
> dpkg-buildpackage: info: source changed by Jonas Smedegaard <dr at jones.dk>
> dpkg-source --before-build .
> dpkg-buildpackage: info: host architecture amd64
> debian/rules clean
> dh clean --buildsystem=pybuild
> dh_auto_clean -O--buildsystem=pybuild
> I: pybuild base:232: python3.9 setup.py clean
> running clean
> removing '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build' (and everything under it)
> 'build/bdist.linux-x86_64' does not exist -- can't clean it
> 'build/scripts-3.9' does not exist -- can't clean it
> dh_autoreconf_clean -O--buildsystem=pybuild
> dh_clean -O--buildsystem=pybuild
> dpkg-source -b .
> dpkg-source: info: using source format '3.0 (quilt)'
> dpkg-source: info: building python-matrix-nio using existing ./python-matrix-nio_0.15.2.orig.tar.gz
> dpkg-source: info: using patch list from debian/patches/series
> dpkg-source: info: building python-matrix-nio in python-matrix-nio_0.15.2-1.debian.tar.xz
> dpkg-source: info: building python-matrix-nio in python-matrix-nio_0.15.2-1.dsc
> debian/rules binary
> dh binary --buildsystem=pybuild
> dh_update_autotools_config -O--buildsystem=pybuild
> dh_autoreconf -O--buildsystem=pybuild
> dh_auto_configure -O--buildsystem=pybuild
> I: pybuild base:232: python3.9 setup.py config
> running config
> dh_auto_build -O--buildsystem=pybuild
> I: pybuild base:232: /usr/bin/python3 setup.py build
> running build
> running build_py
> creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/nio
> copying nio/rooms.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/nio
> copying nio/responses.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/nio
> copying nio/api.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/nio
> copying nio/__init__.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/nio
> copying nio/_compat.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/nio
> copying nio/http.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/nio
> copying nio/log.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/nio
> copying nio/exceptions.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/nio
> copying nio/monitors.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/nio
> copying nio/schemas.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/nio
> creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/nio/events
> copying nio/events/to_device.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/nio/events
> copying nio/events/__init__.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/nio/events
> copying nio/events/misc.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/nio/events
> copying nio/events/account_data.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/nio/events
> copying nio/events/room_events.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/nio/events
> copying nio/events/invite_events.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/nio/events
> copying nio/events/presence.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/nio/events
> copying nio/events/common.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/nio/events
> copying nio/events/ephemeral.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/nio/events
> creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/nio/client
> copying nio/client/http_client.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/nio/client
> copying nio/client/__init__.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/nio/client
> copying nio/client/base_client.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/nio/client
> copying nio/client/async_client.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/nio/client
> creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/nio/crypto
> copying nio/crypto/key_export.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/nio/crypto
> copying nio/crypto/__init__.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/nio/crypto
> copying nio/crypto/sas.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/nio/crypto
> copying nio/crypto/memorystores.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/nio/crypto
> copying nio/crypto/olm_machine.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/nio/crypto
> copying nio/crypto/device.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/nio/crypto
> copying nio/crypto/sessions.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/nio/crypto
> copying nio/crypto/log.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/nio/crypto
> copying nio/crypto/attachments.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/nio/crypto
> copying nio/crypto/async_attachments.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/nio/crypto
> copying nio/crypto/key_request.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/nio/crypto
> creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/nio/event_builders
> copying nio/event_builders/direct_messages.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/nio/event_builders
> copying nio/event_builders/__init__.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/nio/event_builders
> copying nio/event_builders/state_events.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/nio/event_builders
> copying nio/event_builders/event_builder.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/nio/event_builders
> creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/nio/store
> copying nio/store/models.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/nio/store
> copying nio/store/__init__.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/nio/store
> copying nio/store/database.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/nio/store
> copying nio/store/file_trustdb.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/nio/store
> copying nio/store/log.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build/nio/store
> dh_auto_test -O--buildsystem=pybuild
> I: pybuild base:232: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build; python3.9 -m pytest -k-test_connect_wrapper
> ============================= test session starts ==============================
> platform linux -- Python 3.9.1+, pytest-6.0.2, py-1.10.0, pluggy-0.13.0
> benchmark: 3.2.2 (defaults: timer=time.perf_counter disable_gc=False min_rounds=5 min_time=0.000005 max_time=1.0 calibration_precision=10 warmup=False warmup_iterations=100000)
> rootdir: /<<PKGBUILDDIR>>, configfile: setup.cfg
> plugins: benchmark-3.2.2, cov-2.10.1, hypothesis-5.43.3
> collected 381 items / 1 deselected / 380 selected
>
> tests/async_attachment_test.py ............... [ 3%]
> tests/async_client_test.py .................F........................... [ 15%]
> .......F............................... [ 26%]
> tests/attachment_test.py ....... [ 27%]
> tests/client_test.py .......................................... [ 38%]
> tests/encryption_test.py ................................. [ 47%]
> tests/event_builders_test.py ....... [ 49%]
> tests/event_test.py .......................................... [ 60%]
> tests/http2_test.py .... [ 61%]
> tests/http_test.py .. [ 62%]
> tests/key_export_test.py ........ [ 64%]
> tests/memory_store_test.py .... [ 65%]
> tests/responses_test.py .............................. [ 73%]
> tests/room_test.py ............................ [ 80%]
> tests/sas_test.py ............................... [ 88%]
> tests/sessions_test.py .... [ 89%]
> tests/store_test.py ....................................... [100%]
>
> =================================== FAILURES ===================================
> _________________________ TestClass.test_sync[pyloop] __________________________
>
> self = <async_client_test.TestClass object at 0x7f1bb53bfc70>
> async_client = <nio.client.async_client.AsyncClient object at 0x7f1bb555e760>
> aioresponse = <aioresponses.core.aioresponses object at 0x7f1bb555e100>
>
> async def test_sync(self, async_client, aioresponse):
> aioresponse.post(
> "https://example.org/_matrix/client/r0/login",
> status=200,
> payload=self.login_response
> )
>
> url = (
> r"^https://example\.org/_matrix/client/r0/"
> r"sync\?access_token=abc123"
> )
>
> aioresponse.get(
> re.compile(fr"{url}$"),
> status=200,
> payload=self.sync_response
> )
>
> with pytest.raises(LocalProtocolError):
> resp2 = await async_client.sync()
>
> resp = await async_client.login("wordpass")
> resp2 = await async_client.sync()
> assert isinstance(resp, LoginResponse)
> assert isinstance(resp2, SyncResponse)
>
> # Test with filter ID
>
> aioresponse.get(
> re.compile(fr"{url}&filter=test_id&since=.*"),
> status=200,
> payload=self.sync_response
> )
> resp3 = await async_client.sync(sync_filter="test_id")
> assert isinstance(resp3, SyncResponse)
>
> # Test with filter dict
>
> aioresponse.get(
> re.compile(url + r"&filter=" + quote("{}") + "&since=.*"),
> status=200,
> payload=self.sync_response,
> )
> > resp4 = await async_client.sync(sync_filter={})
>
> tests/async_client_test.py:756:
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
> nio/client/async_client.py:994: in sync
> response = await self._send(
> nio/client/async_client.py:704: in _send
> transport_resp = await self.send(
> nio/client/async_client.py:252: in wrapper
> return await func(self, *args, **kwargs)
> nio/client/async_client.py:771: in send
> return await self.client_session.request(
> /usr/lib/python3.9/unittest/mock.py:2165: in _execute_mock_call
> result = await effect(*args, **kwargs)
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
>
> self = <aioresponses.core.aioresponses object at 0x7f1bb555e100>
> orig_self = <aiohttp.client.ClientSession object at 0x7f1bb57fb4c0>
> method = 'GET'
> url = URL('https://example.org/_matrix/client/r0/sync?access_token=abc123&filter=%257B%257D&since=s526_47314_0_7_1_1_1_11444_1')
> args = ()
> kwargs = {'data': None, 'headers': {'Content-Type': 'application/json'}, 'proxy': None, 'ssl': None, ...}
> url_origin = 'https://example.org/_matrix/client/r0/sync?access_token=abc123&since=s526_47314_0_7_1_1_1_11444_1&filter=%7B%7D'
> url_str = 'https://example.org/_matrix/client/r0/sync?access_token=abc123&filter=%257B%257D&since=s526_47314_0_7_1_1_1_11444_1'
> key = ('GET', URL('https://example.org/_matrix/client/r0/sync?access_token=abc123&filter=%257B%257D&since=s526_47314_0_7_1_1_1_11444_1'))
> kwargs_copy = {'data': None, 'headers': {'Content-Type': 'application/json'}, 'proxy': None, 'ssl': None, ...}
> response = None
>
> async def _request_mock(self, orig_self: ClientSession,
> method: str, url: 'Union[URL, str]',
> *args: Tuple,
> **kwargs: Dict) -> 'ClientResponse':
> """Return mocked response object or raise connection error."""
> if orig_self.closed:
> raise RuntimeError('Session is closed')
>
> url_origin = url
> url = normalize_url(merge_params(url, kwargs.get('params')))
> url_str = str(url)
> for prefix in self._passthrough:
> if url_str.startswith(prefix):
> return (await self.patcher.temp_original(
> orig_self, method, url_origin, *args, **kwargs
> ))
>
> key = (method, url)
> self.requests.setdefault(key, [])
> try:
> kwargs_copy = copy.deepcopy(kwargs)
> except TypeError:
> # Handle the fact that some values cannot be deep copied
> kwargs_copy = kwargs
> self.requests[key].append(RequestCall(args, kwargs_copy))
>
> response = await self.match(method, url, **kwargs)
>
> if response is None:
> > raise ClientConnectionError(
> 'Connection refused: {} {}'.format(method, url)
> )
> E aiohttp.client_exceptions.ClientConnectionError: Connection refused: GET https://example.org/_matrix/client/r0/sync?access_token=abc123&filter=%257B%257D&since=s526_47314_0_7_1_1_1_11444_1
>
> /usr/lib/python3/dist-packages/aioresponses/core.py:393: ClientConnectionError
> _____________________ TestClass.test_traceconfig_callbacks _____________________
>
> self = <async_client_test.TestClass object at 0x7f1bb53bfca0>
>
> async def test_traceconfig_callbacks(self):
> monitor = TransferMonitor(1)
>
> class Context:
> def __init__(self):
> self.trace_request_ctx = monitor
>
> session = ClientSession()
> context = Context()
> > params = TraceRequestChunkSentParams(chunk=b"x")
> E TypeError: __init__() missing 2 required positional arguments: 'method' and 'url'
>
> tests/async_client_test.py:1798: TypeError
> =============================== warnings summary ===============================
> /usr/lib/python3/dist-packages/_pytest/config/__init__.py:1148
> /usr/lib/python3/dist-packages/_pytest/config/__init__.py:1148: PytestConfigWarning: Unknown config ini key: flake8-ignore
>
> self._warn_or_fail_if_strict("Unknown config ini key: {}\n".format(key))
>
> -- Docs: https://docs.pytest.org/en/stable/warnings.html
>
>
> Computing stats ...
> Computing stats ... group 1/1
> Computing stats ... group 1/1: min
> Computing stats ... group 1/1: min (1/1)
> Computing stats ... group 1/1: min (1/1)
> Computing stats ... group 1/1: max
> Computing stats ... group 1/1: max (1/1)
> Computing stats ... group 1/1: max (1/1)
> Computing stats ... group 1/1: mean
> Computing stats ... group 1/1: mean (1/1)
> Computing stats ... group 1/1: mean (1/1)
> Computing stats ... group 1/1: median
> Computing stats ... group 1/1: median (1/1)
> Computing stats ... group 1/1: median (1/1)
> Computing stats ... group 1/1: iqr
> Computing stats ... group 1/1: iqr (1/1)
> Computing stats ... group 1/1: iqr (1/1)
> Computing stats ... group 1/1: stddev
> Computing stats ... group 1/1: stddev (1/1)
> Computing stats ... group 1/1: stddev (1/1)
> Computing stats ... group 1/1: ops
> Computing stats ... group 1/1: ops (1/1)
> Computing stats ... group 1/1: ops (1/1)
> Computing stats ... group 1/1: ops: outliers
> Computing stats ... group 1/1: ops: outliers (1/1)
> Computing stats ... group 1/1: ops: rounds
> Computing stats ... group 1/1: ops: rounds (1/1)
> Computing stats ... group 1/1: ops: iterations
> Computing stats ... group 1/1: ops: iterations (1/1)
> ------------------------------------------------ benchmark: 1 tests ------------------------------------------------
> Name (time in ms) Min Max Mean StdDev Median IQR Outliers OPS Rounds Iterations
> --------------------------------------------------------------------------------------------------------------------
> test_encrypt_rounds 259.7579 261.8740 260.9310 0.8002 260.8767 1.0620 2;0 3.8324 5 1
> --------------------------------------------------------------------------------------------------------------------
>
> Legend:
> Outliers: 1 Standard Deviation from Mean; 1.5 IQR (InterQuartile Range) from 1st Quartile and 3rd Quartile.
> OPS: Operations Per Second, computed as 1 / Mean
> =========================== short test summary info ============================
> FAILED tests/async_client_test.py::TestClass::test_sync[pyloop] - aiohttp.cli...
> FAILED tests/async_client_test.py::TestClass::test_traceconfig_callbacks - Ty...
> =========== 2 failed, 378 passed, 1 deselected, 1 warning in 46.05s ============
> E: pybuild pybuild:353: test: plugin distutils failed with: exit code=1: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9/build; python3.9 -m pytest -k-test_connect_wrapper
> dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p 3.9 returned exit code 13
The full build log is available from:
http://qa-logs.debian.net/2021/01/20/python-matrix-nio_0.15.2-1_unstable.log
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 marking 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 me
so that we can identify if something relevant changed in the meantime.
About the archive rebuild: The rebuild was done on EC2 VM instances from
Amazon Web Services, using a clean, minimal and up-to-date chroot. Every
failed build was retried once to eliminate random failures.
More information about the Pkg-matrix-maintainers
mailing list