mirror of
https://github.com/python/cpython.git
synced 2024-11-25 10:54:51 +08:00
Add a check for the OpenSSL version number to conditionally compile
the _hashlibopenssl module (>= 0.9.7 required) and to not compile the sha256 and sha512 modules if OpenSSL >= 0.9.8 is found.
This commit is contained in:
parent
2e8665ae43
commit
ade9733801
40
setup.py
40
setup.py
@ -474,10 +474,12 @@ class PyBuildExt(build_ext):
|
|||||||
exts.append( Extension('_socket', ['socketmodule.c'],
|
exts.append( Extension('_socket', ['socketmodule.c'],
|
||||||
depends = ['socketmodule.h']) )
|
depends = ['socketmodule.h']) )
|
||||||
# Detect SSL support for the socket module (via _ssl)
|
# Detect SSL support for the socket module (via _ssl)
|
||||||
ssl_incs = find_file('openssl/ssl.h', inc_dirs,
|
search_for_ssl_incs_in = [
|
||||||
['/usr/local/ssl/include',
|
'/usr/local/ssl/include',
|
||||||
'/usr/contrib/ssl/include/'
|
'/usr/contrib/ssl/include/'
|
||||||
]
|
]
|
||||||
|
ssl_incs = find_file('openssl/ssl.h', inc_dirs,
|
||||||
|
search_for_ssl_incs_in
|
||||||
)
|
)
|
||||||
if ssl_incs is not None:
|
if ssl_incs is not None:
|
||||||
krb5_h = find_file('krb5.h', inc_dirs,
|
krb5_h = find_file('krb5.h', inc_dirs,
|
||||||
@ -497,8 +499,32 @@ class PyBuildExt(build_ext):
|
|||||||
libraries = ['ssl', 'crypto'],
|
libraries = ['ssl', 'crypto'],
|
||||||
depends = ['socketmodule.h']), )
|
depends = ['socketmodule.h']), )
|
||||||
|
|
||||||
|
# find out which version of OpenSSL we have
|
||||||
|
openssl_ver = 0
|
||||||
|
openssl_ver_re = re.compile(
|
||||||
|
'^\s*#\s*define\s+OPENSSL_VERSION_NUMBER\s+(0x[0-9a-fA-F]+)' )
|
||||||
|
for ssl_inc_dir in inc_dirs + search_for_ssl_incs_in:
|
||||||
|
name = os.path.join(ssl_inc_dir, 'openssl', 'opensslv.h')
|
||||||
|
if os.path.isfile(name):
|
||||||
|
try:
|
||||||
|
incfile = open(name, 'r')
|
||||||
|
for line in incfile:
|
||||||
|
m = openssl_ver_re.match(line)
|
||||||
|
if m:
|
||||||
|
openssl_ver = eval(m.group(1))
|
||||||
|
break
|
||||||
|
except IOError:
|
||||||
|
pass
|
||||||
|
|
||||||
|
# first version found is what we'll use (as the compiler should)
|
||||||
|
if openssl_ver:
|
||||||
|
break
|
||||||
|
|
||||||
|
#print 'openssl_ver = 0x%08x' % openssl_ver
|
||||||
|
|
||||||
if (ssl_incs is not None and
|
if (ssl_incs is not None and
|
||||||
ssl_libs is not None):
|
ssl_libs is not None and
|
||||||
|
openssl_ver >= 0x00907000):
|
||||||
# The _hashlib module wraps optimized implementations
|
# The _hashlib module wraps optimized implementations
|
||||||
# of hash functions from the OpenSSL library.
|
# of hash functions from the OpenSSL library.
|
||||||
exts.append( Extension('_hashlib', ['_hashopenssl.c'],
|
exts.append( Extension('_hashlib', ['_hashopenssl.c'],
|
||||||
@ -513,12 +539,8 @@ class PyBuildExt(build_ext):
|
|||||||
# necessary files md5c.c and md5.h are included here.
|
# necessary files md5c.c and md5.h are included here.
|
||||||
exts.append( Extension('_md5', ['md5module.c', 'md5c.c']) )
|
exts.append( Extension('_md5', ['md5module.c', 'md5c.c']) )
|
||||||
|
|
||||||
# always compile these for now under the assumption that
|
if (openssl_ver < 0x00908000):
|
||||||
# OpenSSL does not support them (it doesn't in common OpenSSL
|
# OpenSSL doesn't do these until 0.9.8 so we'll bring our own hash
|
||||||
# 0.9.7e installs at the time of this writing; OpenSSL 0.9.8
|
|
||||||
# does). In the future we could make this conditional on
|
|
||||||
# OpenSSL version or support. The hashlib module uses the
|
|
||||||
# better implementation regardless.
|
|
||||||
exts.append( Extension('_sha256', ['sha256module.c']) )
|
exts.append( Extension('_sha256', ['sha256module.c']) )
|
||||||
exts.append( Extension('_sha512', ['sha512module.c']) )
|
exts.append( Extension('_sha512', ['sha512module.c']) )
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user