]> git.saurik.com Git - apt.git/commitdiff
* Build apt-ftparchive with libdb4.2 rather than libdb2
authorArch Librarian <arch@canonical.com>
Mon, 20 Sep 2004 17:06:43 +0000 (17:06 +0000)
committerArch Librarian <arch@canonical.com>
Mon, 20 Sep 2004 17:06:43 +0000 (17:06 +0000)
Author: mdz
Date: 2004-05-08 19:41:01 GMT
* Build apt-ftparchive with libdb4.2 rather than libdb2
- Patch from Clint Adams to do most of the work
- Build-Depends: s/libdb2-dev/libdb4.2-dev/
- Add AC_PREREQ(2.50) to configure.in
- Use db_strerror(err) rather than GlobalError::Errno (which uses strerror)

buildlib/environment.mak.in
configure.in
debian/control
ftparchive/cachedb.cc
ftparchive/cachedb.h
ftparchive/makefile

index 1b0e0b268c1bfc78506429d18faf47ce305b0fdc..d4e501578063d490364bad68b295b3e7ecaacb09 100644 (file)
@@ -48,7 +48,7 @@ PYTHONVER = @PYTHONVER@
 PYTHONPREFIX = @PYTHONPREFIX@
 PYTHONEXECPREFIX = @PYTHONEXECPREFIX@
 PYTHONINCLUDE = @PYTHONINCLUDE@
 PYTHONPREFIX = @PYTHONPREFIX@
 PYTHONEXECPREFIX = @PYTHONEXECPREFIX@
 PYTHONINCLUDE = @PYTHONINCLUDE@
-DB2LIB = @DB2LIB@
+BDBLIB = @BDBLIB@
 INTLLIBS = @INTLLIBS@
 
 # Shim Headerfile control
 INTLLIBS = @INTLLIBS@
 
 # Shim Headerfile control
index a9b7275f2862029c5439bb7a74214066b9d72d31..2503c93bcc6eec1cc6bcda5f688befd09892d991 100644 (file)
@@ -12,6 +12,7 @@ dnl not used but STL is.
 dnl 'make -f Makefile startup' will generate the configure file from 
 dnl configure.in correctly and can be run at any time
 
 dnl 'make -f Makefile startup' will generate the configure file from 
 dnl configure.in correctly and can be run at any time
 
+AC_PREREQ(2.50)
 AC_INIT(configure.in)
 AC_CONFIG_AUX_DIR(buildlib)
 AC_CONFIG_HEADER(include/config.h:buildlib/config.h.in include/apti18n.h:buildlib/apti18n.h.in)
 AC_INIT(configure.in)
 AC_CONFIG_AUX_DIR(buildlib)
 AC_CONFIG_HEADER(include/config.h:buildlib/config.h.in include/apti18n.h:buildlib/apti18n.h.in)
@@ -52,11 +53,28 @@ dnl if test "$PTHREADLIB" != "-lpthread"; then
 dnl   AC_MSG_ERROR(failed: I need posix threads, pthread)
 dnl fi
 
 dnl   AC_MSG_ERROR(failed: I need posix threads, pthread)
 dnl fi
 
-dnl Check for DB2
-AC_CHECK_HEADER(db2/db.h,
-     [AC_CHECK_LIB(db2,db_open,
-        [AC_DEFINE(HAVE_DB2) DB2LIB="-ldb2"])])
-AC_SUBST(DB2LIB)
+dnl Check for BDB
+saveLIBS="$LIBS"
+LIBS="$LIBS -ldb"
+
+AC_CHECK_HEADER(db.h,
+     [AC_MSG_CHECKING(if we can link against BerkeleyDB)
+      AC_LINK_IFELSE(
+      [AC_LANG_PROGRAM(
+       [#include <db.h>],
+       [int r, s, t; db_version(&r, &s, &t);]
+      )],
+      [AC_DEFINE(HAVE_BDB)
+       BDBLIB="-ldb"
+       AC_MSG_RESULT(yes)],
+      [BDBLIB=""
+       AC_MSG_RESULT(no)]
+    )]
+)
+
+LIBS="$saveLIBS"
+
+AC_SUBST(BDBLIB)
 
 dnl Converts the ARCH to be something singular for this general CPU family
 dnl This is often the dpkg architecture string.
 
 dnl Converts the ARCH to be something singular for this general CPU family
 dnl This is often the dpkg architecture string.
index 162454758ee4fcedca16ca0489bc1257db4738e5..7bd0c368a25704ba13d2cf0bb552fb45718449ff 100644 (file)
@@ -4,7 +4,7 @@ Priority: important
 Maintainer: APT Development Team <deity@lists.debian.org>
 Uploaders: Jason Gunthorpe <jgg@debian.org>, Adam Heath <doogie@debian.org>, Matt Zimmerman <mdz@debian.org>
 Standards-Version: 3.6.1
 Maintainer: APT Development Team <deity@lists.debian.org>
 Uploaders: Jason Gunthorpe <jgg@debian.org>, Adam Heath <doogie@debian.org>, Matt Zimmerman <mdz@debian.org>
 Standards-Version: 3.6.1
-Build-Depends: debhelper (>= 4.1.62), libdb2-dev, gettext (>= 0.11.5)
+Build-Depends: debhelper (>= 4.1.62), libdb4.2-dev, gettext (>= 0.11.5)
 Build-Depends-Indep: debiandoc-sgml, docbook-utils (>= 0.6.12-1)
 
 Package: apt
 Build-Depends-Indep: debiandoc-sgml, docbook-utils (>= 0.6.12-1)
 
 Package: apt
index 440a90665d97f116bd336307e7128c6b4aac865b..9e93dff0520946658c3bd8ee03da1cf62a3db2c5 100644 (file)
@@ -1,6 +1,6 @@
 // -*- mode: cpp; mode: fold -*-
 // Description                                                         /*{{{*/
 // -*- mode: cpp; mode: fold -*-
 // Description                                                         /*{{{*/
-// $Id: cachedb.cc,v 1.6 2003/02/10 07:34:41 doogie Exp $
+// $Id: cachedb.cc,v 1.7 2004/05/08 19:41:01 mdz Exp $
 /* ######################################################################
 
    CacheDB
 /* ######################################################################
 
    CacheDB
@@ -30,6 +30,8 @@
 /* This opens the DB2 file for caching package information */
 bool CacheDB::ReadyDB(string DB)
 {
 /* This opens the DB2 file for caching package information */
 bool CacheDB::ReadyDB(string DB)
 {
+   int err;
+
    ReadOnly = _config->FindB("APT::FTPArchive::ReadOnlyDB",false);
    
    // Close the old DB
    ReadOnly = _config->FindB("APT::FTPArchive::ReadOnlyDB",false);
    
    // Close the old DB
@@ -50,13 +52,26 @@ bool CacheDB::ReadyDB(string DB)
    
    if (DB.empty())
       return true;
    
    if (DB.empty())
       return true;
-   
-   if ((errno = db_open(DB.c_str(),DB_HASH,
+
+   db_create(&Dbp, NULL, 0);
+   if ((err = Dbp->open(Dbp, NULL, DB.c_str(), NULL, DB_HASH,
                         (ReadOnly?DB_RDONLY:DB_CREATE),
                         (ReadOnly?DB_RDONLY:DB_CREATE),
-                        0644,0,0,&Dbp)) != 0)
+                        0644)) != 0)
    {
    {
-      Dbp = 0;
-      return _error->Errno("db_open",_("Unable to open DB2 file %s"),DB.c_str());
+      if (err == DB_OLD_VERSION)
+      {
+          _error->Warning(_("DB is old, attempting to upgrade %s"),DBFile.c_str());
+         err = Dbp->upgrade(Dbp, DB.c_str(), 0);
+         if (!err)
+            err = Dbp->open(Dbp, NULL, DB.c_str(), NULL, DB_HASH,
+                            (ReadOnly?DB_RDONLY:DB_CREATE), 0644);
+
+      }
+      if (err)
+      {
+          Dbp = 0;
+          return _error->Error(_("Unable to open DB file %s: %s"),DB.c_str(), db_strerror(err));
+      }
    }
    
    DBFile = DB;
    }
    
    DBFile = DB;
@@ -247,15 +262,9 @@ bool CacheDB::Clean()
 
    /* I'm not sure what VERSION_MINOR should be here.. 2.4.14 certainly
       needs the lower one and 2.7.7 needs the upper.. */
 
    /* I'm not sure what VERSION_MINOR should be here.. 2.4.14 certainly
       needs the lower one and 2.7.7 needs the upper.. */
-#if DB_VERSION_MAJOR >= 2 && DB_VERSION_MINOR >= 7
    DBC *Cursor;
    DBC *Cursor;
-   if ((errno = Dbp->cursor(Dbp,0,&Cursor,0)) != 0)
+   if ((errno = Dbp->cursor(Dbp, NULL, &Cursor, 0)) != 0)
       return _error->Error(_("Unable to get a cursor"));
       return _error->Error(_("Unable to get a cursor"));
-#else
-   DBC *Cursor;
-   if ((errno = Dbp->cursor(Dbp,0,&Cursor)) != 0)
-      return _error->Error(_("Unable to get a cursor"));
-#endif
    
    DBT Key;
    DBT Data;
    
    DBT Key;
    DBT Data;
index 257af20fc72abf639e97f33fe7b7583b9ccd3ec3..1229b98efa40e9d53b420d8621e72ab0050bbb86 100644 (file)
@@ -1,6 +1,6 @@
 // -*- mode: cpp; mode: fold -*-
 // Description                                                         /*{{{*/
 // -*- mode: cpp; mode: fold -*-
 // Description                                                         /*{{{*/
-// $Id: cachedb.h,v 1.3 2002/11/22 07:19:51 doogie Exp $
+// $Id: cachedb.h,v 1.4 2004/05/08 19:41:01 mdz Exp $
 /* ######################################################################
 
    CacheDB
 /* ######################################################################
 
    CacheDB
@@ -16,7 +16,7 @@
 #pragma interface "cachedb.h"
 #endif 
 
 #pragma interface "cachedb.h"
 #endif 
 
-#include <db2/db.h>
+#include <db.h>
 #include <string>
 #include <apt-pkg/debfile.h>
 #include <inttypes.h>
 #include <string>
 #include <apt-pkg/debfile.h>
 #include <inttypes.h>
index ca6d8f9fe30692f69d22d87df7ad8b6e19234bd5..a965166a06ed2887f08f29d21fecf47136701aca 100644 (file)
@@ -6,9 +6,9 @@ SUBDIR=ftparchive
 include ../buildlib/defaults.mak
 
 # The apt-ftparchive program
 include ../buildlib/defaults.mak
 
 # The apt-ftparchive program
-ifdef DB2LIB
+ifdef BDBLIB
 PROGRAM=apt-ftparchive
 PROGRAM=apt-ftparchive
-SLIBS = -lapt-pkg -lapt-inst $(DB2LIB)
+SLIBS = -lapt-pkg -lapt-inst $(BDBLIB)
 LIB_MAKES = apt-pkg/makefile apt-inst/makefile
 SOURCE = apt-ftparchive.cc cachedb.cc writer.cc contents.cc override.cc \
          multicompress.cc
 LIB_MAKES = apt-pkg/makefile apt-inst/makefile
 SOURCE = apt-ftparchive.cc cachedb.cc writer.cc contents.cc override.cc \
          multicompress.cc
@@ -17,4 +17,4 @@ else
 PROGRAM=apt-ftparchive
 MESSAGE="Must have db2 to build apt-ftparchive"
 include $(FAIL_H)
 PROGRAM=apt-ftparchive
 MESSAGE="Must have db2 to build apt-ftparchive"
 include $(FAIL_H)
-endif # ifdef DB2LIB
+endif # ifdef BDBLIB