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