diff options
author | Zac Medico <zmedico@gentoo.org> | 2011-06-17 15:35:29 -0700 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2011-06-17 15:35:29 -0700 |
commit | d3d1aee93c9c5f04612c9237d452e9885c10af6d (patch) | |
tree | ace793b6fd49e0c210f3a3fc717071a24fae1368 /pym | |
parent | cbe44d92ff13b8a22f5b4215b73078ce600c6bf4 (diff) | |
download | portage-d3d1aee93c9c5f04612c9237d452e9885c10af6d.tar.gz portage-d3d1aee93c9c5f04612c9237d452e9885c10af6d.tar.bz2 portage-d3d1aee93c9c5f04612c9237d452e9885c10af6d.zip |
repoman: handle PermissionDenied from digestgen
This will fix bug #371987.
Diffstat (limited to 'pym')
-rw-r--r-- | pym/portage/checksum.py | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/pym/portage/checksum.py b/pym/portage/checksum.py index f640fd9f1..eeb5995bb 100644 --- a/pym/portage/checksum.py +++ b/pym/portage/checksum.py @@ -29,8 +29,19 @@ def _generate_hash_function(hashtype, hashobject, origin="unknown"): @type filename: String @return: The hash and size of the data """ - f = open(_unicode_encode(filename, - encoding=_encodings['fs'], errors='strict'), 'rb') + try: + f = open(_unicode_encode(filename, + encoding=_encodings['fs'], errors='strict'), 'rb') + except IOError as e: + func_call = "open('%s')" % filename + if e.errno == errno.EPERM: + raise portage.exception.OperationNotPermitted(func_call) + elif e.errno == errno.EACCES: + raise portage.exception.PermissionDenied(func_call) + elif e.errno == errno.ENOENT: + raise portage.exception.FileNotFound(filename) + else: + raise blocksize = HASHING_BLOCKSIZE data = f.read(blocksize) size = 0 |