summaryrefslogtreecommitdiffstats
path: root/pym/emerge
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2007-06-01 17:33:23 +0000
committerZac Medico <zmedico@gentoo.org>2007-06-01 17:33:23 +0000
commite34773812f566001e57a6a60bd4482c230ce2191 (patch)
treefdea5f37beb309afa6b9762b3aa1ce4c67b9d0f4 /pym/emerge
parent2f2acc41ca47529dc58d69573988113a0ff2d912 (diff)
downloadportage-e34773812f566001e57a6a60bd4482c230ce2191.tar.gz
portage-e34773812f566001e57a6a60bd4482c230ce2191.tar.bz2
portage-e34773812f566001e57a6a60bd4482c230ce2191.zip
Add --getbinpkg digest verification.
svn path=/main/trunk/; revision=6709
Diffstat (limited to 'pym/emerge')
-rw-r--r--pym/emerge/__init__.py29
1 files changed, 26 insertions, 3 deletions
diff --git a/pym/emerge/__init__.py b/pym/emerge/__init__.py
index c653104a9..f14836dc1 100644
--- a/pym/emerge/__init__.py
+++ b/pym/emerge/__init__.py
@@ -49,6 +49,7 @@ import portage.locks
import portage.exception
from portage.data import secpass
from portage.util import normalize_path as normpath
+from portage.util import writemsg
if not hasattr(__builtins__, "set"):
from sets import Set as set
@@ -2939,6 +2940,8 @@ class MergeTask(object):
def merge(self, mylist, favorites, mtimedb):
failed_fetches = []
+ fetchonly = "--fetchonly" in self.myopts or \
+ "--fetch-all-uri" in self.myopts
mymergelist=[]
ldpath_mtimes = mtimedb["ldpath"]
xterm_titles = "notitles" not in self.settings.features
@@ -3239,9 +3242,29 @@ class MergeTask(object):
short_msg = "emerge: (%s of %s) %s Fetch" % \
(mergecount, len(mymergelist), pkg_key)
emergelog(xterm_titles, msg, short_msg=short_msg)
- if not self.trees[myroot]["bintree"].gettbz2(
- pkg_key):
- return 1
+ try:
+ self.trees[myroot]["bintree"].gettbz2(pkg_key)
+ except portage.exception.FileNotFound:
+ writemsg("!!! Fetching Binary failed " + \
+ "for '%s'\n" % pkg_key, noiselevel=-1)
+ if not fetchonly:
+ return 1
+ failed_fetches.append(pkg_key)
+ except portage.exception.DigestException, e:
+ writemsg("\n!!! Digest verification failed:\n",
+ noiselevel=-1)
+ writemsg("!!! %s\n" % e.value[0],
+ noiselevel=-1)
+ writemsg("!!! Reason: %s\n" % e.value[1],
+ noiselevel=-1)
+ writemsg("!!! Got: %s\n" % e.value[2],
+ noiselevel=-1)
+ writemsg("!!! Expected: %s\n" % e.value[3],
+ noiselevel=-1)
+ os.unlink(mytbz2)
+ if not fetchonly:
+ return 1
+ failed_fetches.append(pkg_key)
finally:
if tbz2_lock:
portage.locks.unlockfile(tbz2_lock)