You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@apr.apache.org by Justin Erenkrantz <je...@ebuilt.com> on 2001/12/05 04:33:59 UTC

[PATCH] Improved Berkeley DB detection

Highlights:

- Split out DB2 and DB3 detection since they are no longer related
  (as DB3 only has db_create and DB2 has db_open).  Was db_open in 
  any released version of DB3?
- Check for db[23]/db.h and db[23] to be nicer about detecting
  platforms that have this combination.

And, this removes my entry in STATUS about --with-dbm=db2 not 
working correctly when db3 is available.

Thoughts?  Per previous conversation, should we remove db185?
-- justin

Index: build/apu-conf.m4
===================================================================
RCS file: /home/cvs/apr-util/build/apu-conf.m4,v
retrieving revision 1.19
diff -u -r1.19 apu-conf.m4
--- build/apu-conf.m4	2001/11/30 18:27:46	1.19
+++ build/apu-conf.m4	2001/12/05 03:10:02
@@ -89,39 +89,57 @@
   ])])])
 
 dnl
-dnl APU_CHECK_DB2OR3: are DB2 or DB3 present?
+dnl APU_CHECK_DB2: is DB2 present?
 dnl
 dnl if present: sets apu_have_db=1, db_header, and db_lib
 dnl
-AC_DEFUN(APU_CHECK_DB2OR3,[
-AC_CHECK_HEADER(db.h, [
+AC_DEFUN(APU_CHECK_DB2,[
+apu_found_db=0
+AC_CHECK_HEADER(db2/db.h, [
   AC_CHECK_LIB(db2, db_open, [
   apu_have_db=1
+  db_header=db2/db.h
+  db_lib=db2
+  db_version=2
+  apu_found_db=1
+  ])])
+if test $apu_found_db = 0; then
+AC_CHECK_HEADER(db.h, [
+  AC_CHECK_LIB(db, db_open, [
+  apu_have_db=1
   db_header=db.h
   db_lib=db
-  ])])])
+  db_version=2
+  apu_found_db=1
+  ])])
+fi
+])
 
 dnl
-dnl APU_CHECK_DB_VSN: check the actual version of db (for db2 or db3)
+dnl APU_CHECK_DB3: is DB3 present?
 dnl
-dnl sets db_version
+dnl if present: sets apu_have_db=1, db_header, and db_lib
 dnl
-AC_DEFUN(APU_CHECK_DB_VSN,[
-  apu_save_libs="$LIBS"
-  LIBS="$LIBS -ldb"
-  AC_TRY_RUN([
-#include <stdlib.h> /* for exit() */
-#include "db.h"
-int main()
-{
-    int major, minor, patch;
-    db_version(&major, &minor, &patch);
-    if (major == 2)
-        exit(1);
-    exit(0);
-}
-], db_version=3, db_version=2, db_version=2)
-  LIBS="$apu_save_libs"
+AC_DEFUN(APU_CHECK_DB3,[
+apu_found_db=0
+AC_CHECK_HEADER(db3/db.h, [
+  AC_CHECK_LIB(db3, db_create, [
+  apu_have_db=1
+  db_header=db3/db.h
+  db_lib=db3
+  db_version=3
+  apu_found_db=1
+  ])])
+if test $apu_found_db = 0; then
+AC_CHECK_HEADER(db.h, [
+  AC_CHECK_LIB(db, db_create, [
+  apu_have_db=1
+  db_header=db.h
+  db_lib=db
+  db_version=3
+  apu_found_db=1
+  ])])
+fi
 ])
 
 dnl
@@ -153,13 +171,14 @@
 AC_CHECK_HEADER(gdbm.h, AC_CHECK_LIB(gdbm, gdbm_open, [apu_have_gdbm=1]))
 
 dnl We're going to try to find the highest version of Berkeley DB supported.
-APU_CHECK_DB2OR3
-if test $apu_have_db = 1; then
-  APU_CHECK_DB_VSN
-else
-  APU_CHECK_DB1
-  if test $apu_have_db != 1; then
-    APU_CHECK_DB185
+APU_CHECK_DB3
+if test $apu_have_db = 0; then
+  APU_CHECK_DB2
+  if test $apu_have_db = 0; then
+    APU_CHECK_DB1
+    if test $apu_have_db = 0; then
+      APU_CHECK_DB185
+    fi
   fi
 fi
 
@@ -216,30 +235,20 @@
     ;;
   db2)
     apu_have_db=0
-    APU_CHECK_DB2OR3
+    APU_CHECK_DB2
     if test $apu_have_db = 1; then
       apu_use_db=1
-      APU_CHECK_DB_VSN
-      if test "$db_version" = 2; then
-        default_dbm=db2
-      else
-        AC_MSG_ERROR([db2 not present (found db3)])
-      fi
+      default_dbm=db2
     else
       AC_MSG_ERROR([db2 not present])
     fi
     ;;
   db3)
     apu_have_db=0
-    APU_CHECK_DB2OR3
+    APU_CHECK_DB3
     if test $apu_have_db = 1; then
       apu_use_db=1
-      APU_CHECK_DB_VSN
-      if test "$db_version" = 3; then
-        default_dbm=db3
-      else
-        AC_MSG_ERROR([db3 not present (found db2)])
-      fi
+      default_dbm=db3
     else
       AC_MSG_ERROR([db3 not present])
     fi


Re: [PATCH] Improved Berkeley DB detection

Posted by Blaise Tarr <bl...@cnet.com>.
Justin Erenkrantz writes:
 > Highlights:
 > 
 > - Split out DB2 and DB3 detection since they are no longer related
 >   (as DB3 only has db_create and DB2 has db_open).  Was db_open in 
 >   any released version of DB3?

AFAIK, 3.0.55 was the first released DB3, and it didn't have db_open.

 > - Check for db[23]/db.h and db[23] to be nicer about detecting
 >   platforms that have this combination.
 > 
 > And, this removes my entry in STATUS about --with-dbm=db2 not 
 > working correctly when db3 is available.
 > 
 > Thoughts?
 >
 >  Per previous conversation, should we remove db185?

+1

Incidentally, Berkeley DB 4.0.14 is now available.

 > -- justin

Blaise