From: Michael Tremer Date: Wed, 5 Oct 2011 14:02:11 +0000 (+0200) Subject: Add option to filter dependencies by regex. X-Git-Tag: 0.9.13~9^2~4 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=d9211764ec4c0089ffdfad7a81e89aa946630afe;p=pakfire.git Add option to filter dependencies by regex. --- diff --git a/python/pakfire/packages/make.py b/python/pakfire/packages/make.py index ad82602cd..f873191a9 100644 --- a/python/pakfire/packages/make.py +++ b/python/pakfire/packages/make.py @@ -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()