Cyrus 2.3.9: Errors compiling outside source directory

Vincent Fox vbfox at ucdavis.edu
Sun Sep 23 02:52:20 EDT 2007


It's undoubtedly not the right way, but I patched lib/Makefile.in.

The basic problem in lib I think is twofold:

1) chartable.c being dynamically built during make, so it's
not there when the makedepend is run
2) cyrusdb_quotalegacy.c including glob.h, which has a name
collision with a similar Cyrus file.

I patched Makefile.in as below:

# diff -c Makefile.in.orig Makefile.in
*** Makefile.in.orig    Sat Sep 22 21:56:23 2007
--- Makefile.in Sat Sep 22 23:41:38 2007
***************
*** 91,97 ****
  LIBCYR_OBJS = acl.o bsearch.o charset.o glob.o retry.o util.o \
        libcyr_cfg.o mkgmtime.o prot.o parseaddr.o imclient.o imparse.o \
        lsort.o stristr.o rfc822date.o cyrusdb.o strhash.o \
!       chartable.o imapurl.o nonblock_ at WITH_NONBLOCK@.o 
lock_ at WITH_LOCK@.o \
        gmtoff_ at WITH_GMTOFF@.o map_ at WITH_MAP@.o $(ACL) $(AUTH) \
        @LIBOBJS@ @CYRUSDB_OBJS@ @MD5OBJ@ \
        iptostring.o xmalloc.o wildmat.o byteorder64.o \
--- 91,97 ----
  LIBCYR_OBJS = acl.o bsearch.o charset.o glob.o retry.o util.o \
        libcyr_cfg.o mkgmtime.o prot.o parseaddr.o imclient.o imparse.o \
        lsort.o stristr.o rfc822date.o cyrusdb.o strhash.o \
!       imapurl.o nonblock_ at WITH_NONBLOCK@.o lock_ at WITH_LOCK@.o \
        gmtoff_ at WITH_GMTOFF@.o map_ at WITH_MAP@.o $(ACL) $(AUTH) \
        @LIBOBJS@ @CYRUSDB_OBJS@ @MD5OBJ@ \
        iptostring.o xmalloc.o wildmat.o byteorder64.o \
***************
*** 149,154 ****
--- 149,155 ----
         > chartable.c \
         || (rm -f chartable.c && exit 1)
        @echo "### Done building chartables."
+       $(CC) -c -I${top_srcdir}/lib $(CPPFLAGS) $(CFLAGS) chartable.c
  #     ./mkchartable -m $(srcdir)/charset/unicode.map 
$(srcdir)/charset/*.t >x-chartables.h
  #     mv x-chartables.h chartables.h


Still getting an error further along though, in the sieve directory:

make[1]: Entering directory `/tmp/cyrus-imapd-2.3.9-obj/sieve'
gcc -c -I.. 
-I/ucd/src/cyrus-imapd/cyrus-imapd-2.3.9/cyrus-imapd-2.3.9/sieve/../lib 
-I/ucd/src/cyrus-imapd/cyrus-imapd-2.3.9/cyrus-imapd-2.3.9/et 
-I/ucd/include  -I/ucd/include -I/usr/include -I/ucd/include 
-DHAVE_CONFIG_H  -g -O \
        
/ucd/src/cyrus-imapd/cyrus-imapd-2.3.9/cyrus-imapd-2.3.9/sieve/sieve_err.c
gcc -c -I.. 
-I/ucd/src/cyrus-imapd/cyrus-imapd-2.3.9/cyrus-imapd-2.3.9/sieve/../lib 
-I/ucd/src/cyrus-imapd/cyrus-imapd-2.3.9/cyrus-imapd-2.3.9/et 
-I/ucd/include  -I/ucd/include -I/usr/include -I/ucd/include 
-DHAVE_CONFIG_H  -g -O \
        
/ucd/src/cyrus-imapd/cyrus-imapd-2.3.9/cyrus-imapd-2.3.9/sieve/sieve.c
In file included from 
/ucd/src/cyrus-imapd/cyrus-imapd-2.3.9/cyrus-imapd-2.3.9/sieve/sieve_interface.h:37,
                 from 
/ucd/src/cyrus-imapd/cyrus-imapd-2.3.9/cyrus-imapd-2.3.9/sieve/interp.h:31,
                 from sieve.y:39:
/ucd/src/cyrus-imapd/cyrus-imapd-2.3.9/cyrus-imapd-2.3.9/sieve/sieve_err.h:6:24: 
error: et/com_err.h: No such file or directory
In file included from 
/ucd/src/cyrus-imapd/cyrus-imapd-2.3.9/cyrus-imapd-2.3.9/sieve/sieve_interface.h:37,
                 from 
/ucd/src/cyrus-imapd/cyrus-imapd-2.3.9/cyrus-imapd-2.3.9/sieve/interp.h:31,
                 from sieve.y:39:
/ucd/src/cyrus-imapd/cyrus-imapd-2.3.9/cyrus-imapd-2.3.9/sieve/sieve_err.h:19: 
warning: 'struct et_list' declared inside parameter list
/ucd/src/cyrus-imapd/cyrus-imapd-2.3.9/cyrus-imapd-2.3.9/sieve/sieve_err.h:19: 
warning: its scope is only this definition or declaration, which is 
probably not what you want
make[1]: *** 
[/ucd/src/cyrus-imapd/cyrus-imapd-2.3.9/cyrus-imapd-2.3.9/sieve/sieve.o] 
Error 1
make[1]: Leaving directory `/tmp/cyrus-imapd-2.3.9-obj/sieve'
make: *** [all] Error 1



More information about the Info-cyrus mailing list