Mailinglist Archive: opensuse-packaging (155 mails)

< Previous Next >
Re: [opensuse-packaging] Best practices for a library with backends?

On Thursday 2013-12-05 18:11, Martin Vidner wrote:

I am getting involved with https://github.com/libyui , the UI library
powering YaST. The basic design is a core library, libyui, which
provides the API but has no actual UI. One of the 3 backends,
libyui-{ncurses,gtk,qt}, is needed. [...] Current problems of libyui in
this area:

- not being careful about the so-versioning. That is a solved
problem for a single(!) library, see
https://github.com/openSUSE/libzypp/blob/a01b41c7dfe42a1fae9d9431fbad61997fb04b5a/VERSION.cmake

Given that the libzypp RPM in openSUSE does not really support the
parallel installation of multiple versions, the amount of LOC spent
in libzypp source code makes this "solution" somewhat overengineered.

- the user-facing ABI of libyui and the backend-facing ABI are not
well separated. Is there any project which has figured this out?

Figured out in what way - what would you like to see?
libdbi for example uses just different prefixes; dbi_ for
user-facing, dbd_ for backend-facing, and otherwise does not
make an attempt for any other separation.

- expressing the dependency "the core lib needs at least one backend
with a matching ABI" is done via the yui_backend symbol but that
breaks bootstrapping the build (See Fedora 19 on
https://build.opensuse.org/project/monitor/devel:libraries:libyui )

Requires: ought not to be used for libraries that get dlopened (such
as backends), because dlopened libraries are not essential to start
a program. What should probably be written is

Recommends: yui_backend = 6 (in libyui.spec)

To make sure that libyui6 only loads v6 backends, there ought to
also be a runtime "barrier". For example, backends ought to be
placed in a versioned directory like /usr/lib64/libyui6/ as well.

Can you point me to any projects that handle this situation (common
api + backends), however well?

libmirage is another one that comes to mind.
--
To unsubscribe, e-mail: opensuse-packaging+unsubscribe@xxxxxxxxxxxx
To contact the owner, e-mail: opensuse-packaging+owner@xxxxxxxxxxxx

< Previous Next >
This Thread
  • No further messages