Package: clisp
Version: 2.44.1-4
Severity: normal
Tags: patch
Usertags: origin-ubuntu intrepid ubuntu-patch
Hi,
clisp FTBFS with bdb4.7:
gcc -g -O2 -Igllib -W -Wswitch -Wcomment -Wpointer-arith -Wimplicit
-Wreturn-type -Wmissing-declarations -Wno-sign-compare -O -DUNICODE
-DDYNAMIC_FFI -DDYNAMIC_MODULES -I. -fPIC -I.. -c
bdb.m.c -o bdb.o
bdb.c: In function 'C_subr_bdb_dbe_set_options':
bdb.c:703: error: 'DB_DIRECT_LOG' undeclared (first use in this function)
bdb.c:703: error: (Each undeclared identifier is reported only once
bdb.c:703: error: for each function it appears in.)
bdb.c:709: error: 'DB_LOG_AUTOREMOVE' undeclared (first use in this function)
bdb.c: In function 'dbe_get_flags_list':
bdb.c:939: error: 'DB_LOG_AUTOREMOVE' undeclared (first use in this function)
bdb.c:943: error: 'DB_DIRECT_LOG' undeclared (first use in this function)
bdb.c: In function 'C_subr_bdb_dbe_get_options':
bdb.c:1104: error: 'DB_LOG_AUTOREMOVE' undeclared (first use in this function)
bdb.c:1110: error: 'DB_DIRECT_LOG' undeclared (first use in this function)
make[2]: *** [bdb.o] Error 1
make[2]: Leaving directory
`/build/buildd/clisp-2.44.1/debian/build/berkeley-db'
make[1]: *** [berkeley-db] Error 2
make[1]: Leaving directory `/build/buildd/clisp-2.44.1/debian/build'
make: *** [build-stamp] Error 2
The problem is that the flags DB_DIRECT_LOG and DB_LOG_AUTOREMOVE are
obsoleted in bdb 4.7, see:
http://www.oracle.com/technology/documentation/berkeley-db/db/ref/upgrade.4.7/log.html
I patched it in Ubuntu with the attached patch which seems to work (clisp
builds and passes all the tests in berkeley-db/test.tst)
I hope this can be useful for you too,
Cesare
Index: clisp-2.44.1/modules/berkeley-db/bdb.c
===================================================================
--- clisp-2.44.1.orig/modules/berkeley-db/bdb.c 2008-08-10 21:19:09.000000000 +0200
+++ clisp-2.44.1/modules/berkeley-db/bdb.c 2008-08-10 21:20:02.000000000 +0200
@@ -700,13 +700,13 @@
set_flags(popSTACK(),&flags_on,&flags_off,DB_NOPANIC);
set_flags(popSTACK(),&flags_on,&flags_off,DB_NOMMAP);
set_flags(popSTACK(),&flags_on,&flags_off,DB_NOLOCKING);
- set_flags(popSTACK(),&flags_on,&flags_off,DB_DIRECT_LOG);
+ set_flags(popSTACK(),&flags_on,&flags_off,DB_LOG_DIRECT);
# if defined(DB_LOG_INMEMORY)
set_flags(popSTACK(),&flags_on,&flags_off,DB_LOG_INMEMORY);
# else
skipSTACK(1); /* skip :LOG-INMEMORY */
# endif
- set_flags(popSTACK(),&flags_on,&flags_off,DB_LOG_AUTOREMOVE);
+ set_flags(popSTACK(),&flags_on,&flags_off,DB_LOG_AUTO_REMOVE);
# if defined(DB_DSYNC_LOG)
set_flags(popSTACK(),&flags_on,&flags_off,DB_DSYNC_LOG);
# else
@@ -936,11 +936,11 @@
#if defined(DB_LOG_INMEMORY)
if (flags & DB_LOG_INMEMORY) { pushSTACK(`:LOG-INMEMORY`); count++; }
#endif
- if (flags & DB_LOG_AUTOREMOVE) { pushSTACK(`:LOG-AUTOREMOVE`); count++; }
+ if (flags & DB_LOG_AUTO_REMOVE) { pushSTACK(`:LOG-AUTOREMOVE`); count++; }
#if defined(DB_DSYNC_LOG)
if (flags & DB_DSYNC_LOG) { pushSTACK(`:DSYNC-LOG`); count++; }
#endif
- if (flags & DB_DIRECT_LOG) { pushSTACK(`:DIRECT-LOG`); count++; }
+ if (flags & DB_LOG_DIRECT) { pushSTACK(`:DIRECT-LOG`); count++; }
if (flags & DB_CDB_ALLDB) { pushSTACK(`:CDB-ALLDB`); count++; }
if (flags & DB_AUTO_COMMIT) { pushSTACK(`:AUTO-COMMIT`); count++; }
SYSCALL(dbe->get_encrypt_flags,(dbe,&flags));
@@ -1101,13 +1101,13 @@
VALUES_IF(dbe_get_flags_num(dbe) & DB_LOG_INMEMORY);
#endif
} else if (eq(what,`:LOG-AUTOREMOVE`)) {
- VALUES_IF(dbe_get_flags_num(dbe) & DB_LOG_AUTOREMOVE);
+ VALUES_IF(dbe_get_flags_num(dbe) & DB_LOG_AUTO_REMOVE);
#if defined(DB_DSYNC_LOG)
} else if (eq(what,`:DSYNC-LOG`)) {
VALUES_IF(dbe_get_flags_num(dbe) & DB_DSYNC_LOG);
#endif
} else if (eq(what,`:DIRECT-LOG`)) {
- VALUES_IF(dbe_get_flags_num(dbe) & DB_DIRECT_LOG);
+ VALUES_IF(dbe_get_flags_num(dbe) & DB_LOG_DIRECT);
} else if (eq(what,`:CDB-ALLDB`)) {
VALUES_IF(dbe_get_flags_num(dbe) & DB_CDB_ALLDB);
} else if (eq(what,`:AUTO-COMMIT`)) {