Re: C++ extensions requiring LIBO_UDK_4.1

2013-02-27 Thread Stephan Bergmann

On 02/26/2013 03:49 PM, Michael Stahl wrote:

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


But if we build module mysqlc during a LO build, it is due to 
--enable-ext-mysql-connector, to include the resulting 
mysql-connector-ooo.oxt as a bundled extension (witness 
scp2/source/extensions/file_extensions.scp).  In which case there is no 
need for the mysql-connector-ooo.oxt to be backwards compatible.  So I 
think we should either (a) revert the above commit, (b) make it 
conditional on some new --enable-unbundled-ext-mysql-connector, (c) 
replace --enable-ext-mysql-connector with 
--enable-unbundled-ext-mysql-connector (and adapt scp2 accordingly), or 
(d) shrug shoulders and let a bundled mysql-connector-ooo.oxt be 
needlessly de-optimized (but augment the above commit with some comment).



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).


Indeed.

Stephan
___
LibreOffice mailing list
LibreOffice@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice


Re: C++ extensions requiring LIBO_UDK_4.1

2013-02-26 Thread Stephan Bergmann

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.


Stephan
___
LibreOffice mailing list
LibreOffice@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice


Re: C++ extensions requiring LIBO_UDK_4.1

2013-02-26 Thread Michael Stahl
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).


___
LibreOffice mailing list
LibreOffice@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice


C++ extensions requiring LIBO_UDK_4.1 (was: Re: Mysql Connector Extension Size Confusion)

2013-02-22 Thread Michael Stahl
On 22/02/13 15:53, Alexander Thurgood wrote:
 Le 22/02/2013 15:42, Fridrich Strba a écrit :
 
 Hi Fridrich,
 
 
 Did you try whether it works? Maybe the question is only moot. Just 
 saying. F. 
 
 
 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.

___
LibreOffice mailing list
LibreOffice@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice


Re: C++ extensions requiring LIBO_UDK_4.1

2013-02-22 Thread Alex Thurgood

Le 22/02/2013 16:30, Michael Stahl a écrit :





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.



Two questions, both of which may be dumb, because I don't really know 
what is going on here, but :


Shouldn't it default to the lowest common denominator, i.e. 3.6 ?

Is this only a problem with symbol-enabled builds ?

Alex


___
LibreOffice mailing list
LibreOffice@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice


Re: C++ extensions requiring LIBO_UDK_4.1

2013-02-22 Thread Michael Stahl
On 22/02/13 16:41, Alex Thurgood wrote:
 Le 22/02/2013 16:30, Michael Stahl a écrit :

 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.

 
 Two questions, both of which may be dumb, because I don't really know 
 what is going on here, but :
 
 Shouldn't it default to the lowest common denominator, i.e. 3.6 ?

well it's based on the symbols that are actually required but not
defined in the mysql extension library, i.e. LO/URE functions called and
misc. typeinfo/RTTI stuff.

i suspect (but haven't checked) that due to changes to the OUString
class the existing code now implicitly calls and requires different
functions that did not exist in older versions.

 Is this only a problem with symbol-enabled builds ?

the term symbol is quite overloaded; this is about linker symbols in
shared libraries, which may be exported from library A and imported
in library B.  has nothing to do with --enable-symbols or --enable-debug
configure options.


___
LibreOffice mailing list
LibreOffice@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice