From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Message-ID: <3F6391F9.1010003@mail15.com> Date: Sun, 14 Sep 2003 01:54:01 +0400 From: "Aleksey Avdeev" User-Agent: Mozilla/5.0 (Windows; U; Win98; ru-RU; rv:1.4) Gecko/20030630 X-Accept-Language: ru-ru, ru MIME-Version: 1.0 To: sisyphus@altlinux.ru Subject: Re: [sisyphus] =?KOI8-R?Q?=E2=C9=C2=CC=C9=CF=D4=C5=CB=D5_c-cli?= =?KOI8-R?Q?ent_=C7=C4=C5_=D7=DA=D1=D4=D8=3F?= References: <3F592A17.40905@mail15.com> <20030906082341.29d11fbb.ksynolog@aip.mk.ua> <3F6108A9.4080600@mail15.com> In-Reply-To: <3F6108A9.4080600@mail15.com> Content-Type: text/plain; charset=KOI8-R; format=flowed Content-Transfer-Encoding: 8bit X-BeenThere: sisyphus@altlinux.ru X-Mailman-Version: 2.1.2 Precedence: list Reply-To: solo_oboroten@mail15.com, sisyphus@altlinux.ru List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 13 Sep 2003 22:12:44 -0000 Archived-At: List-Archive: Aleksey Avdeev пишет: > Андрей Новосёлов пишет: > >> И вот, Sat, 06 Sep 2003 04:28:07 +0400, Вами "Aleksey Avdeev" >> было написано следующее: >> >> >> >>> Здравствуйте уважаемые. >>> >>> Ставлю 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 > #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 > #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 > #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 > #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"]) > ]) -- С уважением. Алексей.