[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