Sounds resonable

2018-01-19 20:11 GMT+03:00 Alex Peshkoff via Firebird-devel
<firebird-devel@lists.sourceforge.net>:
> On 01/19/18 14:03, Roman Simakov wrote:
>>
>> 2018-01-19 12:54 GMT+03:00 Vlad Khorsun via Firebird-devel
>> <firebird-devel@lists.sourceforge.net>:
>>>
>>> 19.01.2018 11:41, Adriano dos Santos Fernandes wrote:
>>>>
>>>> On 19/01/2018 07:14, Roman Simakov wrote:
>>>
>>> it search for ICU library using versions numbers such as 5.19 ... 5.0,
>>> 4.19
>>> ... 4.0 etc.
>>>
>>>    But, IIRC, current ICU versions is 51.x, 52.x, 60.x etc. I.e. they
>>> changed
>>> version
>>> numbering from N.xy to Nx.y. Is it correct ?
>>
>> Also take a look into formatFilename (unicode_util.cpp:346)
>>
>> static void formatFilename(PathName& filename, const char* templateName,
>> int majorVersion, int minorVersion)
>> {
>>    string s;
>>    if (majorVersion >= ICU_NEW_VERSION_MEANING)
>>      s.printf("%d", majorVersion);
>>    else
>>      s.printf("%d%d", majorVersion, minorVersion);
>>
>>    filename.printf(templateName, s.c_str());
>> }
>>
>> I see two ways to fix:
>> 1) enumerate additional suffix as well
>> 2) implement direct mapping both module and function names via config
>> and every Linux packages could provide its own specific format. Maybe
>> even implement template with variables in config. Something like this:
>> For Suse: libicuuc = " libicuuc.so.${Major}{$Minor}.{$Release}"
>> For Ubuntu: libicuuc = " libicuuc.so.${Major}{$Minor}"
>> Some other: libicuuc = " libicuuc.so.${Major}.{$Minor}"
>>
>> For functions can do the same.
>>
>> I loading code we will try Majoir in {5,4,3,6,0}, Minor in {1..20},
>> Release in {1..3} on like that.
>>
>
> This is almost funny case. The most traditional schema of versioning linux
> dynamic libraries is use of $Major in soname and ignoring $Minor (i.e. no
> API/ABI changes are expected in minor releases, only bugfixes). But ICU used
> to generate different sort keys in different minor releases (for us that
> would be a kind of incompatible between for example 3.0.2 / 3.0.3 db
> structure). Therefore $Minor became major-ilke part of ICU version. People
> even stopped to separate them with '.', i.e. instead ICU with major==5 and
> minor==3 we do have ICU with major==53. Well - in addition to minors
> $Release was invented. Now people try to add it to already big major too :)
>
> Well, it's really hard to predict how will develop ICU versioning. I'll be
> not surprised if _subrelease_ will arrive. Worse is that we can not limit
> ourself with loading ICU using libicuuc.so symlink - sometimes we need old
> versions to support old databases. It starts to seem to me that (at least
> for posix) it will be better to try to load all libraries having
> libicuuc.so.* names appending what we find after dot to functio names. Will
> try with it next week.
>
>
>
>
> ------------------------------------------------------------------------------
> Check out the vibrant tech community on one of the world's most
> engaging tech sites, Slashdot.org! http://sdm.link/slashdot
> Firebird-Devel mailing list, web interface at
> https://lists.sourceforge.net/lists/listinfo/firebird-devel



-- 
Roman Simakov

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
Firebird-Devel mailing list, web interface at 
https://lists.sourceforge.net/lists/listinfo/firebird-devel

Reply via email to