On 21 Mar 2025, at 22:09, Eric Covener <[email protected]> wrote:
> libtool port: https://github.com/covener/zlibtool
> patch attached to get apr-trunk compiling and linking, but ran out of
> time before getting the dlsym in th stub working.
> (./configure --prefix=$PWD/built --with-expat=$HOME/expat/
> --with-ldap-include=/usr/include --with-ldap-lib=/usr/lib/GLDCLD64.x
> --with-ldap)
I've updated the patch to detect the missing symbols generically, and return
APR_ENOTIMPL where unsupported.
Can you confirm is this patch works for you? It currently builds fine across
COPR.
Regards,
Graham
--
Index: ldap/apr_ldap.c
===================================================================
--- ldap/apr_ldap.c (revision 1924547)
+++ ldap/apr_ldap.c (working copy)
@@ -770,6 +770,7 @@
switch (option) {
case APR_LDAP_OPT_API_INFO: {
+#if defined(LDAP_OPT_API_INFO)
LDAPAPIInfo info = { 0 };
info.ldapai_info_version = LDAP_API_INFO_VERSION;
@@ -783,9 +784,15 @@
outvalue->info.vendor_version = info.ldapai_vendor_version;
break;
-
+#else
+ result->reason = "LDAP: API info not yet supported by APR on this "
+ "LDAP SDK";
+ result->rc = LDAP_UNWILLING_TO_PERFORM;
+ return APR_ENOTIMPL;
+#endif
}
case APR_LDAP_OPT_API_FEATURE_INFO: {
+#if defined(LDAP_OPT_API_FEATURE_INFO)
LDAPAPIFeatureInfo ldfi = { 0 };
ldfi.ldapaif_info_version = LDAP_FEATURE_INFO_VERSION;
@@ -797,6 +804,12 @@
break;
+#else
+ result->reason = "LDAP: API feature info not yet supported by APR on
this "
+ "LDAP SDK";
+ result->rc = LDAP_UNWILLING_TO_PERFORM;
+ return APR_ENOTIMPL;
+#endif
}
case APR_LDAP_OPT_PROTOCOL_VERSION: {
@@ -811,6 +824,7 @@
return APR_SUCCESS;
}
case APR_LDAP_OPT_DESC: {
+#if defined(LDAP_OPT_DESC)
apr_status_t status = APR_SUCCESS;
@@ -829,6 +843,12 @@
outvalue->socket = ldap->socket;
return status;
+#else
+ result->reason = "LDAP: LDAP_OPT_DESC not yet supported by APR on this
"
+ "LDAP SDK";
+ result->rc = LDAP_UNWILLING_TO_PERFORM;
+ return APR_ENOTIMPL;
+#endif
}
case APR_LDAP_OPT_URI: {
#if APR_HAS_OPENLDAP_LDAPSDK
@@ -1035,7 +1055,7 @@
break;
case APR_LDAP_OPT_PROTOCOL_VERSION:
- rc = ldap_set_option(ldap ? ldap->ld : NULL,
LDAP_OPT_PROTOCOL_VERSION, &invalue->pv);
+ rc = ldap_set_option(ldap ? ldap->ld : NULL,
LDAP_OPT_PROTOCOL_VERSION, (void*)&invalue->pv);
break;
case APR_LDAP_OPT_HANDLE:
@@ -1054,9 +1074,10 @@
#endif
case APR_LDAP_OPT_DEREF:
- rc = ldap_set_option(ldap ? ldap->ld : NULL, LDAP_OPT_DEREF,
&invalue->deref);
+ rc = ldap_set_option(ldap ? ldap->ld : NULL, LDAP_OPT_DEREF,
(void*)&invalue->deref);
break;
+#if !APR_HAS_ZOS_LDAPSDK
case APR_LDAP_OPT_REFERRALS: {
void *refs = invalue->refs ? LDAP_OPT_ON : LDAP_OPT_OFF;
@@ -1066,6 +1087,7 @@
break;
}
+#endif
case APR_LDAP_OPT_REFHOPLIMIT:
#if defined(LDAP_OPT_REFERRAL_HOP_LIMIT)
/* Microsoft SDK defines LDAP_OPT_REFERRAL_HOP_LIMIT
@@ -1074,7 +1096,7 @@
#elif defined(LDAP_OPT_REFHOPLIMIT)
/* Setting this option is supported on TIVOLI_SDK.
*/
- rc = ldap_set_option(ldap ? ldap->ld : NULL, LDAP_OPT_REFHOPLIMIT,
&invalue->refhoplimit);
+ rc = ldap_set_option(ldap ? ldap->ld : NULL, LDAP_OPT_REFHOPLIMIT,
(void*)&invalue->refhoplimit);
#else
/* If the LDAP_OPT_REFHOPLIMIT symbol is missing, assume that the
* particular LDAP library has a reasonable default. So far certain