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