Bug #248059 - Make --depclean more tolerant of invalid atoms in dependencies
authorZac Medico <zmedico@gentoo.org>
Fri, 21 Nov 2008 22:31:08 +0000 (22:31 -0000)
committerZac Medico <zmedico@gentoo.org>
Fri, 21 Nov 2008 22:31:08 +0000 (22:31 -0000)
of packages that will be uninstalled anyway.

svn path=/main/trunk/; revision=12020

pym/_emerge/__init__.py
pym/portage/__init__.py

index 3492633611380b0d90e5d4d5a5f9fbc5f4ed7a5a..44bbe1763b3758d58de2a79ff37e4db9a9796c1a 100644 (file)
@@ -12776,11 +12776,10 @@ def action_depclean(settings, trees, ldpath_mtimes,
                                finally:
                                        portage.dep._dep_check_strict = True
                                if not success:
-                                       show_invalid_depstring_notice(
-                                               ("installed", myroot, node, "nomerge"),
-                                               depstr, atoms)
-                                       return
+                                       # Ignore invalid deps of packages that will
+                                       # be uninstalled anyway.
+                                       continue
+
                                priority = priority_map[dep_type]
                                for atom in atoms:
                                        if not isinstance(atom, portage.dep.Atom):
index d53ac9b254e07da8b2fd6740dee11bbc5b3d4a17..76ff91233a8fb69821366378c3855e15e8a64623 100644 (file)
@@ -6614,8 +6614,16 @@ def dep_check(depstring, mydbapi, mysettings, use="yes", mode=None, myuse=None,
        writemsg("mysplit:  %s\n" % (mysplit), 1)
        writemsg("mysplit2: %s\n" % (mysplit2), 1)
 
-       myzaps = dep_zapdeps(mysplit, mysplit2, myroot,
-               use_binaries=use_binaries, trees=trees)
+       try:
+               myzaps = dep_zapdeps(mysplit, mysplit2, myroot,
+                       use_binaries=use_binaries, trees=trees)
+       except portage.exception.InvalidAtom, e:
+               if portage.dep._dep_check_strict:
+                       raise # This shouldn't happen.
+               # dbapi.match() failed due to an invalid atom in
+               # the dependencies of an installed package.
+               return [0, "Invalid atom: '%s'" % (e,)]
+
        mylist = flatten(myzaps)
        writemsg("myzaps:   %s\n" % (myzaps), 1)
        writemsg("mylist:   %s\n" % (mylist), 1)