1 |
commit: 39d81c514c33733209963110d90ae88020ffcf7d |
2 |
Author: Arfrever Frehtes Taifersar Arahesis <Arfrever <AT> Apache <DOT> Org> |
3 |
AuthorDate: Tue Dec 1 02:36:48 2015 +0000 |
4 |
Commit: Arfrever Frehtes Taifersar Arahesis <arfrever <AT> apache <DOT> org> |
5 |
CommitDate: Tue Dec 1 02:36:48 2015 +0000 |
6 |
URL: https://gitweb.gentoo.org/proj/portage.git/commit/?id=39d81c51 |
7 |
|
8 |
portage.package.ebuild.config.config.__getitem__(): Partially drop backward compatibility for nonexistent keys. |
9 |
|
10 |
For nonexistent keys: |
11 |
- When called by Portage scripts, raise KeyError. |
12 |
- When called by third-party code, print deprecation warning and continue returning "". |
13 |
|
14 |
pym/_emerge/actions.py | 6 +++--- |
15 |
pym/portage/dep/dep_check.py | 6 ++++-- |
16 |
pym/portage/package/ebuild/config.py | 29 ++++++++++++++++++++++++----- |
17 |
3 files changed, 31 insertions(+), 10 deletions(-) |
18 |
|
19 |
diff --git a/pym/_emerge/actions.py b/pym/_emerge/actions.py |
20 |
index 54e99c1..c3b0b98 100644 |
21 |
--- a/pym/_emerge/actions.py |
22 |
+++ b/pym/_emerge/actions.py |
23 |
@@ -1580,7 +1580,7 @@ def action_info(settings, trees, myopts, myfiles): |
24 |
chost = settings.get("CHOST") |
25 |
|
26 |
append(getportageversion(settings["PORTDIR"], None, |
27 |
- settings.profile_path, settings["CHOST"], |
28 |
+ settings.profile_path, chost, |
29 |
trees[settings['EROOT']]["vartree"].dbapi)) |
30 |
|
31 |
header_width = 65 |
32 |
@@ -2810,7 +2810,7 @@ def run_action(emerge_config): |
33 |
adjust_configs(emerge_config.opts, emerge_config.trees) |
34 |
apply_priorities(emerge_config.target_config.settings) |
35 |
|
36 |
- for fmt in emerge_config.target_config.settings["PORTAGE_BINPKG_FORMAT"].split(): |
37 |
+ for fmt in emerge_config.target_config.settings.get("PORTAGE_BINPKG_FORMAT", "").split(): |
38 |
if not fmt in portage.const.SUPPORTED_BINPKG_FORMATS: |
39 |
if "--pkg-format" in emerge_config.opts: |
40 |
problematic="--pkg-format" |
41 |
@@ -2827,7 +2827,7 @@ def run_action(emerge_config): |
42 |
emerge_config.target_config.settings["PORTDIR"], |
43 |
None, |
44 |
emerge_config.target_config.settings.profile_path, |
45 |
- emerge_config.target_config.settings["CHOST"], |
46 |
+ emerge_config.target_config.settings.get("CHOST"), |
47 |
emerge_config.target_config.trees['vartree'].dbapi) + '\n', |
48 |
noiselevel=-1) |
49 |
return 0 |
50 |
|
51 |
diff --git a/pym/portage/dep/dep_check.py b/pym/portage/dep/dep_check.py |
52 |
index 69b358c..9af4e65 100644 |
53 |
--- a/pym/portage/dep/dep_check.py |
54 |
+++ b/pym/portage/dep/dep_check.py |
55 |
@@ -653,10 +653,12 @@ def dep_check(depstring, mydbapi, mysettings, use="yes", mode=None, myuse=None, |
56 |
# matchall behavior to account for profile use.mask/force. The |
57 |
# ARCH/archlist code here may be redundant, since the profile |
58 |
# really should be handling ARCH masking/forcing itself. |
59 |
+ arch = mysettings.get("ARCH") |
60 |
mymasks.update(mysettings.usemask) |
61 |
mymasks.update(mysettings.archlist()) |
62 |
- mymasks.discard(mysettings["ARCH"]) |
63 |
- useforce.add(mysettings["ARCH"]) |
64 |
+ if arch: |
65 |
+ mymasks.discard(arch) |
66 |
+ useforce.add(arch) |
67 |
useforce.update(mysettings.useforce) |
68 |
useforce.difference_update(mymasks) |
69 |
|
70 |
|
71 |
diff --git a/pym/portage/package/ebuild/config.py b/pym/portage/package/ebuild/config.py |
72 |
index 1827043..da9a936 100644 |
73 |
--- a/pym/portage/package/ebuild/config.py |
74 |
+++ b/pym/portage/package/ebuild/config.py |
75 |
@@ -1,4 +1,4 @@ |
76 |
-# Copyright 2010-2014 Gentoo Foundation |
77 |
+# Copyright 2010-2015 Gentoo Foundation |
78 |
# Distributed under the terms of the GNU General Public License v2 |
79 |
|
80 |
from __future__ import unicode_literals |
81 |
@@ -15,6 +15,7 @@ import platform |
82 |
import pwd |
83 |
import re |
84 |
import sys |
85 |
+import traceback |
86 |
import warnings |
87 |
|
88 |
from _emerge.Package import Package |
89 |
@@ -1257,13 +1258,13 @@ class config(object): |
90 |
use = frozenset(settings['PORTAGE_USE'].split()) |
91 |
|
92 |
values['ACCEPT_LICENSE'] = settings._license_manager.get_prunned_accept_license( \ |
93 |
- settings.mycpv, use, settings['LICENSE'], settings['SLOT'], settings.get('PORTAGE_REPO_NAME')) |
94 |
+ settings.mycpv, use, settings.get('LICENSE', ''), settings.get('SLOT'), settings.get('PORTAGE_REPO_NAME')) |
95 |
values['PORTAGE_RESTRICT'] = self._restrict(use, settings) |
96 |
return values |
97 |
|
98 |
def _restrict(self, use, settings): |
99 |
try: |
100 |
- restrict = set(use_reduce(settings['RESTRICT'], uselist=use, flat=True)) |
101 |
+ restrict = set(use_reduce(settings.get('RESTRICT', ''), uselist=use, flat=True)) |
102 |
except InvalidDependString: |
103 |
restrict = set() |
104 |
return ' '.join(sorted(restrict)) |
105 |
@@ -2567,7 +2568,23 @@ class config(object): |
106 |
try: |
107 |
return self._getitem(key) |
108 |
except KeyError: |
109 |
- return '' # for backward compat, don't raise KeyError |
110 |
+ if portage._internal_caller: |
111 |
+ stack = traceback.format_stack()[:-1] + traceback.format_exception(*sys.exc_info())[1:] |
112 |
+ try: |
113 |
+ # Ensure that output is written to terminal. |
114 |
+ with open("/dev/tty", "w") as f: |
115 |
+ f.write("=" * 96 + "\n") |
116 |
+ f.write("=" * 8 + " Traceback for invalid call to portage.package.ebuild.config.config.__getitem__ " + "=" * 8 + "\n") |
117 |
+ f.writelines(stack) |
118 |
+ f.write("=" * 96 + "\n") |
119 |
+ except: |
120 |
+ pass |
121 |
+ raise |
122 |
+ else: |
123 |
+ warnings.warn(_("Passing nonexistent key %r to %s is deprecated. Use %s instead.") % |
124 |
+ (key, "portage.package.ebuild.config.config.__getitem__", |
125 |
+ "portage.package.ebuild.config.config.get"), DeprecationWarning, stacklevel=2) |
126 |
+ return "" |
127 |
|
128 |
def _getitem(self, mykey): |
129 |
|
130 |
@@ -2697,7 +2714,9 @@ class config(object): |
131 |
for x in self: |
132 |
if x in environ_filter: |
133 |
continue |
134 |
- myvalue = self[x] |
135 |
+ myvalue = self.get(x) |
136 |
+ if myvalue is None: |
137 |
+ continue |
138 |
if not isinstance(myvalue, basestring): |
139 |
writemsg(_("!!! Non-string value in config: %s=%s\n") % \ |
140 |
(x, myvalue), noiselevel=-1) |