summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2008-07-05 07:34:25 +0000
committerZac Medico <zmedico@gentoo.org>2008-07-05 07:34:25 +0000
commitef6c1a7ae879a07655bc367bae4f3caa67c48412 (patch)
tree295992d98a08b883d9a172812a7e9d64f639d655
parentddddc6e7ff41d6c30bde682dac4e2e42e017a13f (diff)
downloadportage-ef6c1a7ae879a07655bc367bae4f3caa67c48412.tar.gz
portage-ef6c1a7ae879a07655bc367bae4f3caa67c48412.tar.bz2
portage-ef6c1a7ae879a07655bc367bae4f3caa67c48412.zip
Rename BinpkgFetcherAsync class to BinpkgFetcher and use it to replace the
older class with the same name svn path=/main/trunk/; revision=10936
-rw-r--r--pym/_emerge/__init__.py86
1 files changed, 16 insertions, 70 deletions
diff --git a/pym/_emerge/__init__.py b/pym/_emerge/__init__.py
index 20629c1f9..c59ec5175 100644
--- a/pym/_emerge/__init__.py
+++ b/pym/_emerge/__init__.py
@@ -2194,6 +2194,8 @@ class Binpkg(EbuildBuildDir):
settings = self.settings
world_atom = self.world_atom
tree = "bintree"
+ root_config = pkg.root_config
+ bintree = root_config.trees[tree]
settings.setcpv(pkg)
debug = settings.get("PORTAGE_DEBUG") == "1"
verify = "strict" in settings.features and \
@@ -2231,18 +2233,20 @@ class Binpkg(EbuildBuildDir):
retval = prefetcher.wait()
del prefetcher
- fetcher = BinpkgFetcher(pkg=pkg, pretend=opts.pretend,
- use_locks=("distlocks" in settings.features))
+ fetcher = BinpkgFetcher(pkg=pkg, scheduler=scheduler)
pkg_path = fetcher.pkg_path
- if opts.getbinpkg:
- retval = fetcher.execute()
- if fetcher.remote:
- msg = " --- (%s of %s) Fetching Binary (%s::%s)" %\
- (pkg_count.curval, pkg_count.maxval, pkg.cpv, pkg_path)
- short_msg = "emerge: (%s of %s) %s Fetch" % \
- (pkg_count.curval, pkg_count.maxval, pkg.cpv)
- logger.log(msg, short_msg=short_msg)
+ if opts.getbinpkg and bintree.isremote(pkg.cpv):
+
+ msg = " --- (%s of %s) Fetching Binary (%s::%s)" %\
+ (pkg_count.curval, pkg_count.maxval, pkg.cpv, pkg_path)
+ short_msg = "emerge: (%s of %s) %s Fetch" % \
+ (pkg_count.curval, pkg_count.maxval, pkg.cpv)
+ logger.log(msg, short_msg=short_msg)
+
+ fetcher.start()
+ scheduler.schedule(fetcher.reg_id)
+ retval = fetcher.wait()
if retval != os.EX_OK:
return retval
@@ -2380,65 +2384,7 @@ class Binpkg(EbuildBuildDir):
self.unlock()
return os.EX_OK
-class BinpkgFetcher(Task):
-
- __slots__ = ("use_locks", "pkg", "pretend", "pkg_path", "remote")
-
- def __init__(self, **kwargs):
- Task.__init__(self, **kwargs)
- pkg = self.pkg
- self.pkg_path = pkg.root_config.trees["bintree"].getname(pkg.cpv)
-
- def _get_hash_key(self):
- hash_key = getattr(self, "_hash_key", None)
- if hash_key is None:
- self._hash_key = ("BinpkgFetcher", self.pkg._get_hash_key())
- return self._hash_key
-
- def execute(self):
- tbz2_lock = None
- use_locks = self.use_locks
- pkg = self.pkg
- pretend = self.pretend
- bintree = pkg.root_config.trees["bintree"]
- pkgdir = bintree.pkgdir
- pkg_path = self.pkg_path
- rval = os.EX_OK
-
- try:
- try:
- if not pretend and use_locks and os.access(pkgdir, os.W_OK):
- portage.util.ensure_dirs(os.path.dirname(pkg_path))
- tbz2_lock = portage.locks.lockfile(pkg_path,
- wantnewlockfile=1)
- if bintree.isremote(pkg.cpv):
- self.remote = True
- if not pretend:
- bintree.gettbz2(pkg.cpv)
- finally:
- if tbz2_lock is not None:
- portage.locks.unlockfile(tbz2_lock)
- except portage.exception.FileNotFound:
- writemsg("!!! Fetching Binary failed " + \
- "for '%s'\n" % pkg.cpv, noiselevel=-1)
- rval = 1
- except portage.exception.DigestException, e:
- writemsg("\n!!! Digest verification failed:\n",
- noiselevel=-1)
- writemsg("!!! %s\n" % e.value[0],
- noiselevel=-1)
- writemsg("!!! Reason: %s\n" % e.value[1],
- noiselevel=-1)
- writemsg("!!! Got: %s\n" % e.value[2],
- noiselevel=-1)
- writemsg("!!! Expected: %s\n" % e.value[3],
- noiselevel=-1)
- if not pretend:
- os.unlink(pkg_path)
- rval = 1
- return rval
-
-class BinpkgFetcherAsync(SpawnProcess):
+class BinpkgFetcher(SpawnProcess):
__slots__ = ("pkg",
"locked", "pkg_path", "_lock_obj")
@@ -7448,7 +7394,7 @@ class Scheduler(object):
"--getbinpkg" in self.myopts and \
pkg.root_config.trees["bintree"].isremote(pkg.cpv):
- prefetcher = BinpkgFetcherAsync(logfile=self._fetch_log,
+ prefetcher = BinpkgFetcher(logfile=self._fetch_log,
pkg=pkg, scheduler=self._sched_iface)
return prefetcher