• Bug#1103077: xphyle: FTBFS in testing/i386: KeyError: 'setuptools_scm'

    From Lucas Nussbaum@21:1/5 to All on Mon Apr 14 13:50:12 2025
    Source: xphyle
    Version: 4.4.4-6
    Severity: serious
    Justification: FTBFS
    Tags: trixie sid ftbfs
    User: lucas@debian.org
    Usertags: ftbfs-20250414 ftbfs-trixie

    Hi,

    During a rebuild of all packages in testing (trixie), your package failed
    to build on i386.


    Relevant part (hopefully):
    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
    pybuild --configure -i python{version} -p 3.13
    dh_auto_build -O--buildsystem=pybuild
    pybuild --build -i python{version} -p 3.13
    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 /build/reproducible-path/xphyle-4.4.4/.pybuild/cpython3_3.13_xphyle
    * Building wheel... /usr/lib/python3/dist-packages/setuptools/_distutils/dist.py:270: UserWarning: Unknown distribution option: 'tests_require'
    warnings.warn(msg)
    WARNING setuptools_scm.pyproject_reading toml section missing 'pyproject.toml does not contain a tool.setuptools_scm section'
    Traceback (most recent call last):
    File "/usr/lib/python3/dist-packages/setuptools_scm/_integration/pyproject_reading.py", line 36, in read_pyproject
    section = defn.get("tool", {})[tool_name]
    ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
    KeyError: 'setuptools_scm'
    running bdist_wheel
    running build
    running build_py
    creating build/lib/xphyle
    copying xphyle/urls.py -> build/lib/xphyle
    copying xphyle/utils.py -> build/lib/xphyle
    copying xphyle/progress.py -> build/lib/xphyle
    copying xphyle/formats.py -> build/lib/xphyle
    copying xphyle/paths.py -> build/lib/xphyle
    copying xphyle/types.py -> build/lib/xphyle
    copying xphyle/__init__.py -> build/lib/xphyle
    installing to build/bdist.linux-i686/wheel
    running install
    running install_lib
    creating build/bdist.linux-i686/wheel
    creating build/bdist.linux-i686/wheel/xphyle
    copying build/lib/xphyle/urls.py -> build/bdist.linux-i686/wheel/./xphyle copying build/lib/xphyle/utils.py -> build/bdist.linux-i686/wheel/./xphyle copying build/lib/xphyle/progress.py -> build/bdist.linux-i686/wheel/./xphyle copying build/lib/xphyle/formats.py -> build/bdist.linux-i686/wheel/./xphyle copying build/lib/xphyle/paths.py -> build/bdist.linux-i686/wheel/./xphyle copying build/lib/xphyle/types.py -> build/bdist.linux-i686/wheel/./xphyle copying build/lib/xphyle/__init__.py -> build/bdist.linux-i686/wheel/./xphyle running install_egg_info
    running egg_info
    creating xphyle.egg-info
    writing xphyle.egg-info/PKG-INFO
    writing dependency_links to xphyle.egg-info/dependency_links.txt
    writing requirements to xphyle.egg-info/requires.txt
    writing top-level names to xphyle.egg-info/top_level.txt
    writing manifest file 'xphyle.egg-info/SOURCES.txt'
    reading manifest file 'xphyle.egg-info/SOURCES.txt'
    reading manifest template 'MANIFEST.in'
    adding license file 'LICENSE'
    writing manifest file 'xphyle.egg-info/SOURCES.txt'
    Copying xphyle.egg-info to build/bdist.linux-i686/wheel/./xphyle-4.4.4.egg-info
    running install_scripts
    creating build/bdist.linux-i686/wheel/xphyle-4.4.4.dist-info/WHEEL
    creating '/build/reproducible-path/xphyle-4.4.4/.pybuild/cpython3_3.13_xphyle/.tmp-hgo8_xoy/xphyle-4.4.4-py3-none-any.whl' and adding 'build/bdist.linux-i686/wheel' to it
    adding 'xphyle/__init__.py'
    adding 'xphyle/formats.py'
    adding 'xphyle/paths.py'
    adding 'xphyle/progress.py'
    adding 'xphyle/types.py'
    adding 'xphyle/urls.py'
    adding 'xphyle/utils.py'
    adding 'xphyle-4.4.4.dist-info/LICENSE'
    adding 'xphyle-4.4.4.dist-info/METADATA'
    adding 'xphyle-4.4.4.dist-info/WHEEL'
    adding 'xphyle-4.4.4.dist-info/top_level.txt'
    adding 'xphyle-4.4.4.dist-info/RECORD'
    removing build/bdist.linux-i686/wheel
    Successfully built xphyle-4.4.4-py3-none-any.whl
    I: pybuild plugin_pyproject:144: Unpacking wheel built for python3.13 with "installer" module
    dh_auto_test -O--buildsystem=pybuild
    pybuild --test --test-pytest -i python{version} -p 3.13
    I: pybuild base:311: cd /build/reproducible-path/xphyle-4.4.4/.pybuild/cpython3_3.13_xphyle/build; python3.13 -m pytest -m "not perf" -vv
    ============================= test session starts ==============================
    platform linux -- Python 3.13.2, pytest-8.3.5, pluggy-1.5.0 -- /usr/bin/python3.13
    cachedir: .pytest_cache
    rootdir: /build/reproducible-path/xphyle-4.4.4
    plugins: typeguard-4.4.2
    collecting ... collected 147 items / 2 deselected / 145 selected

    tests/test_formats.py::ThreadsTests::test_threads PASSED [ 0%]
    tests/test_formats.py::CompressionTests::test_bgzip_compress PASSED [ 1%]
    tests/test_formats.py::CompressionTests::test_bgzip_decompress PASSED [ 2%]
    tests/test_formats.py::CompressionTests::test_bzip2 PASSED [ 2%]
    tests/test_formats.py::CompressionTests::test_get_format_from_mime_type PASSED [ 3%]
    tests/test_formats.py::CompressionTests::test_guess_format PASSED [ 4%]
    tests/test_formats.py::CompressionTests::test_gzip PASSED [ 4%]
    tests/test_formats.py::CompressionTests::test_igzip SKIPPED ('igzip' not available) [ 5%]
    tests/test_formats.py::CompressionTests::test_invalid_format PASSED [ 6%]
    tests/test_formats.py::CompressionTests::test_list_extensions PASSED [ 6%]
    tests/test_formats.py::CompressionTests::test_list_formats PASSED [ 7%]
    tests/test_formats.py::CompressionTests::test_lzma PASSED [ 8%]
    tests/test_formats.py::CompressionTests::test_pbzip2 PASSED [ 8%]
    tests/test_formats.py::CompressionTests::test_pigz PASSED [ 9%]
    tests/test_formats.py::CompressionTests::test_zstd PASSED [ 10%]
    tests/test_formats.py::FileTests::test_compress_file PASSED [ 11%]
    tests/test_formats.py::FileTests::test_compress_path PASSED [ 11%]
    tests/test_formats.py::FileTests::test_decompress_file PASSED [ 12%]
    tests/test_formats.py::FileTests::test_decompress_path PASSED [ 13%]
    tests/test_formats.py::FileTests::test_decompress_path_error PASSED [ 13%]
    tests/test_formats.py::FileTests::test_invalid PASSED [ 14%]
    tests/test_formats.py::FileTests::test_iter_system PASSED [ 15%]
    tests/test_formats.py::FileTests::test_system_bzip PASSED [ 15%]
    tests/test_formats.py::FileTests::test_system_gzip PASSED [ 16%]
    tests/test_formats.py::FileTests::test_system_lzma PASSED [ 17%]
    tests/test_formats.py::FileTests::test_system_zstd PASSED [ 17%]
    tests/test_formats.py::FileTests::test_truncated_gz PASSED [ 18%]
    tests/test_formats.py::FileTests::test_write_read_bytes_python PASSED [ 19%]
    tests/test_formats.py::FileTests::test_write_read_text_python PASSED [ 20%]
    tests/test_formats.py::StringTests::test_compress PASSED [ 20%]
    tests/test_formats.py::StringTests::test_compress_iterable PASSED [ 21%]
    tests/test_formats.py::StringTests::test_compress_string PASSED [ 22%]
    tests/test_formats.py::UncompressedSizeTests::test_get_uncompressed_size PASSED [ 22%]
    tests/test_paths.py::TempDirTests::test_context_manager PASSED [ 23%]
    tests/test_paths.py::TempDirTests::test_descriptor PASSED [ 24%]
    tests/test_paths.py::TempDirTests::test_dir PASSED [ 24%]
    tests/test_paths.py::TempDirTests::test_fifo PASSED [ 25%]
    tests/test_paths.py::TempDirTests::test_mode PASSED [ 26%]
    tests/test_paths.py::TempDirTests::test_tree PASSED [ 26%]
    tests/test_paths.py::PathTests::test_abspath_home PASSED [ 27%]
    tests/test_paths.py::PathTests::test_abspath_rel PASSED [ 28%]
    tests/test_paths.py::PathTests::test_abspath_std PASSED [ 28%]
    tests/test_paths.py::PathTests::test_check_access_file PASSED [ 29%]
    tests/test_paths.py::PathTests::test_check_access_std PASSED [ 30%]
    tests/test_paths.py::PathTests::test_check_path_std PASSED [ 31%]
    tests/test_paths.py::PathTests::test_check_readable_file PASSED [ 31%]
    tests/test_paths.py::PathTests::test_check_writable_file PASSED [ 32%]
    tests/test_paths.py::PathTests::test_convert_std_placeholder PASSED [ 33%]
    tests/test_paths.py::PathTests::test_default_search PASSED [ 33%]
    tests/test_paths.py::PathTests::test_dirspec PASSED [ 34%]
    tests/test_paths.py::PathTests::test_filename PASSED [ 35%]
    tests/test_paths.py::PathTests::test_filespec PASSED [ 35%]
    tests/test_paths.py::PathTests::test_find PASSED [ 36%]
    tests/test_paths.py::PathTests::test_find_with_matches PASSED [ 37%]
    tests/test_paths.py::PathTests::test_get_executable_path PASSED [ 37%]
    tests/test_paths.py::PathTests::test_get_root PASSED [ 38%]
    tests/test_paths.py::PathTests::test_get_set_permissions PASSED [ 39%]
    tests/test_paths.py::PathTests::test_no_permissions PASSED [ 40%]
    tests/test_paths.py::PathTests::test_pathspec PASSED [ 40%]
    tests/test_paths.py::PathTests::test_pathspec_default_search PASSED [ 41%]
    tests/test_paths.py::PathTests::test_pathvar PASSED [ 42%]
    tests/test_paths.py::PathTests::test_resolve_exe PASSED [ 42%]
    tests/test_paths.py::PathTests::test_resolve_file PASSED [ 43%]
    tests/test_paths.py::PathTests::test_resolve_missing PASSED [ 44%]
    tests/test_paths.py::PathTests::test_resolve_std PASSED [ 44%]
    tests/test_paths.py::PathTests::test_resolve_with_parent PASSED [ 45%]
    tests/test_paths.py::PathTests::test_safe_checks PASSED [ 46%]
    tests/test_paths.py::PathTests::test_set_permissions PASSED [ 46%]
    tests/test_paths.py::PathTests::test_split_path PASSED [ 47%]
    tests/test_progress.py::ProgressTests::test_iter_stream PASSED [ 48%]
    tests/test_progress.py::ProgressTests::test_progress PASSED [ 48%]
    tests/test_progress.py::ProgressTests::test_progress_delmited PASSED [ 49%]
    tests/test_types.py::TypeTests::test_cache PASSED [ 50%]
    tests/test_types.py::TypeTests::test_file_mode PASSED [ 51%]
    tests/test_types.py::TypeTests::test_mode_access PASSED [ 51%]
    tests/test_types.py::TypeTests::test_permission_set PASSED [ 52%]
    tests/test_types.py::TypeTests::test_permissions PASSED [ 53%]
    tests/test_urls.py::TestURLs::test_get_url_file_name PASSED [ 53%]
    tests/test_urls.py::TestURLs::test_mime_types PASSED [ 54%]
    tests/test_urls.py::TestURLs::test_open_invalid PASSED [ 55%]
    tests/test_urls.py::TestURLs::test_parse PASSED [ 55%]
    tests/test_utils.py::UtilsTests::test_compress_file_no_compression PASSED [ 56%]
    tests/test_utils.py::UtilsTests::test_compress_file_no_dest PASSED [ 57%]
    tests/test_utils.py::UtilsTests::test_compress_fileobj PASSED [ 57%]
    tests/test_utils.py::UtilsTests::test_compress_on_close PASSED [ 58%]
    tests/test_utils.py::UtilsTests::test_cycle_fileoutput PASSED [ 59%]
    tests/test_utils.py::UtilsTests::test_decompress_file PASSED [ 60%]
    tests/test_utils.py::UtilsTests::test_decompress_file_compression PASSED [ 60%]
    tests/test_utils.py::UtilsTests::test_exec_process PASSED [ 61%]
    tests/test_utils.py::UtilsTests::test_file_manager PASSED [ 62%]
    tests/test_utils.py::UtilsTests::test_file_manager_dup_files PASSED [ 62%]
    tests/test_utils.py::UtilsTests::test_fileinput PASSED [ 63%]
    tests/test_utils.py::UtilsTests::test_fileinput_defaults PASSED [ 64%]
    tests/test_utils.py::UtilsTests::test_fileoutput_stdout PASSED [ 64%]
    tests/test_utils.py::UtilsTests::test_fileoutput_with_header PASSED [ 65%]
    tests/test_utils.py::UtilsTests::test_linecount PASSED [ 66%]
    tests/test_utils.py::UtilsTests::test_linecount_empty PASSED [ 66%]
    tests/test_utils.py::UtilsTests::test_move_on_close PASSED [ 67%]
    tests/test_utils.py::UtilsTests::test_ncycle_fileoutput PASSED [ 68%]
    tests/test_utils.py::UtilsTests::test_pattern_file_output PASSED [ 68%]
    tests/test_utils.py::UtilsTests::test_pending PASSED [ 69%]
    tests/test_utils.py::UtilsTests::test_read_chunked PASSED [ 70%]
    tests/test_utils.py::UtilsTests::test_read_dict PASSED [ 71%]
    tests/test_utils.py::UtilsTests::test_read_lines PASSED [ 71%]
    tests/test_utils.py::UtilsTests::test_remove_on_close PASSED [ 72%]
    tests/test_utils.py::UtilsTests::test_rolling_fileoutput PASSED [ 73%]
    tests/test_utils.py::UtilsTests::test_rolling_fileoutput_write PASSED [ 73%]
    tests/test_utils.py::UtilsTests::test_single_fileoutput PASSED [ 74%]
    tests/test_utils.py::UtilsTests::test_tee_fileoutput PASSED [ 75%]
    tests/test_utils.py::UtilsTests::test_tee_fileoutput_binary PASSED [ 75%]
    tests/test_utils.py::UtilsTests::test_tee_fileoutput_no_newline PASSED [ 76%]
    tests/test_utils.py::UtilsTests::test_transcode PASSED [ 77%]
    tests/test_utils.py::UtilsTests::test_tsv PASSED [ 77%]
    tests/test_utils.py::UtilsTests::test_tsv_dict PASSED [ 78%]
    tests/test_utils.py::UtilsTests::test_tsv_dict_dups PASSED [ 79%]
    tests/test_utils.py::UtilsTests::test_uncompressed_size PASSED [ 80%]
    tests/test_utils.py::UtilsTests::test_write_bytes PASSED [ 80%]
    tests/test_utils.py::UtilsTests::test_write_dict PASSED [ 81%]
    tests/test_utils.py::UtilsTests::test_write_lines PASSED [ 82%]
    tests/test_xphyle.py::XphyleTests::test_configure PASSED [ 82%]
    tests/test_xphyle.py::XphyleTests::test_event_listeners PASSED [ 83%]
    tests/test_xphyle.py::XphyleTests::test_guess_format PASSED [ 84%]
    tests/test_xphyle.py::XphyleTests::test_open_ PASSED [ 84%]
    tests/test_xphyle.py::XphyleTests::test_open_process PASSED [ 85%]
    tests/test_xphyle.py::XphyleTests::test_open_safe PASSED [ 86%]
    tests/test_xphyle.py::XphyleTests::test_peek PASSED [ 86%]
    tests/test_xphyle.py::XphyleTests::test_process PASSED [ 87%]
    tests/test_xphyle.py::XphyleTests::test_process_close PASSED [ 88%]
    tests/test_xphyle.py::XphyleTests::test_process_close_hung PASSED [ 88%]
    tests/test_xphyle.py::XphyleTests::test_process_communicate PASSED [ 89%]
    tests/test_xphyle.py::XphyleTests::test_process_del PASSED [ 90%]
    tests/test_xphyle.py::XphyleTests::test_process_error PASSED [ 91%]
    tests/test_xphyle.py::XphyleTests::test_process_invalid PASSED [ 91%]
    tests/test_xphyle.py::XphyleTests::test_process_read PASSED [ 92%]
    tests/test_xphyle.py::XphyleTests::test_process_with_files PASSED [ 93%]
    tests/test_xphyle.py::XphyleTests::test_seek PASSED [ 93%]
    tests/test_xphyle.py::XphyleTests::test_truncate PASSED [ 94%]
    tests/test_xphyle.py::XphyleTests::test_xopen_buffer PASSED [ 95%]
    tests/test_xphyle.py::XphyleTests::test_xopen_compressed_stream PASSED [ 95%]
    tests/test_xphyle.py::XphyleTests::test_xopen_file FAILED [ 96%]
    tests/test_xphyle.py::XphyleTests::test_xopen_fileobj PASSED [ 97%]
    tests/test_xphyle.py::XphyleTests::test_xopen_invalid PASSED [ 97%]
    tests/test_xphyle.py::XphyleTests::test_xopen_mmap PASSED [ 98%]
    tests/test_xphyle.py::XphyleTests::test_xopen_std PASSED [ 99%]
    tests/test_xphyle.py::XphyleTests::test_xopen_url SKIPPED (No internet connection) [100%]

    =================================== FAILURES ===================================
    _________________________ XphyleTests.test_xopen_file __________________________

    self = <tests.test_xphyle.XphyleTests testMethod=test_xopen_file>

    def test_xopen_file(self):
    with self.assertRaises(IOError):
    xopen("foobar", "r")
    path = self.root.make_file(suffix=".gz")
    with xopen(path, "r", context_wrapper=True) as i:

    tests/test_xphyle.py:197:
    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
    xphyle/__init__.py:191: in __exit__
    self.close()
    xphyle/__init__.py:241: in close
    self._close()
    xphyle/__init__.py:248: in _close
    self._fileobj.close()
    xphyle/formats.py:188: in close
    self._raise_if_error()
    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

    self = <xphyle.formats.SystemReader object at 0xf6282be8>

    def _raise_if_error(self) -> None:
    """Raise EOFError if process is not running anymore and the
    exit code is nonzero.
    """
    retcode = self.process.poll()
    if retcode is not None and retcode != 0: # pragma: no-cover
    raise EOFError(
    f"{self.executable_name} process returned non-zero exit code "
    f"{retcode}. Is the input file truncated or corrupt?"
    )
    E EOFError: pigz process returned non-zero exit code 1. Is the input file truncated or corrupt?

    xphyle/formats.py:201: EOFError
    ----------------------------- Captured stderr call -----------------------------
    pigz: skipping: /tmp/tmphh4jxtg1/arww37zl.gz empty =============================== warnings summary ===============================
    xphyle/__init__.py:34
    /build/reproducible-path/xphyle-4.4.4/.pybuild/cpython3_3.13_xphyle/build/xphyle/__init__.py:34: DeprecationWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html
    import pkg_resources

    tests/test_performance.py:84
    /build/reproducible-path/xphyle-4.4.4/.pybuild/cpython3_3.13_xphyle/build/tests/test_performance.py:84: PytestUnknownMarkWarning: Unknown pytest.mark.perf - is this a typo? You can register custom marks to avoid this warning - for details, see https:
    //docs.pytest.org/en/stable/how-to/mark.html
    @pytest.mark.perf

    tests/test_performance.py:91
    /build/reproducible-path/xphyle-4.4.4/.pybuild/cpython3_3.13_xphyle/build/tests/test_performance.py:91: PytestUnknownMarkWarning: Unknown pytest.mark.perf - is this a typo? You can register custom marks to avoid this warning - for details, see https:
    //docs.pytest.org/en/stable/how-to/mark.html
    @pytest.mark.perf

    -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html =========================== short test summary info ============================
    FAILED tests/test_xphyle.py::XphyleTests::test_xopen_file - EOFError: pigz process returned non-zero exit code 1. Is the input file truncated or corrupt?
    ====== 1 failed, 142 passed, 2 skipped, 2 deselected, 3 warnings in 4.37s ======
    E: pybuild pybuild:389: test: plugin pyproject failed with: exit code=1: cd /build/reproducible-path/xphyle-4.4.4/.pybuild/cpython3_3.13_xphyle/build; python3.13 -m pytest -m "not perf" -vv
    rm -fr -- /tmp/dh-xdg-rundir-uXsRTxbp
    dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p 3.13 returned exit code 13


    The full build log is available from: http://qa-logs.debian.net/2025/04/14/xphyle_4.4.4-6_testing-i386.log

    All bugs filed during this archive rebuild are listed at: https://bugs.debian.org/cgi-bin/pkgreport.cgi?tag=ftbfs-20250414;users=lucas@debian.org
    or: https://udd.debian.org/bugs/?release=na&merged=ign&fnewerval=7&flastmodval=7&fusertag=only&fusertagtag=ftbfs-20250414&fusertaguser=lucas@debian.org&allbugs=1&cseverity=1&ctags=1&caffected=1#results

    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 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.

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)