Gentoo Archives: gentoo-portage-dev

From: Zac Medico <zmedico@g.o>
To: gentoo-portage-dev@l.g.o
Cc: Zac Medico <zmedico@g.o>
Subject: [gentoo-portage-dev] [PATCH] config: default features USE for conditional RESTRICT (bug 663848)
Date: Fri, 17 Aug 2018 19:11:44
Message-Id: 20180817190752.29750-1-zmedico@gentoo.org
1 Initialize default features USE state, and reset when appropriate,
2 so that the "test" flag state is correct for evaluation of !test?
3 conditionals in RESTRICT.
4
5 Fixes: 45986341a80c ("Support !test? conditionals in RESTRICT (bug 663278)")
6 ---
7 lib/portage/package/ebuild/config.py | 13 +++++++++++--
8 1 file changed, 11 insertions(+), 2 deletions(-)
9
10 diff --git a/lib/portage/package/ebuild/config.py b/lib/portage/package/ebuild/config.py
11 index 3b01095d0..9fbf7e8fc 100644
12 --- a/lib/portage/package/ebuild/config.py
13 +++ b/lib/portage/package/ebuild/config.py
14 @@ -259,6 +259,7 @@ class config(object):
15 self.packages = clone.packages
16 self.repositories = clone.repositories
17 self.unpack_dependencies = clone.unpack_dependencies
18 + self._default_features_use = clone._default_features_use
19 self._iuse_effective = clone._iuse_effective
20 self._iuse_implicit_match = clone._iuse_implicit_match
21 self._non_user_variables = clone._non_user_variables
22 @@ -961,6 +962,14 @@ class config(object):
23
24 # initialize self.features
25 self.regenerate()
26 + feature_use = []
27 + if "test" in self.features:
28 + feature_use.append("test")
29 + self.configdict["features"]["USE"] = self._default_features_use = " ".join(feature_use)
30 + if feature_use:
31 + # Regenerate USE so that the initial "test" flag state is
32 + # correct for evaluation of !test? conditionals in RESTRICT.
33 + self.regenerate()
34
35 if unprivileged:
36 self.features.add('unprivileged')
37 @@ -1296,7 +1305,7 @@ class config(object):
38 del self._penv[:]
39 self.configdict["pkg"].clear()
40 self.configdict["pkginternal"].clear()
41 - self.configdict["features"].clear()
42 + self.configdict["features"]["USE"] = self._default_features_use
43 self.configdict["repo"].clear()
44 self.configdict["defaults"]["USE"] = \
45 " ".join(self.make_defaults_use)
46 @@ -1598,7 +1607,7 @@ class config(object):
47 has_changed = True
48 # Prevent stale features USE from corrupting the evaluation
49 # of USE conditional RESTRICT.
50 - self.configdict["features"]["USE"] = ""
51 + self.configdict["features"]["USE"] = self._default_features_use
52
53 self._penv = []
54 cpdict = self._penvdict.get(cp)
55 --
56 2.16.4