]> git.ipfire.org Git - pakfire.git/commitdiff
Fix filtering for regular expressions in dependencies.
authorMichael Tremer <michael.tremer@ipfire.org>
Sun, 18 Dec 2011 23:05:43 +0000 (00:05 +0100)
committerMichael Tremer <michael.tremer@ipfire.org>
Tue, 20 Dec 2011 20:39:09 +0000 (21:39 +0100)
python/pakfire/packages/make.py

index 9380e3ce5fc1cc8df567b618626101929adf481d..6d20a6c5c8ed82002d40e842a67b9a2451228a61 100644 (file)
@@ -420,18 +420,37 @@ class MakefilePackage(MakefileBase):
                if not filters:
                        return deps
 
-               filters = filters.splitlines()
+               _filters = []
                filtered_deps = []
 
+               # Compile all filters.
+               for filter in filters.splitlines():
+                       # Convert to raw string to make escaping characters
+                       # easy to the user.
+                       try:
+                               _filter = re.compile("%r" % filter)
+                       except re.error:
+                               log.warning(_("Regular experession is invalid and has been skipped: %s") % filter)
+                               continue
+
+                       _filters.append(_filter)
+
+               filters = _filters
+
                for dep in deps:
                        filtered = False
                        for filter in filters:
+                               # Search for a match anywhere in the line.
                                m = re.search(filter, dep)
                                if not m:
                                        continue
 
+                               # Let the user know what has been done.
+                               log.info(_("Filter %s filtered %s.") % (filter, dep))
+
                                # Yes, we found a match.
                                filtered = True
+                               break
 
                        if not filtered:
                                filtered_deps.append(dep)