Re: [Exim] Exim doesn't compile with Berkeley DB 4.0.4 ?

Top Page
Delete this message
Reply to this message
Author: Philip Hazel
Date:  
To: Frédéric L. W. Meunier
CC: exim-users
Subject: Re: [Exim] Exim doesn't compile with Berkeley DB 4.0.4 ?
On Tue, 22 Jan 2002, Frédéric L. W. Meunier wrote:

> I tried to compile 3.34 and it stops at:
>
> gcc -O    -o exim_dbmbuild  exim_dbmbuild.c \
>   -lnsl -lcrypt  -ldb
> In file included from dbfn.h:107,
>         from exim.h:332,
>         from exim_dbmbuild.c:30:
> /usr/include/db.h:634: parse error before numeric constant
> make[1]: *** [exim_dbmbuild] Error 1
> make[1]: Leaving directory `/home/pervalidus/tmp/objdir/build-Linux-i386'
> make: *** [go] Error 2


Which operating system? Which DBM library do you have installed? What
DBM options did you set in Local/Makefile?

If the answer to the second question is "Berkeley DB 4.xx", try the
patch below.

--
Philip Hazel            University of Cambridge Computing Service,
ph10@???      Cambridge, England. Phone: +44 1223 334714.




*** exim-3.34/src/config.h.defaults Wed Dec 19 11:50:26 2001
--- src/config.h.defaults    Fri Jan 18 11:22:03 2002
***************
*** 27,33 ****
  #define DIRECTOR_SMARTUSER


  #define DB_DIRECTORY_MODE     0750
! #define DB_LOCK_TIMEOUT       60
  #define DB_MODE               0640
  #define DB_LOCKFILE_MODE      0640


--- 27,33 ----
#define DIRECTOR_SMARTUSER

  #define DB_DIRECTORY_MODE     0750
! #define DB_LOCK_TIMEOUT_EXIM  60
  #define DB_MODE               0640
  #define DB_LOCKFILE_MODE      0640


*** exim-3.34/src/dbfn.c    Wed Dec 19 11:50:27 2001
--- src/dbfn.c         Fri Jan 18 11:22:26 2002
***************
*** 125,131 ****


sigalrm_seen = FALSE;
os_non_restarting_signal(SIGALRM, sigalrm_handler);
! alarm(DB_LOCK_TIMEOUT);
rc = fcntl(dbblock->lockfd, F_SETLKW, &lock_data);
alarm(0);
signal(SIGALRM, SIG_IGN);
--- 125,131 ----

sigalrm_seen = FALSE;
os_non_restarting_signal(SIGALRM, sigalrm_handler);
! alarm(DB_LOCK_TIMEOUT_EXIM);
rc = fcntl(dbblock->lockfd, F_SETLKW, &lock_data);
alarm(0);
signal(SIGALRM, SIG_IGN);