No libldap_r in OpenLDAP 2.5 - use LDAP_API_FEATURE_X_OPENLDAP_REENTRANT from ldap_features.h

From: Dilyan Palauzov <Dilyan(dot)Palauzov(at)aegee(dot)org>
To: pgsql-bugs(at)lists(dot)postgresql(dot)org
Subject: No libldap_r in OpenLDAP 2.5 - use LDAP_API_FEATURE_X_OPENLDAP_REENTRANT from ldap_features.h
Date: 2021-08-25 05:21:42
Message-ID: 20210825052142.Horde.fX47Irhz5YmXoRVbIbyYUJm@webmail.aegee.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

libpq does use libldap, coming from openldap. In the release
announcement for Openldap 2.5 ,
https://www.openldap.org/software/release/announce.html , is written
that libldap_r has been merged with libldap . In turn on a system
with OpenLDAP 2.4, after installing OpenLDAP 2.5, libldap is for v2.5
and libldap_r i for v2.4 . On such systems Libpq links with
libldap_r-2.4-releng.so.2 , while Postgresql Postgresql 13.4 is linked
with libldap-2.5 .

The release notes for Postgresql 13.4 ,
https://www.postgresql.org/docs/13/release-13-4.html, contain:

<!--
Author: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Branch: master [d0a02bdb8] 2021-07-09 12:38:55 -0400
Branch: REL_14_STABLE [5620ec833] 2021-07-09 12:38:55 -0400
Branch: REL_13_STABLE [55cccdfdf] 2021-07-09 12:38:55 -0400
Branch: REL_12_STABLE [a5377e7f7] 2021-07-09 12:38:55 -0400
Branch: REL_11_STABLE [b69e8ad6c] 2021-07-09 12:38:55 -0400
Branch: REL_10_STABLE [7e0b53ad6] 2021-07-09 12:38:55 -0400
Branch: REL9_6_STABLE [cd5d3aefa] 2021-07-09 12:38:55 -0400
Branch: master [31e8cfac5] 2021-07-09 14:15:41 -0400
Branch: REL_14_STABLE [7f2eca6f9] 2021-07-09 14:15:41 -0400
Branch: REL_13_STABLE [cbcf5ffb1] 2021-07-09 14:15:41 -0400
Branch: REL_12_STABLE [83a8bf24e] 2021-07-09 14:15:41 -0400
Branch: REL_11_STABLE [29a4fbd46] 2021-07-09 14:15:41 -0400
Branch: REL_10_STABLE [911488b42] 2021-07-09 14:15:41 -0400
Branch: REL9_6_STABLE [8c9c20899] 2021-07-09 14:15:41 -0400
Branch: master [53c38a086] 2021-07-09 16:59:07 -0400
Branch: REL_14_STABLE [9ffad7ae7] 2021-07-09 16:59:07 -0400
Branch: REL_13_STABLE [32d0bdbfc] 2021-07-09 16:59:07 -0400
Branch: REL_12_STABLE [e82cde74d] 2021-07-09 16:59:08 -0400
Branch: REL_11_STABLE [2c28c689f] 2021-07-09 16:59:08 -0400
Branch: REL_10_STABLE [56533fce7] 2021-07-09 16:59:08 -0400
Branch: REL9_6_STABLE [3c612d9f6] 2021-07-09 16:59:08 -0400
Branch: master [9f6be2e79] 2021-07-10 13:19:30 -0400
Branch: REL_14_STABLE [ebc346e5b] 2021-07-10 13:19:31 -0400
Branch: REL_13_STABLE [9fca23c1d] 2021-07-10 13:19:31 -0400
Branch: REL_12_STABLE [03fc042eb] 2021-07-10 13:19:31 -0400
Branch: REL_11_STABLE [946f62f2f] 2021-07-10 13:19:31 -0400
-->
<para>
Fix <application>configure</application> to work with OpenLDAP 2.5,
which no longer has a separate <filename>libldap_r</filename>
library (Adrian Ho, Tom Lane)
</para>

<para>
If there is no <filename>libldap_r</filename> library, we now
silently assume that <filename>libldap</filename> is thread-safe.
</para>
</listitem>

The current postgres’/configure.ac logic is: if libldap_r is availabe,
then use it, otherwise use libldap.

Searching with nm -D in libldap-2.4-releng.so,
libldap_r-2.4-releng.so, and libldap-2.5.releng.so I find that in the
former the symbol ldap_compare is not versioned, while the latter
contains ldap_compare@@OPENLDAP_2.5.releng . This could be used as
criterion, whether to skip ldap_r .

Moreover, the installed ldap_features.h file contains:

/* is -lldap reentrant or not */
#define LDAP_API_FEATURE_X_OPENLDAP_REENTRANT 1

/* is -lldap thread safe or not */
#define LDAP_API_FEATURE_X_OPENLDAP_THREAD_SAFE 1

I propose, instead of looking for the presence of libldap_r, to check
the feature macro, and if libldap is reentrant, not to use libldap_r .

Greetings
Дилян

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message Masahiko Sawada 2021-08-25 06:01:15 Re: BUG #17156: pg_restore: [custom archiver] WARNING: ftell mismatch with expected position -- ftell used
Previous Message Li EF Zhang 2021-08-25 03:48:26 RE: BUG #17157: authorizaiton of dict_int and bloom extention