summaryrefslogtreecommitdiffstats
path: root/pym
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2011-05-07 20:29:27 -0700
committerZac Medico <zmedico@gentoo.org>2011-05-07 21:35:18 -0700
commit2a90c6f5debe3f18da3317f47dfb144c559fb920 (patch)
treedfbd571fb22067ecaeab848c5829c4e020b19678 /pym
parentbc5d73fa3db0569c55d48c2e738f12742579536c (diff)
downloadportage-2a90c6f5debe3f18da3317f47dfb144c559fb920.tar.gz
portage-2a90c6f5debe3f18da3317f47dfb144c559fb920.tar.bz2
portage-2a90c6f5debe3f18da3317f47dfb144c559fb920.zip
Add FEATURES=parallel-install for finer locks.
Diffstat (limited to 'pym')
-rw-r--r--pym/_emerge/Scheduler.py3
-rw-r--r--pym/portage/const.py3
-rw-r--r--pym/portage/dbapi/vartree.py10
3 files changed, 14 insertions, 2 deletions
diff --git a/pym/_emerge/Scheduler.py b/pym/_emerge/Scheduler.py
index fc69d48ae..182ad8771 100644
--- a/pym/_emerge/Scheduler.py
+++ b/pym/_emerge/Scheduler.py
@@ -387,7 +387,8 @@ class Scheduler(PollScheduler):
def _set_max_jobs(self, max_jobs):
self._max_jobs = max_jobs
self._task_queues.jobs.max_jobs = max_jobs
- self._task_queues.merge.max_jobs = max_jobs
+ if "parallel-install" in self.settings.features:
+ self._task_queues.merge.max_jobs = max_jobs
def _background_mode(self):
"""
diff --git a/pym/portage/const.py b/pym/portage/const.py
index 0bd56b20f..98f3dac6d 100644
--- a/pym/portage/const.py
+++ b/pym/portage/const.py
@@ -93,7 +93,8 @@ SUPPORTED_FEATURES = frozenset([
"installsources", "keeptemp", "keepwork", "fixlafiles", "lmirror",
"metadata-transfer", "mirror", "multilib-strict", "news",
"noauto", "noclean", "nodoc", "noinfo", "noman",
- "nostrip", "notitles", "parallel-fetch", "parse-eapi-ebuild-head",
+ "nostrip", "notitles", "parallel-fetch", "parallel-install",
+ "parse-eapi-ebuild-head",
"prelink-checksums", "preserve-libs",
"protect-owned", "python-trace", "sandbox",
"selinux", "sesandbox", "severe", "sfperms",
diff --git a/pym/portage/dbapi/vartree.py b/pym/portage/dbapi/vartree.py
index 2708e4307..92c467d43 100644
--- a/pym/portage/dbapi/vartree.py
+++ b/pym/portage/dbapi/vartree.py
@@ -3914,6 +3914,9 @@ class dblink(object):
"""
myroot = None
retval = -1
+ parallel_install = "parallel-install" in self.settings.features
+ if not parallel_install:
+ self.lockdb()
self.vartree.dbapi._bump_mtime(self.mycpv)
try:
retval = self.treewalk(mergeroot, myroot, inforoot, myebuild,
@@ -3966,6 +3969,8 @@ class dblink(object):
else:
self.vartree.dbapi._linkmap._clear_cache()
self.vartree.dbapi._bump_mtime(self.mycpv)
+ if not parallel_install:
+ self.unlockdb()
return retval
def getstring(self,name):
@@ -4066,6 +4071,9 @@ def unmerge(cat, pkg, myroot=None, settings=None,
mylink = dblink(cat, pkg, settings=settings, treetype="vartree",
vartree=vartree, scheduler=scheduler)
vartree = mylink.vartree
+ parallel_install = "parallel-install" in self.settings.features
+ if not parallel_install:
+ self.lockdb()
try:
if mylink.exists():
retval = mylink.unmerge(ldpath_mtimes=ldpath_mtimes)
@@ -4083,6 +4091,8 @@ def unmerge(cat, pkg, myroot=None, settings=None,
pass
else:
vartree.dbapi._linkmap._clear_cache()
+ if not parallel_install:
+ self.unlockdb()
def write_contents(contents, root, f):
"""