Libtool now unconditional in INN CURRENT

Julien ÉLIE julien at trigofacile.com
Tue Jun 12 20:27:00 UTC 2012


Hi Russ,

>> I found out with "ldconfig -v" that the libraries were redirected this
>> way:
> 
>>          libinnhist.so.2 ->  libinnhist.so.2.0.0.OLD
>>          libstorage.so.2 ->  libstorage.so.2.0.0.OLD
>>          libinn.so.2 ->  libinn.so.2.0.0.OLD
> 
> We've had this problem before.  I think we have a bug report or comment
> somewhere, but I couldn't find it in a quick check.

Maybe this paragraph in TODO:

* The libinn, libstorage, and other library interfaces should be treated
  as stable libraries and properly versioned using libtool's
  recommendation for library versioning when changes are made so that they
  can be installed as shared libraries and work properly through releases
  of INN.  This is currently waiting on a systematic review of the
  interface and removal of things that we don't want to support long-term.


> The problem is that
> our backup suffix for shared libraries looks to ldconfig like just part of
> the SONAME and one that actually makes the .OLD libraries sort later than
> the new ones, so it links to the wrong one.

OK, I understand.


> Not creating backups of the shared libraries would fix this.

We once found a similar issue with man pages and disabled their backup
during an update.  (Otherwise, "readers.conf.OLD" was for instance shown
in a "man read[tab]" command.)

Anyway, I believe it is better to keep these backups (they would otherwise
be less useful than they should).
Couldn't the issue come from support/ltmain.sh or m4/libtool.m4 that define
how files are installed?

Let's take an example with libstorage.
The storage/libstorage.la file generated by libtool mentions:

dlname='libstorage.so.2'
library_names='libstorage.so.2.0.0 libstorage.so.2 libstorage.so'

If I change these lines to:

dlname='libstorage.so'
library_names='libstorage.so.2.0.0 libstorage.so'

then only this symlink is created:

lrwxrwxrwx  1 root root   19 2012-06-12 22:18 libstorage.so -> libstorage.so.2.0.0*

Otherwise, this other useless symlink is created:

lrwxrwxrwx  1 root root   23 2012-06-12 22:17 libstorage.so.2 -> libstorage.so.2.0.0.OLD*


Shouldn't the generation of the *.la files be fixed?
With only libstorage.so pointing to libstorage.so.2.0.0?



> Updating our
> shared library versions properly on any change would also fix this,
> although that's a lot of updates if we were going to try to keep the
> versions accurate for snapshots.

It could also become painful during development, when building and testing
changes for 2.6.0 for instance.


>> It shows that the new installed version uses the .OLD files!
>> Strange…
>> I ran "make update" a second time, which solved the problem.  INN then
>> started fine.
> 
> Yes, that would have replaced the *.OLD libraries with another copy of the
> new libraries.  I bet that the links are still pointing to *.OLD.

Yes, they are.

-- 
Julien ÉLIE

« Pour célébrer ce jour heureux, buvons un coup, buvons-en deux. »
  (Aristophane)


More information about the inn-workers mailing list