[Pkg-electronics-devel] Bug#1103550: Broken libghdl-5-0-1

Paebbels paebbels at gmail.com
Fri Apr 18 23:00:15 BST 2025


Package: libghdl-5-0-1
Version: 5.0.1+dfsg-1+b1

Hi,

the libghdl package is broken. According to my research from 4.1.0,
the paths inside of libghdl haven't been adjusted to find the library
files of GHDL. I couldn't test this with 5.0.1 because it doesn't
locate the libghdl.so file.

When running ghdl-dom, libghdl-5_0_1.so can't be found.
Using environment variable GHDL_PREFIX:
-------------------------------------------------------------------------------------------
root at 4af06a855805:~/ghdl# GHDL_PREFIX=/usr/lib/ghdl ghdl-dom
Traceback (most recent call last):
  File "/usr/local/bin/ghdl-dom", line 5, in <module>
    from pyGHDL.cli.dom import main
  File "/usr/local/lib/python3.13/dist-packages/pyGHDL/cli/dom.py",
line 48, in <module>
    from pyGHDL.libghdl import LibGHDLException
  File "/usr/local/lib/python3.13/dist-packages/pyGHDL/libghdl/__init__.py",
line 206, in <module>
    libghdl = _initialize()
  File "/usr/local/lib/python3.13/dist-packages/pyGHDL/libghdl/__init__.py",
line 187, in _initialize
    _libghdl_path = _get_libghdl_path()
  File "/usr/local/lib/python3.13/dist-packages/pyGHDL/libghdl/__init__.py",
line 181, in _get_libghdl_path
    raise ex
pyGHDL.libghdl.LibGHDLException: Cannot find pyGHDL shared library
'libghdl-5_0_1.so'.
  Tried variable 'GHDL_PREFIX':        /usr/lib/ghdl
  Checked variable 'GHDL':             not set.
  Checked variable 'VUNIT_GHDL_PATH':  not set.
  Tried pyGHDL.lib resource directory:
/usr/local/lib/python3.13/dist-packages/pyGHDL/lib/libghdl-5_0_1.so
  Relative to build directory:
/usr/local/lib/python3.13/dist-packages/lib
-------------------------------------------------------------------------------------------
root at 4af06a855805:~/ghdl# GHDL_PREFIX=/usr/lib/ghdl/mcode ghdl-dom
Traceback (most recent call last):
  File "/usr/local/bin/ghdl-dom", line 5, in <module>
    from pyGHDL.cli.dom import main
  File "/usr/local/lib/python3.13/dist-packages/pyGHDL/cli/dom.py",
line 48, in <module>
    from pyGHDL.libghdl import LibGHDLException
  File "/usr/local/lib/python3.13/dist-packages/pyGHDL/libghdl/__init__.py",
line 206, in <module>
    libghdl = _initialize()
  File "/usr/local/lib/python3.13/dist-packages/pyGHDL/libghdl/__init__.py",
line 187, in _initialize
    _libghdl_path = _get_libghdl_path()
  File "/usr/local/lib/python3.13/dist-packages/pyGHDL/libghdl/__init__.py",
line 181, in _get_libghdl_path
    raise ex
pyGHDL.libghdl.LibGHDLException: Cannot find pyGHDL shared library
'libghdl-5_0_1.so'.
  Tried variable 'GHDL_PREFIX':        /usr/lib/ghdl/mcode
  Checked variable 'GHDL':             not set.
  Checked variable 'VUNIT_GHDL_PATH':  not set.
  Tried pyGHDL.lib resource directory:
/usr/local/lib/python3.13/dist-packages/pyGHDL/lib/libghdl-5_0_1.so
  Relative to build directory:
/usr/local/lib/python3.13/dist-packages/lib
-------------------------------------------------------------------------------------------

Using environment variable GHDL:
-------------------------------------------------------------------------------------------
root at 4af06a855805:~/ghdl# GHDL=$(which ghdl) ghdl-dom
Traceback (most recent call last):
  File "/usr/local/bin/ghdl-dom", line 5, in <module>
    from pyGHDL.cli.dom import main
  File "/usr/local/lib/python3.13/dist-packages/pyGHDL/cli/dom.py",
line 48, in <module>
    from pyGHDL.libghdl import LibGHDLException
  File "/usr/local/lib/python3.13/dist-packages/pyGHDL/libghdl/__init__.py",
line 206, in <module>
    libghdl = _initialize()
  File "/usr/local/lib/python3.13/dist-packages/pyGHDL/libghdl/__init__.py",
line 187, in _initialize
    _libghdl_path = _get_libghdl_path()
  File "/usr/local/lib/python3.13/dist-packages/pyGHDL/libghdl/__init__.py",
line 181, in _get_libghdl_path
    raise ex
pyGHDL.libghdl.LibGHDLException: Cannot find pyGHDL shared library
'libghdl-5_0_1.so'.
  Checked variable 'GHDL_PREFIX':      not set
  Tried variable 'GHDL':               /usr/bin/ghdl
  Checked variable 'VUNIT_GHDL_PATH':  not set.
  Tried pyGHDL.lib resource directory:
/usr/local/lib/python3.13/dist-packages/pyGHDL/lib/libghdl-5_0_1.so
  Tried 'which ghdl':                  /usr/bin/ghdl
  Relative to build directory:
/usr/local/lib/python3.13/dist-packages/lib
-------------------------------------------------------------------------------------------

Some investigations:
libghdl is located in /usr/lib/x86_64-linux-gnu, which is a directory
for multiarch support.

>From Debians documentation:
    Multiarch is the term being used to refer to the capability of a
system to install and run applications of multiple
    different binary targets on the same system. For example running a
i386-linux-gnu application on an amd64-linux-gnu
    system. This example is the most common case, but many other
working combinations are possible, such as armel
    and armhf.

    Multiarch also simplifies cross-building, where
foreign-architecture libraries and headers are needed on a system
during
    building.

GHDL is not cross-compiling. It generates code for the host platform.
So on x86-64 it generates x86-64 code and on aarch64 it generates
aarch64 code. Moreover, libghdl doesn't generate any code at all. It
just supports parsing, analysis, etc. but no code generation. Thus,
the classification as a multiarch code generator isn't correct, right?

One of the biggest usecases of libghdl is the Python binding via
pyGHDL/libghdl. Therefore a matching Python package installation is
required, What is the plan of Debian providing a matching pyGHDL 5.0.1
version for libghdl 5.0.1?

Instead of a Debian package providing libghdl, I suggest to provide a
python3-pyGHDL package containing an embedded and matching
libghdl-5.0.1.so. This is how we deliver pyGHDL via our GitHub
pipeline. setup.py can handle this usecase. Just provide the so file
in pyGHDL/lib/... The so file will become a package resource file.

Kind regards
    Patrick



More information about the Pkg-electronics-devel mailing list