For bug #165382, show a helpful message if an exception is raised from cpv_expand().
authorZac Medico <zmedico@gentoo.org>
Mon, 5 Feb 2007 21:24:01 +0000 (21:24 -0000)
committerZac Medico <zmedico@gentoo.org>
Mon, 5 Feb 2007 21:24:01 +0000 (21:24 -0000)
svn path=/main/trunk/; revision=5897

bin/emerge

index f19c29f49e84fea8da35207117054d46966edee8..e37f4bb6df32aef13a04c24a919766f6d7a76e19 100755 (executable)
@@ -1804,9 +1804,22 @@ class depgraph:
                                                # dep_wordreduce and dep_eval calls.
                                                try:
                                                        portage.dep._dep_check_strict = False
-                                                       success, atoms = portage.dep_check(depstr,
-                                                               final_db, pkgsettings, myuse=myuse,
-                                                               trees=dep_check_trees, myroot=myroot)
+                                                       try:
+                                                               success, atoms = portage.dep_check(depstr,
+                                                                       final_db, pkgsettings, myuse=myuse,
+                                                                       trees=dep_check_trees, myroot=myroot)
+                                                       except Exception, e:
+                                                               if isinstance(e, SystemExit):
+                                                                       raise
+                                                               # This is helpful, for example, if a ValueError
+                                                               # is thrown from cpv_expand due to multiple
+                                                               # matches (this can happen if an atom lacks a
+                                                               # category).
+                                                               show_invalid_depstring_notice(
+                                                                       ("installed", myroot, pkg, "nomerge"),
+                                                                       depstr, str(e))
+                                                               del e
+                                                               raise
                                                finally:
                                                        portage.dep._dep_check_strict = True
                                                if not success: