Gentoo Archives: gentoo-commits

From: Zac Medico <zmedico@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/portage:master commit in: pym/_emerge/resolver/, /, pym/portage/package/ebuild/, pym/portage/, ...
Date: Wed, 29 Aug 2012 20:24:38
Message-Id: 1346271802.78ba7f0d3a3a2defdf9807ef2e8138965490a2fc.zmedico@gentoo
1 commit: 78ba7f0d3a3a2defdf9807ef2e8138965490a2fc
2 Author: Zac Medico <zmedico <AT> gentoo <DOT> org>
3 AuthorDate: Wed Aug 29 20:23:22 2012 +0000
4 Commit: Zac Medico <zmedico <AT> gentoo <DOT> org>
5 CommitDate: Wed Aug 29 20:23:22 2012 +0000
6 URL: http://git.overlays.gentoo.org/gitweb/?p=proj/portage.git;a=commit;h=78ba7f0d
7
8 Rename slot-abi stuff to refer to slot-operator.
9
10 This makes it consistent with the language in the PMS eapi-5 branch:
11 http://git.overlays.gentoo.org/gitweb/?p=proj/pms.git;a=commit;h=5d6749ac9e5ddc5b1daaad7737b65fa81c6ece47
12
13 ---
14 NEWS | 4 +-
15 doc/package/ebuild/eapi/4-slot-abi.docbook | 12 +-
16 man/emerge.1 | 16 ++--
17 pym/_emerge/FakeVartree.py | 20 ++--
18 pym/_emerge/Package.py | 4 +-
19 pym/_emerge/Scheduler.py | 6 +-
20 pym/_emerge/create_depgraph_params.py | 20 ++--
21 pym/_emerge/depgraph.py | 102 ++++++++++----------
22 pym/_emerge/main.py | 16 ++--
23 pym/_emerge/resolver/backtracking.py | 16 ++--
24 pym/_emerge/resolver/slot_collision.py | 4 +-
25 pym/portage/dbapi/__init__.py | 6 +-
26 pym/portage/dep/__init__.py | 94 +++++++++---------
27 pym/portage/dep/_slot_abi.py | 24 +++---
28 pym/portage/eapi.py | 6 +-
29 pym/portage/package/ebuild/doebuild.py | 8 +-
30 pym/portage/tests/dep/testAtom.py | 16 ++--
31 pym/portage/tests/dep/test_match_from_list.py | 6 +-
32 pym/portage/tests/resolver/test_complete_graph.py | 4 +-
33 pym/portage/tests/resolver/test_slot_abi.py | 26 +++---
34 .../tests/resolver/test_slot_abi_downgrade.py | 8 +-
35 pym/portage/versions.py | 10 +-
36 22 files changed, 214 insertions(+), 214 deletions(-)
37
38 diff --git a/NEWS b/NEWS
39 index 9a2f24f..b294fa5 100644
40 --- a/NEWS
41 +++ b/NEWS
42 @@ -15,8 +15,8 @@ portage-2.1.11
43
44 * Add support for experimental EAPI "4-slot-abi". Refer to the corresponding
45 html documentation that is installed with USE=doc, and also to the emerge(1)
46 - man page for information about the related --ignore-built-slot-abi-deps and
47 - --rebuild-if-new-slot-abi options.
48 + man page for information about the related --ignore-built-slot-operator-deps and
49 + --rebuild-if-new-slot options.
50
51 portage-2.1.10
52 -------------
53
54 diff --git a/doc/package/ebuild/eapi/4-slot-abi.docbook b/doc/package/ebuild/eapi/4-slot-abi.docbook
55 index 696d0bf..08e2cef 100644
56 --- a/doc/package/ebuild/eapi/4-slot-abi.docbook
57 +++ b/doc/package/ebuild/eapi/4-slot-abi.docbook
58 @@ -28,12 +28,12 @@ Refer to the
59 </para>
60 </section>
61 <section id='package-ebuild-eapi-4-slot-abi-metadata-dependency-atom-slot-abi-equal-operator'>
62 -<title>Dependency Atom SLOT/ABI := Operator</title>
63 +<title>Dependency Atom slot/sub-slot := Operator</title>
64 <para>
65 -Dependency atom syntax now supports SLOT/ABI := operators which allow the
66 -specific SLOT/ABI that a package is built against to be recorded, so that it's
67 +Dependency atom syntax now supports slot/sub-slot := operators which allow the
68 +specific slot/sub-slot that a package is built against to be recorded, so that it's
69 possible to automatically determine when a package needs to be rebuilt due to
70 -having a dependency upgraded to a different SLOT/ABI.
71 +having a dependency upgraded to a different slot/sub-slot.
72 </para>
73 <para>
74 For example, if a package is built
75 @@ -50,13 +50,13 @@ not contain a sub-slot part, the sub-slot is considered to be implicitly equal
76 to "4.8".
77 </para>
78 <para>
79 -When dependencies are rewritten as described above, the SLOT/ABI recorded in
80 +When dependencies are rewritten as described above, the slot/sub-slot recorded in
81 the atom is always equal to that of the highest matched version that is
82 installed at build time.
83 </para>
84 </section>
85 <section id='package-ebuild-eapi-4-slot-abi-metadata-dependency-atom-slot-abi-asterisk-operator'>
86 -<title>Dependency Atom SLOT/ABI :* Operator</title>
87 +<title>Dependency Atom slot/sub-slot :* Operator</title>
88 <para>
89 The new :* operator is used to express dependencies that can change versions
90 at runtime without requiring reverse dependencies to be rebuilt. For example,
91
92 diff --git a/man/emerge.1 b/man/emerge.1
93 index 7aa4622..36e3469 100644
94 --- a/man/emerge.1
95 +++ b/man/emerge.1
96 @@ -485,12 +485,12 @@ remote server are preferred over local packages if they are not identical.
97 .BR "\-\-ignore-default-opts"
98 Causes \fIEMERGE_DEFAULT_OPTS\fR (see \fBmake.conf\fR(5)) to be ignored.
99 .TP
100 -.BR "\-\-ignore\-built\-slot\-abi\-deps < y | n >"
101 -Ignore the SLOT/ABI := operator parts of dependencies that have
102 +.BR "\-\-ignore\-built\-slot\-operator\-deps < y | n >"
103 +Ignore the slot/sub\-slot := operator parts of dependencies that have
104 been recorded when packages where built. This option is intended
105 only for debugging purposes, and it only affects built packages
106 -that specify SLOT/ABI := operator dependencies using the
107 -experimental "4\-slot\-abi" EAPI.
108 +that specify slot/sub\-slot := operator dependencies using the
109 +experimental "4\-slot\-abi" or "5_pre1" EAPIs.
110 .TP
111 .BR "-j [JOBS], \-\-jobs[=JOBS]"
112 Specifies the number of packages to build simultaneously. If this option is
113 @@ -645,13 +645,13 @@ Disable the warning message that's shown prior to
114 to be set in the \fBmake.conf\fR(5)
115 \fBEMERGE_DEFAULT_OPTS\fR variable.
116 .TP
117 -.BR "\-\-rebuild\-if\-new\-slot\-abi [ y | n ]"
118 -Automatically rebuild or reinstall packages when SLOT/ABI :=
119 +.BR "\-\-rebuild\-if\-new\-slot [ y | n ]"
120 +Automatically rebuild or reinstall packages when slot/sub\-slot :=
121 operator dependencies can be satisfied by a newer slot, so that
122 older packages slots will become eligible for removal by the
123 \-\-depclean action as soon as possible. This option only
124 -affects packages that specify SLOT/ABI dependencies using the
125 -experimental "4\-slot\-abi" EAPI. Since this option requires
126 +affects packages that specify slot/sub\-slot := dependencies using the
127 +experimental "4\-slot\-abi" or "5_pre1" EAPIs. Since this option requires
128 checking of reverse dependencies, it enables \-\-complete\-graph
129 mode whenever a new slot is installed. This option is enabled by
130 default.
131
132 diff --git a/pym/_emerge/FakeVartree.py b/pym/_emerge/FakeVartree.py
133 index ce15f5a..3865015 100644
134 --- a/pym/_emerge/FakeVartree.py
135 +++ b/pym/_emerge/FakeVartree.py
136 @@ -10,7 +10,7 @@ from _emerge.Package import Package
137 from _emerge.PackageVirtualDbapi import PackageVirtualDbapi
138 from portage.const import VDB_PATH
139 from portage.dbapi.vartree import vartree
140 -from portage.dep._slot_abi import find_built_slot_abi_atoms
141 +from portage.dep._slot_abi import find_built_slot_operator_atoms
142 from portage.eapi import _get_eapi_attrs
143 from portage.exception import InvalidDependString
144 from portage.repository.config import _gen_valid_repo
145 @@ -45,10 +45,10 @@ class FakeVartree(vartree):
146 is not a matching ebuild in the tree). Instances of this class are not
147 populated until the sync() method is called."""
148 def __init__(self, root_config, pkg_cache=None, pkg_root_config=None,
149 - dynamic_deps=True, ignore_built_slot_abi_deps=False):
150 + dynamic_deps=True, ignore_built_slot_operator_deps=False):
151 self._root_config = root_config
152 self._dynamic_deps = dynamic_deps
153 - self._ignore_built_slot_abi_deps = ignore_built_slot_abi_deps
154 + self._ignore_built_slot_operator_deps = ignore_built_slot_operator_deps
155 if pkg_root_config is None:
156 pkg_root_config = self._root_config
157 self._pkg_root_config = pkg_root_config
158 @@ -112,11 +112,11 @@ class FakeVartree(vartree):
159 installed_eapi = pkg_obj.metadata['EAPI']
160 repo = pkg_obj.metadata['repository']
161 eapi_attrs = _get_eapi_attrs(installed_eapi)
162 - built_slot_abi_atoms = None
163 + built_slot_operator_atoms = None
164
165 - if eapi_attrs.slot_abi and not self._ignore_built_slot_abi_deps:
166 + if eapi_attrs.slot_operator and not self._ignore_built_slot_operator_deps:
167 try:
168 - built_slot_abi_atoms = find_built_slot_abi_atoms(pkg_obj)
169 + built_slot_operator_atoms = find_built_slot_operator_atoms(pkg_obj)
170 except InvalidDependString:
171 pass
172
173 @@ -137,12 +137,12 @@ class FakeVartree(vartree):
174 portage.eapi_is_supported(installed_eapi)):
175 raise KeyError(pkg)
176
177 - # preserve built SLOT/ABI := operator deps
178 - if built_slot_abi_atoms:
179 + # preserve built slot/sub-slot := operator deps
180 + if built_slot_operator_atoms:
181 live_eapi_attrs = _get_eapi_attrs(live_metadata["EAPI"])
182 - if not live_eapi_attrs.slot_abi:
183 + if not live_eapi_attrs.slot_operator:
184 raise KeyError(pkg)
185 - for k, v in built_slot_abi_atoms.items():
186 + for k, v in built_slot_operator_atoms.items():
187 live_metadata[k] += (" " +
188 " ".join(_unicode(atom) for atom in v))
189
190
191 diff --git a/pym/_emerge/Package.py b/pym/_emerge/Package.py
192 index ce51a8b..957d5d3 100644
193 --- a/pym/_emerge/Package.py
194 +++ b/pym/_emerge/Package.py
195 @@ -29,7 +29,7 @@ class Package(Task):
196 "root_config", "type_name",
197 "category", "counter", "cp", "cpv_split",
198 "inherited", "iuse", "mtime",
199 - "pf", "root", "slot", "slot_abi", "slot_atom", "version") + \
200 + "pf", "root", "slot", "sub_slot", "slot_atom", "version") + \
201 ("_invalid", "_raw_metadata", "_masks", "_use",
202 "_validated_atoms", "_visible")
203
204 @@ -61,7 +61,7 @@ class Package(Task):
205 "SLOT: invalid value: '%s'" % self.metadata["SLOT"])
206 self.cp = self.cpv.cp
207 self.slot = self.cpv.slot
208 - self.slot_abi = self.cpv.slot_abi
209 + self.sub_slot = self.cpv.sub_slot
210 # sync metadata with validated repo (may be UNKNOWN_REPO)
211 self.metadata['repository'] = self.cpv.repo
212
213
214 diff --git a/pym/_emerge/Scheduler.py b/pym/_emerge/Scheduler.py
215 index d40cedd..8ee9a58 100644
216 --- a/pym/_emerge/Scheduler.py
217 +++ b/pym/_emerge/Scheduler.py
218 @@ -328,15 +328,15 @@ class Scheduler(PollScheduler):
219 self._set_graph_config(graph_config)
220 self._blocker_db = {}
221 dynamic_deps = self.myopts.get("--dynamic-deps", "y") != "n"
222 - ignore_built_slot_abi_deps = self.myopts.get(
223 - "--ignore-built-slot-abi-deps", "n") == "y"
224 + ignore_built_slot_operator_deps = self.myopts.get(
225 + "--ignore-built-slot-operator-deps", "n") == "y"
226 for root in self.trees:
227 if self._uninstall_only:
228 continue
229 if graph_config is None:
230 fake_vartree = FakeVartree(self.trees[root]["root_config"],
231 pkg_cache=self._pkg_cache, dynamic_deps=dynamic_deps,
232 - ignore_built_slot_abi_deps=ignore_built_slot_abi_deps)
233 + ignore_built_slot_operator_deps=ignore_built_slot_operator_deps)
234 fake_vartree.sync()
235 else:
236 fake_vartree = graph_config.trees[root]['vartree']
237
238 diff --git a/pym/_emerge/create_depgraph_params.py b/pym/_emerge/create_depgraph_params.py
239 index 2838e93..98a7646 100644
240 --- a/pym/_emerge/create_depgraph_params.py
241 +++ b/pym/_emerge/create_depgraph_params.py
242 @@ -15,11 +15,11 @@ def create_depgraph_params(myopts, myaction):
243 # complete: completely account for all known dependencies
244 # remove: build graph for use in removing packages
245 # rebuilt_binaries: replace installed packages with rebuilt binaries
246 - # rebuild_if_new_slot_abi: rebuild or reinstall packages when
247 - # SLOT/ABI := operator dependencies can be satisfied by a newer
248 - # SLOT/ABI, so that older packages slots will become eligible for
249 + # rebuild_if_new_slot: rebuild or reinstall packages when
250 + # slot/sub-slot := operator dependencies can be satisfied by a newer
251 + # slot/sub-slot, so that older packages slots will become eligible for
252 # removal by the --depclean action as soon as possible
253 - # ignore_built_slot_abi_deps: ignore the SLOT/ABI := operator parts
254 + # ignore_built_slot_operator_deps: ignore the slot/sub-slot := operator parts
255 # of dependencies that have been recorded when packages where built
256 myparams = {"recurse" : True}
257
258 @@ -27,9 +27,9 @@ def create_depgraph_params(myopts, myaction):
259 if bdeps is not None:
260 myparams["bdeps"] = bdeps
261
262 - ignore_built_slot_abi_deps = myopts.get("--ignore-built-slot-abi-deps")
263 - if ignore_built_slot_abi_deps is not None:
264 - myparams["ignore_built_slot_abi_deps"] = ignore_built_slot_abi_deps
265 + ignore_built_slot_operator_deps = myopts.get("--ignore-built-slot-operator-deps")
266 + if ignore_built_slot_operator_deps is not None:
267 + myparams["ignore_built_slot_operator_deps"] = ignore_built_slot_operator_deps
268
269 dynamic_deps = myopts.get("--dynamic-deps")
270 if dynamic_deps is not None:
271 @@ -41,9 +41,9 @@ def create_depgraph_params(myopts, myaction):
272 myparams["selective"] = True
273 return myparams
274
275 - rebuild_if_new_slot_abi = myopts.get('--rebuild-if-new-slot-abi')
276 - if rebuild_if_new_slot_abi is not None:
277 - myparams['rebuild_if_new_slot_abi'] = rebuild_if_new_slot_abi
278 + rebuild_if_new_slot = myopts.get('--rebuild-if-new-slot')
279 + if rebuild_if_new_slot is not None:
280 + myparams['rebuild_if_new_slot'] = rebuild_if_new_slot
281
282 if "--update" in myopts or \
283 "--newuse" in myopts or \
284
285 diff --git a/pym/_emerge/depgraph.py b/pym/_emerge/depgraph.py
286 index 5c49e69..7df93e1 100644
287 --- a/pym/_emerge/depgraph.py
288 +++ b/pym/_emerge/depgraph.py
289 @@ -22,7 +22,7 @@ from portage.dbapi.dep_expand import dep_expand
290 from portage.dep import Atom, best_match_to_list, extract_affecting_use, \
291 check_required_use, human_readable_required_use, match_from_list, \
292 _repo_separator
293 -from portage.dep._slot_abi import ignore_built_slot_abi_deps
294 +from portage.dep._slot_abi import ignore_built_slot_operator_deps
295 from portage.eapi import eapi_has_strong_blocks, eapi_has_required_use
296 from portage.exception import (InvalidAtom, InvalidDependString,
297 PackageNotFound, PortageException)
298 @@ -115,8 +115,8 @@ class _frozen_depgraph_config(object):
299 self._pkg_cache = {}
300 self._highest_license_masked = {}
301 dynamic_deps = myopts.get("--dynamic-deps", "y") != "n"
302 - ignore_built_slot_abi_deps = myopts.get(
303 - "--ignore-built-slot-abi-deps", "n") == "y"
304 + ignore_built_slot_operator_deps = myopts.get(
305 + "--ignore-built-slot-operator-deps", "n") == "y"
306 for myroot in trees:
307 self.trees[myroot] = {}
308 # Create a RootConfig instance that references
309 @@ -132,7 +132,7 @@ class _frozen_depgraph_config(object):
310 pkg_cache=self._pkg_cache,
311 pkg_root_config=self.roots[myroot],
312 dynamic_deps=dynamic_deps,
313 - ignore_built_slot_abi_deps=ignore_built_slot_abi_deps)
314 + ignore_built_slot_operator_deps=ignore_built_slot_operator_deps)
315 self.pkgsettings[myroot] = portage.config(
316 clone=self.trees[myroot]["vartree"].settings)
317
318 @@ -412,7 +412,7 @@ class _dynamic_depgraph_config(object):
319 self._needed_license_changes = backtrack_parameters.needed_license_changes
320 self._needed_use_config_changes = backtrack_parameters.needed_use_config_changes
321 self._runtime_pkg_mask = backtrack_parameters.runtime_pkg_mask
322 - self._slot_abi_replace_installed = backtrack_parameters.slot_abi_replace_installed
323 + self._slot_operator_replace_installed = backtrack_parameters.slot_operator_replace_installed
324 self._need_restart = False
325 # For conditions that always require user intervention, such as
326 # unsatisfied REQUIRED_USE (currently has no autounmask support).
327 @@ -423,7 +423,7 @@ class _dynamic_depgraph_config(object):
328 self._success_without_autounmask = False
329 self._traverse_ignored_deps = False
330 self._complete_mode = False
331 - self._slot_abi_deps = {}
332 + self._slot_operator_deps = {}
333
334 for myroot in depgraph._frozen_config.trees:
335 self.sets[myroot] = _depgraph_sets()
336 @@ -956,7 +956,7 @@ class depgraph(object):
337
338 def _slot_conflict_backtrack_abi(self, pkg, slot_nodes, conflict_atoms):
339 """
340 - If one or more conflict atoms have a SLOT/ABI dep that can be resolved
341 + If one or more conflict atoms have a slot/sub-slot dep that can be resolved
342 by rebuilding the parent package, then schedule the rebuild via
343 backtracking, and return True. Otherwise, return False.
344 """
345 @@ -964,7 +964,7 @@ class depgraph(object):
346 found_update = False
347 for parent_atom, conflict_pkgs in conflict_atoms.items():
348 parent, atom = parent_atom
349 - if atom.slot_abi_op != "=" or not parent.built:
350 + if atom.slot_operator != "=" or not parent.built:
351 continue
352
353 if pkg not in conflict_pkgs:
354 @@ -977,13 +977,13 @@ class depgraph(object):
355 dep = Dependency(atom=atom, child=other_pkg,
356 parent=parent, root=pkg.root)
357
358 - if self._slot_abi_update_probe(dep):
359 - self._slot_abi_update_backtrack(dep)
360 + if self._slot_operator_update_probe(dep):
361 + self._slot_operator_update_backtrack(dep)
362 found_update = True
363
364 return found_update
365
366 - def _slot_abi_update_backtrack(self, dep, new_child_slot=None):
367 + def _slot_operator_update_backtrack(self, dep, new_child_slot=None):
368 if new_child_slot is None:
369 child = dep.child
370 else:
371 @@ -1008,11 +1008,11 @@ class depgraph(object):
372 abi_masks = {}
373 if new_child_slot is None:
374 if not child.installed:
375 - abi_masks.setdefault(child, {})["slot_abi_mask_built"] = None
376 + abi_masks.setdefault(child, {})["slot_operator_mask_built"] = None
377 if not dep.parent.installed:
378 - abi_masks.setdefault(dep.parent, {})["slot_abi_mask_built"] = None
379 + abi_masks.setdefault(dep.parent, {})["slot_operator_mask_built"] = None
380 if abi_masks:
381 - config.setdefault("slot_abi_mask_built", {}).update(abi_masks)
382 + config.setdefault("slot_operator_mask_built", {}).update(abi_masks)
383
384 # trigger replacement of installed packages if necessary
385 abi_reinstalls = set()
386 @@ -1021,15 +1021,15 @@ class depgraph(object):
387 if new_child_slot is None and child.installed:
388 abi_reinstalls.add((child.root, child.slot_atom))
389 if abi_reinstalls:
390 - config.setdefault("slot_abi_replace_installed",
391 + config.setdefault("slot_operator_replace_installed",
392 set()).update(abi_reinstalls)
393
394 self._dynamic_config._need_restart = True
395
396 - def _slot_abi_update_probe(self, dep, new_child_slot=False):
397 + def _slot_operator_update_probe(self, dep, new_child_slot=False):
398 """
399 - SLOT/ABI := operators tend to prevent updates from getting pulled in,
400 - since installed packages pull in packages with the SLOT/ABI that they
401 + slot/sub-slot := operators tend to prevent updates from getting pulled in,
402 + since installed packages pull in packages with the slot/sub-slot that they
403 were built against. Detect this case so that we can schedule rebuilds
404 and reinstalls when appropriate.
405 NOTE: This function only searches for updates that involve upgrades
406 @@ -1054,7 +1054,7 @@ class depgraph(object):
407 dep.parent.slot_atom):
408
409 for atom in replacement_parent.validated_atoms:
410 - if not atom.slot_abi_op == "=" or \
411 + if not atom.slot_operator == "=" or \
412 atom.blocker or \
413 atom.cp != dep.atom.cp:
414 continue
415 @@ -1074,8 +1074,8 @@ class depgraph(object):
416 for pkg in self._iter_similar_available(
417 dep.child, atom):
418 if pkg.slot == dep.child.slot and \
419 - pkg.slot_abi == dep.child.slot_abi:
420 - # If SLOT/ABI is identical, then there's
421 + pkg.sub_slot == dep.child.sub_slot:
422 + # If slot/sub-slot is identical, then there's
423 # no point in updating.
424 continue
425 if new_child_slot:
426 @@ -1093,7 +1093,7 @@ class depgraph(object):
427 want_downgrade = self._downgrade_probe(dep.child)
428 # be careful not to trigger a rebuild when
429 # the only version available with a
430 - # different slot_abi is an older version
431 + # different slot_operator is an older version
432 if not want_downgrade:
433 continue
434
435 @@ -1101,7 +1101,7 @@ class depgraph(object):
436 msg = []
437 msg.append("")
438 msg.append("")
439 - msg.append("slot_abi_update_probe:")
440 + msg.append("slot_operator_update_probe:")
441 msg.append(" existing child package: %s" % dep.child)
442 msg.append(" existing parent package: %s" % dep.parent)
443 msg.append(" new child package: %s" % pkg)
444 @@ -1116,7 +1116,7 @@ class depgraph(object):
445 msg = []
446 msg.append("")
447 msg.append("")
448 - msg.append("slot_abi_update_probe:")
449 + msg.append("slot_operator_update_probe:")
450 msg.append(" existing child package: %s" % dep.child)
451 msg.append(" existing parent package: %s" % dep.parent)
452 msg.append(" new child package: %s" % None)
453 @@ -1178,16 +1178,16 @@ class depgraph(object):
454 continue
455 yield pkg
456
457 - def _slot_abi_trigger_reinstalls(self):
458 + def _slot_operator_trigger_reinstalls(self):
459 """
460 - Search for packages with slot-abi deps on older slots, and schedule
461 + Search for packages with slot-operator deps on older slots, and schedule
462 rebuilds if they can link to a newer slot that's in the graph.
463 """
464
465 - rebuild_if_new_slot_abi = self._dynamic_config.myparams.get(
466 - "rebuild_if_new_slot_abi", "y") == "y"
467 + rebuild_if_new_slot = self._dynamic_config.myparams.get(
468 + "rebuild_if_new_slot", "y") == "y"
469
470 - for slot_key, slot_info in self._dynamic_config._slot_abi_deps.items():
471 + for slot_key, slot_info in self._dynamic_config._slot_operator_deps.items():
472
473 for dep in slot_info:
474 if not (dep.child.built and dep.parent and
475 @@ -1197,17 +1197,17 @@ class depgraph(object):
476 # Check for slot update first, since we don't want to
477 # trigger reinstall of the child package when a newer
478 # slot will be used instead.
479 - if rebuild_if_new_slot_abi:
480 - new_child = self._slot_abi_update_probe(dep,
481 + if rebuild_if_new_slot:
482 + new_child = self._slot_operator_update_probe(dep,
483 new_child_slot=True)
484 if new_child:
485 - self._slot_abi_update_backtrack(dep,
486 + self._slot_operator_update_backtrack(dep,
487 new_child_slot=new_child)
488 break
489
490 if dep.want_update:
491 - if self._slot_abi_update_probe(dep):
492 - self._slot_abi_update_backtrack(dep)
493 + if self._slot_operator_update_probe(dep):
494 + self._slot_operator_update_backtrack(dep)
495 break
496
497 def _reinstall_for_flags(self, pkg, forced_flags,
498 @@ -1614,8 +1614,8 @@ class depgraph(object):
499
500 dep.child = pkg
501 if (not pkg.onlydeps and pkg.built and
502 - dep.atom and dep.atom.slot_abi_built):
503 - self._add_slot_abi_dep(dep)
504 + dep.atom and dep.atom.slot_operator_built):
505 + self._add_slot_operator_dep(dep)
506
507 recurse = deep is True or depth + 1 <= deep
508 dep_stack = self._dynamic_config._dep_stack
509 @@ -1648,12 +1648,12 @@ class depgraph(object):
510 self._dynamic_config._parent_atoms[pkg] = parent_atoms
511 parent_atoms.add(parent_atom)
512
513 - def _add_slot_abi_dep(self, dep):
514 + def _add_slot_operator_dep(self, dep):
515 slot_key = (dep.root, dep.child.slot_atom)
516 - slot_info = self._dynamic_config._slot_abi_deps.get(slot_key)
517 + slot_info = self._dynamic_config._slot_operator_deps.get(slot_key)
518 if slot_info is None:
519 slot_info = []
520 - self._dynamic_config._slot_abi_deps[slot_key] = slot_info
521 + self._dynamic_config._slot_operator_deps[slot_key] = slot_info
522 slot_info.append(dep)
523
524 def _add_slot_conflict(self, pkg):
525 @@ -2106,12 +2106,12 @@ class depgraph(object):
526 # Yield ~, =*, < and <= atoms first, since those are more likely to
527 # cause slot conflicts, and we want those atoms to be displayed
528 # in the resulting slot conflict message (see bug #291142).
529 - # Give similar treatment to SLOT/ABI atoms.
530 + # Give similar treatment to slot/sub-slot atoms.
531 conflict_atoms = []
532 normal_atoms = []
533 abi_atoms = []
534 for atom in cp_atoms:
535 - if atom.slot_abi_built:
536 + if atom.slot_operator_built:
537 abi_atoms.append(atom)
538 continue
539 conflict = False
540 @@ -2553,8 +2553,8 @@ class depgraph(object):
541 atom_list.append((root, '__auto_rebuild__', atom))
542 for root, atom in self._rebuild.reinstall_list:
543 atom_list.append((root, '__auto_reinstall__', atom))
544 - for root, atom in self._dynamic_config._slot_abi_replace_installed:
545 - atom_list.append((root, '__auto_slot_abi_replace_installed__', atom))
546 + for root, atom in self._dynamic_config._slot_operator_replace_installed:
547 + atom_list.append((root, '__auto_slot_operator_replace_installed__', atom))
548
549 set_dict = {}
550 for root, set_name, atom in atom_list:
551 @@ -2708,8 +2708,8 @@ class depgraph(object):
552 return False, myfavorites
553
554 if "config" in self._dynamic_config._backtrack_infos and \
555 - ("slot_abi_mask_built" in self._dynamic_config._backtrack_infos["config"] or
556 - "slot_abi_replace_installed" in self._dynamic_config._backtrack_infos["config"]) and \
557 + ("slot_operator_mask_built" in self._dynamic_config._backtrack_infos["config"] or
558 + "slot_operator_replace_installed" in self._dynamic_config._backtrack_infos["config"]) and \
559 self.need_restart():
560 return False, myfavorites
561
562 @@ -2899,9 +2899,9 @@ class depgraph(object):
563 is_valid_flag=is_valid_flag, eapi=eapi)
564
565 if (self._dynamic_config.myparams.get(
566 - "ignore_built_slot_abi_deps", "n") == "y" and
567 + "ignore_built_slot_operator_deps", "n") == "y" and
568 parent and parent.built):
569 - ignore_built_slot_abi_deps(depstring)
570 + ignore_built_slot_operator_deps(depstring)
571
572 pkgsettings = self._frozen_config.pkgsettings[root]
573 if trees is None:
574 @@ -4660,9 +4660,9 @@ class depgraph(object):
575 "complete_if_new_use", "y") == "y"
576 complete_if_new_ver = self._dynamic_config.myparams.get(
577 "complete_if_new_ver", "y") == "y"
578 - rebuild_if_new_slot_abi = self._dynamic_config.myparams.get(
579 - "rebuild_if_new_slot_abi", "y") == "y"
580 - complete_if_new_slot = rebuild_if_new_slot_abi
581 + rebuild_if_new_slot = self._dynamic_config.myparams.get(
582 + "rebuild_if_new_slot", "y") == "y"
583 + complete_if_new_slot = rebuild_if_new_slot
584
585 if "complete" not in self._dynamic_config.myparams and \
586 (complete_if_new_use or
587 @@ -5346,7 +5346,7 @@ class depgraph(object):
588
589 self._process_slot_conflicts()
590
591 - self._slot_abi_trigger_reinstalls()
592 + self._slot_operator_trigger_reinstalls()
593
594 if not self._validate_blockers():
595 self._dynamic_config._skip_restart = True
596
597 diff --git a/pym/_emerge/main.py b/pym/_emerge/main.py
598 index d4b2901..049c3ec 100644
599 --- a/pym/_emerge/main.py
600 +++ b/pym/_emerge/main.py
601 @@ -478,7 +478,7 @@ def insert_optional_args(args):
602 '--package-moves' : y_or_n,
603 '--quiet' : y_or_n,
604 '--quiet-build' : y_or_n,
605 - '--rebuild-if-new-slot-abi': y_or_n,
606 + '--rebuild-if-new-slot': y_or_n,
607 '--rebuild-if-new-rev' : y_or_n,
608 '--rebuild-if-new-ver' : y_or_n,
609 '--rebuild-if-unbuilt' : y_or_n,
610 @@ -754,11 +754,11 @@ def parse_opts(tmpcmdline, silent=False):
611 "choices" : true_y_or_n
612 },
613
614 - "--ignore-built-slot-abi-deps": {
615 - "help": "Ignore the SLOT/ABI := operator parts of dependencies that have "
616 + "--ignore-built-slot-operator-deps": {
617 + "help": "Ignore the slot/sub-slot := operator parts of dependencies that have "
618 "been recorded when packages where built. This option is intended "
619 "only for debugging purposes, and it only affects built packages "
620 - "that specify SLOT/ABI := operator dependencies using the "
621 + "that specify slot/sub-slot := operator dependencies using the "
622 "experimental \"4-slot-abi\" EAPI.",
623 "type": "choice",
624 "choices": y_or_n
625 @@ -877,8 +877,8 @@ def parse_opts(tmpcmdline, silent=False):
626 "choices" : true_y_or_n,
627 },
628
629 - "--rebuild-if-new-slot-abi": {
630 - "help" : ("Automatically rebuild or reinstall packages when SLOT/ABI := "
631 + "--rebuild-if-new-slot": {
632 + "help" : ("Automatically rebuild or reinstall packages when slot/sub-slot := "
633 "operator dependencies can be satisfied by a newer slot, so that "
634 "older packages slots will become eligible for removal by the "
635 "--depclean action as soon as possible."),
636 @@ -1127,8 +1127,8 @@ def parse_opts(tmpcmdline, silent=False):
637 if myoptions.quiet_build in true_y:
638 myoptions.quiet_build = 'y'
639
640 - if myoptions.rebuild_if_new_slot_abi in true_y:
641 - myoptions.rebuild_if_new_slot_abi = 'y'
642 + if myoptions.rebuild_if_new_slot in true_y:
643 + myoptions.rebuild_if_new_slot = 'y'
644
645 if myoptions.rebuild_if_new_ver in true_y:
646 myoptions.rebuild_if_new_ver = True
647
648 diff --git a/pym/_emerge/resolver/backtracking.py b/pym/_emerge/resolver/backtracking.py
649 index d8f49c6..5456ea4 100644
650 --- a/pym/_emerge/resolver/backtracking.py
651 +++ b/pym/_emerge/resolver/backtracking.py
652 @@ -8,7 +8,7 @@ class BacktrackParameter(object):
653 __slots__ = (
654 "needed_unstable_keywords", "runtime_pkg_mask", "needed_use_config_changes", "needed_license_changes",
655 "rebuild_list", "reinstall_list", "needed_p_mask_changes",
656 - "slot_abi_replace_installed"
657 + "slot_operator_replace_installed"
658 )
659
660 def __init__(self):
661 @@ -19,7 +19,7 @@ class BacktrackParameter(object):
662 self.needed_license_changes = {}
663 self.rebuild_list = set()
664 self.reinstall_list = set()
665 - self.slot_abi_replace_installed = set()
666 + self.slot_operator_replace_installed = set()
667
668 def __deepcopy__(self, memo=None):
669 if memo is None:
670 @@ -35,7 +35,7 @@ class BacktrackParameter(object):
671 result.needed_license_changes = copy.copy(self.needed_license_changes)
672 result.rebuild_list = copy.copy(self.rebuild_list)
673 result.reinstall_list = copy.copy(self.reinstall_list)
674 - result.slot_abi_replace_installed = copy.copy(self.slot_abi_replace_installed)
675 + result.slot_operator_replace_installed = copy.copy(self.slot_operator_replace_installed)
676
677 # runtime_pkg_mask contains nested dicts that must also be copied
678 result.runtime_pkg_mask = {}
679 @@ -52,7 +52,7 @@ class BacktrackParameter(object):
680 self.needed_license_changes == other.needed_license_changes and \
681 self.rebuild_list == other.rebuild_list and \
682 self.reinstall_list == other.reinstall_list and \
683 - self.slot_abi_replace_installed == other.slot_abi_replace_installed
684 + self.slot_operator_replace_installed == other.slot_operator_replace_installed
685
686
687 class _BacktrackNode(object):
688 @@ -125,7 +125,7 @@ class Backtracker(object):
689 for pkg, mask_info in runtime_pkg_mask.items():
690
691 if "missing dependency" in mask_info or \
692 - "slot_abi_mask_built" in mask_info:
693 + "slot_operator_mask_built" in mask_info:
694 continue
695
696 entry_is_valid = False
697 @@ -192,12 +192,12 @@ class Backtracker(object):
698 para.needed_use_config_changes[pkg] = (new_use, new_changes)
699 elif change == "slot_conflict_abi":
700 new_node.terminal = False
701 - elif change == "slot_abi_mask_built":
702 + elif change == "slot_operator_mask_built":
703 for pkg, mask_reasons in data.items():
704 para.runtime_pkg_mask.setdefault(pkg,
705 {}).update(mask_reasons)
706 - elif change == "slot_abi_replace_installed":
707 - para.slot_abi_replace_installed.update(data)
708 + elif change == "slot_operator_replace_installed":
709 + para.slot_operator_replace_installed.update(data)
710 elif change == "rebuild_list":
711 para.rebuild_list.update(data)
712 elif change == "reinstall_list":
713
714 diff --git a/pym/_emerge/resolver/slot_collision.py b/pym/_emerge/resolver/slot_collision.py
715 index 783a648..bc95e91 100644
716 --- a/pym/_emerge/resolver/slot_collision.py
717 +++ b/pym/_emerge/resolver/slot_collision.py
718 @@ -291,8 +291,8 @@ class slot_conflict_handler(object):
719 num_all_specific_atoms += 1
720 collision_reasons[key] = atoms
721 else:
722 - # The slot_abi does not match.
723 - key = ("sub-slot", atom.slot_abi)
724 + # The sub_slot does not match.
725 + key = ("sub-slot", atom.sub_slot)
726 atoms = collision_reasons.get(key, set())
727 atoms.add((ppkg, atom, other_pkg))
728 num_all_specific_atoms += 1
729
730 diff --git a/pym/portage/dbapi/__init__.py b/pym/portage/dbapi/__init__.py
731 index f326e68..dc0a3da 100644
732 --- a/pym/portage/dbapi/__init__.py
733 +++ b/pym/portage/dbapi/__init__.py
734 @@ -348,9 +348,9 @@ class dbapi(object):
735 continue
736 moves += 1
737 if "/" not in newslot and \
738 - mycpv.slot_abi and \
739 - mycpv.slot_abi not in (mycpv.slot, newslot):
740 - newslot = "%s/%s" % (newslot, mycpv.slot_abi)
741 + mycpv.sub_slot and \
742 + mycpv.sub_slot not in (mycpv.slot, newslot):
743 + newslot = "%s/%s" % (newslot, mycpv.sub_slot)
744 mydata = {"SLOT": newslot+"\n"}
745 self.aux_update(mycpv, mydata)
746 return moves
747
748 diff --git a/pym/portage/dep/__init__.py b/pym/portage/dep/__init__.py
749 index b7bb46f..4d85f94 100644
750 --- a/pym/portage/dep/__init__.py
751 +++ b/pym/portage/dep/__init__.py
752 @@ -62,12 +62,12 @@ _extended_cat = r'[\w+*][\w+.*-]*'
753 _slot_re_cache = {}
754
755 def _get_slot_re(eapi_attrs):
756 - cache_key = eapi_attrs.slot_abi
757 + cache_key = eapi_attrs.slot_operator
758 slot_re = _slot_re_cache.get(cache_key)
759 if slot_re is not None:
760 return slot_re
761
762 - if eapi_attrs.slot_abi:
763 + if eapi_attrs.slot_operator:
764 slot_re = _slot + r'(/' + _slot + r'=?)?'
765 else:
766 slot_re = _slot
767 @@ -80,12 +80,12 @@ def _get_slot_re(eapi_attrs):
768 _slot_dep_re_cache = {}
769
770 def _get_slot_dep_re(eapi_attrs):
771 - cache_key = eapi_attrs.slot_abi
772 + cache_key = eapi_attrs.slot_operator
773 slot_re = _slot_dep_re_cache.get(cache_key)
774 if slot_re is not None:
775 return slot_re
776
777 - if eapi_attrs.slot_abi:
778 + if eapi_attrs.slot_operator:
779 slot_re = _slot + r'?(\*|=|/' + _slot + r'=?)?'
780 else:
781 slot_re = _slot
782 @@ -97,9 +97,9 @@ def _get_slot_dep_re(eapi_attrs):
783
784 def _match_slot(atom, pkg):
785 if pkg.slot == atom.slot:
786 - if not atom.slot_abi:
787 + if not atom.sub_slot:
788 return True
789 - elif atom.slot_abi == pkg.slot_abi:
790 + elif atom.sub_slot == pkg.sub_slot:
791 return True
792 return False
793
794 @@ -1311,32 +1311,32 @@ class Atom(_unicode):
795 self.__dict__['repo'] = repo
796 if slot is None:
797 self.__dict__['slot'] = None
798 - self.__dict__['slot_abi'] = None
799 - self.__dict__['slot_abi_op'] = None
800 + self.__dict__['sub_slot'] = None
801 + self.__dict__['slot_operator'] = None
802 else:
803 slot_re = _get_slot_dep_re(eapi_attrs)
804 slot_match = slot_re.match(slot)
805 if slot_match is None:
806 raise InvalidAtom(self)
807 - if eapi_attrs.slot_abi:
808 + if eapi_attrs.slot_operator:
809 self.__dict__['slot'] = slot_match.group(1)
810 - slot_abi = slot_match.group(2)
811 - if slot_abi is not None:
812 - slot_abi = slot_abi.lstrip("/")
813 - if slot_abi in ("*", "="):
814 - self.__dict__['slot_abi'] = None
815 - self.__dict__['slot_abi_op'] = slot_abi
816 + sub_slot = slot_match.group(2)
817 + if sub_slot is not None:
818 + sub_slot = sub_slot.lstrip("/")
819 + if sub_slot in ("*", "="):
820 + self.__dict__['sub_slot'] = None
821 + self.__dict__['slot_operator'] = sub_slot
822 else:
823 - slot_abi_op = None
824 - if slot_abi is not None and slot_abi[-1:] == "=":
825 - slot_abi_op = slot_abi[-1:]
826 - slot_abi = slot_abi[:-1]
827 - self.__dict__['slot_abi'] = slot_abi
828 - self.__dict__['slot_abi_op'] = slot_abi_op
829 + slot_operator = None
830 + if sub_slot is not None and sub_slot[-1:] == "=":
831 + slot_operator = sub_slot[-1:]
832 + sub_slot = sub_slot[:-1]
833 + self.__dict__['sub_slot'] = sub_slot
834 + self.__dict__['slot_operator'] = slot_operator
835 else:
836 self.__dict__['slot'] = slot
837 - self.__dict__['slot_abi'] = None
838 - self.__dict__['slot_abi_op'] = None
839 + self.__dict__['sub_slot'] = None
840 + self.__dict__['slot_operator'] = None
841 self.__dict__['operator'] = op
842 self.__dict__['extended_syntax'] = extended_syntax
843
844 @@ -1410,13 +1410,13 @@ class Atom(_unicode):
845 % (eapi, self), category='EAPI.incompatible')
846
847 @property
848 - def slot_abi_built(self):
849 + def slot_operator_built(self):
850 """
851 - Returns True if slot_abi_op == "=" and slot_abi is not None.
852 + Returns True if slot_operator == "=" and sub_slot is not None.
853 NOTE: foo/bar:2= is unbuilt and returns False, whereas foo/bar:2/2=
854 is built and returns True.
855 """
856 - return self.slot_abi_op == "=" and self.slot_abi is not None
857 + return self.slot_operator == "=" and self.sub_slot is not None
858
859 @property
860 def without_repo(self):
861 @@ -1427,7 +1427,7 @@ class Atom(_unicode):
862
863 @property
864 def without_slot(self):
865 - if self.slot is None and self.slot_abi_op is None:
866 + if self.slot is None and self.slot_operator is None:
867 return self
868 atom = remove_slot(self)
869 if self.repo is not None:
870 @@ -1439,14 +1439,14 @@ class Atom(_unicode):
871
872 def with_repo(self, repo):
873 atom = remove_slot(self)
874 - if self.slot is not None or self.slot_abi_op is not None:
875 + if self.slot is not None or self.slot_operator is not None:
876 atom += _slot_separator
877 if self.slot is not None:
878 atom += self.slot
879 - if self.slot_abi is not None:
880 - atom += "/%s" % self.slot_abi
881 - if self.slot_abi_op is not None:
882 - atom += self.slot_abi_op
883 + if self.sub_slot is not None:
884 + atom += "/%s" % self.sub_slot
885 + if self.slot_operator is not None:
886 + atom += self.slot_operator
887 atom += _repo_separator + repo
888 if self.use is not None:
889 atom += _unicode(self.use)
890 @@ -1506,14 +1506,14 @@ class Atom(_unicode):
891 if not (self.use and self.use.conditional):
892 return self
893 atom = remove_slot(self)
894 - if self.slot is not None or self.slot_abi_op is not None:
895 + if self.slot is not None or self.slot_operator is not None:
896 atom += _slot_separator
897 if self.slot is not None:
898 atom += self.slot
899 - if self.slot_abi is not None:
900 - atom += "/%s" % self.slot_abi
901 - if self.slot_abi_op is not None:
902 - atom += self.slot_abi_op
903 + if self.sub_slot is not None:
904 + atom += "/%s" % self.sub_slot
905 + if self.slot_operator is not None:
906 + atom += self.slot_operator
907 use_dep = self.use.evaluate_conditionals(use)
908 atom += _unicode(use_dep)
909 return Atom(atom, unevaluated_atom=self, allow_repo=(self.repo is not None), _use=use_dep)
910 @@ -1534,14 +1534,14 @@ class Atom(_unicode):
911 if not self.use:
912 return self
913 atom = remove_slot(self)
914 - if self.slot is not None or self.slot_abi_op is not None:
915 + if self.slot is not None or self.slot_operator is not None:
916 atom += _slot_separator
917 if self.slot is not None:
918 atom += self.slot
919 - if self.slot_abi is not None:
920 - atom += "/%s" % self.slot_abi
921 - if self.slot_abi_op is not None:
922 - atom += self.slot_abi_op
923 + if self.sub_slot is not None:
924 + atom += "/%s" % self.sub_slot
925 + if self.slot_operator is not None:
926 + atom += self.slot_operator
927 use_dep = self.use.violated_conditionals(other_use, is_valid_flag, parent_use)
928 atom += _unicode(use_dep)
929 return Atom(atom, unevaluated_atom=self, allow_repo=(self.repo is not None), _use=use_dep)
930 @@ -1550,14 +1550,14 @@ class Atom(_unicode):
931 if not (self.use and self.use.conditional):
932 return self
933 atom = remove_slot(self)
934 - if self.slot is not None or self.slot_abi_op is not None:
935 + if self.slot is not None or self.slot_operator is not None:
936 atom += _slot_separator
937 if self.slot is not None:
938 atom += self.slot
939 - if self.slot_abi is not None:
940 - atom += "/%s" % self.slot_abi
941 - if self.slot_abi_op is not None:
942 - atom += self.slot_abi_op
943 + if self.sub_slot is not None:
944 + atom += "/%s" % self.sub_slot
945 + if self.slot_operator is not None:
946 + atom += self.slot_operator
947 use_dep = self.use._eval_qa_conditionals(use_mask, use_force)
948 atom += _unicode(use_dep)
949 return Atom(atom, unevaluated_atom=self, allow_repo=(self.repo is not None), _use=use_dep)
950
951 diff --git a/pym/portage/dep/_slot_abi.py b/pym/portage/dep/_slot_abi.py
952 index 7c36e52..8a2b774 100644
953 --- a/pym/portage/dep/_slot_abi.py
954 +++ b/pym/portage/dep/_slot_abi.py
955 @@ -7,35 +7,35 @@ from portage.exception import InvalidData
956 _dep_keys = ('DEPEND', 'PDEPEND', 'RDEPEND')
957 _runtime_keys = ('PDEPEND', 'RDEPEND')
958
959 -def find_built_slot_abi_atoms(pkg):
960 +def find_built_slot_operator_atoms(pkg):
961 atoms = {}
962 for k in _dep_keys:
963 - atom_list = list(_find_built_slot_abi_op(use_reduce(pkg.metadata[k],
964 + atom_list = list(_find_built_slot_operator(use_reduce(pkg.metadata[k],
965 uselist=pkg.use.enabled, eapi=pkg.metadata['EAPI'],
966 token_class=Atom)))
967 if atom_list:
968 atoms[k] = atom_list
969 return atoms
970
971 -def _find_built_slot_abi_op(dep_struct):
972 +def _find_built_slot_operator(dep_struct):
973 for x in dep_struct:
974 if isinstance(x, list):
975 - for atom in _find_built_slot_abi_op(x):
976 + for atom in _find_built_slot_operator(x):
977 yield atom
978 - elif isinstance(x, Atom) and x.slot_abi_built:
979 + elif isinstance(x, Atom) and x.slot_operator_built:
980 yield x
981
982 -def ignore_built_slot_abi_deps(dep_struct):
983 +def ignore_built_slot_operator_deps(dep_struct):
984 for i, x in enumerate(dep_struct):
985 if isinstance(x, list):
986 - ignore_built_slot_abi_deps(x)
987 - elif isinstance(x, Atom) and x.slot_abi_built:
988 + ignore_built_slot_operator_deps(x)
989 + elif isinstance(x, Atom) and x.slot_operator_built:
990 # There's no way of knowing here whether the SLOT
991 - # part of the SLOT/ABI pair should be kept, so we
992 + # part of the slot/sub-slot pair should be kept, so we
993 # ignore both parts.
994 dep_struct[i] = x.without_slot
995
996 -def evaluate_slot_abi_equal_deps(settings, use, trees):
997 +def evaluate_slot_operator_equal_deps(settings, use, trees):
998
999 metadata = settings.configdict['pkg']
1000 eapi = metadata['EAPI']
1001 @@ -65,7 +65,7 @@ def _eval_deps(dep_struct, vardbs):
1002 for i, x in enumerate(dep_struct):
1003 if isinstance(x, list):
1004 _eval_deps(x, vardbs)
1005 - elif isinstance(x, Atom) and x.slot_abi_op == "=":
1006 + elif isinstance(x, Atom) and x.slot_operator == "=":
1007 for vardb in vardbs:
1008 best_version = vardb.match(x)
1009 if best_version:
1010 @@ -77,7 +77,7 @@ def _eval_deps(dep_struct, vardbs):
1011 pass
1012 else:
1013 slot_part = "%s/%s=" % \
1014 - (best_version.slot, best_version.slot_abi)
1015 + (best_version.slot, best_version.sub_slot)
1016 x = x.with_slot(slot_part)
1017 dep_struct[i] = x
1018 break
1019
1020 diff --git a/pym/portage/eapi.py b/pym/portage/eapi.py
1021 index 1d8da39..f13e791 100644
1022 --- a/pym/portage/eapi.py
1023 +++ b/pym/portage/eapi.py
1024 @@ -14,7 +14,7 @@ def eapi_has_iuse_effective(eapi):
1025 def eapi_has_slot_deps(eapi):
1026 return eapi != "0"
1027
1028 -def eapi_has_slot_abi(eapi):
1029 +def eapi_has_slot_operator(eapi):
1030 return eapi in ("4-slot-abi",)
1031
1032 def eapi_has_src_uri_arrows(eapi):
1033 @@ -80,7 +80,7 @@ def eapi_allows_dots_in_use_flags(eapi):
1034 _eapi_attrs = collections.namedtuple('_eapi_attrs',
1035 'dots_in_PN dots_in_use_flags exports_EBUILD_PHASE_FUNC '
1036 'iuse_defaults iuse_effective '
1037 - 'repo_deps required_use required_use_at_most_one_of slot_abi slot_deps '
1038 + 'repo_deps required_use required_use_at_most_one_of slot_operator slot_deps '
1039 'src_uri_arrows strong_blocks use_deps use_dep_defaults')
1040
1041 _eapi_attrs_cache = {}
1042 @@ -111,7 +111,7 @@ def _get_eapi_attrs(eapi):
1043 required_use = (eapi is None or eapi_has_required_use(eapi)),
1044 required_use_at_most_one_of = (eapi is None or eapi_has_required_use_at_most_one_of(eapi)),
1045 slot_deps = (eapi is None or eapi_has_slot_deps(eapi)),
1046 - slot_abi = (eapi is None or eapi_has_slot_abi(eapi)),
1047 + slot_operator = (eapi is None or eapi_has_slot_operator(eapi)),
1048 src_uri_arrows = (eapi is None or eapi_has_src_uri_arrows(eapi)),
1049 strong_blocks = (eapi is None or eapi_has_strong_blocks(eapi)),
1050 use_deps = (eapi is None or eapi_has_use_deps(eapi)),
1051
1052 diff --git a/pym/portage/package/ebuild/doebuild.py b/pym/portage/package/ebuild/doebuild.py
1053 index 5856f69..4c0c45d 100644
1054 --- a/pym/portage/package/ebuild/doebuild.py
1055 +++ b/pym/portage/package/ebuild/doebuild.py
1056 @@ -26,7 +26,7 @@ portage.proxy.lazyimport.lazyimport(globals(),
1057 'portage.package.ebuild.digestgen:digestgen',
1058 'portage.package.ebuild.fetch:fetch',
1059 'portage.package.ebuild._ipc.QueryCommand:QueryCommand',
1060 - 'portage.dep._slot_abi:evaluate_slot_abi_equal_deps',
1061 + 'portage.dep._slot_abi:evaluate_slot_operator_equal_deps',
1062 'portage.package.ebuild._spawn_nofetch:spawn_nofetch',
1063 'portage.util._desktop_entry:validate_desktop_entry',
1064 'portage.util.ExtractKernelVersion:ExtractKernelVersion'
1065 @@ -1691,7 +1691,7 @@ def _post_src_install_write_metadata(settings):
1066 continue
1067
1068 if k.endswith('DEPEND'):
1069 - if eapi_attrs.slot_abi:
1070 + if eapi_attrs.slot_operator:
1071 continue
1072 token_class = Atom
1073 else:
1074 @@ -1711,8 +1711,8 @@ def _post_src_install_write_metadata(settings):
1075 errors='strict') as f:
1076 f.write(_unicode_decode(v + '\n'))
1077
1078 - if eapi_attrs.slot_abi:
1079 - deps = evaluate_slot_abi_equal_deps(settings, use, QueryCommand.get_db())
1080 + if eapi_attrs.slot_operator:
1081 + deps = evaluate_slot_operator_equal_deps(settings, use, QueryCommand.get_db())
1082 for k, v in deps.items():
1083 filename = os.path.join(build_info_dir, k)
1084 if not v:
1085
1086 diff --git a/pym/portage/tests/dep/testAtom.py b/pym/portage/tests/dep/testAtom.py
1087 index f5a7d37..0c72fd0 100644
1088 --- a/pym/portage/tests/dep/testAtom.py
1089 +++ b/pym/portage/tests/dep/testAtom.py
1090 @@ -150,14 +150,14 @@ class TestAtom(TestCase):
1091
1092 def testSlotAbiAtom(self):
1093 tests = (
1094 - ("virtual/ffmpeg:0/53", "4-slot-abi", {"slot": "0", "slot_abi": "53", "slot_abi_op": None}),
1095 - ("virtual/ffmpeg:0/53=", "4-slot-abi", {"slot": "0", "slot_abi": "53", "slot_abi_op": "="}),
1096 - ("virtual/ffmpeg:=", "4-slot-abi", {"slot": None, "slot_abi": None, "slot_abi_op": "="}),
1097 - ("virtual/ffmpeg:0=", "4-slot-abi", {"slot": "0", "slot_abi": None, "slot_abi_op": "="}),
1098 - ("virtual/ffmpeg:*", "4-slot-abi", {"slot": None, "slot_abi": None, "slot_abi_op": "*"}),
1099 - ("virtual/ffmpeg:0*", "4-slot-abi", {"slot": "0", "slot_abi": None, "slot_abi_op": "*"}),
1100 - ("virtual/ffmpeg:0", "4-slot-abi", {"slot": "0", "slot_abi": None, "slot_abi_op": None}),
1101 - ("virtual/ffmpeg", "4-slot-abi", {"slot": None, "slot_abi": None, "slot_abi_op": None}),
1102 + ("virtual/ffmpeg:0/53", "4-slot-abi", {"slot": "0", "sub_slot": "53", "slot_operator": None}),
1103 + ("virtual/ffmpeg:0/53=", "4-slot-abi", {"slot": "0", "sub_slot": "53", "slot_operator": "="}),
1104 + ("virtual/ffmpeg:=", "4-slot-abi", {"slot": None, "sub_slot": None, "slot_operator": "="}),
1105 + ("virtual/ffmpeg:0=", "4-slot-abi", {"slot": "0", "sub_slot": None, "slot_operator": "="}),
1106 + ("virtual/ffmpeg:*", "4-slot-abi", {"slot": None, "sub_slot": None, "slot_operator": "*"}),
1107 + ("virtual/ffmpeg:0*", "4-slot-abi", {"slot": "0", "sub_slot": None, "slot_operator": "*"}),
1108 + ("virtual/ffmpeg:0", "4-slot-abi", {"slot": "0", "sub_slot": None, "slot_operator": None}),
1109 + ("virtual/ffmpeg", "4-slot-abi", {"slot": None, "sub_slot": None, "slot_operator": None}),
1110 )
1111
1112 for atom, eapi, parts in tests:
1113
1114 diff --git a/pym/portage/tests/dep/test_match_from_list.py b/pym/portage/tests/dep/test_match_from_list.py
1115 index d5d718f..2a1945b 100644
1116 --- a/pym/portage/tests/dep/test_match_from_list.py
1117 +++ b/pym/portage/tests/dep/test_match_from_list.py
1118 @@ -17,14 +17,14 @@ class Package(object):
1119 atom = Atom(atom, allow_repo=True)
1120 self.cp = atom.cp
1121 slot = atom.slot
1122 - if atom.slot_abi:
1123 - slot = "%s/%s" % (slot, atom.slot_abi)
1124 + if atom.sub_slot:
1125 + slot = "%s/%s" % (slot, atom.sub_slot)
1126 if not slot:
1127 slot = '0'
1128 self.cpv = _pkg_str(atom.cpv, slot=slot, repo=atom.repo)
1129 self.cpv_split = catpkgsplit(self.cpv)
1130 self.slot = self.cpv.slot
1131 - self.slot_abi = self.cpv.slot_abi
1132 + self.sub_slot = self.cpv.sub_slot
1133 self.repo = atom.repo
1134 if atom.use:
1135 self.use = self._use_class(atom.use.enabled)
1136
1137 diff --git a/pym/portage/tests/resolver/test_complete_graph.py b/pym/portage/tests/resolver/test_complete_graph.py
1138 index 1b0342c..95b1f88 100644
1139 --- a/pym/portage/tests/resolver/test_complete_graph.py
1140 +++ b/pym/portage/tests/resolver/test_complete_graph.py
1141 @@ -93,7 +93,7 @@ class CompleteGraphTestCase(TestCase):
1142 test_cases = (
1143 ResolverPlaygroundTestCase(
1144 [">=sys-libs/x-2"],
1145 - options = {"--complete-graph-if-new-ver" : "n", "--rebuild-if-new-slot-abi": "n"},
1146 + options = {"--complete-graph-if-new-ver" : "n", "--rebuild-if-new-slot": "n"},
1147 mergelist = ["sys-libs/x-2"],
1148 success = True,
1149 ),
1150 @@ -106,7 +106,7 @@ class CompleteGraphTestCase(TestCase):
1151 ),
1152 ResolverPlaygroundTestCase(
1153 ["<sys-libs/x-1"],
1154 - options = {"--complete-graph-if-new-ver" : "n", "--rebuild-if-new-slot-abi": "n"},
1155 + options = {"--complete-graph-if-new-ver" : "n", "--rebuild-if-new-slot": "n"},
1156 mergelist = ["sys-libs/x-0.1"],
1157 success = True,
1158 ),
1159
1160 diff --git a/pym/portage/tests/resolver/test_slot_abi.py b/pym/portage/tests/resolver/test_slot_abi.py
1161 index 6381bcc..8aed5d3 100644
1162 --- a/pym/portage/tests/resolver/test_slot_abi.py
1163 +++ b/pym/portage/tests/resolver/test_slot_abi.py
1164 @@ -65,7 +65,7 @@ class SlotAbiTestCase(TestCase):
1165
1166 ResolverPlaygroundTestCase(
1167 ["dev-libs/icu"],
1168 - options = {"--oneshot": True, "--ignore-built-slot-abi-deps": "y"},
1169 + options = {"--oneshot": True, "--ignore-built-slot-operator-deps": "y"},
1170 success = True,
1171 mergelist = ["dev-libs/icu-49"]),
1172
1173 @@ -83,7 +83,7 @@ class SlotAbiTestCase(TestCase):
1174
1175 ResolverPlaygroundTestCase(
1176 ["dev-libs/icu"],
1177 - options = {"--oneshot": True, "--usepkgonly": True, "--ignore-built-slot-abi-deps": "y"},
1178 + options = {"--oneshot": True, "--usepkgonly": True, "--ignore-built-slot-operator-deps": "y"},
1179 success = True,
1180 mergelist = ["[binary]dev-libs/icu-49"]),
1181
1182 @@ -95,7 +95,7 @@ class SlotAbiTestCase(TestCase):
1183
1184 ResolverPlaygroundTestCase(
1185 ["@world"],
1186 - options = {"--update": True, "--deep": True, "--ignore-built-slot-abi-deps": "y"},
1187 + options = {"--update": True, "--deep": True, "--ignore-built-slot-operator-deps": "y"},
1188 success = True,
1189 mergelist = ["dev-libs/icu-49"]),
1190
1191 @@ -113,7 +113,7 @@ class SlotAbiTestCase(TestCase):
1192
1193 ResolverPlaygroundTestCase(
1194 ["@world"],
1195 - options = {"--update": True, "--deep": True, "--usepkgonly": True, "--ignore-built-slot-abi-deps": "y"},
1196 + options = {"--update": True, "--deep": True, "--usepkgonly": True, "--ignore-built-slot-operator-deps": "y"},
1197 success = True,
1198 mergelist = ["[binary]dev-libs/icu-49"]),
1199
1200 @@ -178,7 +178,7 @@ class SlotAbiTestCase(TestCase):
1201
1202 ResolverPlaygroundTestCase(
1203 ["sys-libs/db"],
1204 - options = {"--oneshot": True, "--ignore-built-slot-abi-deps": "y"},
1205 + options = {"--oneshot": True, "--ignore-built-slot-operator-deps": "y"},
1206 success = True,
1207 mergelist = ["sys-libs/db-4.8"]),
1208
1209 @@ -196,7 +196,7 @@ class SlotAbiTestCase(TestCase):
1210
1211 ResolverPlaygroundTestCase(
1212 ["sys-libs/db"],
1213 - options = {"--oneshot": True, "--rebuild-if-new-slot-abi": "n"},
1214 + options = {"--oneshot": True, "--rebuild-if-new-slot": "n"},
1215 success = True,
1216 mergelist = ["sys-libs/db-4.8"]),
1217
1218 @@ -214,7 +214,7 @@ class SlotAbiTestCase(TestCase):
1219
1220 ResolverPlaygroundTestCase(
1221 ["@world"],
1222 - options = {"--update": True, "--deep": True, "--usepkg": True, "--ignore-built-slot-abi-deps": "y"},
1223 + options = {"--update": True, "--deep": True, "--usepkg": True, "--ignore-built-slot-operator-deps": "y"},
1224 success = True,
1225 mergelist = ["[binary]sys-libs/db-4.8"]),
1226
1227 @@ -226,13 +226,13 @@ class SlotAbiTestCase(TestCase):
1228
1229 ResolverPlaygroundTestCase(
1230 ["@world"],
1231 - options = {"--update": True, "--deep": True, "--usepkgonly": True, "--ignore-built-slot-abi-deps": "y"},
1232 + options = {"--update": True, "--deep": True, "--usepkgonly": True, "--ignore-built-slot-operator-deps": "y"},
1233 success = True,
1234 mergelist = ["[binary]sys-libs/db-4.8"]),
1235
1236 ResolverPlaygroundTestCase(
1237 ["@world"],
1238 - options = {"--update": True, "--deep": True, "--rebuild-if-new-slot-abi": "n"},
1239 + options = {"--update": True, "--deep": True, "--rebuild-if-new-slot": "n"},
1240 success = True,
1241 mergelist = []),
1242
1243 @@ -312,7 +312,7 @@ class SlotAbiTestCase(TestCase):
1244
1245 ResolverPlaygroundTestCase(
1246 ["dev-libs/glib"],
1247 - options = {"--oneshot": True, "--ignore-built-slot-abi-deps": "y"},
1248 + options = {"--oneshot": True, "--ignore-built-slot-operator-deps": "y"},
1249 success = True,
1250 mergelist = ["dev-libs/glib-2.32.3"]),
1251
1252 @@ -330,7 +330,7 @@ class SlotAbiTestCase(TestCase):
1253
1254 ResolverPlaygroundTestCase(
1255 ["dev-libs/glib"],
1256 - options = {"--oneshot": True, "--usepkgonly": True, "--ignore-built-slot-abi-deps": "y"},
1257 + options = {"--oneshot": True, "--usepkgonly": True, "--ignore-built-slot-operator-deps": "y"},
1258 success = True,
1259 mergelist = ["[binary]dev-libs/glib-2.32.3"]),
1260
1261 @@ -342,7 +342,7 @@ class SlotAbiTestCase(TestCase):
1262
1263 ResolverPlaygroundTestCase(
1264 ["@world"],
1265 - options = {"--update": True, "--deep": True, "--ignore-built-slot-abi-deps": "y"},
1266 + options = {"--update": True, "--deep": True, "--ignore-built-slot-operator-deps": "y"},
1267 success = True,
1268 mergelist = ["dev-libs/glib-2.32.3"]),
1269
1270 @@ -360,7 +360,7 @@ class SlotAbiTestCase(TestCase):
1271
1272 ResolverPlaygroundTestCase(
1273 ["@world"],
1274 - options = {"--update": True, "--deep": True, "--usepkgonly": True, "--ignore-built-slot-abi-deps": "y"},
1275 + options = {"--update": True, "--deep": True, "--usepkgonly": True, "--ignore-built-slot-operator-deps": "y"},
1276 success = True,
1277 mergelist = ["[binary]dev-libs/glib-2.32.3"]),
1278
1279
1280 diff --git a/pym/portage/tests/resolver/test_slot_abi_downgrade.py b/pym/portage/tests/resolver/test_slot_abi_downgrade.py
1281 index 45a7555..08e9a9d 100644
1282 --- a/pym/portage/tests/resolver/test_slot_abi_downgrade.py
1283 +++ b/pym/portage/tests/resolver/test_slot_abi_downgrade.py
1284 @@ -61,7 +61,7 @@ class SlotAbiDowngradeTestCase(TestCase):
1285
1286 ResolverPlaygroundTestCase(
1287 ["dev-libs/icu"],
1288 - options = {"--oneshot": True, "--ignore-built-slot-abi-deps": "y"},
1289 + options = {"--oneshot": True, "--ignore-built-slot-operator-deps": "y"},
1290 success = True,
1291 mergelist = ["dev-libs/icu-4.8"]),
1292
1293 @@ -85,7 +85,7 @@ class SlotAbiDowngradeTestCase(TestCase):
1294
1295 ResolverPlaygroundTestCase(
1296 ["@world"],
1297 - options = {"--update": True, "--deep": True, "--ignore-built-slot-abi-deps": "y"},
1298 + options = {"--update": True, "--deep": True, "--ignore-built-slot-operator-deps": "y"},
1299 success = True,
1300 mergelist = ["dev-libs/icu-4.8"]),
1301
1302 @@ -173,7 +173,7 @@ class SlotAbiDowngradeTestCase(TestCase):
1303
1304 ResolverPlaygroundTestCase(
1305 ["dev-libs/glib"],
1306 - options = {"--oneshot": True, "--ignore-built-slot-abi-deps": "y"},
1307 + options = {"--oneshot": True, "--ignore-built-slot-operator-deps": "y"},
1308 success = True,
1309 mergelist = ["dev-libs/glib-2.30.2"]),
1310
1311 @@ -197,7 +197,7 @@ class SlotAbiDowngradeTestCase(TestCase):
1312
1313 ResolverPlaygroundTestCase(
1314 ["@world"],
1315 - options = {"--update": True, "--deep": True, "--ignore-built-slot-abi-deps": "y"},
1316 + options = {"--update": True, "--deep": True, "--ignore-built-slot-operator-deps": "y"},
1317 success = True,
1318 mergelist = ["dev-libs/glib-2.30.2"]),
1319
1320
1321 diff --git a/pym/portage/versions.py b/pym/portage/versions.py
1322 index 692256b..242623f 100644
1323 --- a/pym/portage/versions.py
1324 +++ b/pym/portage/versions.py
1325 @@ -372,19 +372,19 @@ class _pkg_str(_unicode):
1326 if slot_match is None:
1327 # Avoid an InvalidAtom exception when creating SLOT atoms
1328 self.__dict__['slot'] = '0'
1329 - self.__dict__['slot_abi'] = '0'
1330 + self.__dict__['sub_slot'] = '0'
1331 self.__dict__['slot_invalid'] = slot
1332 else:
1333 - if eapi_attrs.slot_abi:
1334 + if eapi_attrs.slot_operator:
1335 slot_split = slot.split("/")
1336 self.__dict__['slot'] = slot_split[0]
1337 if len(slot_split) > 1:
1338 - self.__dict__['slot_abi'] = slot_split[1]
1339 + self.__dict__['sub_slot'] = slot_split[1]
1340 else:
1341 - self.__dict__['slot_abi'] = slot_split[0]
1342 + self.__dict__['sub_slot'] = slot_split[0]
1343 else:
1344 self.__dict__['slot'] = slot
1345 - self.__dict__['slot_abi'] = slot
1346 + self.__dict__['sub_slot'] = slot
1347
1348 if repo is not None:
1349 repo = _gen_valid_repo(repo)