diff options
author | Zac Medico <zmedico@gentoo.org> | 2013-01-05 07:18:29 -0800 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2013-01-05 07:18:29 -0800 |
commit | e893125da2f260c73ac728c5f027113ef9aa2f73 (patch) | |
tree | 47c2225e16b888a134e6c422b3a1bb423375d211 /pym/portage | |
parent | 99ca26fb15414379ae3a70cc446a225f2b8d532b (diff) | |
download | portage-e893125da2f260c73ac728c5f027113ef9aa2f73.tar.gz portage-e893125da2f260c73ac728c5f027113ef9aa2f73.tar.bz2 portage-e893125da2f260c73ac728c5f027113ef9aa2f73.zip |
BinpkgVerifier: use async FileDigester
Diffstat (limited to 'pym/portage')
-rw-r--r-- | pym/portage/dbapi/bintree.py | 38 |
1 files changed, 25 insertions, 13 deletions
diff --git a/pym/portage/dbapi/bintree.py b/pym/portage/dbapi/bintree.py index 890e8e10b..f6fc11498 100644 --- a/pym/portage/dbapi/bintree.py +++ b/pym/portage/dbapi/bintree.py @@ -1356,19 +1356,14 @@ class binarytree(object): f.close() return pkgindex - def digestCheck(self, pkg): - """ - Verify digests for the given package and raise DigestException - if verification fails. - @rtype: bool - @return: True if digests could be located, False otherwise. - """ - cpv = pkg - if not isinstance(cpv, basestring): + def _get_digests(self, pkg): + + try: cpv = pkg.cpv - pkg = None + except AttributeError: + cpv = pkg - pkg_path = self.getname(cpv) + digests = {} metadata = None if self._remotepkgs is None or cpv not in self._remotepkgs: for d in self._load_pkgindex().packages: @@ -1378,9 +1373,8 @@ class binarytree(object): else: metadata = self._remotepkgs[cpv] if metadata is None: - return False + return digests - digests = {} for k in hashfunc_map: v = metadata.get(k) if not v: @@ -1394,9 +1388,27 @@ class binarytree(object): writemsg(_("!!! Malformed SIZE attribute in remote " \ "metadata for '%s'\n") % cpv) + return digests + + def digestCheck(self, pkg): + """ + Verify digests for the given package and raise DigestException + if verification fails. + @rtype: bool + @return: True if digests could be located, False otherwise. + """ + + digests = self._get_digests(pkg) + if not digests: return False + try: + cpv = pkg.cpv + except AttributeError: + cpv = pkg + + pkg_path = self.getname(cpv) hash_filter = _hash_filter( self.settings.get("PORTAGE_CHECKSUM_FILTER", "")) if not hash_filter.transparent: |