C++ extensions requiring LIBO_UDK_4.1

Michael Stahl mstahl at redhat.com
Tue Feb 26 06:49:52 PST 2013


On 26/02/13 12:39, Stephan Bergmann wrote:
> On 02/22/2013 04:30 PM, Michael Stahl wrote:
>> On 22/02/13 15:53, Alexander Thurgood wrote:
>>> All I know is that the "new gbuild" one doesn't work on other people's
>>> systems, as I have made the connector available for download from my
>>> Dropbox account (both 32bit and 64bit Linux versions) for testing
>>> purposes. It works on my own dev-install build.
>>
>> it's possible that this is because it requires functions that were added
>> after the 4.0 release on master (i suspect this happens automatically
>> due to some OUString changes); for example here i'm getting a dependency
>> on LIBO_UDK_4.1 symbol version, which none of the current releases supply.
>>
>>>   > readelf --version-info /work/lo/master/solver/unxlngx6/lib/mysqlc.uno.so  | grep LIBO_UDK
>>>    01c:   a (LIBO_UDK_3.6)   4 (UDK_3_0_0)     2 (UDK_3_0_0)     4 (UDK_3_0_0)
>>>    08c:  12 (LIBO_UDK_4.1)   7 (UDK_3_0_0)     4 (UDK_3_0_0)     b (CXXABI_1.3)
>>>    0x0030:   Name: LIBO_UDK_4.1  Flags: none  Version: 18
>>>    0x0060:   Name: LIBO_UDK_3.6  Flags: none  Version: 10
>>
>> i'm not sure if this affects only extensions built with LO build system
>> or also those build with ODK.
> 
> As always, the best advice if you want something that works back with an 
> old version is to build it against that old version's source resp. SDK.
> 
> That said, one gotcha indeed is that even if you do not use any new 
> functionality, just recompiling C++ sources in a recent LO build can 
> introduce dependencies on new symbols.  One example is an expression
> 
>    s1 + s2
> 
> with two OUString instances, which now goes via inline OUStringConcat 
> and an inline OUString(OUStringConcat const &) ctor that calls 
> rtl_uString_alloc that is new with LIBO_UDK_4.1, i.e., LO 4.1.
> 
> The good news, at least for that example and at least for now, is that 
> all that new functionality is conditional on RTL_FAST_STRING, which is 
> not (yet?) set when building against the SDK.

it appears for mysqlc just a -DRTL_DISABLE_FAST_STRING is enough to get
something that should run already on 3.6 too:

> master > readelf --version-info /work/lo/master/solver/unxlngx6/lib/mysqlc.uno.so  | grep LIBO_UDK
>   01c:   a (LIBO_UDK_3.6)   4 (UDK_3_0_0)     2 (UDK_3_0_0)     4 (UDK_3_0_0)
>   0x0050:   Name: LIBO_UDK_3.6  Flags: none  Version: 10

committed in 34faec549ef33f77c4f866a4094d9fcf447025ee

there seems to be another C++ extension "Presentation Minimizer" but for
that one it didn't help, it still needs LIBO_UDK_4.1 (but i think we
bundle this "extension" so probably not much need to fix that).




More information about the LibreOffice mailing list