Package: src:python-w3lib Version: 2.1.1-1 Severity: serious Control: close -1 2.3.1-1 Tags: ftbfs bookworm
Dear maintainer: During a rebuild of all packages in bookworm, your package failed to build: [ Note: The bug is closed with the version in trixie/sid, but packages in bookworm must still build in bookworm ]. -------------------------------------------------------------------------------- [...] debian/rules clean dh clean --buildsystem=pybuild dh_auto_clean -O--buildsystem=pybuild I: pybuild base:240: python3.11 setup.py clean running clean removing '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_w3lib/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 --buildsystem=pybuild dh_update_autotools_config -O--buildsystem=pybuild dh_autoreconf -O--buildsystem=pybuild dh_auto_configure -O--buildsystem=pybuild I: pybuild base:240: python3.11 setup.py config running config dh_auto_build -O--buildsystem=pybuild I: pybuild base:240: /usr/bin/python3 setup.py build running build running build_py creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_w3lib/build/w3lib copying w3lib/_infra.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_w3lib/build/w3lib copying w3lib/http.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_w3lib/build/w3lib copying w3lib/_types.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_w3lib/build/w3lib copying w3lib/encoding.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_w3lib/build/w3lib copying w3lib/_url.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_w3lib/build/w3lib copying w3lib/__init__.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_w3lib/build/w3lib copying w3lib/util.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_w3lib/build/w3lib copying w3lib/url.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_w3lib/build/w3lib copying w3lib/html.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_w3lib/build/w3lib running egg_info writing w3lib.egg-info/PKG-INFO writing dependency_links to w3lib.egg-info/dependency_links.txt writing top-level names to w3lib.egg-info/top_level.txt writing manifest file 'w3lib.egg-info/SOURCES.txt' reading manifest file 'w3lib.egg-info/SOURCES.txt' reading manifest template 'MANIFEST.in' warning: no files found matching '*.txt' under directory 'tests' adding license file 'LICENSE' writing manifest file 'w3lib.egg-info/SOURCES.txt' copying w3lib/py.typed -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_w3lib/build/w3lib dh_auto_test -O--buildsystem=pybuild I: pybuild base:240: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_w3lib/build; python3.11 -m pytest tests ============================= test session starts ============================== platform linux -- Python 3.11.2, pytest-7.2.1, pluggy-1.0.0+repack rootdir: /<<PKGBUILDDIR>>, configfile: pytest.ini collected 314 items tests/test_encoding.py ................... [ 6%] tests/test_html.py ..................................................... [ 22%] .. [ 23%] tests/test_http.py ....... [ 25%] tests/test_url.py x...xxx....x..x.................................xxxxxx [ 42%] xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.....Fx...xx......xxxFx....xx.x.. [ 65%] xx....x......xxxxxx..xxxx..x....x....................................... [ 88%] .............................. [ 98%] tests/test_util.py ..... [100%] =================================== FAILURES =================================== _ test_safe_url_string_url[https://"%;<=>@[]^`{|}\x7f:"%;<=>@[]^`{|}\x7f:@example.com-https://%22%25%3B%3C%3D%3E%40%5B%5D%5E%60%7B%7C%7D%7F:%22%25%3b%3c%3d%3e%40%5b%5d%5e%60%7b%7c%7d%7f...@example.com] _ url = 'https://"%;<=>@[]^`{|}\x7f:"%;<=>@[]^`{|}\x7f:@example.com' output = 'https://%22%25%3B%3C%3D%3E%40%5B%5D%5E%60%7B%7C%7D%7F:%22%25%3b%3c%3d%3e%40%5b%5d%5e%60%7b%7c%7d%7f...@example.com' @pytest.mark.parametrize( "url,output", tuple( case if case[0] not in KNOWN_SAFE_URL_STRING_URL_ISSUES else pytest.param(*case, marks=pytest.mark.xfail(strict=True)) for case in SAFE_URL_URL_CASES ), ) def test_safe_url_string_url( url: StrOrBytes, output: Union[str, Type[Exception]] ) -> None: > _test_safe_url_string(url, output=output) tests/test_url.py:435: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ tests/test_url.py:343: in _test_safe_url_string return _test_safe_url_func( tests/test_url.py:332: in _test_safe_url_func actual = func(url, **kwargs) w3lib/url.py:142: in safe_url_string parts = urlsplit(_strip(decoded)) /usr/lib/python3.11/urllib/parse.py:516: in urlsplit _check_bracketed_netloc(netloc) /usr/lib/python3.11/urllib/parse.py:454: in _check_bracketed_netloc _check_bracketed_host(hostname) /usr/lib/python3.11/urllib/parse.py:463: in _check_bracketed_host ip = ipaddress.ip_address(hostname) # Throws Value Error if not IPv6 or IPv4 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ address = 'example.com' def ip_address(address): """Take an IP string/int and return an object of the correct type. Args: address: A string or integer, the IP address. Either IPv4 or IPv6 addresses may be supplied; integers less than 2**32 will be considered to be IPv4 by default. Returns: An IPv4Address or IPv6Address object. Raises: ValueError: if the *address* passed isn't either a v4 or a v6 address """ try: return IPv4Address(address) except (AddressValueError, NetmaskValueError): pass try: return IPv6Address(address) except (AddressValueError, NetmaskValueError): pass > raise ValueError(f'{address!r} does not appear to be an IPv4 or IPv6 > address') E ValueError: 'example.com' does not appear to be an IPv4 or IPv6 address /usr/lib/python3.11/ipaddress.py:54: ValueError _______ test_safe_url_string_url[http://[2a01:5cc0:1:2:3:4]-ValueError] ________ [XPASS(strict)] =========================== short test summary info ============================ FAILED tests/test_url.py::test_safe_url_string_url[https:/"%;<=>@[]^`{|}\x7f:"%;<=>@[]^`{|}\x7f:@example.com-https:/%22%25%3B%3C%3D%3E%40%5B%5D%5E%60%7B%7C%7D%7F:%22%25%3b%3c%3d%3e%40%5b%5d%5e%60%7b%7c%7d%7f...@example.com] FAILED tests/test_url.py::test_safe_url_string_url[http:/[2a01:5cc0:1:2:3:4]-ValueError] ================== 2 failed, 236 passed, 76 xfailed in 1.54s =================== E: pybuild pybuild:388: test: plugin distutils failed with: exit code=1: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.11_w3lib/build; python3.11 -m pytest tests dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p 3.11 returned exit code 13 make: *** [debian/rules:6: binary] Error 25 dpkg-buildpackage: error: debian/rules binary subprocess returned exit status 2 -------------------------------------------------------------------------------- The above is just how the build ends and not necessarily the most relevant part. If required, the full build log is available here: https://people.debian.org/~sanvila/build-logs/bookworm/ 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 could not 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-w3lib, so that this is still visible in the BTS web page for this package. Note: The following packages fail in a similar weird way: asyncpg python-taskflow python-w3lib yarl Maybe there is a common reason, or maybe the packages need to adapt anyway. Thanks.