commit: ad607b8ecfad3e099cae508ff4d3b5b62cab969f
Author: Zac Medico <zmedico <AT> gentoo <DOT> org>
AuthorDate: Fri Aug 17 11:08:21 2018 +0000
Commit: Zac Medico <zmedico <AT> gentoo <DOT> org>
CommitDate: Fri Aug 17 20:12:32 2018 +0000
URL: https://gitweb.gentoo.org/proj/portage.git/commit/?id=ad607b8e
config: default features USE for conditional RESTRICT (bug 663848)
Initialize default features USE state, and reset when appropriate,
so that the "test" flag state is correct for evaluation of !test?
conditionals in RESTRICT.
Fixes: 45986341a80c ("Support !test? conditionals in RESTRICT (bug 663278)")
Bug: https://bugs.gentoo.org/663848
lib/portage/package/ebuild/config.py | 13 +++++++++++--
1 file changed, 11 insertions(+), 2 deletions(-)
diff --git a/lib/portage/package/ebuild/config.py
b/lib/portage/package/ebuild/config.py
index 3b01095d0..9fbf7e8fc 100644
--- a/lib/portage/package/ebuild/config.py
+++ b/lib/portage/package/ebuild/config.py
@@ -259,6 +259,7 @@ class config(object):
self.packages = clone.packages
self.repositories = clone.repositories
self.unpack_dependencies = clone.unpack_dependencies
+ self._default_features_use = clone._default_features_use
self._iuse_effective = clone._iuse_effective
self._iuse_implicit_match = clone._iuse_implicit_match
self._non_user_variables = clone._non_user_variables
@@ -961,6 +962,14 @@ class config(object):
# initialize self.features
self.regenerate()
+ feature_use = []
+ if "test" in self.features:
+ feature_use.append("test")
+ self.configdict["features"]["USE"] =
self._default_features_use = " ".join(feature_use)
+ if feature_use:
+ # Regenerate USE so that the initial "test"
flag state is
+ # correct for evaluation of !test? conditionals
in RESTRICT.
+ self.regenerate()
if unprivileged:
self.features.add('unprivileged')
@@ -1296,7 +1305,7 @@ class config(object):
del self._penv[:]
self.configdict["pkg"].clear()
self.configdict["pkginternal"].clear()
- self.configdict["features"].clear()
+ self.configdict["features"]["USE"] =
self._default_features_use
self.configdict["repo"].clear()
self.configdict["defaults"]["USE"] = \
" ".join(self.make_defaults_use)
@@ -1598,7 +1607,7 @@ class config(object):
has_changed = True
# Prevent stale features USE from corrupting the
evaluation
# of USE conditional RESTRICT.
- self.configdict["features"]["USE"] = ""
+ self.configdict["features"]["USE"] =
self._default_features_use
self._penv = []
cpdict = self._penvdict.get(cp)