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-inf...
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