From: Zac Medico <zmedico@gentoo.org>
Date: Mon, 2 May 2011 19:34:21 +0000 (-0700)
Subject: depgraph: autounmask account for optional deps
X-Git-Tag: v2.2.0_alpha31~16
X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=5f9dedaa14bbb704e055f2fa616821b79f9c6914;p=portage.git

depgraph: autounmask account for optional deps
---

diff --git a/pym/_emerge/depgraph.py b/pym/_emerge/depgraph.py
index 5183b27f6..dd1b5e843 100644
--- a/pym/_emerge/depgraph.py
+++ b/pym/_emerge/depgraph.py
@@ -1375,6 +1375,20 @@ class depgraph(object):
 
 	def _add_pkg_dep_string(self, pkg, dep_root, dep_priority, dep_string,
 		allow_unsatisfied, ignore_blockers=False):
+		_autounmask_backup = self._dynamic_config._autounmask
+		if dep_priority.optional or dep_priority.ignored:
+			# Temporarily disable autounmask for deps that
+			# don't necessarily need to be satisfied.
+			self._dynamic_config._autounmask = False
+		try:
+			return self._wrapped_add_pkg_dep_string(
+				pkg, dep_root, dep_priority, dep_string,
+				allow_unsatisfied, ignore_blockers=ignore_blockers)
+		finally:
+			self._dynamic_config._autounmask = _autounmask_backup
+
+	def _wrapped_add_pkg_dep_string(self, pkg, dep_root, dep_priority,
+		dep_string, allow_unsatisfied, ignore_blockers=False):
 		depth = pkg.depth + 1
 		deep = self._dynamic_config.myparams.get("deep", 0)
 		recurse_satisfied = deep is True or depth <= deep