diff options
author | Gregory P. Smith <greg@mad-scientist.com> | 2010-01-02 22:25:29 (GMT) |
---|---|---|
committer | Gregory P. Smith <greg@mad-scientist.com> | 2010-01-02 22:25:29 (GMT) |
commit | c2fa18ca20e9ad1b8931eec61ece2a93e24766db (patch) | |
tree | 2c4966b98a65f0264d239f07967a40cf7e69b904 /setup.py | |
parent | b538d546da7a306300377bc3f38f659f0f7df832 (diff) | |
download | cpython-c2fa18ca20e9ad1b8931eec61ece2a93e24766db.zip cpython-c2fa18ca20e9ad1b8931eec61ece2a93e24766db.tar.gz cpython-c2fa18ca20e9ad1b8931eec61ece2a93e24766db.tar.bz2 |
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.py | 16 |
1 files changed, 11 insertions, 5 deletions
@@ -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']) ) |