[systemd-devel] [packaging] split of systemd package
simon.mcvittie at collabora.co.uk
Thu Nov 12 02:44:13 PST 2015
On 12/11/15 08:59, Lennart Poettering wrote:
> other option of course is to declare all internal APIs exported .so
> symbols, but that would mean to commit to a stable API for them (which
> is completely out of the question), or to bump the soname on each
> release (which is not an option either).
Have you considered doing something similar to what recent dbus versions
do for libdbus?
* symbols starting dbus_ (except for a couple of historical accidents
that start with dbus_internal_do_not_use_) are explicitly stable ABI
* symbols starting _dbus_ are explicitly not stable ABI, and are only
used (outside libdbus) by dbus-daemon and other utilities in the dbus
* symbols starting dbus_ are versioned (GNU symbol-versioning)
as LIBDBUS_1_3 (as long as the shared library is libdbus-1.so.3)
* symbols starting _dbus_ are versioned as LIBDBUS_PRIVATE_1.10.2
which deliberately changes with each new version
This only applies to our equivalent of systemd's src/basic (the parts
that are needed by both the libdbus public API and the utilities). Our
equivalent of src/shared still ends up in a convenience library that is
statically linked into each utility that needs it.
It's a little easier for systemd to rely on this than it is for dbus to
do the same, because dbus is portable (to Windows, non-GNU Linux, and
non-Linux Unix like *BSD and Solaris), whereas systemd only targets
GNU/Linux and can assume that GNU symbol versioning is present in libc.
Collabora Ltd. <http://www.collabora.com/>
More information about the systemd-devel