diff options
author | Zac Medico <zmedico@gentoo.org> | 2008-04-02 18:13:08 +0000 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2008-04-02 18:13:08 +0000 |
commit | e92fe2aa4c8c3291dc79aaf7a891339bbdab9c1c (patch) | |
tree | 2b4ab0726bb027ada8bcd1fd44d3b54ddac0a573 | |
parent | aa45795583bdb772f7ba5808ca76fed12f474ea7 (diff) | |
download | portage-e92fe2aa4c8c3291dc79aaf7a891339bbdab9c1c.tar.gz portage-e92fe2aa4c8c3291dc79aaf7a891339bbdab9c1c.tar.bz2 portage-e92fe2aa4c8c3291dc79aaf7a891339bbdab9c1c.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. (trunk r9676:9678)
svn path=/main/branches/2.1.2/; revision=9679
-rw-r--r-- | pym/portage_util.py | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/pym/portage_util.py b/pym/portage_util.py index bad313bdc..eb54076d4 100644 --- a/pym/portage_util.py +++ b/pym/portage_util.py @@ -1058,7 +1058,12 @@ 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(old_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 |