aboutsummaryrefslogtreecommitdiffstats
path: root/minidinstall/ChangeFile.py
diff options
context:
space:
mode:
authorLibravatarChristoph Goehre <christoph.goehre@gmx.de>2008-02-02 21:41:12 +0100
committerLibravatarChristoph Goehre <christoph.goehre@gmx.de>2008-02-02 21:41:12 +0100
commit32151d49d0ec5f9f4f392a15b0de177a1d87e3e5 (patch)
tree9f220d70b06468253d624a5471f508a129903446 /minidinstall/ChangeFile.py
parent35fb5e0bdaec1df5ded6b3da8ac48c2160657eaf (diff)
merge hash generation for Release files
_get_file_sum() in mini-dinstall and _get_file_md5sum() in ChangeFile.py are really the same code. So I strip it together into get_file_sum() in misc.py.
Diffstat (limited to 'minidinstall/ChangeFile.py')
-rw-r--r--minidinstall/ChangeFile.py37
1 files changed, 3 insertions, 34 deletions
diff --git a/minidinstall/ChangeFile.py b/minidinstall/ChangeFile.py
index b74e623..969ae09 100644
--- a/minidinstall/ChangeFile.py
+++ b/minidinstall/ChangeFile.py
@@ -18,10 +18,11 @@
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-import os, re, sys, string, stat, popen2
+import os, re, sys, string, stat
import threading, Queue
import logging
from minidinstall import DpkgControl, SignedFile
+from minidinstall import misc
class ChangeFileException(Exception):
def __init__(self, value):
@@ -70,40 +71,8 @@ class ChangeFile(DpkgControl.DpkgParagraph):
raise ChangeFileException("Can't stat %s: %s" % (filename,e.strerror))
if size != expected_size:
raise ChangeFileException("File size for %s does not match that specified in .dsc" % (filename,))
- if (self._get_file_md5sum(filename) != expected_md5sum):
+ if (misc.get_file_sum(self, 'md5', filename) != expected_md5sum):
raise ChangeFileException("md5sum for %s does not match that specified in .dsc" % (filename,))
self._logger.debug('Verified md5sum %s and size %s for %s' % (expected_md5sum, expected_size, filename))
- def _get_file_md5sum(self, filename):
- if os.access('/usr/bin/md5sum', os.X_OK):
- cmd = '/usr/bin/md5sum %s' % (filename,)
- self._logger.debug("Running: %s" % (cmd,))
- child = popen2.Popen3(cmd, 1)
- child.tochild.close()
- erroutput = child.childerr.read()
- child.childerr.close()
- if erroutput != '':
- child.fromchild.close()
- raise ChangeFileException("md5sum returned error output \"%s\"" % (erroutput,))
- (md5sum, filename) = string.split(child.fromchild.read(), None, 1)
- child.fromchild.close()
- status = child.wait()
- if not (status is None or (os.WIFEXITED(status) and os.WEXITSTATUS(status) == 0)):
- if os.WIFEXITED(status):
- msg = "md5sum exited with error code %d" % (os.WEXITSTATUS(status),)
- elif os.WIFSTOPPED(status):
- msg = "md5sum stopped unexpectedly with signal %d" % (os.WSTOPSIG(status),)
- elif os.WIFSIGNALED(status):
- msg = "md5sum died with signal %d" % (os.WTERMSIG(status),)
- raise ChangeFileException(msg)
- return md5sum.strip()
- import md5
- f = open(filename)
- md5sum = md5.new()
- buf = f.read(8192)
- while buf != '':
- md5sum.update(buf)
- buf = f.read(8192)
- return md5sum.hexdigest()
-
# vim:ts=4:sw=4:et: