summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Lib/test/test_hashlib.py4
-rw-r--r--Misc/NEWS3
-rw-r--r--setup.py25
3 files changed, 17 insertions, 15 deletions
diff --git a/Lib/test/test_hashlib.py b/Lib/test/test_hashlib.py
index 97981dd..ce8175a 100644
--- a/Lib/test/test_hashlib.py
+++ b/Lib/test/test_hashlib.py
@@ -9,6 +9,7 @@
import array
import hashlib
import itertools
+import os
import sys
try:
import threading
@@ -37,7 +38,8 @@ class HashLibTestCase(unittest.TestCase):
'sha224', 'SHA224', 'sha256', 'SHA256',
'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):
"""Import a module and return a reference to it or None on failure."""
diff --git a/Misc/NEWS b/Misc/NEWS
index b289b54..da919aa 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -125,6 +125,9 @@ Tools/Demos
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.
diff --git a/setup.py b/setup.py
index f7a8a65..155156b 100644
--- a/setup.py
+++ b/setup.py
@@ -749,20 +749,17 @@ class PyBuildExt(build_ext):
openssl_ver)
missing.append('_hashlib')
- 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'],
- depends=['hashlib.h']) )
- exts.append( Extension('_sha512', ['sha512module.c'],
- depends=['hashlib.h']) )
-
- if COMPILED_WITH_PYDEBUG or not have_usable_openssl:
- # no openssl at all, use our own md5 and sha1
- exts.append( Extension('_md5', ['md5module.c'],
- depends=['hashlib.h']) )
- exts.append( Extension('_sha1', ['sha1module.c'],
- depends=['hashlib.h']) )
+ # We always compile these even when OpenSSL is available (issue #14693).
+ # It's harmless and the object code is tiny (40-50 KB per module,
+ # only loaded when actually used).
+ exts.append( Extension('_sha256', ['sha256module.c'],
+ depends=['hashlib.h']) )
+ exts.append( Extension('_sha512', ['sha512module.c'],
+ depends=['hashlib.h']) )
+ exts.append( Extension('_md5', ['md5module.c'],
+ depends=['hashlib.h']) )
+ exts.append( Extension('_sha1', ['sha1module.c'],
+ depends=['hashlib.h']) )
# Modules that provide persistent dictionary-like semantics. You will
# probably want to arrange for at least one of them to be available on