checksum.py: remove PyPy 1.7 workarounds
authorZac Medico <zmedico@gentoo.org>
Mon, 13 Feb 2012 21:57:31 +0000 (13:57 -0800)
committerZac Medico <zmedico@gentoo.org>
Mon, 13 Feb 2012 21:57:31 +0000 (13:57 -0800)
The corresponding hashlib issues are fixed in PyPy 1.8:

https://bugs.pypy.org/issue957

pym/portage/checksum.py

index 77035b600f6338524a3055218c14115e48cb38f6..73e01b5198069487964828125648b8b65fe566ea 100644 (file)
@@ -1,5 +1,5 @@
 # checksum.py -- core Portage functionality
-# Copyright 1998-2011 Gentoo Foundation
+# Copyright 1998-2012 Gentoo Foundation
 # Distributed under the terms of the GNU General Public License v2
 
 import portage
@@ -9,7 +9,6 @@ from portage import os
 from portage import _encodings
 from portage import _unicode_encode
 import errno
-import platform
 import stat
 import tempfile
 
@@ -62,28 +61,6 @@ class _generate_hash_function(object):
 
                return (checksum.hexdigest(), size)
 
-_test_hash_func = False
-if platform.python_implementation() == 'PyPy':
-       def _test_hash_func(constructor):
-               """
-               Test for PyPy crashes observed with hashlib's ripemd160 and whirlpool
-               functions executed under pypy-1.7 with Python 2.7.1:
-               *** glibc detected *** pypy-c1.7: free(): invalid next size (fast): 0x0b963a38 ***
-               *** glibc detected *** pypy-c1.7: free(): corrupted unsorted chunks: 0x09c490b0 ***
-               """
-               import random
-               pid = os.fork()
-               if pid == 0:
-                       data = list(b'abcdefg')
-                       for i in range(10):
-                               checksum = constructor()
-                               random.shuffle(data)
-                               checksum.update(b''.join(data))
-                               checksum.hexdigest()
-                       os._exit(os.EX_OK)
-               pid, status = os.waitpid(pid, 0)
-               return os.WIFEXITED(status) and os.WEXITSTATUS(status) == os.EX_OK
-
 # Define hash functions, try to use the best module available. Later definitions
 # override earlier ones
 
@@ -152,12 +129,6 @@ try:
                except ValueError:
                        pass
                else:
-                       if _test_hash_func and \
-                               not _test_hash_func(functools.partial(hashlib.new, hash_name)):
-                               portage.util.writemsg("\n!!! hash function appears to "
-                                       "crash python: %s from %s\n" %
-                                       (hash_name, "hashlib"), noiselevel=-1)
-                               continue
                        globals()['%shash' % local_name] = \
                                _generate_hash_function(local_name.upper(), \
                                functools.partial(hashlib.new, hash_name), \