First the problem: I'm trying to build on Solaris 8 with
cyrus-imap-2.0.8, cyrus-sasl-1.5.24, and KTH krb4-1.0.4.  I'm
getting library conflicts between krb4 and SSL and (even worse))
libcyrus.a and libsasl.a:

gcc -L/local/db/lib -R/local/db/lib -L/local/db/lib -L/usr/local/lib -R/usr/local/lib  
-L/local/krb4/lib -L/opt/openssh/lib -L/local/zephyr/lib -L/opt/local/lib -g -O2   -o 
imapd \
 ../master/service.o pushstats.o imapd.o index.o tls.o libimap.a ../acap/libacap.a 
../lib/libcyrus.a  -L/mail/cyrus/lib -lsasl -ldl -lkrb -lresolv -ldb  -ldes -lssl 
-lcrypto -lwrap -lnsl -lsocket -lnsl  -lzephyr ../et/libcom_err.a
ld: fatal: symbol `lcase' is multiply defined:
        (file ../lib/libcyrus.a(util.o) and file /mail/cyrus/lib/libsasl.a(checkpw.o));
ld: fatal: symbol `des_key_sched' is multiply defined:
        (file /local/krb4/lib/libdes.a(set_key.o) and file 
/opt/openssh/lib/libcrypto.a(set_key.o));
ld: fatal: symbol `des_is_weak_key' is multiply defined:
        (file /local/krb4/lib/libdes.a(set_key.o) and file 
/opt/openssh/lib/libcrypto.a(set_key.o));
ld: fatal: symbol `des_set_key' is multiply defined:
        (file /local/krb4/lib/libdes.a(set_key.o) and file 
/opt/openssh/lib/libcrypto.a(set_key.o));
ld: fatal: symbol `des_set_odd_parity' is multiply defined:
        (file /local/krb4/lib/libdes.a(set_key.o) and file 
/opt/openssh/lib/libcrypto.a(set_key.o));
ld: fatal: symbol `des_check_key' is multiply defined:
        (file /local/krb4/lib/libdes.a(set_key.o) and file 
/opt/openssh/lib/libcrypto.a(set_key.o));
ld: fatal: symbol `des_encrypt' is multiply defined:
        (file /local/krb4/lib/libdes.a(des_enc.o) and file 
/opt/openssh/lib/libcrypto.a(des_enc.o));
ld: fatal: symbol `des_encrypt2' is multiply defined:
        (file /local/krb4/lib/libdes.a(des_enc.o) and file 
/opt/openssh/lib/libcrypto.a(des_enc.o));
ld: fatal: symbol `des_encrypt3' is multiply defined:
        (file /local/krb4/lib/libdes.a(des_enc.o) and file 
/opt/openssh/lib/libcrypto.a(des_enc.o));
ld: fatal: symbol `des_decrypt3' is multiply defined:
        (file /local/krb4/lib/libdes.a(des_enc.o) and file 
/opt/openssh/lib/libcrypto.a(des_enc.o));
ld: fatal: File processing errors. No output written to imapd
collect2: ld returned 1 exit status
gmake[1]: *** [imapd] Error 1
gmake[1]: Leaving directory `/home/slumos/src/mail/cyrus-imapd-2.0.8/imap'
gmake: *** [all] Error 1

I'm configuring with: 

./configure \
        --cache-file=/dev/null \
        --prefix=/mail/cyrus \
        --with-cyrus-user=cyrus \
        --with-cyrus-group=cyrus \
        --with-cyrus-prefix=/mail/cyrus \
        --with-dbdir=/local/db \
        --with-auth=krb \
        --with-krb=/local/krb4 \
        --with-openssl=/opt/openssh \
        --with-zephyr=/local/zephyr \
        --with-notify=zephyr \
        --with-sasl=/mail/cyrus \
        --with-libwrap=/opt/local

I had a similar problem with MD5 routines in cyrus-sasl and KTH
krb4 (which I also notice has been reported as far back as July,
is anybody working on bugfixes currently?), but I was able to hack
around that.  I'm not sure how to hack around a conflict in what
I thought was the required version of SASL....

Now the patch: This fixes a couple of problems in configure.in:

  1. Add $with_krb to LDFLAGS before checking for -ldes,
  2. Need $with_zephyr/include in addition to $with_zephyr/include/zephyr
     because code uses "#include <zephyr/zephyr.h>",
  3. krb4 depends on -lnsl on Solaris.  I just realized that I fixed
     this wrongly because it just adds -lnsl instead of checking for
     it, but that should be easy to fix.

diff -c cyrus-imapd-2.0.8.orig/configure.in cyrus-imapd-2.0.8/configure.in
*** cyrus-imapd-2.0.8.orig/configure.in Tue Dec 19 09:01:25 2000
--- cyrus-imapd-2.0.8/configure.in      Thu Dec 21 15:07:05 2000
***************
*** 456,464 ****
    dnl we might need -lresolv for kerberos
    AC_CHECK_LIB(resolv,res_search)
  
-   AC_CHECK_LIB(des,des_ecb_encrypt, LIBS="${LIBS} -ldes",
-  AC_MSG_ERROR([The Kerberos DES library is required for Kerberos support.]))
- 
    dnl if we were ambitious, we'd look more aggressively for the
    dnl krb4 install
    if test -d ${with_krb}; then
--- 456,461 ----
***************
*** 478,488 ****
       LDFLAGS="$LDFLAGS -L${with_krb}/lib"
    fi
  
    if test "$with_des" != no; then
      AC_CHECK_HEADER(krb.h,
        AC_CHECK_LIB(krb, krb_mk_priv,,
                     AC_WARN(No Kerberos V4 found); krb4=no,
!                  -ldes),
        AC_WARN(No Kerberos V4 found); krb4=no)
    else
      AC_WARN(No DES library found for Kerberos V4 support)
--- 475,488 ----
       LDFLAGS="$LDFLAGS -L${with_krb}/lib"
    fi
  
+   AC_CHECK_LIB(des,des_ecb_encrypt, LIBS="${LIBS} -ldes",
+  AC_MSG_ERROR([The Kerberos DES library is required for Kerberos support.]))
+ 
    if test "$with_des" != no; then
      AC_CHECK_HEADER(krb.h,
        AC_CHECK_LIB(krb, krb_mk_priv,,
                     AC_WARN(No Kerberos V4 found); krb4=no,
!                  -ldes -lnsl),
        AC_WARN(No Kerberos V4 found); krb4=no)
    else
      AC_WARN(No DES library found for Kerberos V4 support)
***************
*** 550,557 ****
        no) true;;
        ""|yes) AC_CHECK_LIB(zephyr,ZInitialize,ZEPHYR_LIBS="-lzephyr",
                with_zephyr="no",);;
!        *)  if test -d ${with_zephyr}/include/zephyr; then
!                ZEPHYR_CPPFLAGS="-I${with_zephyr}/include/zephyr"
             else
                 ZEPHYR_CPPFLAGS="-I${with_zephyr}/include"
             fi
--- 550,560 ----
        no) true;;
        ""|yes) AC_CHECK_LIB(zephyr,ZInitialize,ZEPHYR_LIBS="-lzephyr",
                with_zephyr="no",);;
!        *)  if test -d ${with_zephyr}/lib; then
!                 LDFLAGS="${LDFLAGS} -L${with_zephyr}/lib"
!            fi
!            if test -d ${with_zephyr}/include/zephyr; then
!                ZEPHYR_CPPFLAGS="-I${with_zephyr}/include -I${with_zephyr}/incl
ude/zephyr"
             else
                 ZEPHYR_CPPFLAGS="-I${with_zephyr}/include"
             fi

Reply via email to