Hi, I need some feedback for the following problem I encountered compiling dovecot. It seems to be a wrong check in configure, that comes out in a fatal error (crypt symbol not found because the -lcrypt is omitted). With these configure parameters no crypt module is recognized (and so the need_crypt variable is still off), but at compile time gcc fails to create executables. I solve the issue forcing the need_crypt variable to on in configure, but maybe it can be solved clearly adding the right checks. Here is some info: Dovecot: tested on 1.0.rc17 and 1.0.rc27 OS: linux Configuration parameters: ./configure --without-passwd \ --without-passwd-file \ --without-shadow \ --without-pam \ --without-bsdauth \ --without-gssapi \ --without-sia \ --without-ldap \ --without-vpopmail \ --without-static-userdb \ --without-sql \ --without-pgsql \ --without-mysql \ --without-sqlite \ --without-deliver \ --without-sql-drivers \ --with-storages=maildir \ --disable-ipv6 Here there are the errors: Making all in auth make[3]: Entering directory `/usr/src/dovecot-1.0.rc27/src/auth' /bin/sh ../../libtool --tag=CC --mode=link gcc -std=gnu99 -g -O2 -Wall -W -Wmissing-prototypes -Wmissing-declarations -Wpointer-arith -Wchar-subscripts -Wformat=2 -Wbad-function-cast -export-dynamic -o dovecot-auth auth.o auth-cache.o auth-client-connection.o auth-master-connection.o auth-master-listener.o auth-module.o auth-request.o auth-request-handler.o auth-stream.o auth-worker-client.o auth-worker-server.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-gssapi.o mech-rpa.o mech-apop.o passdb.o passdb-blocking.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-sia.o passdb-vpopmail.o passdb-sql.o userdb.o userdb-blocking.o userdb-ldap.o userdb-passwd.o userdb-passwd-file.o userdb-prefetch.o userdb-static.o userdb-vpopmail.o userdb-sql.o libpassword.a ../lib-settings/libsettings.a ../lib-ntlm/libntlm.a ../lib-sql/libsql.a ../lib/liblib.a -export-dynamic -ldl gcc -std=gnu99 -g -O2 -Wall -W -Wmissing-prototypes -Wmissing-declarations -Wpointer-arith -Wchar-subscripts -Wformat=2 -Wbad-function-cast -o dovecot-auth auth.o auth-cache.o auth-client-connection.o auth-master-connection.o auth-master-listener.o auth-module.o auth-request.o auth-request-handler.o auth-stream.o auth-worker-client.o auth-worker-server.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-gssapi.o mech-rpa.o mech-apop.o passdb.o passdb-blocking.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-sia.o passdb-vpopmail.o passdb-sql.o userdb.o userdb-blocking.o userdb-ldap.o userdb-passwd.o userdb-passwd-file.o userdb-prefetch.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 -ldl libpassword.a(mycrypt.o)(.text+0x5): In function `mycrypt': /usr/src/dovecot-1.0.rc27/src/auth/mycrypt.c:20: undefined reference to `crypt' collect2: ld returned 1 exit status make[3]: *** [dovecot-auth] Error 1 Making all in util make[3]: Entering directory `/usr/src/dovecot-1.0.rc27/src/util' /bin/sh ../../libtool --tag=CC --mode=link gcc -std=gnu99 -g -O2 -Wall -W -Wmissing-prototypes -Wmissing-declarations -Wpointer-arith -Wchar-subscripts -Wformat=2 -Wbad-function-cast -o dovecotpw dovecotpw.o ../auth/libpassword.a ../lib-ntlm/libntlm.a ../lib/liblib.a -export-dynamic -ldl gcc -std=gnu99 -g -O2 -Wall -W -Wmissing-prototypes -Wmissing-declarations -Wpointer-arith -Wchar-subscripts -Wformat=2 -Wbad-function-cast -o dovecotpw dovecotpw.o -Wl,--export-dynamic ../auth/libpassword.a ../lib-ntlm/libntlm.a ../lib/liblib.a -ldl ../auth/libpassword.a(mycrypt.o)(.text+0x5): In function `mycrypt': /usr/src/dovecot-1.0.rc27/src/auth/mycrypt.c:20: undefined reference to `crypt' collect2: ld returned 1 exit status make[3]: *** [dovecotpw] Error 1 Bye Fabio -- Fabio Busatto <fabio.busatto at sikurezza.org>
On Fri, 2007-03-16 at 14:28 +0100, Fabio Busatto wrote:> It seems to be a wrong check in configure, that comes out in a fatal > error (crypt symbol not found because the -lcrypt is omitted)...> OS: linuxWhat distribution? I haven't before heard of any OS/distro requiring -lcrypt. -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 189 bytes Desc: This is a digitally signed message part URL: <http://dovecot.org/pipermail/dovecot/attachments/20070316/1b4df27d/attachment.bin>
On Fri, Mar 16, 2007 at 04:47:11PM +0200, Timo Sirainen wrote:> On Fri, 2007-03-16 at 14:28 +0100, Fabio Busatto wrote: > > It seems to be a wrong check in configure, that comes out in a fatal > > error (crypt symbol not found because the -lcrypt is omitted). > .. > > OS: linux > > What distribution? I haven't before heard of any OS/distro requiring > -lcrypt.Uhm, Linux/Slackware :) But it's not Slackware specific (I can confirm for Fedora too), you already check for crypt in libcrypt in other configure passes (infact if you include some other auth system, configure includes libcrypt correctly in the build process). I know that crypt() is in libcrypt in all glibc based systems. Look at the crypt manpage: Programs using this function must be linked with -lcrypt. Bye Fabio -- Fabio Busatto <fabio.busatto at sikurezza.org>