# Copyright 1999-2009 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 from _emerge.BinpkgFetcher import BinpkgFetcher from _emerge.CompositeTask import CompositeTask from _emerge.BinpkgVerifier import BinpkgVerifier from portage import os class BinpkgPrefetcher(CompositeTask): __slots__ = ("pkg",) + \ ("pkg_path", "_bintree",) def _start(self): self._bintree = self.pkg.root_config.trees["bintree"] fetcher = BinpkgFetcher(background=self.background, logfile=self.scheduler.fetch.log_file, pkg=self.pkg, scheduler=self.scheduler) self.pkg_path = fetcher.pkg_path self._start_task(fetcher, self._fetcher_exit) def _fetcher_exit(self, fetcher): if self._default_exit(fetcher) != os.EX_OK: self.wait() return verifier = BinpkgVerifier(background=self.background, logfile=self.scheduler.fetch.log_file, pkg=self.pkg, scheduler=self.scheduler, _pkg_path=self.pkg_path) self._start_task(verifier, self._verifier_exit) def _verifier_exit(self, verifier): if self._default_exit(verifier) != os.EX_OK: self.wait() return self._bintree.inject(self.pkg.cpv, filename=self.pkg_path) self._current_task = None self.returncode = os.EX_OK self.wait()