Bug#1118608: entangle: Seems confused about whether its API is public or private

Simon McVittie smcv at debian.org
Wed Oct 22 21:11:13 BST 2025


Package: entangle
Version: 3.0-5

There seems to be some confusion about the status of Entangle-0.1.typelib 
and entangle's frontend and backend shared libraries, and this has led 
to a circular dependency between the entangle and gir1.2-entangle-0.1 
packages.

There are two possibilities for how the upstream developer intended this 
app to work:

1. It has libraries that are available for others to link against, like
    for example evince and rhythmbox do.

    If this is true, then the libraries should be packaged like "proper"
    libraries, with a -dev package containing public headers and the .so
    symlink, one or more runtime library packages containing the .so.0
    symlink and the actual library, and so on. For more details, see
    Policy §8 for the C library side, and the GObject-Introspection
    mini-policy
    <https://salsa.debian.org/gnome-team/gobject-introspection/-/blob/HEAD/debian/policy.txt>
    for the GObject-Introspection side.

    But, if this is true, then it needs to have a stable API/ABI, just
    like evince or rhythmbox; and for its API to be useful, it would
    likely need to install header files.

    If it's this, then I would expect a dependency structure more like:

        entangle -> gir1.2-entangle-0.1 -> libentangle-frontend0

    which would resolve the circular dependency.

Or,

2. Its libraries are private, and not intended to be accessible to code
    outside the entangle source package, similar to gnome-characters.

    If this is true, then the libraries and typelib should be installed
    into a private directory, conventionally get_option('libdir') / 'entangle'
    ("pkglibdir" in GNU terminology); the main entangle executable should
    be linked with a suitable DT_RUNPATH to find them (Meson should do
    this automatically); and the GObject-Introspection setup will need to
    call g_irepository_prepend_search_path() and maybe
    g_irepository_prepend_library_path()
    (or gi_repository_prepend_search_path() and
    gi_repository_prepend_library_path() after fixing #1118501) to ensure
    that the typelib can be found.

    If it's this, then the wrong solution for #695342 was chosen,
    and the solution should instead have been to move the typelib to a
    private directory; and there would be no need to separate entangle
    from gir1.2-entangle-0.1.

    If this is the correct interpretation, then there is no need to
    install header files (/usr/include) or the GIR XML (.gir file).

Which one is it?

These are two mutually exclusive options, and without the benefit of the 
package maintainers' better knowledge of this package, I can't know 
which one is right. But surely one of them must be correct, and having a 
mixture of the two certainly seems like it is having undesirable 
consequences.

     smcv



More information about the Pkg-phototools-devel mailing list