RE: [Evolution] ximian-connector 2.0.4 x86_64 cannot --with-static-ldap ?!?



Title: RE: [Evolution] ximian-connector 2.0.4 x86_64 cannot --with-static-ldap ?!?

First, here's what happens when I try to configure with static ldap like this
/configure --prefix=/usr/local/evolution-2.0.4 --with-krb5=/usr/local/krb5-1.4 --with-openldap=/usr/local/openldap-2.2.23+ntlm --with-static-ldap=yes --with-e2k-debug
 .
 .
 .
checking for OpenLDAP... /usr/local/openldap-2.2.23+ntlm
checking if OpenLDAP is version 2.x... yes
checking for res_query in -lresolv... no
checking for bind in -lsocket... no
checking for gethostbyaddr in -lnsl... yes
checking for ber_get_tag in -llber... yes
checking for ldap_open in -lldap... no
checking for ldap_ntlm_bind... no
checking for Kerberos 5... -lkrb5 -lk5crypto -lcom_err -lgssapi_krb5
checking gtk-doc version >= 1.0... yes
configure: creating ./config.status

So configure doesn't seem to find the static library for the NTLM-patched
OpenLDAP, which AFAICT, seems to be a fine library, viz.

$ nm /usr/local/openldap-2.2.23+ntlm/lib/libldap.a |grep ntlm
ntlm.o:
0000000000000000 T ldap_ntlm_bind
00000000000001f0 T ldap_parse_ntlm_bind_result

and the configure failure seems to be related to the following snippet, taken deep from within config.log:

configure:23767: checking for ldap_ntlm_bind
configure:23824: gcc -o conftest -g -O2 -Wall -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-sign-compare  -Wno-sign-compare -I/usr/local/openldap-2.2.23+ntlm/include   conftest.c  -L/usr/local/openldap-2.2.23+ntlm/lib  >&5
/tmp/ccMs2dsV.o(.text+0x9): In function `main':
/usr/netpub/evolution-2.0.4-x86_64/ximian-connector-2.0.4/conftest.c:85: undefined reference to `ldap_ntlm_bind'
/tmp/ccMs2dsV.o(.data+0x0): undefined reference to `ldap_ntlm_bind'
collect2: ld returned 1 exit status
 .
 .

So that's how the static build isn't working.


The second problem, where the dynamic build succeeds, but the binary doesn't grab the right
dynamic openldap library, is probably something that you've seen a lot. Typically, when I compose a message to be sent via Exchange, it triggers  ximian-exchange-storage to die with

GC: Connecting to ldap://dc11snlnt:3268/
./evolution-exchange-storage: symbol lookup error: ./evolution-exchange-storage
: undefined symbol: ldap_ntlm_bind

and not surprisingly, either, because
$ ldd evolution-exchange-storage | grep ldap
        libldap-2.2.so.7 => /usr/lib64/libldap-2.2.so.7 (0x0000003ef1200000)

is pointing to one of my system libraries instead of, say,
/usr/local/openldap-2.2.23+ntlm/lib/libldap-2.2.so.7.0.16

which apparently has the right ingredient,
$ nm /usr/local/openldap-2.2.23+ntlm/lib/libldap-2.2.so.7.0.16 | grep ldap
0000000000013b30 T ldap_ntlm_bind
0000000000013d50 T ldap_parse_ntlm_bind_result

I've tried to do the configure with more drastic tactics, such as
LDFLAGS="-L/usrlocal/openldap-2.2.23+ntlm/lib" ./configure ...
but to no avail.

I've tried setting LD_LIBRARY_PATH before running evolution-exchange-storage, too,
but, again, with no change in behavior.

Perhaps SELinux that comes with FC 3 has iron-fisted policies on loading of shared dynamic libraries
particularly involving authentication of which I'm not aware?

Thanks for any help or suggestions!

-Phil S.


-----Original Message-----
From: evolution-admin lists ximian com on behalf of Sushma Rai
Sent: Tue 3/1/2005 11:22 PM
To: evolution lists ximian com; Sackinger, Philip A
Subject: Re: [Evolution] ximian-connector 2.0.4 x86_64 cannot --with-static-ldap ?!?

What is the exact error you are getting with static
linking?

-Sushma.

>>> "Sackinger, Philip A" <pasacki sandia gov> 03/01/05 22:13 PM >>>

I've been trying to build and run ximian connector 2.0.4 under Fedora Core 3 on x86_64.

In order to get the evolution-exchange-storage to work with my local Exchanger server, I've built
OpenLDAP 2.2.23 with the ntlm patch applied.

However, if I try to configure --with-static-ldap, the configure fails to compile/link with my
special library. It also seems to fail to find res_query in -lresolv, too, FWIW.

Conversely, the configure against the dynamic shared library for patched OpenLDAP succeeds. I can then do a make and a make install.

But then, when I actually run E2K_DEBUG=4 evolution-exchange-storage before firing up evolution 2.0.4, it will
die with a symbol lookup failure that indicates that it is getting the dynamic library from a system location in
/usr/lib64 or /lib64 that doesn't have our extra friend ldap_ntlm_bind().

So, it's a rock or a hard place.

I saw this old patch for x86_64, but for connector 1.4.7 -- should I try to adapt it to 2.0.4?
http://lists.ximian.com/archives/public/evolution-patches/2004-September/007474.html

Or, is there a way to coerce my backend storage to use the right dynamic shared library?

I'm almost ready to forcefully rename the ldap libraries in the system directories, but would rather not do something so drastic if it could be avoided.

Thanks for any help.


_______________________________________________
evolution maillist  -  evolution lists ximian com
http://lists.ximian.com/mailman/listinfo/evolution




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]