[Libreoffice] postresql-sdbc bits out of minutes of tech. steering call

Fridrich Strba fridrich.strba at graduateinstitute.ch
Mon Dec 12 00:46:37 PST 2011


On 12/12/11 08:14, Lionel Elie Mamane wrote:
> I did that because it seemed the easiest thing to do at first
> sight. However, we are losing the advantage of that, and thus I
> propose we switch to dynamic linking, and bundling the lib on
> platforms / situations that need it.

Where are we actually losing the advantage? The way I quickly hacked the
internal postgresql for windows was a proof of concept and surely we can
extend it.

>  - no SSL/TLS support, for encrypted communication with the DB server
>    and authentication by X.509 certificate.

We bundle OpenSSL with LibreOffice, so should be possible to build it
against the internal or system OpenSSL according how the build is
configured.

>  - no Kerberos support: authentication; apparently can be used for
>    windows domain "single signon" from a non-windows machine.

So, this should not be a problem for windows then. Should it?

>  - no GSSAPI support: yet another authentication mechanism
> 
>  - no LDAP support: yes, in the client library: this allows to store
>    the connection info in LDAP and thus manage it centrally. Can be
>    really convenient in enterprise environment.
> 
> I started hacking our internal postgresql to activate all this, but
> this introduces dependencies on yet other libraries: OpenSSL, MIT
> Kerberos, com_err, ldap, ... This means that linking statically
> against libpq is not the easiest anymore, since static linking does
> not automatically recurse, in the way that dynamic linking does :)

Yes, but this is feasible, since the stuff will be linked only in
connectivity/source/drivers/postgresql, so having the dll linking in
postgresql with all those libraries, or having the uno component linking
against static libpq and all those libraries in connectivity is the same
work.

> So, to me it looks like we'll switch to dynamic linking against libpq
> and shipping the DLL/SO/DYLIB on the platforms/cases that need it. Any
> platform where this will be harder than what I presume?

It will not solve anything unless you want to use a shared library from
somewhere else. You will still have to build the shared library with all
the support and link it with the external libraries. Moreover, it might
actually introduce a problem when your internal shared library of a
certain name could be a bit different then the system one of the same
name. Been there, done that. Not really a good solution.

> As an added bonus, this makes it easier for our users to upgrade the
> libraries we link against (for bugfixes or new features in new
> versions or ...): just overwrite the DLL/SO/DYLIB file with an
> upstream-provided one (downloaded from http://www.postgresql.org).

No, no, no! Then you will have a mix of environment that you don't know
compiled with options that you cannot be sure about and you will have an
unmaintainable code.

> This also means that by our "we have to build everything we ship"
> rule, we have to internalise, according to my first quick survey:
> 
>  - OpenSSL: I expect all platforms. It is a system lib on most
>             GNU/Linux distributions, but the soname is not stable.

We ship it already, so no problem there.

>  - MIT Kerberos:
> 
>    * MacOS X bundles Kerberos since 10.2, which AFAIK is behind our
>      baseline of 10.4; is it binary-compatible across releases? Then
>      we can consider it a system library on MacOS X and not
>      internalise / ship it.
> 
>    * GNU/Linux: What's our baseline there? Has the soname changed
>      since our baseline? Is the soname consistent across
>      distributions? If no&yes, then system lib and don't ship it.
>      Debian seems to have a stable soname since woody (released 19
>      July 2002), so I expect this will be OK.
> 
>      If we have to internalise it, it depends on:
> 
>      ° libcom_err: built from e2fsprogs sources on my Debian, soname
>                    libcom_err.so.2. Google tells me (some?) RPM
> 		   distributions have a libcom_err.so.3 that is
> 		   shipped by the MIT Kerberos RPM itself.

It should be possible to assume as a system library for Linux and MacOSX

>  - Kerberos for Windows: that's not part of the OS -> internalise
>    (http://web.mit.edu/kerberos/dist/index.html#kfw-3.2)

Do we really really need this on Windows?

>  - LDAP: We already have OpenLDAP-related stuff in configure.in... So
>          can postgresql-sdbc just use that, or is the existing stuff
> 	 "too optional"? I mean it seems to be replacing some Mozilla
> 	 parts, not sure we enable it on our builds or if it just a
> 	 service to distributions. If cannot just use:
> 
>    * MacOS X: is it bundled? Some googling finds LDAP-related commands
>               in MacOS X 10.4, our baseline. So we are good to
> 	      consider it a system lib?
> 
>    * GNU/Linux: Debian has stable soname since 2008. Assuming other
>                 distros are similar, is that sufficient to consider it
> 		a system library?

So, in LibreOffice, we have two ways of use LDAP: Either we use the ldap
functionality from the bundled mozilla, or we use OpenLDAP.

> 
>    * Windows: The Microsoft implementation is used, Google tells me it
>               is in the Windows platform SDK. Our current way to build
> 	      libpq does not have an option for enabling LDAP, but
> 	      peeking at the official Perl-driven process, it seems
> 	      easy enough to hack in:
> 
>               ° #define USE_LDAP 1
> 
>               ° link against wldap32.lib

Yup, can be done easily.

Let me have a try on different options.

Cheers

Fridrich


More information about the LibreOffice mailing list