summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSkip Montanaro <skip@pobox.com>2003-05-06 20:43:34 (GMT)
committerSkip Montanaro <skip@pobox.com>2003-05-06 20:43:34 (GMT)
commit22e00c42c092c151ab220b234e859d91f5b19c77 (patch)
tree2ecf7581a2935f1d129eef15ca5cd3000465a487
parent8c044d8ca4c42058d6f9f57f34c5292af1a29bbf (diff)
downloadcpython-22e00c42c092c151ab220b234e859d91f5b19c77.zip
cpython-22e00c42c092c151ab220b234e859d91f5b19c77.tar.gz
cpython-22e00c42c092c151ab220b234e859d91f5b19c77.tar.bz2
build bsddb185 module in certain restricted circumstances
-rw-r--r--setup.py28
1 files changed, 28 insertions, 0 deletions
diff --git a/setup.py b/setup.py
index 2d6c085..e540df5 100644
--- a/setup.py
+++ b/setup.py
@@ -287,6 +287,11 @@ class PyBuildExt(build_ext):
inc_dirs += ['/system/include', '/atheos/autolnk/include']
inc_dirs += os.getenv('C_INCLUDE_PATH', '').split(os.pathsep)
+ # OSF/1 has some stuff in /usr/ccs/lib (like -ldb)
+ if platform[:4] == 'osf1':
+ platform = 'osf1'
+ lib_dirs += ['/usr/ccs/lib']
+
# Check for MacOS X, which doesn't need libm.a at all
math_libs = ['m']
if platform in ['darwin', 'beos', 'mac']:
@@ -560,6 +565,29 @@ class PyBuildExt(build_ext):
dblibs = []
dblib_dir = None
+
+ # Look for Berkeley db 1.85. Note that it is built as a different
+ # module name so it can be included even when later versions are
+ # available. A very restrictive search is performed to avoid
+ # accidentally building this module with a later version of the
+ # underlying db library. May BSD-ish Unixes incorporate db 1.85
+ # symbols into libc and place the include file in /usr/include.
+ f = "/usr/include/db.h"
+ if os.path.exists(f):
+ data = open(f).read()
+ m = re.search(r"#s*define\s+HASHVERSION\s+2\s*", data)
+ if m is not None:
+ # bingo - old version used hash file format version 2
+ ### XXX this should be fixed to not be platform-dependent
+ ### but I don't have direct access to an osf1 platform and
+ ### seemed to be muffing the search somehow
+ libraries = platform == "osf1" and ['db'] or None
+ if libraries is not None:
+ exts.append(Extension('bsddb185', ['bsddbmodule.c'],
+ libraries=libraries))
+ else:
+ exts.append(Extension('bsddb185', ['bsddbmodule.c']))
+
# The standard Unix dbm module:
if platform not in ['cygwin']:
if find_file("ndbm.h", inc_dirs, []) is not None: