diff options
author | Zac Medico <zmedico@gentoo.org> | 2018-08-17 04:08:21 -0700 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2018-08-17 13:12:32 -0700 |
commit | ad607b8ecfad3e099cae508ff4d3b5b62cab969f (patch) | |
tree | eea17813a55735ab230fa15fb18cbc66abd225c2 | |
parent | repoman.config: Make yaml loader optional (diff) | |
download | portage-ad607b8e.tar.gz portage-ad607b8e.tar.bz2 portage-ad607b8e.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.py | 13 |
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) |