mirror of
				https://github.com/python/cpython.git
				synced 2025-11-03 19:34:08 +00:00 
			
		
		
		
	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
					
				
					 3 changed files with 17 additions and 15 deletions
				
			
		| 
						 | 
					@ -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 @@ class PyBuildExt(build_ext):
 | 
				
			||||||
                      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…
	
	Add table
		Add a link
		
	
		Reference in a new issue