summaryrefslogtreecommitdiffstats
path: root/pym/_emerge/Scheduler.py
diff options
context:
space:
mode:
authorSebastian Luther <SebastianLuther@gmx.de>2010-04-13 22:03:47 +0200
committerZac Medico <zmedico@gentoo.org>2010-08-10 18:31:56 -0700
commit4e2e93cf0523c5133e89d05bb375331b30f3bb79 (patch)
tree042e4cd8fa99d3fee519cc551910f66851e31b88 /pym/_emerge/Scheduler.py
parent4930057bcb1b659a3075739dd46edafbbdd6deb9 (diff)
downloadportage-4e2e93cf0523c5133e89d05bb375331b30f3bb79.tar.gz
portage-4e2e93cf0523c5133e89d05bb375331b30f3bb79.tar.bz2
portage-4e2e93cf0523c5133e89d05bb375331b30f3bb79.zip
Allow flags from IUSE_IMPLICIT in REQUIRED_USE. Move checks to resolution time.
Diffstat (limited to 'pym/_emerge/Scheduler.py')
-rw-r--r--pym/_emerge/Scheduler.py63
1 files changed, 1 insertions, 62 deletions
diff --git a/pym/_emerge/Scheduler.py b/pym/_emerge/Scheduler.py
index d5c152f15..ae9cbcaa8 100644
--- a/pym/_emerge/Scheduler.py
+++ b/pym/_emerge/Scheduler.py
@@ -721,63 +721,6 @@ class Scheduler(PollScheduler):
return 1
return os.EX_OK
- def _check_required_use(self):
- # Make sure all constraints expressed in REQUIRED_USE are satisfied
-
- failures = 0
- shown_verifying_msg = False
- for x in self._mergelist:
- if not isinstance(x, Package):
- continue
-
- if x.operation == "uninstall":
- continue
-
- if x.metadata["EAPI"] in ("0", "1", "2", "3"):
- continue
-
- if not x.metadata["REQUIRED_USE"]:
- continue
-
- if not shown_verifying_msg:
- shown_verifying_msg = True
- self._status_msg("Verifying use flag constraints")
-
- required_use = x.metadata["REQUIRED_USE"]
- use = x.metadata["USE"].split()
- iuse = x.metadata["IUSE"].split()
-
- try:
- sat, unsat = portage.dep.check_required_use(required_use, use, iuse)
- except portage.exception.InvalidRequiredUseString as e:
- failures += 1
- portage.writemsg("!!! Invalid REQUIRED_USE specified by " + \
- "'%s': %s\n" % (x.cpv, str(e)), noiselevel=-1)
- del e
- continue
-
- if unsat:
- failures += 1
- if sat:
- #not all constraints are violated, display the them all to not annoy
- #the user with another violated constraint after he fixed the first one
- portage.writemsg(
- "!!! Use flag constraints for '%s' not met.\n" % x.cpv + \
- "!!! violated constraint(s): '%s'\n" % unsat + \
- "!!! all constraint(s): '%s'\n" % required_use, noiselevel=-1)
- else:
- portage.writemsg(
- "!!! Use flag constraints for '%s' not met.\n" % x.cpv + \
- "!!! constraint(s): '%s'\n" % required_use, noiselevel=-1)
- if failures:
- portage.writemsg("\n")
- portage.writemsg("Explanation: || ( a b c ): at least one of 'a', 'b' or 'c' must be enabled\n")
- portage.writemsg("Explanation: ^^ ( a b c ): exactly one of 'a', 'b' or 'c' must be enabled\n")
- portage.writemsg("Explanation: a? ( b ): b needs to be enabled if a is enabled\n")
- portage.writemsg("Explanation: '!'-prefix reverses the required state\n")
- return 1
- return os.EX_OK
-
def _add_prefetchers(self):
if not self._parallel_fetch:
@@ -1047,14 +990,10 @@ class Scheduler(PollScheduler):
if rval != os.EX_OK and not keep_going:
return rval
- rval = self._check_required_use()
- if rval != os.EX_OK:
- return rval
-
rval = self._run_pkg_pretend()
if rval != os.EX_OK:
return rval
-
+
while True:
rval = self._merge()
if rval == os.EX_OK or fetchonly or not keep_going: