On 2013-09-18 23:14:35 +0200, Kurt Roeckx wrote:
> I mean, if you install any library via a Debian package,

Note that the library was *not* installed via a Debian package.
In my case it was installed under my home directory.

> it should result in ldconfig being run.

But ldconfig as run via Debian package installation must not touch
non-system directories, in particular libraries under the user's
home directory. So, such directories should be completely safe.

Even for system directories, the user may want to test various
versions of the library in /usr/local/lib just after installing
them, so that it won't normally be affected by installation of
Debian packages if the tests are done immediately. Anyway the
user should be aware that specific things may occur with system
directories, which are partly controlled by the system and should
normally not be used for experimentation.

Also the fact that the system does special things with system
directories is not a valid reason for doing such things via
"make install".

> But I would also find it normal that a "make install" doesn't run
> ldconfig.
> 
> I'm not sure what I expect the result of "make install" to be.
> Should it update the symbolic link?  Or should it just copy the
> file?

It should do the minimal steps
  1. to make the software (application, library...) directly usable
     (the installed version, not a different one);
  2. without touching other software, except when absolutely necessary
     to fulfill (1).

In practice, (2) means that other versions (previously installed) of
the installed software (and other software depending on them) may no
longer work.

If for some reason, it can be detected that (1) cannot be fulfilled,
then the installation process should end with an error: a clear error
message and a non-zero exit status. This will allow the user to detect
the problem and decide what to do.

> I'm actually expecting it to just install the file and not update
> any symbolic link and that ldconfig should do that.

I think that the symbolic link should be updated to the installed
version, because the ultimate goal of library installation is to
be able to use it.

Also note that the current description of Libtool's versioning system
(Libtool manual Sections 7.2 and 7.3) clashes with ldconfig behavior
(and more generally with library installation, but ldconfig makes this
worse). As I've said in

  https://sympa.inria.fr/sympa/arc/mpfr/2013-09/msg00019.html

--------
# Libtool -version-info CURRENT[:REVISION[:AGE]] for libmpfr.la
#
# 1. No interfaces changed, only implementations (good):
# ==> Increment REVISION.
# 2. Interfaces added, none removed (good):
# ==> Increment CURRENT, increment AGE, set REVISION to 0.
# 3. Interfaces removed or changed (BAD, breaks upward compatibility):
# ==> Increment CURRENT, set AGE and REVISION to 0.

Now assume that there are two MPFR versions x.y and x.y' with entirely
(backward *and* forward) compatible interfaces, for instance because
only some algorithms have changed. Then these two different versions
would have the same CURRENT and same AGE values. For patch releases,
one could make sure to increase REVISION by skipping values already
used by the other version, but if such releases get installed, this
could mean that the highest version would not necessarily be used.
For instance, one could have the successive releases:

  version    -version-info
   5.2.0         17:0:6
   5.3.0         17:1:6
   5.2.1         17:2:6

When 5.2.1 is released (fixing bugs only present in 5.2.0), if it is
installed while 5.3.0 is also already installed, then 5.2.1 will be
chosen instead of 5.3.0 by the linker.
--------

With ldconfig, this makes such things worse, because even if 5.3.0
is (re)installed after 5.2.1, ldconfig will revert the version to
5.2.1 (due to higher REVISION).

So, I've said then:

IMHO, to avoid such problems, I think that we should always increment
CURRENT for new MPFR minor or major versions; revisions would just be
incremented for patch releases.

i.e. increment CURRRENT even if the most recent interface remains the
same.

If this is the good way to do, then Libtool manual Sections 7.2 and
7.3 should be corrected.

-- 
Vincent Lefèvre <vinc...@vinc17.net> - Web: <http://www.vinc17.net/>
100% accessible validated (X)HTML - Blog: <http://www.vinc17.net/blog/>
Work: CR INRIA - computer arithmetic / AriC project (LIP, ENS-Lyon)


-- 
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org

Reply via email to