After rename of a nonexistent symlink target fails, detect a broken symlink and simply delete it.
Fixes: 0d34d89d5028 ("emirrordist: Implement mirror layout.conf support") Bug: https://bugs.gentoo.org/699400 Signed-off-by: Zac Medico <zmed...@gentoo.org> --- lib/portage/_emirrordist/DeletionTask.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lib/portage/_emirrordist/DeletionTask.py b/lib/portage/_emirrordist/DeletionTask.py index 5eb01d840..49f13ddf7 100644 --- a/lib/portage/_emirrordist/DeletionTask.py +++ b/lib/portage/_emirrordist/DeletionTask.py @@ -28,6 +28,11 @@ class DeletionTask(CompositeTask): recycle_path) except OSError as e: if e.errno != errno.EXDEV: + if os.path.islink(self.distfile_path) and not os.path.exists(self.distfile_path): + self._delete_links() + self._async_wait() + return + logging.error(("rename %s from distfiles to " "recycle failed: %s") % (self.distfile, e)) else: -- 2.21.0