summaryrefslogtreecommitdiffstats
path: root/bin/emerge
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2006-06-21 01:40:11 +0000
committerZac Medico <zmedico@gentoo.org>2006-06-21 01:40:11 +0000
commitbc1316a7c580e00359e756b5e7cb2155cd5df57a (patch)
tree4df5c7323b757dffe710f1868018149fd9899353 /bin/emerge
parent8d12ac008514e581df5e6aeaf2c44f87831f48f7 (diff)
downloadportage-bc1316a7c580e00359e756b5e7cb2155cd5df57a.tar.gz
portage-bc1316a7c580e00359e756b5e7cb2155cd5df57a.tar.bz2
portage-bc1316a7c580e00359e756b5e7cb2155cd5df57a.zip
Give a useful error message when a dependency has an ambiguous atom due to the category being unspecified. See bug #123677. This patch is from trunk r3509.
svn path=/main/branches/2.1/; revision=3553
Diffstat (limited to 'bin/emerge')
-rwxr-xr-xbin/emerge53
1 files changed, 36 insertions, 17 deletions
diff --git a/bin/emerge b/bin/emerge
index 9561053f9..e7cb9dd0e 100755
--- a/bin/emerge
+++ b/bin/emerge
@@ -1023,23 +1023,42 @@ class depgraph:
mydep={}
mp=string.join(mybigkey)
- if myroot=="/":
- mydep["/"]=edepend["DEPEND"]+" "+edepend["RDEPEND"]
- if not self.select_dep("/",mydep["/"],myparent=mp,myuse=myuse):
- return 0
- else:
- mydep["/"]=edepend["DEPEND"]
- mydep[myroot]=edepend["RDEPEND"]
- if not self.select_dep("/",mydep["/"],myparent=mp,myuse=myuse):
- return 0
- if not self.select_dep(myroot,mydep[myroot],myparent=mp,myuse=myuse):
- return 0
-
- if edepend.has_key("PDEPEND") and edepend["PDEPEND"]:
- # Post Depend -- Add to the list without a parent, as it depends
- # on a package being present AND must be built after that package.
- if not self.select_dep(myroot,edepend["PDEPEND"],myuse=myuse):
- return 0
+ try:
+ if myroot=="/":
+ mydep["/"]=edepend["DEPEND"]+" "+edepend["RDEPEND"]
+ if not self.select_dep("/",mydep["/"],myparent=mp,myuse=myuse):
+ return 0
+ else:
+ mydep["/"]=edepend["DEPEND"]
+ mydep[myroot]=edepend["RDEPEND"]
+ if not self.select_dep("/",mydep["/"],myparent=mp,myuse=myuse):
+ return 0
+ if not self.select_dep(myroot,mydep[myroot],myparent=mp,myuse=myuse):
+ return 0
+
+ if edepend.has_key("PDEPEND") and edepend["PDEPEND"]:
+ # Post Depend -- Add to the list without a parent, as it depends
+ # on a package being present AND must be built after that package.
+ if not self.select_dep(myroot,edepend["PDEPEND"],myuse=myuse):
+ return 0
+ except ValueError, e:
+ pkgs = e.args[0]
+ portage.writemsg("\n\n!!! An atom in the dependencies " + \
+ "is not fully-qualified. Multiple matches:\n\n", noiselevel=-1)
+ for cpv in pkgs:
+ portage.writemsg(" %s\n" % cpv, noiselevel=-1)
+ portage.writemsg("\n", noiselevel=-1)
+ if mytype == "binary":
+ portage.writemsg(
+ "!!! This binary package cannot be installed: '%s'\n" % \
+ mykey, noiselevel=-1)
+ elif mytype == "ebuild":
+ myebuild, mylocation = portage.portdb.findname2(mykey)
+ portage.writemsg("!!! This ebuild cannot be installed: " + \
+ "'%s'\n" % myebuild, noiselevel=-1)
+ portage.writemsg("!!! Please notify the package maintainer " + \
+ "that atoms must be fully-qualified.\n", noiselevel=-1)
+ return 0
return 1