[Python-Dev] Distutils confuses Berkeley DB and dbm?

Barry A. Warsaw barry@zope.com
Fri, 31 May 2002 12:16:53 -0400

>>>>> "SM" == Skip Montanaro <skip@pobox.com> writes:

    SM> If you want to lock bsddb down to the 1.85 API, force it to
    SM> only build with db2 or db3 and reject attempts to compile/link
    SM> it with db1.

That's more in line with what I was thinking.

    BAW> pull pybsddb (which exports as module bsddb3) for Berkeley
    BAW> 3.3.11.  If there's a clamor for it, I suppose we could fake
    BAW> a bsddb2 and bsddb4 for those major versions of Berkeley.

    SM> Why the proliferation?  I can see the argument for
    SM> incorporating pybsddb into the core because it offers greater
    SM> functionality, but why incorporate version names into module
    SM> names that track releases?  If Sleepycat's behavior in the
    SM> past is any indication of its behavior in the future, they
    SM> will change both the API and file formats in every release and
    SM> give you various, incompatible tools with which to migrate
    SM> each time.

The problem seems to be trying to figure out which API is available
and which you want to use.  You might even want to use more than one
in any given Python installation.  So it seems reasonable to be
explicit about the version of the API you need.

I'd still default "bsddb" to the 1.85 API even if that links with a
later version of the library/headers (as long as it's consistent, as
you suggested).  Since pybsddb3 already exports itself as `bsddb3'
that seems to make sense too, although how that interacts with
Berkeley DB 4.0.14, I'm not sure (maybe that blows my theory).