From: "Zac Medico" <zmedico@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] proj/portage:master commit in: lib/portage/package/ebuild/
Date: Sun, 12 Aug 2018 02:31:31 +0000 (UTC) [thread overview]
Message-ID: <1534034432.45986341a80cfb01dad470f56f02b210b3ebf753.zmedico@gentoo> (raw)
commit: 45986341a80cfb01dad470f56f02b210b3ebf753
Author: Zac Medico <zmedico <AT> gentoo <DOT> org>
AuthorDate: Sat Aug 11 21:04:05 2018 +0000
Commit: Zac Medico <zmedico <AT> gentoo <DOT> org>
CommitDate: Sun Aug 12 00:40:32 2018 +0000
URL: https://gitweb.gentoo.org/proj/portage.git/commit/?id=45986341
Support !test? conditionals in RESTRICT (bug 663278)
Since RESTRICT="!test? ( test )" can be very useful within the context
of bug 663278, pass an appropriate uselist parameter to the RESTRICT
use_reduce call. Make self.configdict["features"]["USE"] independent
of IUSE and RESTRICT, so that the same value can be shared between
packages with different settings, which is important when evaluating
USE conditional RESTRICT. When the evaluated value of RESTRICT contains
"test", handle it like IUSE="-test", since features USE is independent
of RESTRICT.
Bug: https://bugs.gentoo.org/663278
lib/portage/package/ebuild/config.py | 40 +++++++++++++++++++++++-------------
1 file changed, 26 insertions(+), 14 deletions(-)
diff --git a/lib/portage/package/ebuild/config.py b/lib/portage/package/ebuild/config.py
index 220fa31bb..3b01095d0 100644
--- a/lib/portage/package/ebuild/config.py
+++ b/lib/portage/package/ebuild/config.py
@@ -1457,6 +1457,7 @@ class config(object):
cp = cpv_getkey(mycpv)
cpv_slot = self.mycpv
pkginternaluse = ""
+ pkginternaluse_list = []
feature_use = []
iuse = ""
pkg_configdict = self.configdict["pkg"]
@@ -1513,13 +1514,12 @@ class config(object):
cpv_slot = self.mycpv
else:
cpv_slot = pkg
- pkginternaluse = []
for x in iuse.split():
if x.startswith("+"):
- pkginternaluse.append(x[1:])
+ pkginternaluse_list.append(x[1:])
elif x.startswith("-"):
- pkginternaluse.append(x)
- pkginternaluse = " ".join(pkginternaluse)
+ pkginternaluse_list.append(x)
+ pkginternaluse = " ".join(pkginternaluse_list)
eapi_attrs = _get_eapi_attrs(eapi)
@@ -1596,6 +1596,9 @@ class config(object):
# regenerate() call in order to ensure that self.features
# is accurate.
has_changed = True
+ # Prevent stale features USE from corrupting the evaluation
+ # of USE conditional RESTRICT.
+ self.configdict["features"]["USE"] = ""
self._penv = []
cpdict = self._penvdict.get(cp)
@@ -1675,24 +1678,33 @@ class config(object):
restrict = use_reduce(raw_restrict,
uselist=built_use, flat=True)
else:
- # Use matchnone=True to ignore USE conditional parts
- # of RESTRICT, since we want to know whether to mask
- # the "test" flag _before_ we know the USE values
- # that would be needed to evaluate the USE
- # conditionals (see bug #273272).
restrict = use_reduce(raw_restrict,
- matchnone=True, flat=True)
+ uselist=frozenset(x for x in self['USE'].split()
+ if x in explicit_iuse or iuse_implicit_match(x)),
+ flat=True)
except PortageException:
pass
else:
restrict_test = "test" in restrict
- if not restrict_test and ("test" in explicit_iuse or iuse_implicit_match("test")):
- if "test" in self.features:
- feature_use.append("test")
+ pkginternaluse_before = pkginternaluse
+ if "test" in self.features:
+ # This is independent of IUSE and RESTRICT, so that the same
+ # value can be shared between packages with different settings,
+ # which is important when evaluating USE conditional RESTRICT
+ # above.
+ feature_use.append("test")
+
+ if restrict_test:
+ # Handle it like IUSE="-test", since features USE is
+ # independent of RESTRICT.
+ pkginternaluse_list.append("-test")
+ pkginternaluse = " ".join(pkginternaluse_list)
+ self.configdict["pkginternal"]["USE"] = pkginternaluse
feature_use = " ".join(feature_use)
- if feature_use != self.configdict["features"].get("USE", ""):
+ if (feature_use != self.configdict["features"].get("USE", "") or
+ pkginternaluse is not pkginternaluse_before):
self.configdict["features"]["USE"] = feature_use
# TODO: can we avoid that?
self.reset(keeping_pkg=1)
next reply other threads:[~2018-08-12 2:31 UTC|newest]
Thread overview: 94+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-08-12 2:31 Zac Medico [this message]
-- strict thread matches above, loose matches on Subject: below --
2025-01-11 23:10 [gentoo-commits] proj/portage:master commit in: lib/portage/package/ebuild/ Zac Medico
2024-08-07 14:39 Zac Medico
2024-07-19 5:41 Sam James
2024-06-17 0:25 Sam James
2024-06-17 0:20 Sam James
2024-03-24 22:20 Zac Medico
2023-12-20 14:04 Sam James
2023-12-20 14:04 Sam James
2023-12-20 14:04 Sam James
2023-12-10 22:01 Sam James
2023-10-22 22:46 Zac Medico
2023-10-16 5:15 Zac Medico
2023-10-13 10:33 Sam James
2023-10-13 10:19 Sam James
2023-10-13 10:19 Sam James
2023-08-19 15:05 Sam James
2023-06-14 19:23 Mike Gilbert
2023-06-14 19:23 Mike Gilbert
2023-02-17 0:53 Sam James
2023-01-27 8:38 Ulrich Müller
2023-01-02 20:45 Mike Gilbert
2022-07-12 23:33 Sam James
2022-06-12 18:25 Sam James
2021-12-11 2:54 Sam James
2021-12-11 2:54 Sam James
2021-11-15 8:34 Michał Górny
2021-11-08 22:37 Zac Medico
2021-10-28 5:00 Sam James
2021-10-28 4:52 Sam James
2021-10-03 19:31 Zac Medico
2021-09-28 11:25 Michał Górny
2021-09-28 11:19 Michał Górny
2021-09-28 7:21 Zac Medico
2021-09-27 20:51 Michał Górny
2021-09-08 10:17 Michał Górny
2021-08-05 8:47 Michał Górny
2021-06-20 18:54 Zac Medico
2021-06-05 18:08 Zac Medico
2021-06-05 18:08 Zac Medico
2021-05-31 19:54 Michał Górny
2021-05-24 5:25 Zac Medico
2021-02-25 9:33 Zac Medico
2021-02-24 15:14 Zac Medico
2021-02-22 5:32 Zac Medico
2021-01-17 13:15 Zac Medico
2021-01-10 3:24 Zac Medico
2020-11-02 1:34 Zac Medico
2020-09-14 7:23 Zac Medico
2020-08-03 21:42 Zac Medico
2020-08-03 21:42 Zac Medico
2020-08-03 19:30 Zac Medico
2020-08-03 19:30 Zac Medico
2020-08-03 19:30 Zac Medico
2020-05-31 23:58 Mike Gilbert
2020-05-31 21:17 Mike Gilbert
2020-05-31 20:34 Mike Gilbert
2020-05-18 19:23 Michał Górny
2020-05-06 6:37 Michał Górny
2020-03-23 1:49 Zac Medico
2020-03-23 1:40 Zac Medico
2020-03-15 1:24 Zac Medico
2020-03-02 16:53 Zac Medico
2020-03-02 4:48 Zac Medico
2020-02-15 20:44 Zac Medico
2020-02-15 20:28 Zac Medico
2019-12-09 7:03 Zac Medico
2019-10-29 1:17 Zac Medico
2019-10-24 19:31 Zac Medico
2019-10-21 17:49 Zac Medico
2019-10-20 9:26 Michał Górny
2019-10-19 23:52 Zac Medico
2019-10-14 20:45 Zac Medico
2019-10-14 20:35 Zac Medico
2019-10-14 20:13 Zac Medico
2019-10-13 19:50 Michał Górny
2019-09-03 15:36 Zac Medico
2019-09-02 20:13 Zac Medico
2019-08-20 23:43 Zac Medico
2019-08-14 1:40 Zac Medico
2019-07-30 7:09 Ulrich Müller
2019-06-18 17:14 Zac Medico
2019-06-10 19:01 Zac Medico
2019-01-21 22:20 Zac Medico
2019-01-01 20:58 Zac Medico
2018-12-20 4:29 Zac Medico
2018-12-07 0:41 Zac Medico
2018-11-19 6:43 Zac Medico
2018-11-09 3:22 Zac Medico
2018-10-10 7:58 Zac Medico
2018-10-08 21:41 Zac Medico
2018-08-20 23:11 Zac Medico
2018-08-17 22:35 Zac Medico
2018-08-11 21:06 Zac Medico
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1534034432.45986341a80cfb01dad470f56f02b210b3ebf753.zmedico@gentoo \
--to=zmedico@gentoo.org \
--cc=gentoo-commits@lists.gentoo.org \
--cc=gentoo-dev@lists.gentoo.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox