Source: python-watchgod
Version: 0.8.2-2
Severity: minor
Tags: trixie sid ftbfs
User: [email protected]
Usertags: ftbfs-binary-20230816 ftbfs-binary-after-build
User: [email protected]
Usertags: qa-doublebuild

Hi,

This package fails to do build a binary-only build (not source) after a
successful build (dpkg-buildpackage ; dpkg-buildpackage -b).

This is probably a clear violation of Debian Policy section 4.9 (clean target),
but this is filed as severity:minor for now, because a discussion on
debian-devel showed that we might want to revisit the requirement of a working
'clean' target.

More information about this class of issues, included common problems and
solutions, is available at
https://wiki.debian.org/qa.debian.org/FTBFS/DoubleBuild

Relevant part of the build log:
> cd /<<PKGBUILDDIR>> && runuser -u user42 -- dpkg-buildpackage --sanitize-env 
> -us -uc -rfakeroot -b
> -------------------------------------------------------------------------------------------------------------------------------------
> 
> dpkg-buildpackage: info: source package python-watchgod
> dpkg-buildpackage: info: source version 0.8.2-2
> dpkg-buildpackage: info: source distribution unstable
> dpkg-buildpackage: info: source changed by Sandro Tosi <[email protected]>
>  dpkg-source --before-build .
> dpkg-buildpackage: info: host architecture amd64
>  debian/rules clean
> dh clean --with python3 --buildsystem=pybuild
>    dh_auto_clean -O--buildsystem=pybuild
> I: pybuild base:291: python3.11 setup.py clean 
> running clean
> removing '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_watchgod/build' (and 
> everything under it)
> 'build/bdist.linux-x86_64' does not exist -- can't clean it
> 'build/scripts-3.11' does not exist -- can't clean it
>    dh_autoreconf_clean -O--buildsystem=pybuild
>    dh_clean -O--buildsystem=pybuild
>  debian/rules binary
> dh binary --with python3 --buildsystem=pybuild
>    dh_update_autotools_config -O--buildsystem=pybuild
>    dh_autoreconf -O--buildsystem=pybuild
>    dh_auto_configure -O--buildsystem=pybuild
> I: pybuild base:291: python3.11 setup.py config 
> running config
>    dh_auto_build -O--buildsystem=pybuild
> I: pybuild base:291: /usr/bin/python3 setup.py build 
> running build
> running build_py
> creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_watchgod/build/watchgod
> copying watchgod/watcher.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_watchgod/build/watchgod
> copying watchgod/__main__.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_watchgod/build/watchgod
> copying watchgod/version.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_watchgod/build/watchgod
> copying watchgod/main.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_watchgod/build/watchgod
> copying watchgod/__init__.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_watchgod/build/watchgod
> copying watchgod/cli.py -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_watchgod/build/watchgod
> copying watchgod/py.typed -> 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_watchgod/build/watchgod
>    dh_auto_test -O--buildsystem=pybuild
> I: pybuild base:291: cd 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_watchgod/build; python3.11 -m pytest 
> -W ignore::trio.TrioDeprecationWarning
> ============================= test session starts 
> ==============================
> platform linux -- Python 3.11.4, pytest-7.4.0, pluggy-1.2.0
> rootdir: /<<PKGBUILDDIR>>
> configfile: setup.cfg
> plugins: mock-3.11.1, sugar-0.9.7, asyncio-0.20.3, anyio-3.7.0, toolbox-0.4
> asyncio: mode=Mode.STRICT
> collected 162 items
> 
> tests/test_cli.py ...................................................... [ 
> 33%]
> ...............                                                          [ 
> 42%]
> tests/test_run_process.py ...............                                [ 
> 51%]
> tests/test_watch.py .................................................... [ 
> 83%]
> .........................F                                               
> [100%]
> 
> =================================== FAILURES 
> ===================================
> ____________________________ test_awatch_log[trio] 
> _____________________________
> 
> mocker = <pytest_mock.plugin.MockerFixture object at 0x7fd9fb8df450>
> caplog = <_pytest.logging.LogCaptureFixture object at 0x7fd9fb8df9d0>
> 
>     @skip_unless_linux
>     async def test_awatch_log(mocker, caplog):
>         mock_log_enabled = mocker.patch('watchgod.main.logger.isEnabledFor')
>         mock_log_enabled.return_value = True
>     
>         class FakeWatcher:
>             def __init__(self, path):
>                 self.files = [1, 2, 3]
>     
>             def check(self):
>                 return {'r1'}
>     
>         async for v in awatch('xxx', watcher_cls=FakeWatcher, debounce=5, 
> min_sleep=1):
>             assert v == {'r1'}
>             break
>     
>         print(caplog.text)
> >       assert caplog.text.count('DEBUG') > 3
> E       AssertionError: assert 2 > 3
> E        +  where 2 = <built-in method count of str object at 
> 0x7fd9fb472ce0>('DEBUG')
> E        +    where <built-in method count of str object at 0x7fd9fb472ce0> = 
> 'DEBUG    watchgod.main:main.py:130 xxx time=20ms debounced=20ms files=3 
> changes=1 (1)\nDEBUG    watchgod.main:main.py:141 xxx changes released 
> debounced=20ms\n'.count
> E        +      where 'DEBUG    watchgod.main:main.py:130 xxx time=20ms 
> debounced=20ms files=3 changes=1 (1)\nDEBUG    watchgod.main:main.py:141 xxx 
> changes released debounced=20ms\n' = <_pytest.logging.LogCaptureFixture 
> object at 0x7fd9fb8df9d0>.text
> 
> tests/test_watch.py:451: AssertionError
> ----------------------------- Captured stdout call 
> -----------------------------
> DEBUG    watchgod.main:main.py:130 xxx time=20ms debounced=20ms files=3 
> changes=1 (1)
> DEBUG    watchgod.main:main.py:141 xxx changes released debounced=20ms
> 
> ------------------------------ Captured log call 
> -------------------------------
> DEBUG    watchgod.main:main.py:130 xxx time=20ms debounced=20ms files=3 
> changes=1 (1)
> DEBUG    watchgod.main:main.py:141 xxx changes released debounced=20ms
> =========================== short test summary info 
> ============================
> FAILED tests/test_watch.py::test_awatch_log[trio] - AssertionError: assert 2 
> > 3
> ======================== 1 failed, 161 passed in 2.04s 
> =========================
> E: pybuild pybuild:395: test: plugin distutils failed with: exit code=1: cd 
> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_watchgod/build; python3.11 -m pytest 
> -W ignore::trio.TrioDeprecationWarning
> dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p 3.11 
> returned exit code 13
> make: *** [debian/rules:10: binary] Error 25
> dpkg-buildpackage: error: debian/rules binary subprocess returned exit status 
> 2
> 
> E: Command 'cd /<<PKGBUILDDIR>> && runuser -u user42 -- dpkg-buildpackage 
> --sanitize-env -us -uc -rfakeroot -b' failed to run.


The full build log is available from:
http://qa-logs.debian.net/2023/08/16/python-watchgod_0.8.2-2_unstable.log

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.

Reply via email to