Browse Source

* Build apt-ftparchive with libdb4.2 rather than libdb2

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)
tags/debian/0.7.21
Arch Librarian 17 years ago
parent
commit
c9569a1eda
6 changed files with 52 additions and 25 deletions
  1. +1
    -1
      buildlib/environment.mak.in
  2. +23
    -5
      configure.in
  3. +1
    -1
      debian/control
  4. +22
    -13
      ftparchive/cachedb.cc
  5. +2
    -2
      ftparchive/cachedb.h
  6. +3
    -3
      ftparchive/makefile

+ 1
- 1
buildlib/environment.mak.in View File

@@ -48,7 +48,7 @@ PYTHONVER = @PYTHONVER@
PYTHONPREFIX = @PYTHONPREFIX@
PYTHONEXECPREFIX = @PYTHONEXECPREFIX@
PYTHONINCLUDE = @PYTHONINCLUDE@
DB2LIB = @DB2LIB@
BDBLIB = @BDBLIB@
INTLLIBS = @INTLLIBS@

# Shim Headerfile control


+ 23
- 5
configure.in View 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

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)
@@ -52,11 +53,28 @@ dnl if test "$PTHREADLIB" != "-lpthread"; then
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.


+ 1
- 1
debian/control View 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
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


+ 22
- 13
ftparchive/cachedb.cc View File

@@ -1,6 +1,6 @@
// -*- 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
@@ -30,6 +30,8 @@
/* 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
@@ -50,13 +52,26 @@ bool CacheDB::ReadyDB(string DB)
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),
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;
@@ -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.. */
#if DB_VERSION_MAJOR >= 2 && DB_VERSION_MINOR >= 7
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"));
#else
DBC *Cursor;
if ((errno = Dbp->cursor(Dbp,0,&Cursor)) != 0)
return _error->Error(_("Unable to get a cursor"));
#endif
DBT Key;
DBT Data;


+ 2
- 2
ftparchive/cachedb.h View File

@@ -1,6 +1,6 @@
// -*- 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
@@ -16,7 +16,7 @@
#pragma interface "cachedb.h"
#endif

#include <db2/db.h>
#include <db.h>
#include <string>
#include <apt-pkg/debfile.h>
#include <inttypes.h>


+ 3
- 3
ftparchive/makefile View File

@@ -6,9 +6,9 @@ SUBDIR=ftparchive
include ../buildlib/defaults.mak

# The apt-ftparchive program
ifdef DB2LIB
ifdef BDBLIB
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
@@ -17,4 +17,4 @@ else
PROGRAM=apt-ftparchive
MESSAGE="Must have db2 to build apt-ftparchive"
include $(FAIL_H)
endif # ifdef DB2LIB
endif # ifdef BDBLIB

Loading…
Cancel
Save