Minor versions conflict with each other and misreport their versions

Description

The ICU libraries are linked such that the shared library dependencies are referenced by major version only, yet the shared libraries themselves are installed with separate minor versions. If you install multiple minor versions with the same major version, then all minor versions end up depending on the other ICU libraries of the last major version installed.

In other words, if you install 63.1, then 63.2, then open libicui18n.so.63.1, it will pull in libicuuc.so.63.2 and libicudata.63.2. This results in libicui18n.so.63.1 reporting that it’s version is 63.2.

Repro:

If you install 63.1 on linux with --enable-rpath, you get (edited for clarity):

$ ls -l /path/to/libicui18n.so.63*
/path/to/libicui18n.so.63 -> libicui18n.so.63.1
/path/to/libicui18n.so.63.1

$ ls -l /path/to/libicuuc.so.63*
/path/to/libicuuc.so.63 -> libicuuc.so.63.1
/path/to/libicuuc.so.63.1

$ ls -l /path/to/libicudata.so.63*
/path/to/libicudata.so.63 -> libicudata.so.63.1
/path/to/lib/libicudata.so.63.1

$ ldd /path/to/libicui18n.so.63.1
        libicuuc.so.63 => /path/to/libicuuc.so.63
        libicudata.so.63 => /path/to/libicudata.so.63 

All good so far. Now install 63.2. Then you get:

$ ls -l /path/to/libicui18n.so.63*
/path/to/libicui18n.so.63 -> libicui18n.so.63.2
/path/to/libicui18n.so.63.1
/path/to/libicui18n.so.63.2

$ ls -l /path/to/libicuuc.so.63*
/path/to/libicuuc.so.63 -> libicuuc.so.63.2
/path/to/libicuuc.so.63.1
/path/to/libicuuc.so.63.2

$ ls -l /path/to/libicudata.so.63*
/path/to/libicudata.so.63 -> libicudata.so.63.2
/path/to/libicudata.so.63.1
/path/to/libicudata.so.63.2

$ ldd /path/to/libicui18n.so.63.2
        libicuuc.so.63 => /path/to/libicuuc.so.63
        libicudata.so.63 => /path/to/libicudata.so.63

 

Now, open libicudata.so.63.1 and it reports that it’s version is 63.2.

Activity

Markus Scherer 
December 8, 2022 at 3:43 AM

This does not look like a valid use case. A new minor version should replace the previous installation of the same major version, since it's a maintenance release/update with bug fixes.

Out of Scope

Details

Assignee

Reporter

Components

Priority

Created November 29, 2022 at 7:32 PM
Updated December 8, 2022 at 3:43 AM
Resolved December 8, 2022 at 3:43 AM