[sisyphus] Библиотеку c-client где взять?

Aleksey Avdeev =?iso-8859-1?q?solo=5Foboroten_=CE=C1_mail15=2Ecom?=
Вс Сен 14 01:54:01 MSD 2003


Aleksey Avdeev пишет:

> Андрей Новосёлов пишет:
> 
>> И вот, Sat, 06 Sep 2003 04:28:07 +0400, Вами "Aleksey Avdeev"
>> <solo_oboroten на mail15.com> было написано следующее:
>>
>>
>>
>>> Здравствуйте уважаемые.
>>>
>>>   Ставлю MailSync (http://mailsync.sourceforge.net). На этапе 
>>> configure требует библиотеку c-client (точнее - c-client.h, для
>>>
>>> неё), а у меня данной библиотеки нет.
>>>
>>>   Подскажите пожалуйста: есть ли данная библиотека в Сизифе (если 
>>> есть - в каком пакете)? ("apt-cache search c-client"
>>> вывел только uw-imap-devel, но его установка не помогла.)
>>
>>
>> Там появляется libc-client.что-то там.о и ещё одна c libc-client.
>>
> 
>   uw-imap-devel содержит /usr/include/uw-imap/c-client.h и 
> /usr/lib/libc-client.a

   Если правильно понял, то /usr/lib/libc-client.a - архив с 
библиотеками для статической линковки (если я правильно понял 
ризультаты ldd /usr/lib/libc-client.a). (Пожалуйста поправте, 
если я ошибаюсь: опыта у меня мало, в данном вопросе: с C и C++ 
знаком, на уровне написания кода, а деталией организации и 
различия статических и динамических библиотек - незнаю.)

> 
>   Макрос тестирования c-client не искал *.h в каталоге 
> /usr/include/uw-imap... (libc-client допустимое имя для объектного 
> файла: макрос его ищет.) Я его (макрос) откорректировал - добавил один 
> пункт в перечисление (правленый файл ac_with_cclient.m4 прилагаю). Не 
> помогло, что-то я упустил... :-(
> 
>   Пока не придумал ничего лучше, чем вытащить uw-imap*.src.rpm, 
> выдернуть оттуда исходники c-client и попробовать собрать её как *.so. 
> Подскажите пожалуйста, может есть болие простой путь?
> 
> 
> ------------------------------------------------------------------------
> 
> dnl AC_WITH_CCLIENT([ACTION-IF-FOUND[,ACTION-IF-NOT-FOUND]])
> dnl Output:
> dnl AC_SUBST: @CCLIENT_INCLUDES@ @CCLIENT_LIBS@ @CCLIENT_CXXFLAGS@
> dnl AM_CONDITIONAL: HAVE_CCLIENT
> AC_DEFUN(AC_WITH_CCLIENT,[
>  CCLIENTLOCATIONS="/usr,/usr/local"
>  HAVE_CCLIENT="no"
>  CCLIENT_LIBS=""
>  CCLIENT_INCLUDES=""
>  CCLIENT_CXXFLAGS=""
>  CCLIENT_LINKAGE_C=""
>  CCLIENT_LINKAGE_H=""
>  AC_ARG_WITH(c-client,
>   AC_HELP_STRING([--with-c-client=path],[enable use of c-client]),
>   [
>    if test "$withval" = "no" ; then
>     CCLIENTLOCATIONS=""
>    else
>     test "$withval" = "yes" || CCLIENTLOCATIONS="$withval,${CCLIENTLOCATIONS}"
>    fi
>   ]
>  )
>  if test -z "${CCLIENTLOCATIONS}" ; then
>   ifelse([$2], , :, [$2])
>  else
> 
>   dnl
>   dnl Looking for headers c-client headers
>   dnl
>    AC_MSG_CHECKING([for c-client.h])
>   for p in `eval "echo {${CCLIENTLOCATIONS}}{,/c-client,/lib/c-client,/include/c-client,/include,/include/imap,/include/uw-imap}"` ; do
>    if test -r "${p}/c-client.h" -a -r "${p}/linkage.h" -a -r "${p}/linkage.c" ; then

   Если правильно понимаю - проблемы начались сдесь: файл 
/usr/include/uw-imap/c-client.c отсутствует. И я непонимаю, как 
его сформировать какойнибудь утилитой или написать самому.

   c-client.c используется как в данном скрипте 
(ac_with_cclient.m4), так и в функции main программы MailSync 
(файл mailsync_main.cc). Что вообще, он должен содержать: может 
можно обойти его отсутствие изменив код?

>     CCLIENT_INCLUDES="-I${p}"
>     CCLIENT_LINKAGE_H="${p}/linkage.h"
>     CCLIENT_LINKAGE_C="${p}/linkage.c"
>     AC_MSG_RESULT([found in ${p}])
>     break
>    fi
>   done
>   if test -z "${CCLIENT_INCLUDES}" ; then
>    AC_MSG_RESULT([not found])
>    ifelse([$2], , :, [$2])
>   else
>    SOP=".so,.a"
>    test "${PREFER_SO}" = "no" && SOP=".a,.so"
>    
>    dnl
>    dnl Looking for c-client libraries
>    dnl
>    AC_MSG_CHECKING([for c-client library])
>    for l in `eval "echo {${CCLIENTLOCATIONS}}{,/c-client,/lib/c-client,/lib}/{libc-client,libc-client4,c-client}{${SOP}}"` ; do
>     if test -r "$l" ; then
>      AC_MSG_RESULT([found ${l}])
>      CCLIENT_LIBS="$l"
>      break
>     fi
>    done
>    if test -z "${CCLIENT_LIBS}" ; then
>     AC_MSG_RESULT([not found])
>     ifelse([$2], , :, [$2])
>    else
> 
>     dnl
>     dnl Checking whether c-client was built with kerberos gssapi support
>     dnl
>     AC_MSG_CHECKING([whether c-client built with kerberos gssapi support])
>     AC_EGREP_HEADER(auth_gss,${CCLIENT_LINKAGE_H},
>      [
>       need_krb=yes
>       AC_MSG_RESULT([yes])
>      ],[
>       need_krb=no
>       AC_MSG_RESULT([no])
>      ]
>     )
>     if test "${need_krb}" = "yes" -a "${HAVE_KRB5_GSSAPI}" != "yes" ; then
>      ifelse([$2], , :, [$2])
>     else
>      if test "${need_krb}" = "yes" ; then
>       CCLIENT_LIBS="${CCLIENT_LIBS} ${KRB5_GSSAPI_LIBS}"
>      fi
>      
>      dnl
>      dnl Checking whether c-client was built with ssl support
>      dnl
>      AC_MSG_CHECKING([whether c-client requires ssl linkage])
>      AC_EGREP_HEADER(ssl_,${CCLIENT_LINKAGE_C},
>       [
>        need_ssl=yes
>       ],[
>        need_ssl=no
>       ]
>      )
>      AC_MSG_RESULT([${need_ssl}])
>      if test "${need_ssl}" = "yes" -a "${HAVE_OPENSSL}" != "yes" ; then
>       ifelse([$2], , :, [$2])
>      else
>       CCLIENT_LIBS="${CCLIENT_LIBS} ${OPENSSL_LDFLAGS} ${OPENSSL_LIBS}"
>       AC_MSG_CHECKING([if simple c-client program compiles without pam support])
>       AC_LANG_PUSH(C)
>        xCPPFLAGS="${CPPFLAGS}"
>        xLIBS="${LIBS}"
>        CPPFLAGS="${CPPFLAGS} ${CCLIENT_INCLUDES}"
>        LIBS="${LIBS} ${CCLIENT_LIBS}"
>        AC_LINK_IFELSE(
> 	AC_LANG_SOURCE([
> 	 #include <stdio.h>
> 	 #include "c-client.h"
> 	 #include "linkage.h"
> 	 main(int argc,char **argv) {
> 	  #include "linkage.c"
> 	 }
> 	 void mm_log(char*a,long b){}
> 	 void mm_dlog(char*a){}
> 	 void mm_flags(MAILSTREAM*a,unsigned long b){}
> 	 void mm_fatal(char*a){}
> 	 void mm_critical(MAILSTREAM*a){}
> 	 void mm_nocritical(MAILSTREAM*a){}
> 	 void mm_notify(MAILSTREAM*a,char*b,long c){}
> 	 void mm_login(NETMBX*a,char*b,char*c,long d){}
> 	 long mm_diskerror(MAILSTREAM*a,long b,long c){}
> 	 void mm_status(MAILSTREAM*a,char*b,MAILSTATUS*c){}
> 	 void mm_lsub(MAILSTREAM*a,int b,char*c,long d){}
> 	 void mm_list(MAILSTREAM*a,int b,char*c,long d){}
> 	 void mm_exists(MAILSTREAM*a,unsigned long b){}
> 	 void mm_searched(MAILSTREAM*a,unsigned long b){}
> 	 void mm_expunged(MAILSTREAM*a,unsigned long b){}
> 	]),[
> 	 AC_MSG_RESULT([yes])
> 	 will_do_without_pam="yes"
> 	],[
> 	 AC_MSG_RESULT([no])
> 	 will_do_without_pam="no"
> 	]
>        )
>        if test "${will_do_without_pam}" = "no" ; then
> 	AC_MSG_CHECKING([if we've seen pam somewhere around])
>         if test "${HAVE_PAM}" != "yes" ; then
> 	 AC_MSG_RESULT([no])
>         else
>          AC_MSG_RESULT([yes])
> 	 AC_MSG_CHECKING([if adding pam helps])
> 	 CCLIENT_LIBS="${CCLIENT_LIBS} ${PAM_LDFLAGS} -lpam"
> 	 LIBS="${xLIBS} ${CCLIENT_LIBS}"
> 	 AC_LINK_IFELSE(
> 	  AC_LANG_SOURCE([
> 	   #include <stdio.h>
> 	   #include "c-client.h"
> 	   #include "linkage.h"
> 	   main(int argc,char **argv) {
> 	    #include "linkage.c"
> 	   }
> 	   void mm_log(char*a,long b){}
> 	   void mm_dlog(char*a){}
> 	   void mm_flags(MAILSTREAM*a,unsigned long b){}
> 	   void mm_fatal(char*a){}
> 	   void mm_critical(MAILSTREAM*a){}
> 	   void mm_nocritical(MAILSTREAM*a){}
> 	   void mm_notify(MAILSTREAM*a,char*b,long c){}
> 	   void mm_login(NETMBX*a,char*b,char*c,long d){}
> 	   long mm_diskerror(MAILSTREAM*a,long b,long c){}
> 	   void mm_status(MAILSTREAM*a,char*b,MAILSTATUS*c){}
> 	   void mm_lsub(MAILSTREAM*a,int b,char*c,long d){}
> 	   void mm_list(MAILSTREAM*a,int b,char*c,long d){}
> 	   void mm_exists(MAILSTREAM*a,unsigned long b){}
> 	   void mm_searched(MAILSTREAM*a,unsigned long b){}
> 	   void mm_expunged(MAILSTREAM*a,unsigned long b){}
> 	  ]),[
> 	   AC_MSG_RESULT([yes])
> 	   will_do_with_pam="yes"
> 	  ],[
> 	   AC_MSG_RESULT([no])
> 	   will_do_with_pam="no"
> 	  ]
> 	 )
>         fi
>        fi
>        CPPFLAGS="${xCPPFLAGS}"
>        LIBS="${xLIBS}"
>       AC_LANG_POP(C)
>       if test "${will_do_without_pam}" = "no" -a "${will_do_with_pam}" = "no" ; then
>        ifelse([$2], , :, [$2])
>       else
>        AC_LANG_PUSH(C++)
> 	xCPPFLAGS="${CPPFLAGS}"
> 	xCXXFLAGS="${CXXFLAGS}"
> 	CPPFLAGS="${CPPFLAGS} ${CCLIENT_INCLUDES}"
> 	opernames_resolved="no"
> 	AC_MSG_CHECKING([if c-client works without -fno-operator-names in c++])
> 	AC_COMPILE_IFELSE(
> 	 AC_LANG_SOURCE([
> 	  #include <stdio.h>
> 	  #include "c-client.h"
> 	 ]),[
> 	  AC_MSG_RESULT([yes])
> 	  opernames_resolved="yes"
> 	 ],[
> 	  AC_MSG_RESULT([no])
> 	  AC_MSG_CHECKING([if adding -fno-operator-names helps])
> 	  CXXFLAGS="${CXXFLAGS} -fno-operator-names"
> 	  AC_COMPILE_IFELSE(
> 	   AC_LANG_SOURCE([
> 	    #include <stdio.h>
> 	    #include "c-client.h"
> 	   ]),[
> 	    AC_MSG_RESULT([yes])
> 	    CCLIENT_CXXFLAGS=-fno-operator-names
> 	    opernames_resolved="yes"
> 	   ],[
> 	    AC_MSG_RESULT([no])
> 	   ]
> 	  )
> 	 ]
> 	)
> 	CXXFLAGS="${xCXXFLAGS}"
> 	CPPFLAGS="${xCPPFLAGS}"
>        AC_LANG_POP(C++)
>        if test "${opernames_resolved}" = "no" ; then
>         ifelse([$2], , :, [$2])
>        else
> 	HAVE_CCLIENT=yes
> 	AC_SUBST(CCLIENT_CXXFLAGS)
> 	AC_SUBST(CCLIENT_INCLUDES)
> 	AC_SUBST(CCLIENT_LIBS)
> 	ifelse([$1], , :, [$1])
>        fi
>       fi
>      fi
>     fi
>    fi
>   fi
>  fi
>  AM_CONDITIONAL(HAVE_CCLIENT,[test "${HAVE_CCLIENT}" = "yes"])
> ])


-- 

С уважением. Алексей.




Подробная информация о списке рассылки Sisyphus