It never fails (bsddb retirement in 2.3)

Skip Montanaro skip at pobox.com
Fri May 2 11:00:54 EDT 2003


    Nick> Those who want to use non-standard bsddb implementations can tweak
    Nick> Modules/Setup or use bsddb3 for their import statement.

You seem to equate "old, outdated and buggy" with "standard".  There's
nothing "non-standard" about the new bsddb package.  It maintains the same
API for backwards compatibility.  It passes all the tests.  For those of us
who long ago moved away from Berkeley DB 1.85, it works fine.  I've been
bitten too many times by the bugs in 1.85 to ever choose to use it again.
In fact, before the bsddb3 package was incorporated into the Python source
tree, I had checked in changes to setup.py which would have built the old
bsddb module out of the box only with versions 2, 3 or 4 of the underlying
library.  To build against version 1.85 you would have had to uncomment a
few lines in setup.py.  You should be complaining to your computer vendors
for continuing to ship a critical system library they must know has serious
bugs, not to the Python community for deciding to move away from it.

If you believe you must still run the old, buggy version of Berkeley DB and
are capable of installing Python from source, I don't think it's all that
big a deal to edit Modules/Setup to include this line:

    bsddb185 bsddbmodule.c 

You can avoid the import dance you described by adding this to site.py

    import bsddb185 as bsddb

on those systems which still use the old library.  None of your users will
be any the wiser.  I just tried building Python 2.3b1 this way.  It worked
fine for me.  Took about a minute, start to finish.  Passed the test suite.
I will add a note to the relevant files in the distribution about how to
achieve this.  I won't recommend the old module replace the new package,
however.  If you feel it's that important, make your case on python-dev or
file a feature request on SourceForge.

Skip





More information about the Python-list mailing list