mirror of https://github.com/python/cpython.git
Issue #14693: Under non-Windows platforms, hashlib's fallback modules are always compiled, even if OpenSSL is present at build time.
This commit is contained in:
parent
26fd8feb5e
commit
019ff19c39
|
@ -9,6 +9,7 @@
|
||||||
import array
|
import array
|
||||||
import hashlib
|
import hashlib
|
||||||
import itertools
|
import itertools
|
||||||
|
import os
|
||||||
import sys
|
import sys
|
||||||
try:
|
try:
|
||||||
import threading
|
import threading
|
||||||
|
@ -37,7 +38,8 @@ class HashLibTestCase(unittest.TestCase):
|
||||||
'sha224', 'SHA224', 'sha256', 'SHA256',
|
'sha224', 'SHA224', 'sha256', 'SHA256',
|
||||||
'sha384', 'SHA384', 'sha512', 'SHA512' )
|
'sha384', 'SHA384', 'sha512', 'SHA512' )
|
||||||
|
|
||||||
_warn_on_extension_import = COMPILED_WITH_PYDEBUG
|
# Issue #14693: fallback modules are always compiled under POSIX
|
||||||
|
_warn_on_extension_import = os.name == 'posix' or COMPILED_WITH_PYDEBUG
|
||||||
|
|
||||||
def _conditional_import_module(self, module_name):
|
def _conditional_import_module(self, module_name):
|
||||||
"""Import a module and return a reference to it or None on failure."""
|
"""Import a module and return a reference to it or None on failure."""
|
||||||
|
|
|
@ -125,6 +125,9 @@ Tools/Demos
|
||||||
Build
|
Build
|
||||||
-----
|
-----
|
||||||
|
|
||||||
|
- Issue #14693: Under non-Windows platforms, hashlib's fallback modules are
|
||||||
|
always compiled, even if OpenSSL is present at build time.
|
||||||
|
|
||||||
- Issue #13210: Windows build now uses VS2010, ported from VS2008.
|
- Issue #13210: Windows build now uses VS2010, ported from VS2008.
|
||||||
|
|
||||||
|
|
||||||
|
|
25
setup.py
25
setup.py
|
@ -749,20 +749,17 @@ def detect_modules(self):
|
||||||
openssl_ver)
|
openssl_ver)
|
||||||
missing.append('_hashlib')
|
missing.append('_hashlib')
|
||||||
|
|
||||||
min_sha2_openssl_ver = 0x00908000
|
# We always compile these even when OpenSSL is available (issue #14693).
|
||||||
if COMPILED_WITH_PYDEBUG or openssl_ver < min_sha2_openssl_ver:
|
# It's harmless and the object code is tiny (40-50 KB per module,
|
||||||
# OpenSSL doesn't do these until 0.9.8 so we'll bring our own hash
|
# only loaded when actually used).
|
||||||
exts.append( Extension('_sha256', ['sha256module.c'],
|
exts.append( Extension('_sha256', ['sha256module.c'],
|
||||||
depends=['hashlib.h']) )
|
depends=['hashlib.h']) )
|
||||||
exts.append( Extension('_sha512', ['sha512module.c'],
|
exts.append( Extension('_sha512', ['sha512module.c'],
|
||||||
depends=['hashlib.h']) )
|
depends=['hashlib.h']) )
|
||||||
|
exts.append( Extension('_md5', ['md5module.c'],
|
||||||
if COMPILED_WITH_PYDEBUG or not have_usable_openssl:
|
depends=['hashlib.h']) )
|
||||||
# no openssl at all, use our own md5 and sha1
|
exts.append( Extension('_sha1', ['sha1module.c'],
|
||||||
exts.append( Extension('_md5', ['md5module.c'],
|
depends=['hashlib.h']) )
|
||||||
depends=['hashlib.h']) )
|
|
||||||
exts.append( Extension('_sha1', ['sha1module.c'],
|
|
||||||
depends=['hashlib.h']) )
|
|
||||||
|
|
||||||
# Modules that provide persistent dictionary-like semantics. You will
|
# Modules that provide persistent dictionary-like semantics. You will
|
||||||
# probably want to arrange for at least one of them to be available on
|
# probably want to arrange for at least one of them to be available on
|
||||||
|
|
Loading…
Reference in New Issue