Package: src:beautifulsoup4 Version: 4.13.4-1 Severity: serious Tags: ftbfs trixie sid
Dear maintainer: During a rebuild of all packages in unstable, your package failed to build: -------------------------------------------------------------------------------- [...] debian/rules clean dh clean --buildsystem=pybuild debian/rules override_dh_auto_clean make[1]: Entering directory '/<<PKGBUILDDIR>>' dh_auto_clean rm -rf build make[1]: Leaving directory '/<<PKGBUILDDIR>>' 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 dh_auto_build -O--buildsystem=pybuild I: pybuild plugin_pyproject:129: Building wheel for python3.13 with "build" module I: pybuild base:311: python3.13 -m build --skip-dependency-check --no-isolation --wheel --outdir /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_bs4 * Building wheel... Successfully built beautifulsoup4-4.13.4-py3-none-any.whl I: pybuild plugin_pyproject:144: Unpacking wheel built for python3.13 with "installer" module debian/rules execute_after_dh_auto_build make[1]: Entering directory '/<<PKGBUILDDIR>>' python3 -m sphinx -aEN -b html -d build/doctrees doc build/html Running Sphinx v8.1.3 loading translations [en,ja,ko,ru,pt,zh]... not available for built-in messages making output directory... done loading intersphinx inventory 'python' from https://docs.python.org/3/objects.inv ... building [mo]: all of 0 po files writing output... building [html]: all source files updating environment: [new config] 1 added, 0 changed, 0 removed reading sources... [100%] index looking for now-outdated files... none found pickling environment... done checking consistency... done preparing documents... done copying assets... copying static files... Writing evaluated template result to /<<PKGBUILDDIR>>/build/html/_static/language_data.js Writing evaluated template result to /<<PKGBUILDDIR>>/build/html/_static/basic.css Writing evaluated template result to /<<PKGBUILDDIR>>/build/html/_static/documentation_options.js Writing evaluated template result to /<<PKGBUILDDIR>>/build/html/_static/alabaster.css copying static files: done copying extra files... copying extra files: done copying assets: done writing output... [100%] index /<<PKGBUILDDIR>>/doc/index.rst:55: WARNING: unknown document: 'api/modules' [ref.doc] generating indices... genindex done writing additional pages... search done copying images... [100%] 6.1.jpg dumping search index in English (code: en)... done dumping object inventory... done build succeeded, 1 warning. The HTML pages are in build/html. python3 -m sphinx -aEN -b html -D language=es_ES -d build/doctrees.es doc.es/source build/html.es Running Sphinx v8.1.3 loading translations [es_ES]... done making output directory... done WARNING: html_static_path entry '_static' does not exist Converting `source_suffix = '.rst'` to `source_suffix = {'.rst': 'restructuredtext'}`. building [mo]: all of 0 po files writing output... building [html]: all source files updating environment: [new config] 1 added, 0 changed, 0 removed reading sources... [100%] index looking for now-outdated files... none found pickling environment... done checking consistency... done preparing documents... done copying assets... copying static files... Writing evaluated template result to /<<PKGBUILDDIR>>/build/html.es/_static/language_data.js Writing evaluated template result to /<<PKGBUILDDIR>>/build/html.es/_static/basic.css Writing evaluated template result to /<<PKGBUILDDIR>>/build/html.es/_static/documentation_options.js Writing evaluated template result to /<<PKGBUILDDIR>>/build/html.es/_static/sidebar.js Writing evaluated template result to /<<PKGBUILDDIR>>/build/html.es/_static/classic.css copying static files: done copying extra files... copying extra files: done copying assets: done writing output... [100%] index generating indices... genindex py-modindex done writing additional pages... search done copying images... [100%] 6.1.jpg dumping search index in Spanish (code: es)... done dumping object inventory... done build succeeded, 1 warning. The HTML pages are in build/html.es. python3 -m sphinx -aEN -b html -D language=pt_BR -d build/doctrees.ptbr doc.ptbr/source build/html.ptbr Running Sphinx v8.1.3 loading translations [pt_BR]... done making output directory... done WARNING: html_static_path entry '_static' does not exist Converting `source_suffix = '.rst'` to `source_suffix = {'.rst': 'restructuredtext'}`. building [mo]: all of 0 po files writing output... building [html]: all source files updating environment: [new config] 1 added, 0 changed, 0 removed reading sources... [100%] index looking for now-outdated files... none found pickling environment... done checking consistency... done preparing documents... done copying assets... copying static files... Writing evaluated template result to /<<PKGBUILDDIR>>/build/html.ptbr/_static/language_data.js Writing evaluated template result to /<<PKGBUILDDIR>>/build/html.ptbr/_static/basic.css Writing evaluated template result to /<<PKGBUILDDIR>>/build/html.ptbr/_static/documentation_options.js Writing evaluated template result to /<<PKGBUILDDIR>>/build/html.ptbr/_static/sidebar.js Writing evaluated template result to /<<PKGBUILDDIR>>/build/html.ptbr/_static/classic.css copying static files: done copying extra files... copying extra files: done copying assets: done writing output... [100%] index generating indices... genindex done writing additional pages... search done copying images... [100%] 6.1.jpg dumping search index in Portuguese (code: pt)... done dumping object inventory... done build succeeded, 1 warning. The HTML pages are in build/html.ptbr. python3 -m sphinx -aEN -b html -D language=ru_RU -d build/doctrees.ru doc.ru/source build/html.ru Running Sphinx v8.1.3 loading translations [ru_RU]... done making output directory... done WARNING: html_static_path entry '_static' does not exist Converting `source_suffix = '.rst'` to `source_suffix = {'.rst': 'restructuredtext'}`. building [mo]: all of 0 po files writing output... building [html]: all source files updating environment: [new config] 2 added, 0 changed, 0 removed reading sources... [ 50%] bs4ru reading sources... [100%] index looking for now-outdated files... none found pickling environment... done checking consistency... done preparing documents... done copying assets... copying static files... Writing evaluated template result to /<<PKGBUILDDIR>>/build/html.ru/_static/language_data.js Writing evaluated template result to /<<PKGBUILDDIR>>/build/html.ru/_static/basic.css Writing evaluated template result to /<<PKGBUILDDIR>>/build/html.ru/_static/documentation_options.js Writing evaluated template result to /<<PKGBUILDDIR>>/build/html.ru/_static/sidebar.js Writing evaluated template result to /<<PKGBUILDDIR>>/build/html.ru/_static/classic.css copying static files: done copying extra files... copying extra files: done copying assets: done writing output... [ 50%] bs4ru writing output... [100%] index generating indices... genindex done writing additional pages... search done copying images... [100%] 6.1.jpg dumping search index in Russian (code: ru)... done dumping object inventory... done build succeeded, 1 warning. The HTML pages are in build/html.ru. python3 -m sphinx -aEN -b html -D language=zh_CN -d build/doctrees.zh doc.zh/source build/html.zh Running Sphinx v8.1.3 loading translations [zh_CN]... done making output directory... done WARNING: html_static_path entry '_static' does not exist Converting `source_suffix = '.rst'` to `source_suffix = {'.rst': 'restructuredtext'}`. building [mo]: all of 0 po files writing output... building [html]: all source files updating environment: [new config] 1 added, 0 changed, 0 removed reading sources... [100%] index looking for now-outdated files... none found pickling environment... done checking consistency... done preparing documents... done copying assets... copying static files... Writing evaluated template result to /<<PKGBUILDDIR>>/build/html.zh/_static/language_data.js Writing evaluated template result to /<<PKGBUILDDIR>>/build/html.zh/_static/basic.css Writing evaluated template result to /<<PKGBUILDDIR>>/build/html.zh/_static/documentation_options.js Writing evaluated template result to /<<PKGBUILDDIR>>/build/html.zh/_static/sidebar.js Writing evaluated template result to /<<PKGBUILDDIR>>/build/html.zh/_static/classic.css copying static files: done copying extra files... copying extra files: done copying assets: done writing output... [100%] index generating indices... genindex py-modindex done writing additional pages... search done dumping search index in Chinese (code: zh)... done dumping object inventory... done build succeeded, 1 warning. The HTML pages are in build/html.zh. make[1]: Leaving directory '/<<PKGBUILDDIR>>' dh_auto_test -O--buildsystem=pybuild I: pybuild base:311: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_bs4/build; python3.13 -m pytest ============================= test session starts ============================== platform linux -- Python 3.13.3, pytest-8.3.5, pluggy-1.5.0 rootdir: /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_bs4/build configfile: pyproject.toml collected 851 items bs4/tests/test_builder.py ..... [ 0%] bs4/tests/test_builder_registry.py ........... [ 1%] bs4/tests/test_css.py .................................................. [ 7%] .......... [ 8%] bs4/tests/test_dammit.py ............................................... [ 14%] [ 14%] bs4/tests/test_element.py ......... [ 15%] bs4/tests/test_filter.py ............................................... [ 21%] ............................ [ 24%] bs4/tests/test_formatter.py ............................ [ 27%] bs4/tests/test_fuzz.py FF.........sssssss [ 29%] bs4/tests/test_html5lib.py ............................................. [ 35%] ............................................. [ 40%] bs4/tests/test_htmlparser.py ........................................... [ 45%] ...........................F......... [ 49%] bs4/tests/test_lxml.py ................................................. [ 55%] ............................................................ [ 62%] bs4/tests/test_navigablestring.py ......... [ 63%] bs4/tests/test_pageelement.py ...................................... [ 68%] bs4/tests/test_soup.py ................................................. [ 73%] .................................. [ 77%] bs4/tests/test_tag.py ........................ [ 80%] bs4/tests/test_tree.py ................................................. [ 86%] ........................................................................ [ 94%] ............................................ [100%] =================================== FAILURES =================================== _ TestFuzz.test_rejected_markup[clusterfuzz-testcase-minimized-bs4_fuzzer-5703933063462912] _ self = <bs4.tests.test_fuzz.TestFuzz object at 0x7f0bedc87110> filename = 'clusterfuzz-testcase-minimized-bs4_fuzzer-5703933063462912' @pytest.mark.parametrize( "filename", [ "clusterfuzz-testcase-minimized-bs4_fuzzer-5703933063462912", "crash-ffbdfa8a2b26f13537b68d3794b0478a4090ee4a", ], ) def test_rejected_markup(self, filename): markup = self.__markup(filename) > with pytest.raises(ParserRejectedMarkup): E Failed: DID NOT RAISE <class 'bs4.exceptions.ParserRejectedMarkup'> bs4/tests/test_fuzz.py:81: Failed _ TestFuzz.test_rejected_markup[crash-ffbdfa8a2b26f13537b68d3794b0478a4090ee4a] _ self = <bs4.tests.test_fuzz.TestFuzz object at 0x7f0bedc86fd0> filename = 'crash-ffbdfa8a2b26f13537b68d3794b0478a4090ee4a' @pytest.mark.parametrize( "filename", [ "clusterfuzz-testcase-minimized-bs4_fuzzer-5703933063462912", "crash-ffbdfa8a2b26f13537b68d3794b0478a4090ee4a", ], ) def test_rejected_markup(self, filename): markup = self.__markup(filename) > with pytest.raises(ParserRejectedMarkup): E Failed: DID NOT RAISE <class 'bs4.exceptions.ParserRejectedMarkup'> bs4/tests/test_fuzz.py:81: Failed ------------------------------ Captured log call ------------------------------- WARNING bs4.dammit:dammit.py:825 Some characters could not be decoded, and were replaced with REPLACEMENT CHARACTER. ________________ TestHTMLParserTreeBuilder.test_rejected_input _________________ self = <bs4.tests.test_htmlparser.TestHTMLParserTreeBuilder object at 0x7f0bedc874d0> def test_rejected_input(self): # Python's html.parser will occasionally reject markup, # especially when there is a problem with the initial DOCTYPE # declaration. Different versions of Python sound the alarm in # different ways, but Beautiful Soup consistently raises # errors as ParserRejectedMarkup exceptions. bad_markup = [ # https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=28873 # https://github.com/guidovranken/python-library-fuzzers/blob/master/corp-html/519e5b4269a01185a0d5e76295251921da2f0700 # https://github.com/python/cpython/issues/81928 b"\n<![\xff\xfe\xfe\xcd\x00", # https://github.com/guidovranken/python-library-fuzzers/blob/master/corp-html/de32aa55785be29bbc72a1a8e06b00611fb3d9f8 # https://github.com/python/cpython/issues/78661 # b"<![n\x00", b"<![UNKNOWN[]]>", ] for markup in bad_markup: > with pytest.raises(ParserRejectedMarkup): E Failed: DID NOT RAISE <class 'bs4.exceptions.ParserRejectedMarkup'> bs4/tests/test_htmlparser.py:37: Failed =========================== short test summary info ============================ FAILED bs4/tests/test_fuzz.py::TestFuzz::test_rejected_markup[clusterfuzz-testcase-minimized-bs4_fuzzer-5703933063462912] FAILED bs4/tests/test_fuzz.py::TestFuzz::test_rejected_markup[crash-ffbdfa8a2b26f13537b68d3794b0478a4090ee4a] FAILED bs4/tests/test_htmlparser.py::TestHTMLParserTreeBuilder::test_rejected_input =================== 3 failed, 841 passed, 7 skipped in 1.65s =================== E: pybuild pybuild:389: test: plugin pyproject failed with: exit code=1: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_bs4/build; python3.13 -m pytest dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p 3.13 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/202505/ 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:beautifulsoup4, so that this is still visible in the BTS web page for this package. Thanks.