summaryrefslogtreecommitdiff
path: root/setup.py
diff options
context:
space:
mode:
authorGregory P. Smith <greg@mad-scientist.com>2010-01-02 22:25:29 +0000
committerGregory P. Smith <greg@mad-scientist.com>2010-01-02 22:25:29 +0000
commit904861ca20df923646e26f1e6411885c68de413d (patch)
tree96838f775b35d7fea33a09aea2a7e739f5214997 /setup.py
parentc92c829294be799656be19c920e5d19b61d65ba8 (diff)
downloadcpython-904861ca20df923646e26f1e6411885c68de413d.tar.gz
Always compile the all versions of the hashlib algorithm modules when Python
was compiled with Py_DEBUG defined. Otherwise the builtins are not compiled by default for many developers due to OpenSSL being present, making it easier for bugs to slip by. A future commit will add test code compare the behaviors of all implementations when they are all available.
Diffstat (limited to 'setup.py')
-rw-r--r--setup.py16
1 files changed, 11 insertions, 5 deletions
diff --git a/setup.py b/setup.py
index faf2c33386..c2c01eeccd 100644
--- a/setup.py
+++ b/setup.py
@@ -16,6 +16,9 @@ from distutils.command.build_ext import build_ext
from distutils.command.install import install
from distutils.command.install_lib import install_lib
+# Were we compiled --with-pydebug or with #define Py_DEBUG?
+COMPILED_WITH_PYDEBUG = hasattr(sys, 'gettotalrefcount')
+
# This global variable is used to hold the list of modules to be disabled.
disabled_module_list = []
@@ -653,10 +656,12 @@ class PyBuildExt(build_ext):
break
#print 'openssl_ver = 0x%08x' % openssl_ver
+ min_openssl_ver = 0x00907000
+ have_usable_openssl = (ssl_incs is not None and
+ ssl_libs is not None and
+ openssl_ver >= min_openssl_ver)
- if (ssl_incs is not None and
- ssl_libs is not None and
- openssl_ver >= 0x00907000):
+ if have_usable_openssl:
# The _hashlib module wraps optimized implementations
# of hash functions from the OpenSSL library.
exts.append( Extension('_hashlib', ['_hashopenssl.c'],
@@ -665,7 +670,7 @@ class PyBuildExt(build_ext):
libraries = ['ssl', 'crypto']) )
# these aren't strictly missing since they are unneeded.
#missing.extend(['_sha', '_md5'])
- else:
+ if COMPILED_WITH_PYDEBUG or not have_usable_openssl:
# The _sha module implements the SHA1 hash algorithm.
exts.append( Extension('_sha', ['shamodule.c']) )
# The _md5 module implements the RSA Data Security, Inc. MD5
@@ -676,7 +681,8 @@ class PyBuildExt(build_ext):
depends = ['md5.h']) )
missing.append('_hashlib')
- if (openssl_ver < 0x00908000):
+ min_sha2_openssl_ver = 0x00908000
+ if COMPILED_WITH_PYDEBUG or openssl_ver < min_sha2_openssl_ver:
# OpenSSL doesn't do these until 0.9.8 so we'll bring our own hash
exts.append( Extension('_sha256', ['sha256module.c']) )
exts.append( Extension('_sha512', ['sha512module.c']) )