aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRafael G. Martins <rafael@rafaelmartins.eng.br>2010-11-30 22:48:14 -0200
committerRafael G. Martins <rafael@rafaelmartins.eng.br>2010-11-30 22:48:14 -0200
commit7a3383d518de501c88ef983847e5bf0205c66eba (patch)
treec60ff12ea64401e2673aa7a0f97247d7437a8891 /g_octave/checksum.py
parentadded checksum support to g_octave.description module, with test (diff)
downloadg-octave-7a3383d518de501c88ef983847e5bf0205c66eba.tar.gz
g-octave-7a3383d518de501c88ef983847e5bf0205c66eba.tar.bz2
g-octave-7a3383d518de501c88ef983847e5bf0205c66eba.zip
added checksum support to package database fetch
Diffstat (limited to 'g_octave/checksum.py')
-rw-r--r--g_octave/checksum.py27
1 files changed, 23 insertions, 4 deletions
diff --git a/g_octave/checksum.py b/g_octave/checksum.py
index 79fe969..c5ead44 100644
--- a/g_octave/checksum.py
+++ b/g_octave/checksum.py
@@ -5,7 +5,7 @@
~~~~~~~~~~~
This module implements functions for compute/generate SHA1 checksums
- for files.
+ for DESCRIPTION files.
:copyright: (c) 2010 by Rafael Goncalves Martins
:license: GPL-2, see LICENSE for more details.
@@ -16,15 +16,34 @@ from __future__ import absolute_import
__all__ = [
'sha1_compute',
'sha1_check',
+ 'sha1_check_db',
]
-from .compat import open
from hashlib import sha1
+import json
+import os
+
+from .config import Config
+config = Config(True)
def sha1_compute(filename):
with open(filename) as fp:
return sha1(fp.read()).hexdigest()
-def sha1_check(filename, checksum):
- return sha1_compute(filename) == checksum
+def sha1_check(db, p):
+ description = db[p]
+ manifest = {}
+ with open(os.path.join(config.db, 'manifest.json')) as fp:
+ manifest = json.load(fp)
+ if p not in manifest:
+ return False
+ return manifest[p] == description.sha1sum()
+
+def sha1_check_db(db):
+ for cat in db.pkg_list:
+ for pkg in db.pkg_list[cat]:
+ p = pkg['name']+'-'+pkg['version']
+ if not sha1_check(db, p):
+ return False
+ return True