On 10/21/19 1:43 AM, Michał Górny wrote: > Since DeletionIterator needs to stat the distfile and therefore find > one working path for it, pass it to DeletionTask instead of recomputing > it there. This also fixes wrongly assuming that first layout will > always be correct. > > Bug: https://bugs.gentoo.org/697890 > Signed-off-by: Michał Górny <mgo...@gentoo.org> > --- > lib/portage/_emirrordist/DeletionIterator.py | 2 ++ > lib/portage/_emirrordist/DeletionTask.py | 14 +++++--------- > 2 files changed, 7 insertions(+), 9 deletions(-) > > diff --git a/lib/portage/_emirrordist/DeletionIterator.py > b/lib/portage/_emirrordist/DeletionIterator.py > index 5c193911a..3cbff2c3a 100644 > --- a/lib/portage/_emirrordist/DeletionIterator.py > +++ b/lib/portage/_emirrordist/DeletionIterator.py > @@ -72,6 +72,7 @@ class DeletionIterator(object): > > yield DeletionTask(background=True, > distfile=filename, > + distfile_path=path, > config=self._config) > > else: > @@ -85,6 +86,7 @@ class DeletionIterator(object): > > yield > DeletionTask(background=True, > distfile=filename, > + distfile_path=path, > config=self._config) > > if deletion_db is not None: > diff --git a/lib/portage/_emirrordist/DeletionTask.py > b/lib/portage/_emirrordist/DeletionTask.py > index a4bb29419..4e9c26ca2 100644 > --- a/lib/portage/_emirrordist/DeletionTask.py > +++ b/lib/portage/_emirrordist/DeletionTask.py > @@ -10,14 +10,9 @@ from _emerge.CompositeTask import CompositeTask > > class DeletionTask(CompositeTask): > > - __slots__ = ('distfile', 'config') > + __slots__ = ('distfile', 'distfile_path', 'config') > > def _start(self): > - > - distfile_path = os.path.join( > - self.config.options.distfiles, > - self.config.layouts[0].get_path(self.distfile)) > - > if self.config.options.recycle_dir is not None: > recycle_path = os.path.join( > self.config.options.recycle_dir, self.distfile) > @@ -29,7 +24,8 @@ class DeletionTask(CompositeTask): > "distfiles to recycle") % self.distfile) > try: > # note: distfile_path can be a symlink > here > - > os.rename(os.path.realpath(distfile_path), recycle_path) > + > os.rename(os.path.realpath(self.distfile_path), > + recycle_path) > except OSError as e: > if e.errno != errno.EXDEV: > logging.error(("rename %s from > distfiles to " > @@ -40,7 +36,7 @@ class DeletionTask(CompositeTask): > return > > self._start_task( > - FileCopier(src_path=distfile_path, > + FileCopier(src_path=self.distfile_path, > dest_path=recycle_path, > background=False), > self._recycle_copier_exit) > @@ -55,7 +51,7 @@ class DeletionTask(CompositeTask): > logging.debug(("delete '%s' from " > "distfiles") % self.distfile) > try: > - os.unlink(distfile_path) > + os.unlink(self.distfile_path) > except OSError as e: > if e.errno not in (errno.ENOENT, errno.ESTALE): > logging.error("%s unlink failed in > distfiles: %s" % >
Looks good. Please merge. -- Thanks, Zac
signature.asc
Description: OpenPGP digital signature