summaryrefslogtreecommitdiffstats
path: root/pym
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2008-04-02 18:03:08 +0000
committerZac Medico <zmedico@gentoo.org>2008-04-02 18:03:08 +0000
commit1fec9aa092ace6272d3b7bae934ecdf25df7f6e9 (patch)
tree7b84cac0f0e7c2f6f9362415f84d40aad949d629 /pym
parent68bb1179b6bd468f97dbfbeac4cb0c8cbe49c816 (diff)
downloadportage-1fec9aa092ace6272d3b7bae934ecdf25df7f6e9.tar.gz
portage-1fec9aa092ace6272d3b7bae934ecdf25df7f6e9.tar.bz2
portage-1fec9aa092ace6272d3b7bae934ecdf25df7f6e9.zip
Handle a potential FileNotFound exception in new_protect_filename() when
the last ._cfg* file happens to be a broken symlink. Thanks to bonsaikitten for reporting. svn path=/main/trunk/; revision=9677
Diffstat (limited to 'pym')
-rw-r--r--pym/portage/util.py12
1 files changed, 9 insertions, 3 deletions
diff --git a/pym/portage/util.py b/pym/portage/util.py
index 155a787f5..fae0d63fc 100644
--- a/pym/portage/util.py
+++ b/pym/portage/util.py
@@ -1072,9 +1072,15 @@ def new_protect_filename(mydest, newmd5=None):
old_pfile = normalize_path(os.path.join(real_dirname, last_pfile))
if last_pfile and newmd5:
import portage.checksum
- if portage.checksum.perform_md5(
- os.path.join(real_dirname, last_pfile)) == newmd5:
- return old_pfile
+ try:
+ last_pfile_md5 = portage.checksum.perform_md5(
+ os.path.join(real_dirname, last_pfile))
+ except FileNotFound:
+ # The file suddenly disappeared or it's a broken symlink.
+ pass
+ else:
+ if last_pfile_md5 == newmd5:
+ return old_pfile
return new_pfile
def getlibpaths():