[Dovecot] Test51 compile problems
First of all, thanks for a great product. I've been able to get dovecot up and running with minimum pain. Very nice.
Running Fedora Core 2 with postfix using mysql for virtual mailbox config. Got release version of dovecot working with a passwd-file, then I wanted to try it out with using the same mysql db as postfix, so I downloaded test51.
I run
./configure --sysconfdir=/etc --with-mysql
And it seems happy. Completes with:
Install prefix ...................... : /usr/local File offsets ........................ : 64bit I/O loop method ..................... : poll Building with SSL support ........... : no Building with IPv6 support .......... : yes Building with pop3 server ........... : yes Building with user database modules . : static passwd passwd-file checkpassword mysql (modules) Building with password lookup modules : passwd passwd-file shadow checkpassword mysql (modules)
Then I run make, and it errors out with:
gcc -g -O2 -Wall -W -Wmissing-prototypes -Wmissing-declarations
-Wpointer-arith -Wchar-subscripts -Wformat=2 -Wbad-function-cast -o
dovecot-auth auth-cache.o auth-client-connection.o
auth-master-connection.o auth-module.o db-ldap.o db-sql.o
db-passwd-file.o main.o mech.o mech-anonymous.o mech-plain.o
mech-login.o mech-cram-md5.o mech-digest-md5.o mech-ntlm.o mech-rpa.o
mech-apop.o passdb.o passdb-bsdauth.o passdb-cache.o passdb-ldap.o
passdb-passwd.o passdb-passwd-file.o passdb-pam.o passdb-checkpassword.o
passdb-shadow.o passdb-vpopmail.o passdb-sql.o userdb.o userdb-ldap.o
userdb-passwd.o userdb-passwd-file.o userdb-static.o userdb-vpopmail.o
userdb-sql.o -Wl,--export-dynamic libpassword.a
../lib-settings/libsettings.a ../lib-ntlm/libntlm.a ../lib-sql/libsql.a
../lib/liblib.a -lcrypt -L/usr/local/mysql/lib -lmysqlclient -lz -ldl
/usr/local/mysql/lib/libmysqlclient.a(sha1.o)(.text+0x5c): In function
sha1_result': : multiple definition of
sha1_result'
../lib/liblib.a(sha1.o)(.text+0x7f4):/root/dovecot-1.0-test51/src/lib/sh
a1.c:242: first defined here
/usr/bin/ld: Warning: size of symbol sha1_result' changed from 158 in ../lib/liblib.a(sha1.o) to 126 in ../lib/liblib.a(sha1.o) collect2: ld returned 1 exit status make[3]: *** [dovecot-auth] Error 1 make[3]: Leaving directory
/root/dovecot-1.0-test51/src/auth'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory /root/dovecot-1.0-test51/src' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory
/root/dovecot-1.0-test51'
make: *** [all] Error 2
Any help would be appreciated.
Thanks!
On 29.10.2004, at 03:01, Greg Deputy wrote:
/usr/local/mysql/lib/libmysqlclient.a(sha1.o)(.text+0x5c): In function
sha1_result': : multiple definition of
sha1_result' ../lib/liblib.a(sha1.o)(.text+0x7f4):/root/dovecot-1.0-test51/src/lib/ sh a1.c:242: first defined here /usr/bin/ld: Warning: size of symbol `sha1_result' changed from 158 in ../lib/liblib.a(sha1.o) to 126 in ../lib/liblib.a(sha1.o)
IMHO this is mysql library problem. It shouldn't reserve such a
commonly used function name for itself, and I'm sure Dovecot isn't the
only software using it. Someone should report it to Mysql people to get
it fixed..
A kludgy workaround would be to change all occurrences of sha1_result
to something else, like xx_sha1_result:
auth/password-scheme.c: sha1_result(&ctx, ssha_digest); auth/password-scheme.c: sha1_result(&ctx, sha1_digest); lib/sha1.c:sha1_result(struct sha1_ctxt *ctxt, void *digest0) lib/sha1.c: sha1_result(&ctx, result); lib/sha1.h:extern void sha1_result(struct sha1_ctxt *, void *); lib/sha1.h:#define SHA1Final(x, y) sha1_result((y), (x))
IMHO this is mysql library problem. It shouldn't reserve such a
commonly used function name for itself, and I'm sure Dovecot isn't the
only software using it. Someone should report it to Mysql people to get
it fixed..A kludgy workaround would be to change all occurrences of sha1_result
to something else, like xx_sha1_result:auth/password-scheme.c: sha1_result(&ctx, ssha_digest); auth/password-scheme.c: sha1_result(&ctx, sha1_digest); lib/sha1.c:sha1_result(struct sha1_ctxt *ctxt, void *digest0) lib/sha1.c: sha1_result(&ctx, result); lib/sha1.h:extern void sha1_result(struct sha1_ctxt *, void *); lib/sha1.h:#define SHA1Final(x, y) sha1_result((y), (x))
So are others having the same problem and just kludging the function name, or is there a different version of mysql that plays nicer?
Thanks for any help.
On 1.11.2004, at 20:11, Greg Deputy wrote:
IMHO this is mysql library problem. It shouldn't reserve such a commonly used function name for itself, and I'm sure Dovecot isn't the only software using it. Someone should report it to Mysql people to get it fixed..
So are others having the same problem and just kludging the function name, or is there a different version of mysql that plays nicer?
Some versions of the library work. I don't really know what makes it broken or non-broken. 3.x and 4.0.x versions in Debian work fine anyway.
Maybe it's a problem with how distributions package the library. Try reporting it to them.
participants (2)
-
Greg Deputy
-
Timo Sirainen