summaryrefslogtreecommitdiffstats
path: root/pym/_emerge
diff options
context:
space:
mode:
authorSebastian Luther <SebastianLuther@gmx.de>2010-09-21 10:10:41 +0200
committerZac Medico <zmedico@gentoo.org>2010-09-26 23:50:14 -0700
commite177e729bad3659cb2610f511928f90868bbebc3 (patch)
tree2016562a5a3154f4632cfae20b78baf98413b6ab /pym/_emerge
parent5e94065640c219d9cf4ae1e632d638d88c007912 (diff)
downloadportage-e177e729bad3659cb2610f511928f90868bbebc3.tar.gz
portage-e177e729bad3659cb2610f511928f90868bbebc3.tar.bz2
portage-e177e729bad3659cb2610f511928f90868bbebc3.zip
reposyntax: Add support all over the place
Diffstat (limited to 'pym/_emerge')
-rw-r--r--pym/_emerge/AtomArg.py2
-rw-r--r--pym/_emerge/EbuildBuild.py2
-rw-r--r--pym/_emerge/EbuildFetcher.py2
-rw-r--r--pym/_emerge/EbuildFetchonly.py4
-rw-r--r--pym/_emerge/FakeVartree.py2
-rw-r--r--pym/_emerge/MergeListItem.py2
-rw-r--r--pym/_emerge/Package.py16
-rw-r--r--pym/_emerge/PackageVirtualDbapi.py2
-rw-r--r--pym/_emerge/Scheduler.py8
-rw-r--r--pym/_emerge/actions.py4
-rw-r--r--pym/_emerge/depgraph.py91
-rw-r--r--pym/_emerge/is_valid_package_atom.py11
-rw-r--r--pym/_emerge/main.py2
-rw-r--r--pym/_emerge/resolver/output.py8
14 files changed, 84 insertions, 72 deletions
diff --git a/pym/_emerge/AtomArg.py b/pym/_emerge/AtomArg.py
index f7740753c..a929b433e 100644
--- a/pym/_emerge/AtomArg.py
+++ b/pym/_emerge/AtomArg.py
@@ -8,4 +8,4 @@ class AtomArg(DependencyArg):
def __init__(self, atom=None, **kwargs):
DependencyArg.__init__(self, **kwargs)
self.atom = atom
- self.pset = InternalPackageSet(initial_atoms=(self.atom,))
+ self.pset = InternalPackageSet(initial_atoms=(self.atom,), allow_repo=True)
diff --git a/pym/_emerge/EbuildBuild.py b/pym/_emerge/EbuildBuild.py
index 974a1586a..0f9b85cc3 100644
--- a/pym/_emerge/EbuildBuild.py
+++ b/pym/_emerge/EbuildBuild.py
@@ -42,7 +42,7 @@ class EbuildBuild(CompositeTask):
portdb = root_config.trees[tree].dbapi
settings.setcpv(pkg)
settings.configdict["pkg"]["EMERGE_FROM"] = pkg.type_name
- ebuild_path = portdb.findname(pkg.cpv)
+ ebuild_path = portdb.findname(pkg.cpv, myrepo=pkg.repo)
if ebuild_path is None:
raise AssertionError("ebuild not found for '%s'" % pkg.cpv)
self._ebuild_path = ebuild_path
diff --git a/pym/_emerge/EbuildFetcher.py b/pym/_emerge/EbuildFetcher.py
index 191d56ee7..3446918b6 100644
--- a/pym/_emerge/EbuildFetcher.py
+++ b/pym/_emerge/EbuildFetcher.py
@@ -20,7 +20,7 @@ class EbuildFetcher(SpawnProcess):
root_config = self.pkg.root_config
portdb = root_config.trees["porttree"].dbapi
- ebuild_path = portdb.findname(self.pkg.cpv)
+ ebuild_path = portdb.findname(self.pkg.cpv, myrepo=self.pkg.repo)
if ebuild_path is None:
raise AssertionError("ebuild not found for '%s'" % self.pkg.cpv)
diff --git a/pym/_emerge/EbuildFetchonly.py b/pym/_emerge/EbuildFetchonly.py
index 8e02c2a77..0ab1a723e 100644
--- a/pym/_emerge/EbuildFetchonly.py
+++ b/pym/_emerge/EbuildFetchonly.py
@@ -15,7 +15,7 @@ class EbuildFetchonly(SlotObject):
settings = self.settings
pkg = self.pkg
portdb = pkg.root_config.trees["porttree"].dbapi
- ebuild_path = portdb.findname(pkg.cpv)
+ ebuild_path = portdb.findname(pkg.cpv, myrepo=pkg.repo)
if ebuild_path is None:
raise AssertionError("ebuild not found for '%s'" % pkg.cpv)
settings.setcpv(pkg)
@@ -64,7 +64,7 @@ class EbuildFetchonly(SlotObject):
pkg = self.pkg
root_config = pkg.root_config
portdb = root_config.trees["porttree"].dbapi
- ebuild_path = portdb.findname(pkg.cpv)
+ ebuild_path = portdb.findname(pkg.cpv, myrepo=pkg.repo)
if ebuild_path is None:
raise AssertionError("ebuild not found for '%s'" % pkg.cpv)
debug = settings.get("PORTAGE_DEBUG") == "1"
diff --git a/pym/_emerge/FakeVartree.py b/pym/_emerge/FakeVartree.py
index 977824c78..64a39cf4d 100644
--- a/pym/_emerge/FakeVartree.py
+++ b/pym/_emerge/FakeVartree.py
@@ -81,7 +81,7 @@ class FakeVartree(vartree):
self._aux_get_wrapper(cpv, [])
return matches
- def _aux_get_wrapper(self, pkg, wants):
+ def _aux_get_wrapper(self, pkg, wants, myrepo=None):
if pkg in self._aux_get_history:
return self._aux_get(pkg, wants)
self._aux_get_history.add(pkg)
diff --git a/pym/_emerge/MergeListItem.py b/pym/_emerge/MergeListItem.py
index e7856ccfc..0eadb7d99 100644
--- a/pym/_emerge/MergeListItem.py
+++ b/pym/_emerge/MergeListItem.py
@@ -61,7 +61,7 @@ class MergeListItem(CompositeTask):
portdb = pkg.root_config.trees["porttree"].dbapi
portdir_repo_name = portdb._repository_map.get(portdb.porttree_root)
if portdir_repo_name:
- pkg_repo_name = pkg.metadata.get("repository")
+ pkg_repo_name = pkg.repo
if pkg_repo_name != portdir_repo_name:
if not pkg_repo_name:
pkg_repo_name = "unknown repo"
diff --git a/pym/_emerge/Package.py b/pym/_emerge/Package.py
index 66ac7ff67..ba7fa42f8 100644
--- a/pym/_emerge/Package.py
+++ b/pym/_emerge/Package.py
@@ -8,7 +8,7 @@ from portage import _encodings, _unicode_decode, _unicode_encode
from portage.cache.mappings import slot_dict_class
from portage.const import EBUILD_PHASES
from portage.dep import Atom, check_required_use, use_reduce, \
- paren_enclose, _slot_re
+ paren_enclose, _slot_re, _slot_separator, _repo_separator
from portage.eapi import eapi_has_iuse_defaults, eapi_has_required_use
from portage.exception import InvalidDependString
from _emerge.Task import Task
@@ -26,7 +26,7 @@ class Package(Task):
"category", "counter", "cp", "cpv_split",
"inherited", "invalid", "iuse", "masks", "mtime",
"pf", "pv_split", "root", "slot", "slot_atom", "visible",) + \
- ("_raw_metadata", "_use",)
+ ("_raw_metadata", "_use", "_repo",)
metadata_keys = [
"BUILD_TIME", "CHOST", "COUNTER", "DEPEND", "EAPI",
@@ -58,7 +58,7 @@ class Package(Task):
if not self.installed:
self._invalid_metadata('EAPI.incompatible',
"IUSE contains defaults, but EAPI doesn't allow them")
- self.slot_atom = portage.dep.Atom("%s:%s" % (self.cp, slot))
+ self.slot_atom = portage.dep.Atom("%s%s%s" % (self.cp, _slot_separator, slot))
self.category, self.pf = portage.catsplit(self.cpv)
self.cpv_split = portage.catpkgsplit(self.cpv)
self.pv_split = self.cpv_split[1:]
@@ -283,7 +283,7 @@ class Package(Task):
cpv_color = "PKG_NOMERGE"
s = "(%s, %s" \
- % (portage.output.colorize(cpv_color, self.cpv) , self.type_name)
+ % (portage.output.colorize(cpv_color, self.cpv + _repo_separator + self.repo) , self.type_name)
if self.type_name == "installed":
if self.root != "/":
@@ -314,6 +314,12 @@ class Package(Task):
self.enabled = frozenset(use)
@property
+ def repo(self):
+ if self._repo is None:
+ self._repo = self.metadata['repository']
+ return self._repo
+
+ @property
def use(self):
if self._use is None:
self._use = self._use_class(self.metadata['USE'].split())
@@ -377,7 +383,7 @@ class Package(Task):
if self.onlydeps or self.installed:
self.operation = "nomerge"
self._hash_key = \
- (self.type_name, self.root, self.cpv, self.operation)
+ (self.type_name, self.root, self.cpv, self.operation, self.metadata.get('repository', None))
return self._hash_key
def __lt__(self, other):
diff --git a/pym/_emerge/PackageVirtualDbapi.py b/pym/_emerge/PackageVirtualDbapi.py
index 45a183e60..129a51615 100644
--- a/pym/_emerge/PackageVirtualDbapi.py
+++ b/pym/_emerge/PackageVirtualDbapi.py
@@ -135,7 +135,7 @@ class PackageVirtualDbapi(dbapi):
del self._cpv_map[pkg.cpv]
self._clear_cache()
- def aux_get(self, cpv, wants):
+ def aux_get(self, cpv, wants, myrepo=None):
metadata = self._cpv_map[cpv].metadata
return [metadata.get(x, "") for x in wants]
diff --git a/pym/_emerge/Scheduler.py b/pym/_emerge/Scheduler.py
index 4b6b80f76..463b6146e 100644
--- a/pym/_emerge/Scheduler.py
+++ b/pym/_emerge/Scheduler.py
@@ -154,7 +154,7 @@ class Scheduler(PollScheduler):
self._spinner = spinner
self._mtimedb = mtimedb
self._favorites = favorites
- self._args_set = InternalPackageSet(favorites)
+ self._args_set = InternalPackageSet(favorites, allow_repo=True)
self._build_opts = self._build_opts_class()
for k in self._build_opts.__slots__:
setattr(self._build_opts, k, "--" + k.replace("_", "-") in myopts)
@@ -703,7 +703,7 @@ class Scheduler(PollScheduler):
'digest' not in pkgsettings.features:
continue
portdb = x.root_config.trees['porttree'].dbapi
- ebuild_path = portdb.findname(x.cpv)
+ ebuild_path = portdb.findname(x.cpv, myrepo=x.repo)
if ebuild_path is None:
raise AssertionError("ebuild not found for '%s'" % x.cpv)
pkgsettings['O'] = os.path.dirname(ebuild_path)
@@ -780,7 +780,7 @@ class Scheduler(PollScheduler):
root_config = x.root_config
portdb = root_config.trees["porttree"].dbapi
quiet_config = quiet_settings[root_config.root]
- ebuild_path = portdb.findname(x.cpv)
+ ebuild_path = portdb.findname(x.cpv, myrepo=x.repo)
if ebuild_path is None:
raise AssertionError("ebuild not found for '%s'" % x.cpv)
quiet_config["O"] = os.path.dirname(ebuild_path)
@@ -983,7 +983,7 @@ class Scheduler(PollScheduler):
else:
tree = "porttree"
portdb = root_config.trees["porttree"].dbapi
- ebuild_path = portdb.findname(x.cpv)
+ ebuild_path = portdb.findname(x.cpv, myrepo=x.repo)
if ebuild_path is None:
raise AssertionError("ebuild not found for '%s'" % x.cpv)
diff --git a/pym/_emerge/actions.py b/pym/_emerge/actions.py
index 92eb18b74..52442878e 100644
--- a/pym/_emerge/actions.py
+++ b/pym/_emerge/actions.py
@@ -512,7 +512,7 @@ def action_config(settings, trees, myopts, myfiles):
else:
print("Configuring pkg...")
print()
- ebuildpath = trees[settings["ROOT"]]["vartree"].dbapi.findname(pkg)
+ ebuildpath = trees[settings["ROOT"]]["vartree"].dbapi.findname(pkg, myrepo=pkg.repo)
mysettings = portage.config(clone=settings)
vardb = trees[mysettings["ROOT"]]["vartree"].dbapi
debug = mysettings.get("PORTAGE_DEBUG") == "1"
@@ -1544,7 +1544,7 @@ def action_info(settings, trees, myopts, myfiles):
if pkg_type == "installed":
ebuildpath = vardb.findname(pkg.cpv)
elif pkg_type == "ebuild":
- ebuildpath = portdb.findname(pkg.cpv)
+ ebuildpath = portdb.findname(pkg.cpv, pkg.repo)
elif pkg_type == "binary":
tbz2_file = bindb.bintree.getname(pkg.cpv)
ebuild_file_name = pkg.cpv.split("/")[1] + ".ebuild"
diff --git a/pym/_emerge/depgraph.py b/pym/_emerge/depgraph.py
index 1131d0600..5c01712d5 100644
--- a/pym/_emerge/depgraph.py
+++ b/pym/_emerge/depgraph.py
@@ -120,10 +120,10 @@ class _depgraph_sets(object):
# contains all sets added to the graph
self.sets = {}
# contains non-set atoms given as arguments
- self.sets['__non_set_args__'] = InternalPackageSet()
+ self.sets['__non_set_args__'] = InternalPackageSet(allow_repo=True)
# contains all atoms from all sets added to the graph, including
# atoms given as arguments
- self.atoms = InternalPackageSet()
+ self.atoms = InternalPackageSet(allow_repo=True)
self.atom_arg_map = {}
class _dynamic_depgraph_config(object):
@@ -1148,7 +1148,7 @@ class depgraph(object):
mykey, noiselevel=-1)
elif mytype == "ebuild":
portdb = self._frozen_config.roots[myroot].trees["porttree"].dbapi
- myebuild, mylocation = portdb.findname2(mykey)
+ myebuild, mylocation = portdb.findname2(mykey, myrepo = pkg.repo)
portage.writemsg("!!! This ebuild cannot be installed: " + \
"'%s'\n" % myebuild, noiselevel=-1)
portage.writemsg("!!! Please notify the package maintainer " + \
@@ -1430,7 +1430,7 @@ class depgraph(object):
deps = []
for cat in categories:
deps.append(Atom(insert_category_into_atom(
- atom_without_category, cat)))
+ atom_without_category, cat), allow_repo=True))
return deps
def _have_new_virt(self, root, atom_cp):
@@ -1573,7 +1573,7 @@ class depgraph(object):
args.append(SetArg(arg=x, pset=pset,
root_config=root_config))
continue
- if not is_valid_package_atom(x):
+ if not is_valid_package_atom(x, allow_repo=True):
portage.writemsg("\n\n!!! '%s' is not a valid package atom.\n" % x,
noiselevel=-1)
portage.writemsg("!!! Please check ebuild(5) for full details.\n")
@@ -1587,7 +1587,7 @@ class depgraph(object):
# 2) It takes away freedom from the resolver to choose other
# possible expansions when necessary.
if "/" in x:
- args.append(AtomArg(arg=x, atom=Atom(x),
+ args.append(AtomArg(arg=x, atom=Atom(x, allow_repo=True),
root_config=root_config))
continue
expanded_atoms = self._dep_expand(root_config, x)
@@ -1915,7 +1915,7 @@ class depgraph(object):
for root in self._dynamic_config.sets:
depgraph_sets = self._dynamic_config.sets[root]
depgraph_sets.sets.setdefault('__non_set_args__',
- InternalPackageSet()).clear()
+ InternalPackageSet(allow_repo=True)).clear()
depgraph_sets.atoms.clear()
depgraph_sets.atom_arg_map.clear()
set_atoms[root] = []
@@ -2118,7 +2118,7 @@ class depgraph(object):
a matching package has been masked by backtracking.
"""
backtrack_mask = False
- atom_set = InternalPackageSet(initial_atoms=(atom,))
+ atom_set = InternalPackageSet(initial_atoms=(atom,), allow_repo=True)
xinfo = '"%s"' % atom.unevaluated_atom
if arg:
xinfo='"%s"' % arg
@@ -2144,12 +2144,12 @@ class depgraph(object):
# descending order
cpv_list.reverse()
for cpv in cpv_list:
- metadata, mreasons = get_mask_info(root_config, cpv, pkgsettings, db, \
- pkg_type, built, installed, db_keys, _pkg_use_enabled=self._pkg_use_enabled)
+ metadata, mreasons = get_mask_info(root_config, cpv, pkgsettings, db, pkg_type, \
+ built, installed, db_keys, myrepo=atom.repo, _pkg_use_enabled=self._pkg_use_enabled)
if metadata is not None:
pkg = self._pkg(cpv, pkg_type, root_config,
- installed=installed)
+ installed=installed, myrepo = atom.repo)
# pkg.metadata contains calculated USE for ebuilds,
# required later for getMissingLicenses.
metadata = pkg.metadata
@@ -2450,7 +2450,7 @@ class depgraph(object):
if not slot_available:
continue
inst_pkg = self._pkg(cpv, "installed",
- root_config, installed=installed)
+ root_config, installed=installed, myrepo = atom.repo)
# Remove the slot from the atom and verify that
# the package matches the resulting atom.
atom_without_slot = portage.dep.remove_slot(atom)
@@ -2463,25 +2463,30 @@ class depgraph(object):
break
if cpv_list:
+ if atom.repo is None and hasattr(db, "getRepositories"):
+ repo_list = db.getRepositories()
+ else:
+ repo_list = [atom.repo]
# descending order
cpv_list.reverse()
for cpv in cpv_list:
- try:
- pkg = self._pkg(cpv, pkg_type, root_config,
- installed=installed, onlydeps=onlydeps)
- except portage.exception.PackageNotFound:
- pass
- else:
- if pkg.cp != atom.cp:
- # A cpv can be returned from dbapi.match() as an
- # old-style virtual match even in cases when the
- # package does not actually PROVIDE the virtual.
- # Filter out any such false matches here.
- if not InternalPackageSet(initial_atoms=(atom,)
- ).findAtomForPackage(pkg, modified_use=self._pkg_use_enabled(pkg)):
- continue
- yield pkg
+ for repo in repo_list:
+ try:
+ pkg = self._pkg(cpv, pkg_type, root_config,
+ installed=installed, onlydeps=onlydeps, myrepo=repo)
+ except portage.exception.PackageNotFound:
+ pass
+ else:
+ if pkg.cp != atom.cp:
+ # A cpv can be returned from dbapi.match() as an
+ # old-style virtual match even in cases when the
+ # package does not actually PROVIDE the virtual.
+ # Filter out any such false matches here.
+ if not InternalPackageSet(initial_atoms=(atom,)
+ ).findAtomForPackage(pkg, modified_use=self._pkg_use_enabled(pkg)):
+ continue
+ yield pkg
def _select_pkg_highest_available(self, root, atom, onlydeps=False):
cache_key = (root, atom, onlydeps)
@@ -2722,7 +2727,7 @@ class depgraph(object):
if not isinstance(atom, portage.dep.Atom):
atom = portage.dep.Atom(atom)
atom_cp = atom.cp
- atom_set = InternalPackageSet(initial_atoms=(atom,))
+ atom_set = InternalPackageSet(initial_atoms=(atom,), allow_repo=True)
existing_node = None
myeb = None
rebuilt_binaries = 'rebuilt_binaries' in self._dynamic_config.myparams
@@ -2843,7 +2848,7 @@ class depgraph(object):
else:
try:
pkg_eb = self._pkg(
- pkg.cpv, "ebuild", root_config)
+ pkg.cpv, "ebuild", root_config, myrepo=atom.repo)
except portage.exception.PackageNotFound:
continue
else:
@@ -3235,7 +3240,7 @@ class depgraph(object):
return 1
def _pkg(self, cpv, type_name, root_config, installed=False,
- onlydeps=False):
+ onlydeps=False, myrepo = None):
"""
Get a package instance from the cache, or create a new
one if necessary. Raises PackageNotFound from aux_get if it
@@ -3261,7 +3266,7 @@ class depgraph(object):
db_keys = list(self._frozen_config._trees_orig[root_config.root][
tree_type].dbapi._aux_cache_keys)
try:
- metadata = zip(db_keys, db.aux_get(cpv, db_keys))
+ metadata = zip(db_keys, db.aux_get(cpv, db_keys, myrepo=myrepo))
except KeyError:
raise portage.exception.PackageNotFound(cpv)
pkg = Package(built=(type_name != "ebuild"), cpv=cpv,
@@ -4858,7 +4863,7 @@ class depgraph(object):
portdb = self._frozen_config.trees[self._frozen_config.target_root]["porttree"].dbapi
added_favorites = set()
for x in self._dynamic_config._set_nodes:
- pkg_type, root, pkg_key, pkg_status = x
+ pkg_type, root, pkg_key, pkg_status, pkg_repo = x
if pkg_status != "nomerge":
continue
@@ -4918,16 +4923,16 @@ class depgraph(object):
serialized_tasks = []
masked_tasks = []
for x in mergelist:
- if not (isinstance(x, list) and len(x) == 4):
+ if not (isinstance(x, list) and len(x) == 5):
continue
- pkg_type, myroot, pkg_key, action = x
+ pkg_type, myroot, pkg_key, action, pkg_repo = x
if pkg_type not in self.pkg_tree_map:
continue
if action != "merge":
continue
root_config = self._frozen_config.roots[myroot]
try:
- pkg = self._pkg(pkg_key, pkg_type, root_config)
+ pkg = self._pkg(pkg_key, pkg_type, root_config, myrepo=pkg_repo)
except portage.exception.PackageNotFound:
# It does no exist or it is corrupt.
if skip_missing:
@@ -5487,11 +5492,11 @@ def _resume_depgraph(settings, trees, mtimedb, myopts, myparams, spinner):
return (success, mydepgraph, dropped_tasks)
def get_mask_info(root_config, cpv, pkgsettings,
- db, pkg_type, built, installed, db_keys, _pkg_use_enabled=None):
+ db, pkg_type, built, installed, db_keys, myrepo = None, _pkg_use_enabled=None):
eapi_masked = False
try:
metadata = dict(zip(db_keys,
- db.aux_get(cpv, db_keys)))
+ db.aux_get(cpv, db_keys, myrepo=myrepo)))
except KeyError:
metadata = None
@@ -5511,7 +5516,8 @@ def get_mask_info(root_config, cpv, pkgsettings,
if _pkg_use_enabled is not None:
modified_use = _pkg_use_enabled(pkg)
- mreasons = get_masking_status(pkg, pkgsettings, root_config, use=modified_use)
+ mreasons = get_masking_status(pkg, pkgsettings, root_config, myrepo=myrepo, use=modified_use)
+
return metadata, mreasons
def show_masked_packages(masked_packages):
@@ -5573,15 +5579,14 @@ def show_blocker_docs_link():
writemsg("section of the Gentoo Linux x86 Handbook (architecture is irrelevant):\n\n", noiselevel=-1)
writemsg("http://www.gentoo.org/doc/en/handbook/handbook-x86.xml?full=1#blocked\n\n", noiselevel=-1)
-def get_masking_status(pkg, pkgsettings, root_config, use=None):
+def get_masking_status(pkg, pkgsettings, root_config, myrepo=None, use=None):
return [mreason.message for \
- mreason in _get_masking_status(pkg, pkgsettings, root_config, use=use)]
-
-def _get_masking_status(pkg, pkgsettings, root_config, use=None):
+ mreason in _get_masking_status(pkg, pkgsettings, root_config, myrepo=myrepo, use=use)]
+def _get_masking_status(pkg, pkgsettings, root_config, myrepo=None, use=None):
mreasons = _getmaskingstatus(
pkg, settings=pkgsettings,
- portdb=root_config.trees["porttree"].dbapi)
+ portdb=root_config.trees["porttree"].dbapi, myrepo=myrepo)
if not pkg.installed:
if not pkgsettings._accept_chost(pkg.cpv, pkg.metadata):
diff --git a/pym/_emerge/is_valid_package_atom.py b/pym/_emerge/is_valid_package_atom.py
index b6183d48a..d33cf4557 100644
--- a/pym/_emerge/is_valid_package_atom.py
+++ b/pym/_emerge/is_valid_package_atom.py
@@ -3,10 +3,11 @@
import re
import portage
+import _emerge.depgraph
-def is_valid_package_atom(x):
+def is_valid_package_atom(x, allow_repo=False):
if "/" not in x:
- alphanum = re.search(r'\w', x)
- if alphanum:
- x = x[:alphanum.start()] + "cat/" + x[alphanum.start():]
- return portage.isvalidatom(x, allow_blockers=False)
+ x2 = _emerge.depgraph.insert_category_into_atom(x, 'cat')
+ if x2 != None:
+ x = x2
+ return portage.isvalidatom(x, allow_blockers=False, allow_repo=allow_repo)
diff --git a/pym/_emerge/main.py b/pym/_emerge/main.py
index 97d36426d..17f83672c 100644
--- a/pym/_emerge/main.py
+++ b/pym/_emerge/main.py
@@ -1661,7 +1661,7 @@ def emerge_main():
for x in myfiles:
if x.startswith(SETPREFIX) or \
- is_valid_package_atom(x):
+ is_valid_package_atom(x, allow_repo=True):
continue
if x[:1] == os.sep:
continue
diff --git a/pym/_emerge/resolver/output.py b/pym/_emerge/resolver/output.py
index 5277dff0d..fbb8859fb 100644
--- a/pym/_emerge/resolver/output.py
+++ b/pym/_emerge/resolver/output.py
@@ -186,7 +186,7 @@ class _DisplayConfig(object):
dynamic_config = depgraph._dynamic_config
self.mylist = mylist
- self.favorites = InternalPackageSet(favorites)
+ self.favorites = InternalPackageSet(favorites, allow_repo=True)
self.verbosity = verbosity
if self.verbosity is None:
@@ -340,9 +340,9 @@ def display(depgraph, mylist, favorites=[], verbosity=None):
pkg = x
metadata = pkg.metadata
ebuild_path = None
- repo_name = metadata["repository"]
+ repo_name = pkg.repo
if pkg.type_name == "ebuild":
- ebuild_path = portdb.findname(pkg.cpv)
+ ebuild_path = portdb.findname(pkg.cpv, myrepo=repo_name)
if ebuild_path is None:
raise AssertionError(
"ebuild not found for '%s'" % pkg.cpv)
@@ -356,7 +356,7 @@ def display(depgraph, mylist, favorites=[], verbosity=None):
fetch = red("F")
if ordered:
counters.restrict_fetch += 1
- if portdb.fetch_check(pkg_key, pkg_use):
+ if portdb.fetch_check(pkg_key, pkg_use, myrepo=pkg.repo):
fetch = green("f")
if ordered:
counters.restrict_fetch_satisfied += 1