• Bug#1103060: pyraf: FTBFS in testing/i386: KeyError: 'setuptools_scm'

    From Lucas Nussbaum@21:1/5 to All on Mon Apr 14 13:50:12 2025
    Source: pyraf
    Version: 2.2.2-2
    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 --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:311: python3.13 setup.py config
    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 config
    dh_auto_build -O--buildsystem=pybuild
    I: pybuild base:311: /usr/bin/python3 setup.py build
    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 build
    running build_py
    creating /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf
    copying pyraf/fill_clcache.py -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf
    copying pyraf/iraffunctions.py -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf
    copying pyraf/MplCanvasAdapter.py -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf
    copying pyraf/cltoken.py -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf
    copying pyraf/irafinst.py -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf
    copying pyraf/clcache.py -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf
    copying pyraf/tpar.py -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf
    copying pyraf/filecache.py -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf
    copying pyraf/irafimcur.py -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf
    copying pyraf/clparse.py -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf
    copying pyraf/__main__.py -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf
    copying pyraf/gkitkplot.py -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf
    copying pyraf/irafecl.py -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf
    copying pyraf/gki.py -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf
    copying pyraf/clast.py -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf
    copying pyraf/irafcompleter.py -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf
    copying pyraf/cllinecache.py -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf
    copying pyraf/epar.py -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf
    copying pyraf/gkigcur.py -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf
    copying pyraf/irafhelp.py -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf
    copying pyraf/pyrafglobals.py -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf
    copying pyraf/splash.py -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf
    copying pyraf/msgiowidget.py -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf
    copying pyraf/urwfiledlg.py -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf
    copying pyraf/clscan.py -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf
    copying pyraf/tkplottext.py -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf
    copying pyraf/irafpar.py -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf
    copying pyraf/irafdisplay.py -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf
    copying pyraf/pycmdline.py -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf
    copying pyraf/irafgwcs.py -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf
    copying pyraf/ipython_api.py -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf
    copying pyraf/msgiobuffer.py -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf
    copying pyraf/gkiiraf.py -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf
    copying pyraf/irafimport.py -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf
    copying pyraf/pseteparoption.py -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf
    copying pyraf/iraftask.py -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf
    copying pyraf/gkicmd.py -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf
    copying pyraf/gwm.py -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf
    copying pyraf/version.py -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf
    copying pyraf/aqutil.py -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf
    copying pyraf/irafnames.py -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf
    copying pyraf/irafukey.py -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf
    copying pyraf/GkiMpl.py -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf
    copying pyraf/gkitkbase.py -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf
    copying pyraf/generic.py -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf
    copying pyraf/graphcap.py -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf
    copying pyraf/Ptkplot.py -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf
    copying pyraf/pyrafTk.py -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf
    copying pyraf/cgeneric.py -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf
    copying pyraf/urwutil.py -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf
    copying pyraf/irafexecute.py -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf
    copying pyraf/iraf.py -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf
    copying pyraf/cl2py.py -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf
    copying pyraf/fontdata.py -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf
    copying pyraf/wutil.py -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf
    copying pyraf/sqliteshelve.py -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf
    copying pyraf/subproc.py -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf
    copying pyraf/textattrib.py -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf
    copying pyraf/newWindowHack.py -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf
    copying pyraf/__init__.py -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf
    copying pyraf/scanf.py -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf
    creating /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf/tests
    copying pyraf/tests/test_tasks.py -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf/tests
    copying pyraf/tests/test_using_tasks.py -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf/tests
    copying pyraf/tests/test_plot.py -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf/tests
    copying pyraf/tests/test_basic.py -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf/tests
    copying pyraf/tests/utils.py -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf/tests
    copying pyraf/tests/test_invocation.py -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf/tests
    copying pyraf/tests/test_cli.py -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf/tests
    copying pyraf/tests/test_clcache.py -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf/tests
    copying pyraf/tests/test_core_nongraphics.py -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf/tests
    copying pyraf/tests/__init__.py -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf/tests
    copying pyraf/tests/test_graphics.py -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf/tests
    creating /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf/tools
    copying pyraf/tools/irafutils.py -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf/tools
    copying pyraf/tools/compmixin.py -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf/tools
    copying pyraf/tools/irafglobals.py -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf/tools
    copying pyraf/tools/capable.py -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf/tools
    copying pyraf/tools/tkrotext.py -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf/tools
    copying pyraf/tools/basicpar.py -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf/tools
    copying pyraf/tools/teal.py -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf/tools
    copying pyraf/tools/vtor_checks.py -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf/tools
    copying pyraf/tools/filedlg.py -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf/tools
    copying pyraf/tools/cfgpars.py -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf/tools
    copying pyraf/tools/dialog.py -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf/tools
    copying pyraf/tools/alert.py -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf/tools
    copying pyraf/tools/listdlg.py -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf/tools
    copying pyraf/tools/eparoption.py -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf/tools
    copying pyraf/tools/taskpars.py -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf/tools
    copying pyraf/tools/minmatch.py -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf/tools
    copying pyraf/tools/teal_bttn.py -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf/tools
    copying pyraf/tools/editpar.py -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf/tools
    copying pyraf/tools/__init__.py -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf/tools
    creating /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf/tools/tests
    copying pyraf/tools/tests/test_cfgobj.py -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf/tools/tests
    copying pyraf/tools/tests/test_irafutils.py -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf/tools/tests
    copying pyraf/tools/tests/test_minmatch.py -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf/tools/tests
    copying pyraf/tools/tests/test_compmixin.py -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf/tools/tests
    copying pyraf/tools/tests/__init__.py -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf/tools/tests
    running egg_info
    creating pyraf.egg-info
    writing pyraf.egg-info/PKG-INFO
    writing dependency_links to pyraf.egg-info/dependency_links.txt
    writing entry points to pyraf.egg-info/entry_points.txt
    writing requirements to pyraf.egg-info/requires.txt
    writing top-level names to pyraf.egg-info/top_level.txt
    writing manifest file 'pyraf.egg-info/SOURCES.txt'
    reading manifest file 'pyraf.egg-info/SOURCES.txt'
    reading manifest template 'MANIFEST.in'
    warning: no previously-included files matching '*.pyc' found anywhere in distribution
    warning: no previously-included files matching '*.o' found anywhere in distribution
    warning: no previously-included files matching '*.so' found anywhere in distribution
    warning: no previously-included files matching '*.sqlite3' found anywhere in distribution
    warning: manifest_maker: MANIFEST.in, line 9: unknown action 'recursive-inclulde'

    adding license file 'LICENSE.txt'
    writing manifest file 'pyraf.egg-info/SOURCES.txt'
    copying pyraf/blankcursor.xbm -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf
    copying pyraf/epar.optionDB -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf
    copying pyraf/ipythonrc-pyraf -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf
    copying pyraf/pyraflogo_rgb_web.gif -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf
    copying pyraf/xutil.c -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf
    creating /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf/noiraf
    copying pyraf/noiraf/cl.par -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf/noiraf
    copying pyraf/noiraf/clpackage.cl -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf/noiraf
    copying pyraf/noiraf/login.cl -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf/noiraf
    copying pyraf/noiraf/system.cl -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf/noiraf
    copying pyraf/noiraf/system.par -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf/noiraf
    creating /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf/tests/data
    copying pyraf/tests/data/psdump_prow_250.ps -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf/tests/data
    copying pyraf/tests/data/psdump_prow_256.ps -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf/tests/data
    copying pyraf/tests/data/psdump_prow_256_250.ps -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf/tests/data
    copying pyraf/tests/data/psdump_prow_256_250_200.ps -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf/tests/data
    copying pyraf/tests/data/pset_msstat_input.fits -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf/tests/data
    copying pyraf/tests/data/psi_land_prow_250.ps -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf/tests/data
    copying pyraf/tests/data/psi_land_prow_256.ps -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf/tests/data
    copying pyraf/tests/data/psi_land_prow_256_250.ps -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf/tests/data
    copying pyraf/tests/data/psi_land_prow_256_250_200.ps -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf/tests/data
    copying pyraf/tools/tests/cfgobj_output.ref -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf/tools/tests
    copying pyraf/tools/tests/rt_sample.cfg -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf/tools/tests
    copying pyraf/tools/tests/rt_sample.cfgspc -> /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf/tools/tests
    running build_ext
    building 'pyraf.xutil' extension
    creating build/temp.linux-i686-cpython-313/pyraf
    i686-linux-gnu-gcc -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/pyraf-2.2.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -I/usr/include/python3.13 -c pyraf/
    xutil.c -o build/temp.linux-i686-cpython-313/pyraf/xutil.o
    i686-linux-gnu-gcc -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-z,relro -g -fwrapv -O2 -Wl,-z,relro -Wl,-z,now -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/pyraf-2.2.2=. -fstack-protector-strong -Wformat -
    Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 build/temp.linux-i686-cpython-313/pyraf/xutil.o -L/usr/lib/i386-linux-gnu -lX11 -o /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf/xutil.cpython-313-i386-linux-gnu.so
    dh_auto_test -O--buildsystem=pybuild
    I: pybuild base:311: cd /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build; python3.13 -m pytest
    tput: No value for $TERM and no -T specified
    ============================= test session starts ==============================
    platform linux -- Python 3.13.2, pytest-8.3.5, pluggy-1.5.0
    rootdir: /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build
    configfile: pyproject.toml
    plugins: hypothesis-6.127.4, doctestplus-1.4.0, typeguard-4.4.2, cov-5.0.0, mock-3.14.0, astropy-header-0.2.2, remotedata-0.4.1, filter-subpackage-0.2.0, arraydiff-0.6.1, astropy-0.11.0

    No graphics display available for this session.
    Graphics tasks that attempt to plot to an interactive screen will fail.
    For help, search "PyRAF FAQ 5.13"

    Created directory /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/.iraf/pyraf for cache
    collected 404 items

    pyraf/tests/test_basic.py ....
    pyraf/tests/test_clcache.py .
    pyraf/tests/test_cli.py ..........................................................................................................................................................................................
    pyraf/tests/test_core_nongraphics.py .....................x.. pyraf/tests/test_graphics.py ......sssss
    pyraf/tests/test_invocation.py ..................F.....x........x........ssss..s
    pyraf/tests/test_plot.py ssssssssssssssssssssssssssss pyraf/tests/test_tasks.py .........................................................
    pyraf/tests/test_using_tasks.py sssssss
    pyraf/tools/tests/test_cfgobj.py .
    pyraf/tools/tests/test_compmixin.py ....
    pyraf/tools/tests/test_irafutils.py ............. pyraf/tools/tests/test_minmatch.py ...................

    =================================== FAILURES ===================================
    ________________________ test_invoke_command[True-bye-] ________________________

    _with_pyraf = <pyraf.tests.test_invocation.PyrafEx object at 0xf255f030> test_input = 'bye', expected = '', use_ecl = True

    @pytest.mark.parametrize('test_input,expected', cl_cases)
    @pytest.mark.parametrize('use_ecl', [False, True])
    def test_invoke_command(_with_pyraf, test_input, expected, use_ecl):
    """Issue basic commands to CL parser
    """
    result = _with_pyraf.run(['-c', test_input], use_ecl=use_ecl)
    assert not result.code, result.stderr
    E AssertionError: ERROR: Child process '/bin/sh -c /bin/ls -1ad [a-y]* 2> /dev/null' exited with return code 2
    E '<source code not available>'
    E line 0: cl$cl.par
    E '<source code not available>'
    E line 0: cl$cl.par
    E '<source code not available>'
    E line 0: hlib$clpackage.cl
    E Traceback (most recent call last):
    E File "<frozen runpy>", line 198, in _run_module_as_main
    E File "<frozen runpy>", line 88, in _run_code
    E File "/build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf/__main__.py", line 166, in <module>
    E main()
    E ~~~~^^
    E File "/build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf/__main__.py", line 130, in main
    E iraf.Init(**initkw)
    E ~~~~~~~~~^^^^^^^^^^
    E File "/build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf/iraffunctions.py", line 217, in Init
    E clpkg.run(_doprint=0, _hush=hush, _save=1)
    E ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    E File "/build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf/irafecl.py", line 222, in run
    E self._ecl_handle_error(e)
    E ~~~~~~~~~~~~~~~~~~~~~~^^^
    E File "/build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf/irafecl.py", line 370, in _ecl_handle_error
    E raise e
    E File "/build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf/irafecl.py", line 220, in run
    E return _runcore()
    E File "/build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf/irafecl.py", line 204, in _runcore
    E self._run(redirKW, specialKW)
    E ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^
    E File "/build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf/irafecl.py", line 495, in _run
    E return iraftask.IrafPkg._run(self, *args, **kw)
    E ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^
    E File "/build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf/iraftask.py", line 1746, in _run
    E self._runCode()
    E ~~~~~~~~~~~~~^^
    E File "/build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf/iraftask.py", line 1537, in _runCode
    E self._clFunction(*parList, **kw)
    E ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^
    E File "<CL script clpackage.clpackage>", line 32, in clpackage
    E iraf.cl(Stdin='hlib$extpkg.cl')
    E ~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^
    E File "/build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf/iraftask.py", line 834, in __call__
    E return self.run(*args, **kw)
    E ~~~~~~~~^^^^^^^^^^^^^
    E File "/build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf/irafecl.py", line 222, in run
    E self._ecl_handle_error(e)
    E ~~~~~~~~~~~~~~~~~~~~~~^^^
    E File "/build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf/irafecl.py", line 370, in _ecl_handle_error
    E raise e
    E File "/build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf/irafecl.py", line 220, in run
    E return _runcore()
    E File "/build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf/irafecl.py", line 204, in _runcore
    E self._run(redirKW, specialKW)
    E ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^
    E File "/build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf/irafecl.py", line 456, in _run
    E return iraftask.IrafPythonTask._run(self, *args, **kw)
    E ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^
    E File "/build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf/iraftask.py", line 1273, in _run
    E self._pyFunction(*pl)
    E ~~~~~~~~~~~~~~~~^^^^^
    E File "/build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf/iraffunctions.py", line 2682, in _clProcedure
    E clExecute(_sys.stdin.read(), locals=theLocals, Stdin=_sys.__stdin__)
    E ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    E File "/build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf/iraffunctions.py", line 3341, in clExecute
    E exec(pycode.vars.proc_name + "(taskObj=iraf.cl)", locals)
    E ~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    E File "<string>", line 1, in <module>
    E File "<CL script CL1>", line 33, in string_proc
    E File "/build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf/iraftask.py", line 834, in __call__
    E return self.run(*args, **kw)
    E ~~~~~~~~^^^^^^^^^^^^^
    E File "/build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf/irafecl.py", line 222, in run
    E self._ecl_handle_error(e)
    E ~~~~~~~~~~~~~~~~~~~~~~^^^
    E File "/build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf/irafecl.py", line 379, in _ecl_handle_error
    E raise e
    E File "/build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf/irafecl.py", line 220, in run
    E return _runcore()
    E File "/build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf/irafecl.py", line 204, in _runcore
    E self._run(redirKW, specialKW)
    E ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^
    E File "/build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf/irafecl.py", line 456, in _run
    E return iraftask.IrafPythonTask._run(self, *args, **kw)
    E ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^
    E File "/build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf/iraftask.py", line 1273, in _run
    E self._pyFunction(*pl)
    E ~~~~~~~~~~~~~~~~^^^^^
    E File "/build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf/iraffunctions.py", line 2682, in _clProcedure
    E clExecute(_sys.stdin.read(), locals=theLocals, Stdin=_sys.__stdin__)
    E ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    E File "/build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf/iraffunctions.py", line 3341, in clExecute
    E exec(pycode.vars.proc_name + "(taskObj=iraf.cl)", locals)
    E ~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    E File "<string>", line 1, in <module>
    E File "<CL script CL2>", line 17, in string_proc
    E File "/build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf/iraffunctions.py", line 2234, in clOscmd
    E status = _subproc.subshellRedir(s, shell=shell)
    E File "/build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf/subproc.py", line 769, in subshellRedir
    E return systemRedir((shell, "-c", cmd))
    E File "/build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf/subproc.py", line 747, in systemRedir
    E process = RedirProcess(cmd)
    E File "/build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf/subproc.py", line 800, in __init__
    E Subprocess.__init__(self,
    E ~~~~~~~~~~~~~~~~~~~^^^^^^
    E cmd,
    E ^^^^
    E ...<2 lines>...
    E control_stdout=doOut,
    E ^^^^^^^^^^^^^^^^^^^^^
    E control_stdin=doIn)
    E ^^^^^^^^^^^^^^^^^^^
    E File "/build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf/subproc.py", line 95, in __init__
    E self.fork()
    E ~~~~~~~~~^^
    E File "/build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf/subproc.py", line 209, in fork
    E raise SubprocessError(
    E f"Child process '{self.cmd}' exited "
    E f"with return code {rc:d}")
    E pyraf.subproc.SubprocessError: Child process '/bin/sh -c /bin/ls -1ad [a-y]* 2> /dev/null' exited with return code 2
    E
    E assert not 1
    E + where 1 = <pyraf.tests.test_invocation.PyrafEx object at 0xf255f030>.code

    pyraf/tests/test_invocation.py:99: AssertionError =============================== warnings summary ===============================
    pyraf/scanf.py:116
    /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf/scanf.py:116: SyntaxWarning: invalid escape sequence '\-'
    (\\S+) \- ([+-]?\\d+) errors, ([+-]?\\d+) warnings

    pyraf/iraffunctions.py:91
    /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build/pyraf/iraffunctions.py:91: DeprecationWarning: finfo() dtype cannot be None. This behavior will raise an error in the future. (Deprecated in NumPy 1.25)
    FP_EPSILON = _numpy.finfo(None).eps

    pyraf/tools/tests/test_minmatch.py::test_getall
    /usr/lib/python3/dist-packages/_pytest/python.py:163: PytestReturnNotNoneWarning: Expected None, but pyraf/tools/tests/test_minmatch.py::test_getall returned [1, 2, 10], which will be an error in a future version of pytest. Did you mean to use `
    assert` instead of `return`?
    warnings.warn(

    -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html =========================== short test summary info ============================
    FAILED pyraf/tests/test_invocation.py::test_invoke_command[True-bye-] - Asser...
    ====== 1 failed, 355 passed, 45 skipped, 3 xfailed, 3 warnings in 31.30s =======
    could not open XWindow display
    could not open XWindow display
    E: pybuild pybuild:389: test: plugin distutils failed with: exit code=1: cd /build/reproducible-path/pyraf-2.2.2/.pybuild/cpython3_3.13_pyraf/build; python3.13 -m pytest
    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/pyraf_2.2.2-2_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)
  • From Debian Bug Tracking System@21:1/5 to All on Fri Apr 25 15:10:02 2025
    Processing control commands:

    Tags -1 moreinfo
    Bug #1103060 [src:pyraf] pyraf: FTBFS in testing/i386: KeyError: 'setuptools_scm'
    Added tag(s) moreinfo.

    --
    1103060: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1103060
    Debian Bug Tracking System
    Contact owner@bugs.debian.org with problems

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Debian Bug Tracking System@21:1/5 to All on Fri May 2 23:30:01 2025
    This is a multi-part message in MIME format...

    Your message dated Fri, 02 May 2025 21:20:15 +0000
    with message-id <E1uAxnr-007bQ4-Ui@fasolo.debian.org>
    and subject line Bug#1103060: fixed in pyraf 2.2.2-3
    has caused the Debian Bug report #1103060,
    regarding pyraf: FTBFS in testing/i386: KeyError: 'setuptools_scm'
    to be marked as done.

    This means that you claim that the problem has been dealt with.
    If this is not the case it is now your responsibility to reopen the
    Bug report if necessary, and/or fix the problem forthwith.

    (NB: If you are a system administrator and have no idea what this
    message is talking about, this may indicate a serious mail system misconfiguration somewhere. Please contact owner@bugs.debian.org
    immediately.)


    --
    1103060: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1103060
    Debian Bug Tracking System
    Contact owner@bugs.debian.org with problems

    Received: (at submit) by bugs.debian.org; 14 Apr 2025 11:43:34 +0000 X-Spam-Checker-Version: SpamAssassin 3.4.6-bugs.debian.org_2005_01_02
    (2021-04-09) on buxtehude.debian.org
    X-Spam-Level:
    X-Spam-Status: No, score=-104.1 required=4.0 tests=BAYES_00,DKIMWL_WL_HIGH,
    DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FOURLA,
    FROMDEVELOPER,SPF_HELO_NONE,SPF_NONE,UNPARSEABLE_RELAY,
    USER_IN_DKIM_WELCOMELIST,USER_IN_DKIM_WHITELIST,WEIRD_PORT,
    WORD_WITHOUT_VOWELS autolearn=ham autolearn_force=no
    version=3.4.6-bugs.debian.org_2005_01_02
    X-Spam-Bayes: score:0.0000 Tokens: new, 468; hammy, 150; neutral, 569; spammy,
    0. spammytokens:
    hammytokens:0.000-+--Hx-spam-relays-external:sk:stravin,
    0.000-+--H*RT:sk:stravin, 0.000-+--Hx-spam-relays-external:311,
    0.000-+--H*RT:311, 0.000-+--H*RT:108
    Return-path: <lucas@debian.org>
    Received: from stravinsky.deb