]> git.ipfire.org Git - pakfire.git/commitdiff
Add option to filter dependencies by regex.
authorMichael Tremer <michael.tremer@ipfire.org>
Wed, 5 Oct 2011 14:02:11 +0000 (16:02 +0200)
committerMichael Tremer <michael.tremer@ipfire.org>
Wed, 5 Oct 2011 14:07:02 +0000 (16:07 +0200)
python/pakfire/packages/make.py

index ad82602cda3bb895a3a1f93f5da67404495c8e57..f873191a9e753e0dd3e000f4a18e60e25b9596db 100644 (file)
@@ -375,6 +375,9 @@ class MakefilePackage(MakefileBase):
                return None
 
        def track_dependencies(self, builder, path):
+               # Dependency types.
+               dep_types = ("prerequires", "requires", "provides", "conflicts", "obsoletes",)
+
                result = builder.do("/usr/lib/pakfire/dependency-tracker %s" \
                        % path, returnOutput=True)
 
@@ -385,7 +388,7 @@ class MakefilePackage(MakefileBase):
 
                        key, val = m.groups()
 
-                       if not key in ("prerequires", "requires", "provides", "conflicts", "obsoletes",):
+                       if not key in dep_types:
                                continue
 
                        val = val.strip("\"")
@@ -393,6 +396,36 @@ class MakefilePackage(MakefileBase):
 
                        self._dependencies[key] = sorted(val)
 
+               # Filter dependencies.
+               for key in dep_types:
+                       self._dependencies[key] = self.filter_deps(
+                               self._dependencies.get(key, []),
+                               self.lexer.get_var("filter_%s" % key)
+                       )
+
+       @staticmethod
+       def filter_deps(deps, filters):
+               if not filters:
+                       return deps
+
+               filters = filters.splitlines()
+               filtered_deps = []
+
+               for dep in deps:
+                       filtered = False
+                       for filter in filters:
+                               m = re.search(filter, dep)
+                               if not m:
+                                       continue
+
+                               # Yes, we found a match.
+                               filtered = True
+
+                       if not filtered:
+                               filtered_deps.append(dep)
+
+               return filtered_deps
+
        def get_deps(self, key):
                # Collect all dependencies that were set in the makefile by the user.
                deps = self.lexer.get_var(key).split()