[WORKAROUND SUCCESS] Re: et_list & com-err vs imapd v2.2.12 on OSX
10.4.1
OpenMacNews
OpenMacNews at speakeasy.net
Tue May 24 01:18:20 EDT 2005
hi derrick,
>> well it sure seems that com_err/et_list originate from / revolve around
>> Kerberos.
>
> Kerberos uses them, and they are from MIT, but there are non-Kerberos things
> which do.
>
> Apple provides it with/due to Kerberos.
clear.
>> 1st, after a fresh DL, we still have the 'suspect':
>>
>> % grep et_list imap_err.c
>> struct et_list {
>
> How were these generated?
they come with the release distro:
% cd /usr/ports/temp
% ls
%
% wget ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/cyrus-imapd-2.2.12.tar.gz
% gnutar zxf cyrus-imapd-2.2.12.tar.gz
% cd cyrus-imapd-2.2.12/imap
% ls -al imap_err*
-rw-r--r-- 1 17985 staff 2394 Feb 14 09:59 imap_err.c
-rw-r--r-- 1 17985 staff 4568 Oct 22 2003 imap_err.et
-rw-r--r-- 1 17985 staff 3713 Feb 14 09:59 imap_err.h
% grep et_list imap_err.c
struct et_list {
struct et_list *next;
extern struct et_list *_et_list;
static struct et_list link = { 0, 0 };
link.next = _et_list;
_et_list = &link;
>> and checking,
>>
>> % grep et_list imap_err.c
>> % (<-- still EMPTY)
>
> Which is good.
ok.
> But, did you rebuild the other et files also, or do they still
> have the references? And did you remake only the objects or did make
> regenerate the foo_err.c and foo_err.h files out from under you with the
> __et_list references again.
fair nuf. good question, and i've honestly got too much chaos here now to
guarantee what 'was' ...
soooooooo, let's do "it" all from scratch for sanity & completeness -- SEVEN
THE HARD WAY!
clean up:
% rm -rf /usr/ports/cyrus/*
% rm -rf /usr/local/cyrus-imap*
% rm -rf /usr/local/perl_libs/sitelib/darwin-thread-multi-2level/Cyrus
DL:
% cd /usr/ports/cyrus
% wget ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/cyrus-imapd-2.2.12.tar.gz
% gnutar zxf cyrus-imapd-2.2.12.tar.gz
% cp /usr/local/share/libtool/config.* /usr/ports/cyrus/cyrus-imapd-2.2.12/
% setenv WORK "/usr/ports/cyrus/cyrus-imapd-2.2.12"
Patches:
% cd /usr/ports/cyrus
% setenv DL_LOC12 "http://email.uoa.gr/download/cyrus/cyrus-imapd-2.2.12"
% wget $DL_LOC12/cyrus-imapd-2.2.12-autocreate-0.9.2.diff
% wget $DL_LOC12/cyrus-imapd-2.2.12-autoreply-0.1-0.diff
% wget $DL_LOC12/cyrus-imapd-2.2.12-autosievefolder-0.6.diff
% wget $DL_LOC12/cyrus-imapd-2.2.12-deletemailbox-0.2-0.diff
% wget $DL_LOC12/cyrus-imapd-2.2.12-rmquota-0.5-0.diff
% cd $WORK
% patch -p1 < ../cyrus-imapd-2.2.12-autocreate-0.9.2.diff
% patch -p1 < ../cyrus-imapd-2.2.12-autoreply-0.1-0.diff
% patch -p1 < ../cyrus-imapd-2.2.12-autosievefolder-0.6.diff
% patch -p1 < ../cyrus-imapd-2.2.12-rmquota-0.5-0.diff
% patch -p1 < ../cyrus-imapd-2.2.12-deletemailbox-0.2-0.diff
clean up an old, dusty issue
(<http://permalink.gmane.org/gmane.mail.imap.cyrus/16096>):
% perl -pi -e 's/\#include \<sys\/msg.h\>/ /g' imap/cvt_cyrusdb.c
% perl -pi -e 's/\#include \<sys\/msg.h\>/ /g' imap/mboxlist.c
% perl -pi -e 's/\#include \<sys\/msg.h\>/ /g' imap/mboxlist.c.orig
% perl -pi -e 's/\#include \<sys\/msg.h\>/ /g' imtest/imtest.c
% perl -pi -e 's/\#include \<sys\/msg.h\>/ /g' installsieve/installscript.c
% perl -pi -e 's/\#include \<sys\/msg.h\>/ /g' installsieve/request.c
% perl -pi -e 's/\#include \<sys\/msg.h\>/ /g' netnews/remotepurge.c
% perl -pi -e 's/\#include \<sys\/msg.h\>/ /g' perl/sieve/lib/request.c
set ENV:
% unsetenv CFLAGS CPPFLAGS CXX CXXFLAGS LDFLAGS LDDLFLAGS LD_PREBIND LC_ALL
LANG LINGUAS
% setenv LDFLAGS "-bind_at_load -ldl -L/usr/local/berkeley-db/lib -ldb
-F/Library/Frameworks -framework SASL2"
% setenv CPPFLAGS "-I/usr/local/berkeley-db/include
-I/Library/Frameworks/SASL2.framework/Headers"
% which compile_et
/usr/local/kerberos/bin/compile_et
configure:
% ./configure \
--with-cyrus-user=cyradm \
--with-cyrus-group=cyradm \
--prefix=/usr/local/cyrus-imap \
--with-cyrus-prefix=/usr/local/cyrus-imap/bin \
--with-service-path=/usr/local/cyrus-imap/libexec \
--with-sasl=/usr/local/cyrus-sasl \
--with-bdb \
--with-bdb-libdir=/usr/local/berkeley-db/lib \
--with-bdb-incdir=/usr/local/berkeley-db/include \
--with-openssl=/usr/local/ssl \
--with-perl=/usr/bin/perl \
--with-libwrap \
--with-auth=unix \
--disable-gssapi --without-gss_impl \
--without-krb --without-krbimpl --without-krbdes \
--enable-listext \
--enable-server \
--enable-cyradm \
--with-syslogfacility=LOCAL6 \
--without-snmp \
--enable-sieve \
--with-com_err=/usr
clean up the .a vs .dylib issue ...
% grep -rln "/usr/lib/libcom_err.a" .
./imap/Makefile
./master/Makefile
./notifyd/Makefile
./SIEVE/Makefile
./timsieved/Makefile
% perl -pi -e 's/\/usr\/lib\/libcom_err.a/-lcom_err/g' ./imap/Makefile
% perl -pi -e 's/\/usr\/lib\/libcom_err.a/-lcom_err/g' ./master/Makefile
% perl -pi -e 's/\/usr\/lib\/libcom_err.a/-lcom_err/g' ./notifyd/Makefile
% perl -pi -e 's/\/usr\/lib\/libcom_err.a/-lcom_err/g' ./SIEVE/Makefile
% perl -pi -e 's/\/usr\/lib\/libcom_err.a/-lcom_err/g' ./timsieved/Makefile
% grep -rln "/usr/lib/libcom_err.a" .
% (<-- EMPTY)
manually recompile the .et files:
% cd $WORK
% find . -name "*.et" -print
./et/test1.et
./et/test2.et
./imap/imap_err.et
./imap/mupdate_err.et
./imap/nntp_err.et
./SIEVE/sieve_err.et
% cd $WORK/et && compile_et test1.et
% cd $WORK/et && compile_et test2.et
% cd $WORK/imap && compile_et imap_err.et
% cd $WORK/imap && compile_et mupdate_err.et
% cd $WORK/imap && compile_et nntp_err.et
% cd $WORK/SIEVE && compile_et sieve_err.et
be paranoid -- still clear?
% grep et_list
{$WORK/et/test1.c,$WORK/et/test2.c,$WORK/et/test2.c,$WORK/imap/imap_err.c,$WORK/imap/mupdate_err.c,$WORK/imap/nntp_err.c,$WORK/SIEVE/sieve_err.c}
% cd $WORK
% make depend
still clear?
% grep et_list
{$WORK/et/test1.c,$WORK/et/test2.c,$WORK/et/test2.c,$WORK/imap/imap_err.c,$WORK/imap/mupdate_err.c,$WORK/imap/nntp_err.c,$WORK/SIEVE/sieve_err.c}
still OK ...
% make all
% make install
look ma, no errors!
% ls -al /usr/local/cyrus-imap/libexec/imapd
-rwxr-xr-x 1 root wheel 2088280 May 23 22:13 libexec/imapd
and, the daemon looks OK:
% otool -L libexec/imapd
libexec/imapd:
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version
88.0.0)
/usr/local/berkeley-db/lib/libdb-4.3.dylib (compatibility version 0.0.0,
current version 0.0.0)
/usr/local/cyrus-sasl/lib/libsasl2.2.dylib (compatibility version 3.0.0,
current version 3.22.0)
/usr/local/ssl/lib/libssl.0.9.7.dylib (compatibility version 0.9.0, current
version 0.9.7)
/usr/local/ssl/lib/libcrypto.0.9.7.dylib (compatibility version 0.9.0,
current version 0.9.7)
/System/Library/Frameworks/Kerberos.framework/Versions/A/Kerberos
(compatibility version 5.0.0, current version 5.0.0)
/usr/lib/libmx.A.dylib (compatibility version 1.0.0, current version 92.0.0)
yay! (?)
now the clean-up in code?
>> so, i'm not conviced that this is a Apple-specific issue ...
>
> I never suggested it was.
i never suggested that you suggested it was ... just _my_ confusion/suspicions
:-)
cheers,
richard
---
Cyrus Home Page: http://asg.web.cmu.edu/cyrus
Cyrus Wiki/FAQ: http://cyruswiki.andrew.cmu.edu
List Archives/Info: http://asg.web.cmu.edu/cyrus/mailing-list.html
More information about the Info-cyrus
mailing list