I have realized that my modifications in configure.in and src/interfaces/libpq/Makefile to link libpq against OpenLDAP are buggy.
Here is a proposed patch to fix it. I write this to pgsql-hackers too because I want to share the difficulty I'm facing - maybe somebody has a better idea. To handle thread safety, OpenLDAP comes with a second library libldap_r. The thread safe API is identical to the normal API, the difference is that you must link against libldap_r instead of libldap to get thead safety. These are my problems: - While libpq should be thread safe when ./configured with --enable_thread_safety, the backend should be linked against the normal libldap. - At least on RedHat Linux, you need to link against the pthread library too if you want to link against libldap_r, because the latter has unresolved dependencies. My solution: - If thread safety is not desired, I link against libldap. No problem. - If thread safety is desired, I first try to link against libldap_r without the thread libraries, and only if that fails add the thread libraries to LIBS. - I tweak src/backend/Makefile so that it strips libldap_r and the thread libs from LIBS and replace it with libldap if necessary. That means that if --enable_thread_safety and --with-ldap is both specified, all executables except 'postgres' will be linked against libldap_r (and the thread libs, if necessary). I tested my patch on RedHat Enterprise Linux 3 and AIX 5.3. The behaviour for Windows (use the native WLDAP32.DLL) is unchanged. Yours, Laurenz Albe
ldaplink.patch
Description: ldaplink.patch
---------------------------(end of broadcast)--------------------------- TIP 2: Don't 'kill -9' the postmaster