[Debian-pan-maintainers] Bug#1102946: python-pyepics: FTBFS in testing: ImportError: /usr/lib/python3/dist-packages/wx/_core.cpython-313-x86_64-linux-gnu.so: undefined symbol: _ZN14wxTranslations27GetBestAvailableTranslationERK8wxString, version WXU_3.2

Lucas Nussbaum lucas at debian.org
Sun Apr 13 13:25:46 BST 2025


Source: python-pyepics
Version: 3.5.7+ds-1
Severity: serious
Justification: FTBFS
Tags: trixie sid ftbfs
User: lucas at debian.org
Usertags: ftbfs-20250412 ftbfs-trixie

Hi,

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


Relevant part (hopefully):
> make[1]: Entering directory '/build/reproducible-path/python-pyepics-3.5.7+ds'
> dh_auto_build
> 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/python-pyepics-3.5.7+ds/.pybuild/cpython3_3.13_pyepics  
> * Building wheel...
> running bdist_wheel
> running build
> running build_py
> creating build/lib/epics
> copying epics/pv.py -> build/lib/epics
> copying epics/_version.py -> build/lib/epics
> copying epics/utils.py -> build/lib/epics
> copying epics/alarm.py -> build/lib/epics
> copying epics/version.py -> build/lib/epics
> copying epics/multiproc.py -> build/lib/epics
> copying epics/device.py -> build/lib/epics
> copying epics/ca.py -> build/lib/epics
> copying epics/motor.py -> build/lib/epics
> copying epics/dbr.py -> build/lib/epics
> copying epics/__init__.py -> build/lib/epics
> creating build/lib/epics/autosave
> copying epics/autosave/save_restore.py -> build/lib/epics/autosave
> copying epics/autosave/__init__.py -> build/lib/epics/autosave
> creating build/lib/epics/compat
> copying epics/compat/CaChannel.py -> build/lib/epics/compat
> copying epics/compat/ca_util.py -> build/lib/epics/compat
> copying epics/compat/epicsPV.py -> build/lib/epics/compat
> copying epics/compat/__init__.py -> build/lib/epics/compat
> creating build/lib/epics/devices
> copying epics/devices/ai.py -> build/lib/epics/devices
> copying epics/devices/ao.py -> build/lib/epics/devices
> copying epics/devices/xspress3.py -> build/lib/epics/devices
> copying epics/devices/ad_mca.py -> build/lib/epics/devices
> copying epics/devices/transform.py -> build/lib/epics/devices
> copying epics/devices/bo.py -> build/lib/epics/devices
> copying epics/devices/scan.py -> build/lib/epics/devices
> copying epics/devices/ad_perkinelmer.py -> build/lib/epics/devices
> copying epics/devices/struck.py -> build/lib/epics/devices
> copying epics/devices/scaler.py -> build/lib/epics/devices
> copying epics/devices/ad_base.py -> build/lib/epics/devices
> copying epics/devices/ad_fileplugin.py -> build/lib/epics/devices
> copying epics/devices/mca.py -> build/lib/epics/devices
> copying epics/devices/ad_image.py -> build/lib/epics/devices
> copying epics/devices/srs570.py -> build/lib/epics/devices
> copying epics/devices/ad_overlay.py -> build/lib/epics/devices
> copying epics/devices/bi.py -> build/lib/epics/devices
> copying epics/devices/__init__.py -> build/lib/epics/devices
> creating build/lib/epics/qt
> copying epics/qt/pvprobe_qt.py -> build/lib/epics/qt
> creating build/lib/epics/wx
> copying epics/wx/wxutils.py -> build/lib/epics/wx
> copying epics/wx/motorpanel.py -> build/lib/epics/wx
> copying epics/wx/wxlib.py -> build/lib/epics/wx
> copying epics/wx/ogllib.py -> build/lib/epics/wx
> copying epics/wx/utils.py -> build/lib/epics/wx
> copying epics/wx/motordetailframe.py -> build/lib/epics/wx
> copying epics/wx/__init__.py -> build/lib/epics/wx
> running egg_info
> creating pyepics.egg-info
> writing pyepics.egg-info/PKG-INFO
> writing dependency_links to pyepics.egg-info/dependency_links.txt
> writing requirements to pyepics.egg-info/requires.txt
> writing top-level names to pyepics.egg-info/top_level.txt
> writing manifest file 'pyepics.egg-info/SOURCES.txt'
> reading manifest file 'pyepics.egg-info/SOURCES.txt'
> reading manifest template 'MANIFEST.in'
> warning: no files found matching 'README.txt'
> warning: no files found matching 'Changelog'
> warning: no files found matching 'publish.sh'
> warning: no files found matching '*.bat'
> warning: no files found matching 'versioneer.py'
> warning: no previously-included files found matching '*.pyc'
> warning: no previously-included files found matching 'core.*'
> warning: no previously-included files found matching '*~'
> warning: no previously-included files found matching '*.pdf'
> warning: no files found matching '*' under directory 'dlls'
> warning: no files found matching '*' under directory 'conda-recipe'
> warning: no previously-included files matching '*' found under directory 'doc/_build'
> warning: no previously-included files matching '*.pdf' found under directory 'doc'
> warning: no previously-included files matching '*' found under directory 'tests/Misc'
> warning: no previously-included files matching '*.pyc' found under directory '**'
> adding license file 'LICENSE'
> writing manifest file 'pyepics.egg-info/SOURCES.txt'
> installing to build/bdist.linux-x86_64/wheel
> running install
> running install_lib
> creating build/bdist.linux-x86_64/wheel
> creating build/bdist.linux-x86_64/wheel/epics
> creating build/bdist.linux-x86_64/wheel/epics/wx
> copying build/lib/epics/wx/wxutils.py -> build/bdist.linux-x86_64/wheel/./epics/wx
> copying build/lib/epics/wx/motorpanel.py -> build/bdist.linux-x86_64/wheel/./epics/wx
> copying build/lib/epics/wx/wxlib.py -> build/bdist.linux-x86_64/wheel/./epics/wx
> copying build/lib/epics/wx/ogllib.py -> build/bdist.linux-x86_64/wheel/./epics/wx
> copying build/lib/epics/wx/utils.py -> build/bdist.linux-x86_64/wheel/./epics/wx
> copying build/lib/epics/wx/motordetailframe.py -> build/bdist.linux-x86_64/wheel/./epics/wx
> copying build/lib/epics/wx/__init__.py -> build/bdist.linux-x86_64/wheel/./epics/wx
> copying build/lib/epics/pv.py -> build/bdist.linux-x86_64/wheel/./epics
> copying build/lib/epics/_version.py -> build/bdist.linux-x86_64/wheel/./epics
> creating build/bdist.linux-x86_64/wheel/epics/qt
> copying build/lib/epics/qt/pvprobe_qt.py -> build/bdist.linux-x86_64/wheel/./epics/qt
> creating build/bdist.linux-x86_64/wheel/epics/devices
> copying build/lib/epics/devices/ai.py -> build/bdist.linux-x86_64/wheel/./epics/devices
> copying build/lib/epics/devices/ao.py -> build/bdist.linux-x86_64/wheel/./epics/devices
> copying build/lib/epics/devices/xspress3.py -> build/bdist.linux-x86_64/wheel/./epics/devices
> copying build/lib/epics/devices/ad_mca.py -> build/bdist.linux-x86_64/wheel/./epics/devices
> copying build/lib/epics/devices/transform.py -> build/bdist.linux-x86_64/wheel/./epics/devices
> copying build/lib/epics/devices/bo.py -> build/bdist.linux-x86_64/wheel/./epics/devices
> copying build/lib/epics/devices/scan.py -> build/bdist.linux-x86_64/wheel/./epics/devices
> copying build/lib/epics/devices/ad_perkinelmer.py -> build/bdist.linux-x86_64/wheel/./epics/devices
> copying build/lib/epics/devices/struck.py -> build/bdist.linux-x86_64/wheel/./epics/devices
> copying build/lib/epics/devices/scaler.py -> build/bdist.linux-x86_64/wheel/./epics/devices
> copying build/lib/epics/devices/ad_base.py -> build/bdist.linux-x86_64/wheel/./epics/devices
> copying build/lib/epics/devices/ad_fileplugin.py -> build/bdist.linux-x86_64/wheel/./epics/devices
> copying build/lib/epics/devices/mca.py -> build/bdist.linux-x86_64/wheel/./epics/devices
> copying build/lib/epics/devices/ad_image.py -> build/bdist.linux-x86_64/wheel/./epics/devices
> copying build/lib/epics/devices/srs570.py -> build/bdist.linux-x86_64/wheel/./epics/devices
> copying build/lib/epics/devices/ad_overlay.py -> build/bdist.linux-x86_64/wheel/./epics/devices
> copying build/lib/epics/devices/bi.py -> build/bdist.linux-x86_64/wheel/./epics/devices
> copying build/lib/epics/devices/__init__.py -> build/bdist.linux-x86_64/wheel/./epics/devices
> copying build/lib/epics/utils.py -> build/bdist.linux-x86_64/wheel/./epics
> creating build/bdist.linux-x86_64/wheel/epics/compat
> copying build/lib/epics/compat/CaChannel.py -> build/bdist.linux-x86_64/wheel/./epics/compat
> copying build/lib/epics/compat/ca_util.py -> build/bdist.linux-x86_64/wheel/./epics/compat
> copying build/lib/epics/compat/epicsPV.py -> build/bdist.linux-x86_64/wheel/./epics/compat
> copying build/lib/epics/compat/__init__.py -> build/bdist.linux-x86_64/wheel/./epics/compat
> copying build/lib/epics/alarm.py -> build/bdist.linux-x86_64/wheel/./epics
> copying build/lib/epics/version.py -> build/bdist.linux-x86_64/wheel/./epics
> copying build/lib/epics/multiproc.py -> build/bdist.linux-x86_64/wheel/./epics
> copying build/lib/epics/device.py -> build/bdist.linux-x86_64/wheel/./epics
> copying build/lib/epics/ca.py -> build/bdist.linux-x86_64/wheel/./epics
> copying build/lib/epics/motor.py -> build/bdist.linux-x86_64/wheel/./epics
> copying build/lib/epics/dbr.py -> build/bdist.linux-x86_64/wheel/./epics
> copying build/lib/epics/__init__.py -> build/bdist.linux-x86_64/wheel/./epics
> creating build/bdist.linux-x86_64/wheel/epics/autosave
> copying build/lib/epics/autosave/save_restore.py -> build/bdist.linux-x86_64/wheel/./epics/autosave
> copying build/lib/epics/autosave/__init__.py -> build/bdist.linux-x86_64/wheel/./epics/autosave
> running install_egg_info
> Copying pyepics.egg-info to build/bdist.linux-x86_64/wheel/./pyepics-3.5.7+ds.egg-info
> running install_scripts
> creating build/bdist.linux-x86_64/wheel/pyepics-3.5.7+ds.dist-info/WHEEL
> creating '/build/reproducible-path/python-pyepics-3.5.7+ds/.pybuild/cpython3_3.13_pyepics/.tmp-64n0ngpy/pyepics-3.5.7+ds-py3-none-any.whl' and adding 'build/bdist.linux-x86_64/wheel' to it
> adding 'epics/__init__.py'
> adding 'epics/_version.py'
> adding 'epics/alarm.py'
> adding 'epics/ca.py'
> adding 'epics/dbr.py'
> adding 'epics/device.py'
> adding 'epics/motor.py'
> adding 'epics/multiproc.py'
> adding 'epics/pv.py'
> adding 'epics/utils.py'
> adding 'epics/version.py'
> adding 'epics/autosave/__init__.py'
> adding 'epics/autosave/save_restore.py'
> adding 'epics/compat/CaChannel.py'
> adding 'epics/compat/__init__.py'
> adding 'epics/compat/ca_util.py'
> adding 'epics/compat/epicsPV.py'
> adding 'epics/devices/__init__.py'
> adding 'epics/devices/ad_base.py'
> adding 'epics/devices/ad_fileplugin.py'
> adding 'epics/devices/ad_image.py'
> adding 'epics/devices/ad_mca.py'
> adding 'epics/devices/ad_overlay.py'
> adding 'epics/devices/ad_perkinelmer.py'
> adding 'epics/devices/ai.py'
> adding 'epics/devices/ao.py'
> adding 'epics/devices/bi.py'
> adding 'epics/devices/bo.py'
> adding 'epics/devices/mca.py'
> adding 'epics/devices/scaler.py'
> adding 'epics/devices/scan.py'
> adding 'epics/devices/srs570.py'
> adding 'epics/devices/struck.py'
> adding 'epics/devices/transform.py'
> adding 'epics/devices/xspress3.py'
> adding 'epics/qt/pvprobe_qt.py'
> adding 'epics/wx/__init__.py'
> adding 'epics/wx/motordetailframe.py'
> adding 'epics/wx/motorpanel.py'
> adding 'epics/wx/ogllib.py'
> adding 'epics/wx/utils.py'
> adding 'epics/wx/wxlib.py'
> adding 'epics/wx/wxutils.py'
> adding 'pyepics-3.5.7+ds.dist-info/LICENSE'
> adding 'pyepics-3.5.7+ds.dist-info/METADATA'
> adding 'pyepics-3.5.7+ds.dist-info/WHEEL'
> adding 'pyepics-3.5.7+ds.dist-info/top_level.txt'
> adding 'pyepics-3.5.7+ds.dist-info/RECORD'
> removing build/bdist.linux-x86_64/wheel
> Successfully built pyepics-3.5.7+ds-py3-none-any.whl
> I: pybuild plugin_pyproject:144: Unpacking wheel built for python3.13 with "installer" module
> PYTHONPATH=. http_proxy='127.0.0.1:9' \
> 	python3 -m sphinx -N -b html doc build/html
> Running Sphinx v8.1.3
> Building Docs for EPICS version 3.5.7+ds / Python version 3.13.2 (main, Mar 29 2025, 10:04:43) [GCC 14.2.0] 
> loading translations [en]... done
> making output directory... done
> Converting `source_suffix = '.rst'` to `source_suffix = {'.rst': 'restructuredtext'}`.
> [autosummary] generating autosummary for: advanced.rst, alarm.rst, arrays.rst, autosave.rst, ca.rst, devices.rst, index.rst, installation.rst, overview.rst, pv.rst, wx.rst
> building [mo]: targets for 0 po files that are out of date
> writing output... 
> building [html]: targets for 11 source files that are out of date
> updating environment: [new config] 11 added, 0 changed, 0 removed
> reading sources... [  9%] advanced
> reading sources... [ 18%] alarm
> reading sources... [ 27%] arrays
> reading sources... [ 36%] autosave
> reading sources... [ 45%] ca
> reading sources... [ 55%] devices
> reading sources... [ 64%] index
> reading sources... [ 73%] installation
> reading sources... [ 82%] overview
> reading sources... [ 91%] pv
> reading sources... [100%] wx
> 
> 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 /build/reproducible-path/python-pyepics-3.5.7+ds/build/html/_static/language_data.js
> Writing evaluated template result to /build/reproducible-path/python-pyepics-3.5.7+ds/build/html/_static/documentation_options.js
> Writing evaluated template result to /build/reproducible-path/python-pyepics-3.5.7+ds/build/html/_static/basic.css
> Writing evaluated template result to /build/reproducible-path/python-pyepics-3.5.7+ds/build/html/_static/sidebar.js
> Writing evaluated template result to /build/reproducible-path/python-pyepics-3.5.7+ds/build/html/_static/classic.css
> Writing evaluated template result to /build/reproducible-path/python-pyepics-3.5.7+ds/build/html/_static/basic.css
> Writing evaluated template result to /build/reproducible-path/python-pyepics-3.5.7+ds/build/html/_static/epicsdoc.css
> Writing evaluated template result to /build/reproducible-path/python-pyepics-3.5.7+ds/build/html/_static/default.css
> copying static files: done
> copying extra files... 
> copying extra files: done
> copying assets: done
> writing output... [  9%] advanced
> writing output... [ 18%] alarm
> writing output... [ 27%] arrays
> writing output... [ 36%] autosave
> writing output... [ 45%] ca
> writing output... [ 55%] devices
> writing output... [ 64%] index
> writing output... [ 73%] installation
> writing output... [ 82%] overview
> writing output... [ 91%] pv
> writing output... [100%] wx
> 
> generating indices... genindex py-modindex done
> writing additional pages... search done
> copying images... [ 25%] AreaDetector1.png
> copying images... [ 50%] wx_motor.png
> copying images... [ 75%] wx_motordetail.png
> copying images... [100%] wx_motor_many.png
> 
> dumping search index in English (code: en)... done
> dumping object inventory... done
> build succeeded.
> 
> The HTML pages are in build/html.
> make[1]: Leaving directory '/build/reproducible-path/python-pyepics-3.5.7+ds'
>    dh_auto_test -O--buildsystem=pybuild
> I: pybuild base:311: cd /build/reproducible-path/python-pyepics-3.5.7+ds/.pybuild/cpython3_3.13_pyepics/build; python3.13 -m unittest discover -v 
> epics.wx (unittest.loader._FailedTest.epics.wx) ... ERROR
> 
> ======================================================================
> ERROR: epics.wx (unittest.loader._FailedTest.epics.wx)
> ----------------------------------------------------------------------
> ImportError: Failed to import test module: epics.wx
> Traceback (most recent call last):
>   File "/usr/lib/python3.13/unittest/loader.py", line 429, in _find_test_path
>     package = self._get_module_from_name(name)
>   File "/usr/lib/python3.13/unittest/loader.py", line 339, in _get_module_from_name
>     __import__(name)
>     ~~~~~~~~~~^^^^^^
>   File "/build/reproducible-path/python-pyepics-3.5.7+ds/.pybuild/cpython3_3.13_pyepics/build/epics/wx/__init__.py", line 7, in <module>
>     from . import motorpanel, motordetailframe, wxlib, ogllib, wxutils
>   File "/build/reproducible-path/python-pyepics-3.5.7+ds/.pybuild/cpython3_3.13_pyepics/build/epics/wx/motorpanel.py", line 13, in <module>
>     import wx
>   File "/usr/lib/python3/dist-packages/wx/__init__.py", line 17, in <module>
>     from wx.core import *
>   File "/usr/lib/python3/dist-packages/wx/core.py", line 12, in <module>
>     from ._core import *
> ImportError: /usr/lib/python3/dist-packages/wx/_core.cpython-313-x86_64-linux-gnu.so: undefined symbol: _ZN14wxTranslations27GetBestAvailableTranslationERK8wxString, version WXU_3.2
> 
> 
> ----------------------------------------------------------------------
> Ran 1 test in 0.001s
> 
> FAILED (errors=1)
> E: pybuild pybuild:389: test: plugin pyproject failed with: exit code=1: cd /build/reproducible-path/python-pyepics-3.5.7+ds/.pybuild/cpython3_3.13_pyepics/build; python3.13 -m unittest discover -v 
> dh_auto_test: error: pybuild --test -i python{version} -p 3.13 returned exit code 13


The full build log is available from:
http://qa-logs.debian.net/2025/04/12/python-pyepics_3.5.7+ds-1_testing.log

All bugs filed during this archive rebuild are listed at:
https://bugs.debian.org/cgi-bin/pkgreport.cgi?tag=ftbfs-20250412;users=lucas@debian.org
or:
https://udd.debian.org/bugs/?release=na&merged=ign&fnewerval=7&flastmodval=7&fusertag=only&fusertagtag=ftbfs-20250412&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.



More information about the Debian-pan-maintainers mailing list