Package: src:fava Version: 1.30.2+dfsg-1 Severity: serious Tags: ftbfs forky sid
Dear maintainer: During a rebuild of all packages in unstable, this package failed to build. Below you will find the last part of the build log (probably the most relevant part, but not necessarily). If required, the full build log is available here: https://people.debian.org/~sanvila/build-logs/202510/ 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 cannot 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:fava, so that this is still visible in the BTS web page for this package. Thanks. -------------------------------------------------------------------------------- [...] debian/rules clean dh clean --buildsystem=pybuild debian/rules override_dh_auto_clean make[1]: Entering directory '/<<PKGBUILDDIR>>' dh_auto_clean rm -f debian/manpages/fava.1 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 debian/rules override_dh_auto_build [... snipped ...] adding 'fava/help/beancount_syntax.md' adding 'fava/help/budgets.md' adding 'fava/help/conversion.md' adding 'fava/help/extensions.md' adding 'fava/help/features.md' adding 'fava/help/filters.md' adding 'fava/help/import.md' adding 'fava/help/options.md' adding 'fava/plugins/__init__.py' adding 'fava/plugins/link_documents.py' adding 'fava/plugins/tag_discovered_documents.py' adding 'fava/static/app.css' adding 'fava/static/app.js' adding 'fava/static/favicon.ico' adding 'fava/static/fira-mono-cyrillic-400-normal-DHYMC6AA.woff2' adding 'fava/static/fira-mono-cyrillic-500-normal-GP3B6L2A.woff2' adding 'fava/static/fira-mono-cyrillic-ext-400-normal-47U2AFQV.woff2' adding 'fava/static/fira-mono-cyrillic-ext-500-normal-IYTP56HI.woff2' adding 'fava/static/fira-mono-greek-400-normal-TG32BQXP.woff2' adding 'fava/static/fira-mono-greek-500-normal-JKOMG4AV.woff2' adding 'fava/static/fira-mono-greek-ext-400-normal-5NS2LNAL.woff2' adding 'fava/static/fira-mono-greek-ext-500-normal-WGULELC2.woff2' adding 'fava/static/fira-mono-latin-400-normal-JUOXJG4X.woff2' adding 'fava/static/fira-mono-latin-500-normal-VF62XXV3.woff2' adding 'fava/static/fira-mono-latin-ext-400-normal-3XROC5NW.woff2' adding 'fava/static/fira-mono-latin-ext-500-normal-JGGLQGT6.woff2' adding 'fava/static/fira-sans-cyrillic-400-normal-4NGKZPJN.woff2' adding 'fava/static/fira-sans-cyrillic-500-normal-KFTFKU3C.woff2' adding 'fava/static/fira-sans-cyrillic-ext-400-normal-WVOY7NRO.woff2' adding 'fava/static/fira-sans-cyrillic-ext-500-normal-4H6B4IVQ.woff2' adding 'fava/static/fira-sans-greek-400-normal-PY2QUVXT.woff2' adding 'fava/static/fira-sans-greek-500-normal-ILVSAQV7.woff2' adding 'fava/static/fira-sans-greek-ext-400-normal-MKGGKMJ5.woff2' adding 'fava/static/fira-sans-greek-ext-500-normal-YYWKCZSG.woff2' adding 'fava/static/fira-sans-latin-400-normal-KAUASJ24.woff2' adding 'fava/static/fira-sans-latin-500-normal-C253YSMD.woff2' adding 'fava/static/fira-sans-latin-ext-400-normal-56UEAIOE.woff2' adding 'fava/static/fira-sans-latin-ext-500-normal-2K3NHRYJ.woff2' adding 'fava/static/fira-sans-vietnamese-400-normal-R54BX2N6.woff2' adding 'fava/static/fira-sans-vietnamese-500-normal-LWHOLEZR.woff2' adding 'fava/static/source-code-pro-cyrillic-400-normal-UXLSBRPT.woff2' adding 'fava/static/source-code-pro-cyrillic-500-normal-UOKXTEIS.woff2' adding 'fava/static/source-code-pro-cyrillic-ext-400-normal-Q2CO72IX.woff2' adding 'fava/static/source-code-pro-cyrillic-ext-500-normal-IOPA2U2T.woff2' adding 'fava/static/source-code-pro-greek-400-normal-GS45YFTM.woff2' adding 'fava/static/source-code-pro-greek-500-normal-BCO43RJD.woff2' adding 'fava/static/source-code-pro-greek-ext-400-normal-5ZDKOLBY.woff2' adding 'fava/static/source-code-pro-greek-ext-500-normal-WPH5XCVE.woff2' adding 'fava/static/source-code-pro-latin-400-normal-7OBWXAQW.woff2' adding 'fava/static/source-code-pro-latin-500-normal-NAQCYFWC.woff2' adding 'fava/static/source-code-pro-latin-ext-400-normal-MVDSW3OZ.woff2' adding 'fava/static/source-code-pro-latin-ext-500-normal-3NTJG75V.woff2' adding 'fava/static/source-code-pro-vietnamese-400-normal-QOZMJ2XL.woff2' adding 'fava/static/source-code-pro-vietnamese-500-normal-GWVYWDC4.woff2' adding 'fava/static/tree-sitter-PDIAFXZF.wasm' adding 'fava/static/tree-sitter-beancount-35RNAN4Q.wasm' adding 'fava/templates/_journal_table.html' adding 'fava/templates/_layout.html' adding 'fava/templates/_query_table.html' adding 'fava/templates/beancount_file' adding 'fava/templates/help.html' adding 'fava/templates/journal.html' adding 'fava/templates/statistics.html' adding 'fava/templates/macros/_account_macros.html' adding 'fava/templates/macros/_commodity_macros.html' adding 'fava/translations/bg/LC_MESSAGES/messages.mo' adding 'fava/translations/bg/LC_MESSAGES/messages.po' adding 'fava/translations/ca/LC_MESSAGES/messages.mo' adding 'fava/translations/ca/LC_MESSAGES/messages.po' adding 'fava/translations/de/LC_MESSAGES/messages.mo' adding 'fava/translations/de/LC_MESSAGES/messages.po' adding 'fava/translations/es/LC_MESSAGES/messages.mo' adding 'fava/translations/es/LC_MESSAGES/messages.po' adding 'fava/translations/fa/LC_MESSAGES/messages.mo' adding 'fava/translations/fa/LC_MESSAGES/messages.po' adding 'fava/translations/fr/LC_MESSAGES/messages.mo' adding 'fava/translations/fr/LC_MESSAGES/messages.po' adding 'fava/translations/nl/LC_MESSAGES/messages.mo' adding 'fava/translations/nl/LC_MESSAGES/messages.po' adding 'fava/translations/pt/LC_MESSAGES/messages.mo' adding 'fava/translations/pt/LC_MESSAGES/messages.po' adding 'fava/translations/pt_BR/LC_MESSAGES/messages.mo' adding 'fava/translations/pt_BR/LC_MESSAGES/messages.po' adding 'fava/translations/ru/LC_MESSAGES/messages.mo' adding 'fava/translations/ru/LC_MESSAGES/messages.po' adding 'fava/translations/sk/LC_MESSAGES/messages.mo' adding 'fava/translations/sk/LC_MESSAGES/messages.po' adding 'fava/translations/sv/LC_MESSAGES/messages.mo' adding 'fava/translations/sv/LC_MESSAGES/messages.po' adding 'fava/translations/uk/LC_MESSAGES/messages.mo' adding 'fava/translations/uk/LC_MESSAGES/messages.po' adding 'fava/translations/zh/LC_MESSAGES/messages.mo' adding 'fava/translations/zh/LC_MESSAGES/messages.po' adding 'fava/translations/zh_Hant_TW/LC_MESSAGES/messages.mo' adding 'fava/translations/zh_Hant_TW/LC_MESSAGES/messages.po' adding 'fava/util/__init__.py' adding 'fava/util/date.py' adding 'fava/util/excel.py' adding 'fava/util/ranking.py' adding 'fava/util/sets.py' adding 'fava/util/unreachable.py' adding 'fava-1.30.2+dfsg.dist-info/licenses/AUTHORS' adding 'fava-1.30.2+dfsg.dist-info/licenses/LICENSE' adding 'fava-1.30.2+dfsg.dist-info/METADATA' adding 'fava-1.30.2+dfsg.dist-info/WHEEL' adding 'fava-1.30.2+dfsg.dist-info/entry_points.txt' adding 'fava-1.30.2+dfsg.dist-info/top_level.txt' adding 'fava-1.30.2+dfsg.dist-info/RECORD' removing build/bdist.linux-x86_64/wheel Successfully built fava-1.30.2+dfsg-py3-none-any.whl I: pybuild plugin_pyproject:144: Unpacking wheel built for python3.13 with "installer" module help2man \ --name "Web interface for the double-entry accounting tool Beancount" \ --no-info \ --include /<<PKGBUILDDIR>>/debian/manpages/fava.tpl \ "PYTHONPATH=\"/<<PKGBUILDDIR>>/src\" $(pybuild --print interpreter --interpreter python3) -m fava.cli" \ > /<<PKGBUILDDIR>>/debian/manpages/fava.1 sed -i s/cli.py/fava/ /<<PKGBUILDDIR>>/debian/manpages/fava.1 sed -i s/FAVA,/FAVA/ /<<PKGBUILDDIR>>/debian/manpages/fava.1 make[1]: Leaving directory '/<<PKGBUILDDIR>>' dh_auto_test -O--buildsystem=pybuild I: pybuild base:311: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_fava/build; python3.13 -m pytest tests ============================= test session starts ============================== platform linux -- Python 3.13.7, pytest-8.4.2, pluggy-1.6.0 rootdir: /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_fava/build configfile: pyproject.toml plugins: anyio-4.11.0, typeguard-4.4.4, cov-5.0.0 collected 448 items tests/test_application.py ............................................. [ 10%] tests/test_beans.py ....... [ 11%] tests/test_beans_str.py ....... [ 13%] tests/test_build_backend.py x [ 13%] tests/test_cli.py .. [ 13%] tests/test_core.py .......... [ 16%] tests/test_core_accounts.py .. [ 16%] tests/test_core_attributes.py ... [ 17%] tests/test_core_budgets.py ....... [ 18%] tests/test_core_charts.py ...... [ 20%] tests/test_core_commodities.py .. [ 20%] tests/test_core_conversion.py ....................................... [ 29%] tests/test_core_documents.py .. [ 29%] tests/test_core_fava_options.py ... [ 30%] tests/test_core_file.py ............. [ 33%] tests/test_core_filters.py ..................................... [ 41%] tests/test_core_ingest.py ........... [ 43%] tests/test_core_inventory.py .... [ 44%] tests/test_core_misc.py .. [ 45%] tests/test_core_number.py .... [ 46%] tests/test_core_query_shell.py .....s [ 47%] tests/test_core_tree.py ... [ 48%] tests/test_core_watcher.py ..... [ 49%] tests/test_ext.py .x [ 49%] tests/test_extensions.py . [ 50%] tests/test_internal_api.py .. [ 50%] tests/test_json_api.py .............................F........ [ 58%] tests/test_plugins_link_documents.py ... [ 59%] tests/test_plugins_tag_discovered_documents.py . [ 59%] tests/test_serialisation.py ..................... [ 64%] tests/test_template_filters.py ... [ 65%] tests/test_templates.py ... [ 65%] tests/test_util.py ...... [ 67%] tests/test_util_date.py ................................................ [ 77%] ........................................................................ [ 93%] ...................... [ 98%] tests/test_util_excel.py .s [ 99%] tests/test_util_ranking.py . [ 99%] tests/test_util_sets.py .. [100%] =================================== FAILURES =================================== ____________ test_api_unix_only[options-/long-example/api/options] _____________ test_client = <FlaskClient <Flask 'fava'>> snapshot = <function snapshot.<locals>.snapshot_data at 0x7f5f625f05e0> name = 'options', url = '/long-example/api/options' @pytest.mark.skipif(sys.platform == "win32", reason="does not run on windows") @pytest.mark.parametrize( ("name", "url"), [ ("documents", "/example/api/documents"), ("options", "/long-example/api/options"), ], ) def test_api_unix_only( test_client: FlaskClient, snapshot: SnapshotFunc, name: str, url: str, ) -> None: response = test_client.get(url) data = assert_api_success(response) assert data > snapshot(data, name=name, json=True) tests/test_json_api.py:781: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ data = '{\n "beancount_options": {\n "account_current_conversions": "Conversions:Current",\n "account_current_earnings...upcoming-events": "7",\n "uptodate-indicator-grey-lookback-days": "60",\n "use-external-editor": "False"\n }\n}' name = 'options' def snapshot_data( data: Any, name: str | None = None, *, json: bool = False, ) -> None: if os.environ.get("SNAPSHOT_IGNORE"): # For the tests runs with old dependencies, we avoid comparing # the snapshots, as they might change in subtle ways between # dependency versions. return snap_count[fn_name] += 1 filename = f"{module_name}-{fn_name}" if name: filename = f"{filename}-{name}" elif snap_count[fn_name] > 1: filename = f"{filename}-{snap_count[fn_name]}" if json: data = dumps(data) filename += ".json" snap_file = snap_dir / filename # print strings directly, otherwise try pretty-printing out = data if isinstance(data, str) else pformat(data) # replace today today = local_today() out = out.replace(str(today), "TODAY") # replace entry hashes out = re.sub(r'_hash": "[0-9a-f]+', '_hash": "ENTRY_HASH', out) out = re.sub(r"context-[0-9a-f]+", "context-ENTRY_HASH", out) out = re.sub( r"data-entry=\\\"[0-9a-f]+", 'data-entry=\\"ENTRY_HASH', out ) # replace mtimes out = re.sub(r"mtime=\d+", "mtime=MTIME", out) out = re.sub(r'id="ledger-mtime">\d+', 'id="ledger-mtime">MTIME', out) # replace env-dependant info out = out.replace('have_excel": false', 'have_excel": true') for dir_path, replacement in [ (str(test_data_dir), "TEST_DATA_DIR"), ]: if os.name == "nt": search = dir_path.replace("\\", "\\\\") + "\\\\" out = out.replace(search, replacement + "/") else: out = out.replace(dir_path, replacement) if os.environ.get("SNAPSHOT_UPDATE"): snap_file.write_text(out, "utf-8") else: contents = ( snap_file.read_text("utf-8") if snap_file.exists() else "" ) > assert out == contents, ( "Snaphot test failed. Snapshots can be updated with " "`SNAPSHOT_UPDATE=1 pytest`" ) E AssertionError: Snaphot test failed. Snapshots can be updated with `SNAPSHOT_UPDATE=1 pytest` E assert '{\n "beanco...alse"\n }\n}' == '{\n "beanco...alse"\n }\n}' E E Skipping 621 identical leading characters in diff, use -v to show E - : sign=0 integer_max=1 fractional_common=0 fractional_max=0 \"0\" \"0\"\nGLD : sign=1 integer_max=2 fractional_common=0 fractional_max=0 \"-00\" \"-00\"\nIRAUSD : sign=1 integer_max=5 fractional_common=2 fractional_max=2 \"-00000.00\" \"-00000.00\"\nITOT : sign=1 integer_max=2 fractional_common=0 fractional_max=0 \"-00\" \"-00\"\nRGAGX : sign=0 integer_max=1 fractional_common=3 fractional_max=3 \"0.000\" \"0.000\"\nUSD ... E E ...Full output truncated (55 lines hidden), use '-vv' to show tests/conftest.py:150: AssertionError =========================== short test summary info ============================ FAILED tests/test_json_api.py::test_api_unix_only[options-/long-example/api/options] ============= 1 failed, 443 passed, 2 skipped, 2 xfailed in 4.08s ============== E: pybuild pybuild:389: test: plugin pyproject failed with: exit code=1: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_fava/build; python3.13 -m pytest tests dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p 3.13 returned exit code 13 make: *** [debian/rules:10: binary] Error 25 dpkg-buildpackage: error: debian/rules binary subprocess returned exit status 2 --------------------------------------------------------------------------------

