[Fwd: [PATCH] Use hashlib if available instead of md5]

Jesse Keating jkeating at redhat.com
Mon Feb 2 22:19:30 UTC 2009


-------- Forwarded Message --------
From: Tom "spot" Callaway <tcallawa at redhat.com>
To: Jesse Keating <jkeating at redhat.com>
Subject: [PATCH] Use hashlib if available instead of md5
Date: Mon, 02 Feb 2009 17:18:32 -0500

This patch converts all calls of md5 function to use hashlib if present.
The old md5 function is deprecated in Python 2.6, and this silences the
warning messages (along with providing a slight performance improvement).

Please apply to rawhide. :)

~spot
plain text document attachment (koji-use-hashlib-if-available.patch)
From 4c76e7ee1f56057d77b0e7e9f0422e7eabedbf10 Mon Sep 17 00:00:00 2001
From: Tom "spot" Callaway <tcallawa at redhat.com>
Date: Mon, 2 Feb 2009 17:15:31 -0500
Subject: [PATCH] Convert all calls of md5 function to use hashlib if present (Python 2.6 change).

---
 builder/kojid        |    8 ++++++--
 cli/koji             |    8 ++++++--
 hub/kojihub.py       |   25 ++++++++++++++++++++-----
 koji/__init__.py     |    8 ++++++--
 www/kojiweb/index.py |    9 +++++++--
 5 files changed, 45 insertions(+), 13 deletions(-)

diff --git a/builder/kojid b/builder/kojid
index b7900db..fe72fdc 100755
--- a/builder/kojid
+++ b/builder/kojid
@@ -33,7 +33,6 @@ import errno
 import glob
 import logging
 import logging.handlers
-import md5
 import os
 import pprint
 import pwd
@@ -242,7 +241,12 @@ def incrementalUpload(fname, fd, path, retries=5, logger=None):
             break
         
         data = base64.encodestring(contents)
-        digest = md5.new(contents).hexdigest()
+        try:
+            import hashlib
+            digest = hashlib.md5(contents).hexdigest()
+        except ImportError:
+            import md5
+            digest = md5.new(contents).hexdigest()
         del contents
         
         tries = 0
diff --git a/cli/koji b/cli/koji
index 0ec732f..40974c7 100755
--- a/cli/koji
+++ b/cli/koji
@@ -31,7 +31,6 @@ import base64
 import koji
 import koji.util
 import fnmatch
-import md5
 import os
 import re
 import pprint
@@ -1173,7 +1172,12 @@ def handle_import_sig(options, session, args):
         previous = session.queryRPMSigs(rpm_id=rinfo['id'], sigkey=sigkey)
         assert len(previous) <= 1
         if previous:
-            sighash = md5.new(sighdr).hexdigest()
+            try:
+                import hashlib
+                sighash = hashlib.md5(sighdr).hexdigest()
+            except ImportError:
+                import md5
+                sighash = md5.new(sighdr).hexdigest()
             if previous[0]['sighash'] == sighash:
                 print _("Signature already imported: %s") % path
                 continue
diff --git a/hub/kojihub.py b/hub/kojihub.py
index 8a24bec..0965243 100644
--- a/hub/kojihub.py
+++ b/hub/kojihub.py
@@ -32,7 +32,6 @@ import logging
 import logging.handlers
 import fcntl
 import fnmatch
-import md5
 import os
 import pgdb
 import random
@@ -3535,7 +3534,12 @@ def add_rpm_sig(an_rpm, sighdr):
         #we use the sigkey='' to represent unsigned in the db (so that uniqueness works)
     else:
         sigkey = koji.hex_string(sigkey[13:17])
-    sighash = md5.new(sighdr).hexdigest()
+    try:
+        import hashlib
+        sighash = hashlib.md5(sighdr).hexdigest()
+    except ImportError:
+        import md5
+        sighash = md5.new(sighdr).hexdigest()
     rpm_id = rinfo['id']
     # - db entry
     q = """SELECT sighash FROM rpmsigs WHERE rpm_id=%(rpm_id)i AND sigkey=%(sigkey)s"""
@@ -4771,8 +4775,14 @@ class RootExports(object):
             if size is not None:
                 if size != len(contents): return False
             if md5sum is not None:
-                if md5sum != md5.new(contents).hexdigest():
-                    return False
+                try:
+                    import hashlib
+                    if md5sum != hashlib.md5(contents).hexdigest():
+                        return False
+                except ImportError:
+                    import md5
+                    if md5sum != md5.new(contents).hexdigest():
+                        return False
         uploadpath = koji.pathinfo.work()
         #XXX - have an incoming dir and move after upload complete
         # SECURITY - ensure path remains under uploadpath
@@ -4831,7 +4841,12 @@ class RootExports(object):
                         fcntl.lockf(fd, fcntl.LOCK_UN)
                 if md5sum is not None:
                     #check final md5sum
-                    sum = md5.new()
+                    try:
+                        import hashlib
+                        sum = hashlib.md5()
+                    except ImportError:
+                        import md5
+                        sum = md5.new()
                     fcntl.lockf(fd, fcntl.LOCK_SH|fcntl.LOCK_NB)
                     try:
                         # log_error("checking md5sum")
diff --git a/koji/__init__.py b/koji/__init__.py
index 6e04cb3..89e9783 100644
--- a/koji/__init__.py
+++ b/koji/__init__.py
@@ -31,7 +31,6 @@ import datetime
 from fnmatch import fnmatch
 import logging
 import logging.handlers
-import md5
 import os
 import os.path
 import pwd
@@ -1467,7 +1466,12 @@ class ClientSession(object):
         fo = file(localfile, "r")  #specify bufsize?
         totalsize = os.path.getsize(localfile)
         ofs = 0
-        md5sum = md5.new()
+        try:
+            import hashlib
+            md5sum = hashlib.md5()
+        except ImportError:
+            import md5
+            md5sum = md5.new()
         debug = self.opts.get('debug',False)
         if callback:
             callback(0, totalsize, 0, 0, 0)
diff --git a/www/kojiweb/index.py b/www/kojiweb/index.py
index 1995a19..2eb236e 100644
--- a/www/kojiweb/index.py
+++ b/www/kojiweb/index.py
@@ -8,7 +8,6 @@ import Cheetah.Filters
 import Cheetah.Template
 import datetime
 import time
-import md5
 import koji
 import kojiweb.util
 
@@ -62,7 +61,13 @@ def _genToken(req, tstamp=None):
         return ''
     if tstamp == None:
         tstamp = _truncTime()
-    return md5.new(user + str(tstamp) + req.get_options()['Secret']).hexdigest()[-8:]
+    try:
+        import hashlib
+        tokensum = hashlib.md5(user + str(tstamp) + req.get_options()['Secret']).hexdigest()[-8:]
+    except ImportError:
+        import md5
+        tokensum = md5.new(user + str(tstamp) + req.get_options()['Secret']).hexdigest()[-8:]
+    return tokensum
 
 def _getValidTokens(req):
     tokens = []
-- 
Jesse Keating
Fedora -- Freedom² is a feature!
identi.ca: http://identi.ca/jkeating
-------------- next part --------------
From 4c76e7ee1f56057d77b0e7e9f0422e7eabedbf10 Mon Sep 17 00:00:00 2001
From: Tom "spot" Callaway <tcallawa at redhat.com>
Date: Mon, 2 Feb 2009 17:15:31 -0500
Subject: [PATCH] Convert all calls of md5 function to use hashlib if present (Python 2.6 change).

---
 builder/kojid        |    8 ++++++--
 cli/koji             |    8 ++++++--
 hub/kojihub.py       |   25 ++++++++++++++++++++-----
 koji/__init__.py     |    8 ++++++--
 www/kojiweb/index.py |    9 +++++++--
 5 files changed, 45 insertions(+), 13 deletions(-)

diff --git a/builder/kojid b/builder/kojid
index b7900db..fe72fdc 100755
--- a/builder/kojid
+++ b/builder/kojid
@@ -33,7 +33,6 @@ import errno
 import glob
 import logging
 import logging.handlers
-import md5
 import os
 import pprint
 import pwd
@@ -242,7 +241,12 @@ def incrementalUpload(fname, fd, path, retries=5, logger=None):
             break
         
         data = base64.encodestring(contents)
-        digest = md5.new(contents).hexdigest()
+        try:
+            import hashlib
+            digest = hashlib.md5(contents).hexdigest()
+        except ImportError:
+            import md5
+            digest = md5.new(contents).hexdigest()
         del contents
         
         tries = 0
diff --git a/cli/koji b/cli/koji
index 0ec732f..40974c7 100755
--- a/cli/koji
+++ b/cli/koji
@@ -31,7 +31,6 @@ import base64
 import koji
 import koji.util
 import fnmatch
-import md5
 import os
 import re
 import pprint
@@ -1173,7 +1172,12 @@ def handle_import_sig(options, session, args):
         previous = session.queryRPMSigs(rpm_id=rinfo['id'], sigkey=sigkey)
         assert len(previous) <= 1
         if previous:
-            sighash = md5.new(sighdr).hexdigest()
+            try:
+                import hashlib
+                sighash = hashlib.md5(sighdr).hexdigest()
+            except ImportError:
+                import md5
+                sighash = md5.new(sighdr).hexdigest()
             if previous[0]['sighash'] == sighash:
                 print _("Signature already imported: %s") % path
                 continue
diff --git a/hub/kojihub.py b/hub/kojihub.py
index 8a24bec..0965243 100644
--- a/hub/kojihub.py
+++ b/hub/kojihub.py
@@ -32,7 +32,6 @@ import logging
 import logging.handlers
 import fcntl
 import fnmatch
-import md5
 import os
 import pgdb
 import random
@@ -3535,7 +3534,12 @@ def add_rpm_sig(an_rpm, sighdr):
         #we use the sigkey='' to represent unsigned in the db (so that uniqueness works)
     else:
         sigkey = koji.hex_string(sigkey[13:17])
-    sighash = md5.new(sighdr).hexdigest()
+    try:
+        import hashlib
+        sighash = hashlib.md5(sighdr).hexdigest()
+    except ImportError:
+        import md5
+        sighash = md5.new(sighdr).hexdigest()
     rpm_id = rinfo['id']
     # - db entry
     q = """SELECT sighash FROM rpmsigs WHERE rpm_id=%(rpm_id)i AND sigkey=%(sigkey)s"""
@@ -4771,8 +4775,14 @@ class RootExports(object):
             if size is not None:
                 if size != len(contents): return False
             if md5sum is not None:
-                if md5sum != md5.new(contents).hexdigest():
-                    return False
+                try:
+                    import hashlib
+                    if md5sum != hashlib.md5(contents).hexdigest():
+                        return False
+                except ImportError:
+                    import md5
+                    if md5sum != md5.new(contents).hexdigest():
+                        return False
         uploadpath = koji.pathinfo.work()
         #XXX - have an incoming dir and move after upload complete
         # SECURITY - ensure path remains under uploadpath
@@ -4831,7 +4841,12 @@ class RootExports(object):
                         fcntl.lockf(fd, fcntl.LOCK_UN)
                 if md5sum is not None:
                     #check final md5sum
-                    sum = md5.new()
+                    try:
+                        import hashlib
+                        sum = hashlib.md5()
+                    except ImportError:
+                        import md5
+                        sum = md5.new()
                     fcntl.lockf(fd, fcntl.LOCK_SH|fcntl.LOCK_NB)
                     try:
                         # log_error("checking md5sum")
diff --git a/koji/__init__.py b/koji/__init__.py
index 6e04cb3..89e9783 100644
--- a/koji/__init__.py
+++ b/koji/__init__.py
@@ -31,7 +31,6 @@ import datetime
 from fnmatch import fnmatch
 import logging
 import logging.handlers
-import md5
 import os
 import os.path
 import pwd
@@ -1467,7 +1466,12 @@ class ClientSession(object):
         fo = file(localfile, "r")  #specify bufsize?
         totalsize = os.path.getsize(localfile)
         ofs = 0
-        md5sum = md5.new()
+        try:
+            import hashlib
+            md5sum = hashlib.md5()
+        except ImportError:
+            import md5
+            md5sum = md5.new()
         debug = self.opts.get('debug',False)
         if callback:
             callback(0, totalsize, 0, 0, 0)
diff --git a/www/kojiweb/index.py b/www/kojiweb/index.py
index 1995a19..2eb236e 100644
--- a/www/kojiweb/index.py
+++ b/www/kojiweb/index.py
@@ -8,7 +8,6 @@ import Cheetah.Filters
 import Cheetah.Template
 import datetime
 import time
-import md5
 import koji
 import kojiweb.util
 
@@ -62,7 +61,13 @@ def _genToken(req, tstamp=None):
         return ''
     if tstamp == None:
         tstamp = _truncTime()
-    return md5.new(user + str(tstamp) + req.get_options()['Secret']).hexdigest()[-8:]
+    try:
+        import hashlib
+        tokensum = hashlib.md5(user + str(tstamp) + req.get_options()['Secret']).hexdigest()[-8:]
+    except ImportError:
+        import md5
+        tokensum = md5.new(user + str(tstamp) + req.get_options()['Secret']).hexdigest()[-8:]
+    return tokensum
 
 def _getValidTokens(req):
     tokens = []
-- 
1.6.1.2

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 197 bytes
Desc: This is a digitally signed message part
URL: <http://listman.redhat.com/archives/fedora-buildsys-list/attachments/20090202/0c16332c/attachment.sig>


More information about the Fedora-buildsys-list mailing list