summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2012-12-09 16:26:14 -0800
committerZac Medico <zmedico@gentoo.org>2012-12-09 16:26:14 -0800
commitecae0c4fc46d6bc8054104a99af90bc45d4e7429 (patch)
tree5dd4700d67d0d1ef32f42d5d1df6b7c8ba80495b
parent184b2ed92e83491b81b5894814e6935e870133df (diff)
downloadportage-ecae0c4fc46d6bc8054104a99af90bc45d4e7429.tar.gz
portage-ecae0c4fc46d6bc8054104a99af90bc45d4e7429.tar.bz2
portage-ecae0c4fc46d6bc8054104a99af90bc45d4e7429.zip
get_real_flag: handls use-dep default bug #446666
-rw-r--r--pym/_emerge/Package.py7
-rw-r--r--pym/_emerge/depgraph.py3
-rw-r--r--pym/_emerge/resolver/slot_collision.py3
3 files changed, 11 insertions, 2 deletions
diff --git a/pym/_emerge/Package.py b/pym/_emerge/Package.py
index 86ed5f788..e19b78444 100644
--- a/pym/_emerge/Package.py
+++ b/pym/_emerge/Package.py
@@ -642,6 +642,10 @@ class Package(Task):
return missing_iuse
def get_real_flag(self, flag):
+ """
+ Returns the flag's name within the scope of this package
+ (accounting for aliases), or None if the flag is unknown.
+ """
if flag in self.all:
return flag
elif flag in self.all_aliases:
@@ -649,8 +653,7 @@ class Package(Task):
if flag in v:
return k
else:
- raise ValueError("'%s' flag is not in IUSE and is not an alias of any flag in IUSE of '%s::%s'" %
- (flag, self._pkg.cpv, self._pkg.repo))
+ return None
def __len__(self):
return 4
diff --git a/pym/_emerge/depgraph.py b/pym/_emerge/depgraph.py
index 568a11682..3cd44dd4e 100644
--- a/pym/_emerge/depgraph.py
+++ b/pym/_emerge/depgraph.py
@@ -4109,6 +4109,9 @@ class depgraph(object):
for flag, state in target_use.items():
real_flag = pkg.iuse.get_real_flag(flag)
+ if real_flag is None:
+ # Triggered by use-dep defaults.
+ continue
if state:
if real_flag not in old_use:
if new_changes.get(real_flag) == False:
diff --git a/pym/_emerge/resolver/slot_collision.py b/pym/_emerge/resolver/slot_collision.py
index e04166b81..8b2f4b888 100644
--- a/pym/_emerge/resolver/slot_collision.py
+++ b/pym/_emerge/resolver/slot_collision.py
@@ -226,6 +226,9 @@ class slot_conflict_handler(object):
for pkg in solution:
for flag, state in solution[pkg].items():
real_flag = pkg.iuse.get_real_flag(flag)
+ if real_flag is None:
+ # Triggered by use-dep defaults.
+ continue
if state == "enabled" and flag not in _pkg_use_enabled(pkg):
new_change.setdefault(pkg, {})[real_flag] = True
elif state == "disabled" and flag in _pkg_use_enabled(pkg):