-------- Forwarded Message --------
From: Tom "spot" Callaway <tcallawa(a)redhat.com>
To: Jesse Keating <jkeating(a)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(a)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
From 4c76e7ee1f56057d77b0e7e9f0422e7eabedbf10 Mon Sep 17 00:00:00 2001
From: Tom "spot" Callaway <tcallawa(a)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