Patch #103937: Attempt to get the BSDDB autodetection right (or at least
    less wrong)
diff --git a/setup.py b/setup.py
index ea4d94f..4e8008b 100644
--- a/setup.py
+++ b/setup.py
@@ -325,17 +325,22 @@
         # (See http://electricrain.com/greg/python/bsddb3/ for an interface to
         # BSD DB 3.x.)
 
-        db_incs = find_file('db_185.h', inc_dirs, [])
-        if (db_incs is not None and
-            self.compiler.find_library_file(lib_dirs, 'db') ):
+        dblib = []
+        if self.compiler.find_library_file(lib_dirs, 'db'):
+            dblib = ['db']
+        
+        db185_incs = find_file('db_185.h', inc_dirs,
+                               ['/usr/include/db3', '/usr/include/db2'])
+        db_inc = find_file('db.h', inc_dirs, ['/usr/include/db1'])
+        if db185_incs is not None:
             exts.append( Extension('bsddb', ['bsddbmodule.c'],
-                                   include_dirs = db_incs,
-                                   libraries = ['db'] ) )
-        else:
-            db_incs = find_file('db.h', inc_dirs, [])
-            if db_incs is not None:
-                exts.append( Extension('bsddb', ['bsddbmodule.c'],
-                                       include_dirs = db_incs) )
+                                   include_dirs = db185_incs,
+                                   define_macros=[('HAVE_DB_185_H',1)],
+                                   libraries = dblib ) )
+        elif db_inc is not None:
+            exts.append( Extension('bsddb', ['bsddbmodule.c'],
+                                   include_dirs = db_inc,
+                                   libraries = dblib) )
 
         # The mpz module interfaces to the GNU Multiple Precision library.
         # You need to ftp the GNU MP library.