1 |
commit: 128c55ed57eea3f02b860a14a7e4f8cae109089a |
2 |
Author: Zac Medico <zmedico <AT> gentoo <DOT> org> |
3 |
AuthorDate: Tue Nov 21 00:01:40 2017 +0000 |
4 |
Commit: Zac Medico <zmedico <AT> gentoo <DOT> org> |
5 |
CommitDate: Tue Nov 21 00:11:48 2017 +0000 |
6 |
URL: https://gitweb.gentoo.org/proj/portage.git/commit/?id=128c55ed |
7 |
|
8 |
UseManager: reject atoms with USE flags (bug 607872) |
9 |
|
10 |
Reject atoms with USE flags in package.* files since |
11 |
they trigger infinite recursion in config.setcpv(). |
12 |
|
13 |
Bug: https://bugs.gentoo.org/607872 |
14 |
|
15 |
pym/portage/package/ebuild/_config/UseManager.py | 5 +++-- |
16 |
pym/portage/util/__init__.py | 6 +++++- |
17 |
2 files changed, 8 insertions(+), 3 deletions(-) |
18 |
|
19 |
diff --git a/pym/portage/package/ebuild/_config/UseManager.py b/pym/portage/package/ebuild/_config/UseManager.py |
20 |
index 9ebd0f3ab..7302876ab 100644 |
21 |
--- a/pym/portage/package/ebuild/_config/UseManager.py |
22 |
+++ b/pym/portage/package/ebuild/_config/UseManager.py |
23 |
@@ -196,7 +196,8 @@ class UseManager(object): |
24 |
file_dict = grabdict_package(file_name, recursive=recursive, |
25 |
allow_wildcard=extended_syntax, allow_repo=extended_syntax, |
26 |
verify_eapi=(not extended_syntax), eapi=eapi, |
27 |
- eapi_default=eapi_default, allow_build_id=allow_build_id) |
28 |
+ eapi_default=eapi_default, allow_build_id=allow_build_id, |
29 |
+ allow_use=False) |
30 |
if eapi is not None and eapi_filter is not None and not eapi_filter(eapi): |
31 |
if file_dict: |
32 |
writemsg(_("--- EAPI '%s' does not support '%s': '%s'\n") % |
33 |
@@ -242,7 +243,7 @@ class UseManager(object): |
34 |
os.path.join(location, file_name), |
35 |
recursive=1, newlines=1, allow_wildcard=True, |
36 |
allow_repo=True, verify_eapi=False, |
37 |
- allow_build_id=True) |
38 |
+ allow_build_id=True, allow_use=False) |
39 |
for k, v in pusedict.items(): |
40 |
l = [] |
41 |
use_expand_prefix = '' |
42 |
|
43 |
diff --git a/pym/portage/util/__init__.py b/pym/portage/util/__init__.py |
44 |
index 45710ba72..d63d5f156 100644 |
45 |
--- a/pym/portage/util/__init__.py |
46 |
+++ b/pym/portage/util/__init__.py |
47 |
@@ -429,7 +429,7 @@ def read_corresponding_eapi_file(filename, default="0"): |
48 |
return eapi |
49 |
|
50 |
def grabdict_package(myfilename, juststrings=0, recursive=0, newlines=0, |
51 |
- allow_wildcard=False, allow_repo=False, allow_build_id=False, |
52 |
+ allow_wildcard=False, allow_repo=False, allow_build_id=False, allow_use=True, |
53 |
verify_eapi=False, eapi=None, eapi_default="0"): |
54 |
""" Does the same thing as grabdict except it validates keys |
55 |
with isvalidatom()""" |
56 |
@@ -458,6 +458,10 @@ def grabdict_package(myfilename, juststrings=0, recursive=0, newlines=0, |
57 |
writemsg(_("--- Invalid atom in %s: %s\n") % (filename, e), |
58 |
noiselevel=-1) |
59 |
else: |
60 |
+ if not allow_use and k.use: |
61 |
+ writemsg(_("--- Atom is not allowed to have USE flag(s) in %s: %s\n") % (filename, k), |
62 |
+ noiselevel=-1) |
63 |
+ continue |
64 |
atoms.setdefault(k, []).extend(v) |
65 |
|
66 |
if juststrings: |