aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2018-08-17 04:08:21 -0700
committerZac Medico <zmedico@gentoo.org>2018-08-17 13:12:32 -0700
commitad607b8ecfad3e099cae508ff4d3b5b62cab969f (patch)
treeeea17813a55735ab230fa15fb18cbc66abd225c2
parentrepoman.config: Make yaml loader optional (diff)
downloadportage-ad607b8ecfad3e099cae508ff4d3b5b62cab969f.tar.gz
portage-ad607b8ecfad3e099cae508ff4d3b5b62cab969f.tar.bz2
portage-ad607b8ecfad3e099cae508ff4d3b5b62cab969f.zip
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
-rw-r--r--lib/portage/package/ebuild/config.py13
1 files 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)