Merge from genscripts r461: brian.dolbec
authorfuzzyray <fuzzyray@gentoo.org>
Wed, 22 Sep 2010 21:28:48 +0000 (21:28 -0000)
committerfuzzyray <fuzzyray@gentoo.org>
Wed, 22 Sep 2010 21:28:48 +0000 (21:28 -0000)
replace the inaccurate reg expression method of obtaining the filename from the
SRC_URI with code from portage.portdbapi._parse_uri_map() so that it works
correctly for all instances and it's just as fast.

svn path=/trunk/gentoolkit/; revision=809

pym/gentoolkit/eclean/search.py

index 9cc5923f4f7ad7dacde71e38b44b0b1aa747fdcf..e29bbfced1692ec51cd6ee53e288b16004f11ca4 100644 (file)
@@ -246,11 +246,16 @@ class DistfilesSearch(object):
                @returns packages to clean
                @rtype: dictionary
                """
-               # this regexp extracts files names from SRC_URI. It is not very precise,
-               # but we don't care (may return empty strings, etc.), since it is fast.
-               file_regexp = re.compile(r'([a-zA-Z0-9_,\.\-\+\~]*)[\s\)]')
                for cpv in pkgs:
-                       for file in file_regexp.findall(pkgs[cpv]+"\n"):
+                       uris = pkgs[cpv].split()
+                       uris.reverse()
+                       while uris:
+                               uri = uris.pop()
+                               if uris and uris[-1] == "->":
+                                       operator = uris.pop()
+                                       file = uris.pop()
+                               else:
+                                       file = os.path.basename(uri)
                                if file in clean_me:
                                        del clean_me[file]
                        # no need to waste IO time if there is nothing left to clean