library symbols are not versioned
Submitted by David Woodhouse
Link to original bug (#676565)
Description
When a new symbol is added without changing the soname of a library, applications which use that symbol should (obviously) not be run against older versions of the library, despite the fact that the soname is the same.
It's often desirable to update one or two packages from the 'next' version of a distribution, for example I recently updated the libvirt packages on my Fedora 16 to the version which is in Fedora 17 in order to fix some important bugs.
Distribution packages should correctly convey their dependencies — a package which uses a symbol that was added in glib-2.31 should have a requirement on glib 2.31 or later.
The Fedora packages do not have correct dependencies; packages built against glib 2.31 and using symbols which were not present in 2.30 are perfectly happy to install on a system where only glib 2.30 is present. And of course they then fail to run.
This is because the glib libraries do not include versioning information in their symbols. If the new symbols were correctly versioned (e.g. g_async_queue_timeout_pop@@GLIB_2.32) then these dependencies would all work out automatically in RPM packaging, and with minimal packager intervention in Debian packaging.
Please add symbol versioning (using the --version-script option to the GNU linker, or -M option to Solaris linker) on platforms where it's supported.
Ideally this should be a standard feature of all GNOME platform libraries.