From 3ee4929c733a6c03f74d6e3f2ced29c30d0ca7b5 Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Sun, 2 Sep 2012 16:03:14 -0700 Subject: Rename _slot_abi.py to _slot_operator.py. --- pym/_emerge/FakeVartree.py | 2 +- pym/_emerge/depgraph.py | 2 +- pym/portage/dep/_slot_abi.py | 92 ---------------------------------- pym/portage/dep/_slot_operator.py | 92 ++++++++++++++++++++++++++++++++++ pym/portage/package/ebuild/doebuild.py | 2 +- 5 files changed, 95 insertions(+), 95 deletions(-) delete mode 100644 pym/portage/dep/_slot_abi.py create mode 100644 pym/portage/dep/_slot_operator.py diff --git a/pym/_emerge/FakeVartree.py b/pym/_emerge/FakeVartree.py index 386501586..fb1281c29 100644 --- a/pym/_emerge/FakeVartree.py +++ b/pym/_emerge/FakeVartree.py @@ -10,7 +10,7 @@ from _emerge.Package import Package from _emerge.PackageVirtualDbapi import PackageVirtualDbapi from portage.const import VDB_PATH from portage.dbapi.vartree import vartree -from portage.dep._slot_abi import find_built_slot_operator_atoms +from portage.dep._slot_operator import find_built_slot_operator_atoms from portage.eapi import _get_eapi_attrs from portage.exception import InvalidDependString from portage.repository.config import _gen_valid_repo diff --git a/pym/_emerge/depgraph.py b/pym/_emerge/depgraph.py index 7df93e194..3b0f4a61e 100644 --- a/pym/_emerge/depgraph.py +++ b/pym/_emerge/depgraph.py @@ -22,7 +22,7 @@ from portage.dbapi.dep_expand import dep_expand from portage.dep import Atom, best_match_to_list, extract_affecting_use, \ check_required_use, human_readable_required_use, match_from_list, \ _repo_separator -from portage.dep._slot_abi import ignore_built_slot_operator_deps +from portage.dep._slot_operator import ignore_built_slot_operator_deps from portage.eapi import eapi_has_strong_blocks, eapi_has_required_use from portage.exception import (InvalidAtom, InvalidDependString, PackageNotFound, PortageException) diff --git a/pym/portage/dep/_slot_abi.py b/pym/portage/dep/_slot_abi.py deleted file mode 100644 index 8a2b774a8..000000000 --- a/pym/portage/dep/_slot_abi.py +++ /dev/null @@ -1,92 +0,0 @@ -# Copyright 2012 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 - -from portage.dep import Atom, paren_enclose, use_reduce -from portage.exception import InvalidData - -_dep_keys = ('DEPEND', 'PDEPEND', 'RDEPEND') -_runtime_keys = ('PDEPEND', 'RDEPEND') - -def find_built_slot_operator_atoms(pkg): - atoms = {} - for k in _dep_keys: - atom_list = list(_find_built_slot_operator(use_reduce(pkg.metadata[k], - uselist=pkg.use.enabled, eapi=pkg.metadata['EAPI'], - token_class=Atom))) - if atom_list: - atoms[k] = atom_list - return atoms - -def _find_built_slot_operator(dep_struct): - for x in dep_struct: - if isinstance(x, list): - for atom in _find_built_slot_operator(x): - yield atom - elif isinstance(x, Atom) and x.slot_operator_built: - yield x - -def ignore_built_slot_operator_deps(dep_struct): - for i, x in enumerate(dep_struct): - if isinstance(x, list): - ignore_built_slot_operator_deps(x) - elif isinstance(x, Atom) and x.slot_operator_built: - # There's no way of knowing here whether the SLOT - # part of the slot/sub-slot pair should be kept, so we - # ignore both parts. - dep_struct[i] = x.without_slot - -def evaluate_slot_operator_equal_deps(settings, use, trees): - - metadata = settings.configdict['pkg'] - eapi = metadata['EAPI'] - running_vardb = trees[trees._running_eroot]["vartree"].dbapi - target_vardb = trees[trees._target_eroot]["vartree"].dbapi - vardbs = [target_vardb] - deps = {} - for k in _dep_keys: - deps[k] = use_reduce(metadata[k], - uselist=use, eapi=eapi, token_class=Atom) - - for k in _runtime_keys: - _eval_deps(deps[k], vardbs) - - if running_vardb is not target_vardb: - vardbs.append(running_vardb) - - _eval_deps(deps["DEPEND"], vardbs) - - result = {} - for k, v in deps.items(): - result[k] = paren_enclose(v) - - return result - -def _eval_deps(dep_struct, vardbs): - for i, x in enumerate(dep_struct): - if isinstance(x, list): - _eval_deps(x, vardbs) - elif isinstance(x, Atom) and x.slot_operator == "=": - for vardb in vardbs: - best_version = vardb.match(x) - if best_version: - best_version = best_version[-1] - try: - best_version = \ - vardb._pkg_str(best_version, None) - except (KeyError, InvalidData): - pass - else: - slot_part = "%s/%s=" % \ - (best_version.slot, best_version.sub_slot) - x = x.with_slot(slot_part) - dep_struct[i] = x - break - else: - # this dep could not be resolved, so remove the operator - # (user may be using package.provided and managing rebuilds - # manually) - if x.slot: - x = x.with_slot(x.slot) - else: - x = x.without_slot - dep_struct[i] = x diff --git a/pym/portage/dep/_slot_operator.py b/pym/portage/dep/_slot_operator.py new file mode 100644 index 000000000..8a2b774a8 --- /dev/null +++ b/pym/portage/dep/_slot_operator.py @@ -0,0 +1,92 @@ +# Copyright 2012 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +from portage.dep import Atom, paren_enclose, use_reduce +from portage.exception import InvalidData + +_dep_keys = ('DEPEND', 'PDEPEND', 'RDEPEND') +_runtime_keys = ('PDEPEND', 'RDEPEND') + +def find_built_slot_operator_atoms(pkg): + atoms = {} + for k in _dep_keys: + atom_list = list(_find_built_slot_operator(use_reduce(pkg.metadata[k], + uselist=pkg.use.enabled, eapi=pkg.metadata['EAPI'], + token_class=Atom))) + if atom_list: + atoms[k] = atom_list + return atoms + +def _find_built_slot_operator(dep_struct): + for x in dep_struct: + if isinstance(x, list): + for atom in _find_built_slot_operator(x): + yield atom + elif isinstance(x, Atom) and x.slot_operator_built: + yield x + +def ignore_built_slot_operator_deps(dep_struct): + for i, x in enumerate(dep_struct): + if isinstance(x, list): + ignore_built_slot_operator_deps(x) + elif isinstance(x, Atom) and x.slot_operator_built: + # There's no way of knowing here whether the SLOT + # part of the slot/sub-slot pair should be kept, so we + # ignore both parts. + dep_struct[i] = x.without_slot + +def evaluate_slot_operator_equal_deps(settings, use, trees): + + metadata = settings.configdict['pkg'] + eapi = metadata['EAPI'] + running_vardb = trees[trees._running_eroot]["vartree"].dbapi + target_vardb = trees[trees._target_eroot]["vartree"].dbapi + vardbs = [target_vardb] + deps = {} + for k in _dep_keys: + deps[k] = use_reduce(metadata[k], + uselist=use, eapi=eapi, token_class=Atom) + + for k in _runtime_keys: + _eval_deps(deps[k], vardbs) + + if running_vardb is not target_vardb: + vardbs.append(running_vardb) + + _eval_deps(deps["DEPEND"], vardbs) + + result = {} + for k, v in deps.items(): + result[k] = paren_enclose(v) + + return result + +def _eval_deps(dep_struct, vardbs): + for i, x in enumerate(dep_struct): + if isinstance(x, list): + _eval_deps(x, vardbs) + elif isinstance(x, Atom) and x.slot_operator == "=": + for vardb in vardbs: + best_version = vardb.match(x) + if best_version: + best_version = best_version[-1] + try: + best_version = \ + vardb._pkg_str(best_version, None) + except (KeyError, InvalidData): + pass + else: + slot_part = "%s/%s=" % \ + (best_version.slot, best_version.sub_slot) + x = x.with_slot(slot_part) + dep_struct[i] = x + break + else: + # this dep could not be resolved, so remove the operator + # (user may be using package.provided and managing rebuilds + # manually) + if x.slot: + x = x.with_slot(x.slot) + else: + x = x.without_slot + dep_struct[i] = x diff --git a/pym/portage/package/ebuild/doebuild.py b/pym/portage/package/ebuild/doebuild.py index 3dedfd4bf..471a5daeb 100644 --- a/pym/portage/package/ebuild/doebuild.py +++ b/pym/portage/package/ebuild/doebuild.py @@ -26,7 +26,7 @@ portage.proxy.lazyimport.lazyimport(globals(), 'portage.package.ebuild.digestgen:digestgen', 'portage.package.ebuild.fetch:fetch', 'portage.package.ebuild._ipc.QueryCommand:QueryCommand', - 'portage.dep._slot_abi:evaluate_slot_operator_equal_deps', + 'portage.dep._slot_operator:evaluate_slot_operator_equal_deps', 'portage.package.ebuild._spawn_nofetch:spawn_nofetch', 'portage.util._desktop_entry:validate_desktop_entry', 'portage.util.ExtractKernelVersion:ExtractKernelVersion' -- cgit v1.2.3-1-g7c22