[SSSD] ding-libs: symbol versioning is necessary

Lukas Slebodnik lslebodn at redhat.com
Wed Jan 8 18:37:25 UTC 2014


On (22/12/13 23:57), Jan Engelhardt wrote:
>
>I had libref_array1-0.1.1 and libini_config2-0.6.1 (which were built
>from ding-libs-0.1.3) installed in the system. Few days ago I built the
>new ding-libs-0.3.0.1 source which, among others, yielded a binary
>libini_config3-1.0.0.1 package.
>
>After installation of libini_config3, ldd -r
>/usr/lib64/libini_config.so.3 yields:
>
>undefined symbol: ref_array_copy        (/usr/lib64/libini_config.so.3)
>
>which is a sign that libini_config3 needs a newer libref_array1,
>but the package manager did not catch it because the release
>following commit 8c201905d5f0720b62d036eb2308f81f4530cfad
>failed to do one of:
I would like to appologize for late answer.

This is correct.
function ref_array_copy was added in the upstream release 0.2.91.
I checked changes in the Makefile and version-info was updated correctly
    from "-version-info 1:0:0" to "-version-info 2:0:1", because it was
    backward compatible change (public function was added)

It is not possible to play with version info like with package version number.
Details about updating library version information are:
http://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html

On the other hand, you are right that libini_config requires new libref_array.
It was also changed in the upstream release 0.2.91 and it was not required in
any file.

>
> (1) changing the SONAME of ref_array, or
No, as I described before, you cannot "play" with version-info (and SONAME is
automatically generated from version-info by libtool)

> (2) using symbol versions
>
It is possible solution.

>to indicate the new backwards-incompatibility. People, -version-info
>1:0:0 => -version-info 2:0:1 is not enough! You must either
>
It was not backward incompatible change in the refarray, but libini_config
requires new version of libref_array and it was not detected.

> (1) -version-info 2:0:0, or
> (2) -Wl,--version-script=ref_array.map
It is an option, but I would like to avoid to manually update version script
file after each change. We did *backward compatible change(s)* and file would
look like:
### VERS_1.1 {
###      global:
###          foo1;
### };
###
### VERS_1.2 {
###          foo2;
### } VERS_1.1;
###
### VERS_2.0 {
###          bar1; bar2;
### } VERS_1.2;

In my opinion, good enough solution would be to explicitly require newer
version of libref_array in the ini pkg-config file. It should be sufficient
information for package maintainers.

ini/ini_config.pc.in
Requires: ref_array >= 0.1.3, ...

I am not sure what solution is better and someone else should also express
his(her) opinion.

Thank you very much for your mail report.

LS



More information about the sssd-devel mailing list