Changed bits are fine on zOS (stub still not loading). The use of LDAP_OPT_OFF/ON here is still a warning: > void *refs = invalue->refs ? LDAP_OPT_ON : LDAP_OPT_OFF;
Due to: $ grep LDAP_OPT_ON /usr/include/ldap.h #define LDAP_OPT_ON 0x01 WARNING CCN3196 ./ldap/apr_ldap.c:1081 Initialization between types "void*" and "int" is not allowed. But I haven't gotten back to / paste the the dlsym issue in the stub so none of it has run. In the older codebase, we only used LDAP_OPT_ON in SDK-specific code I think so there was no autoconf check. On Mon, Mar 24, 2025 at 10:18 AM Graham Leggett <minf...@sharp.fm> wrote: > > On 21 Mar 2025, at 22:09, Eric Covener <cove...@gmail.com> 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 > > -- Eric Covener cove...@gmail.com