import os class AbstractDependency: def __init__(self, name): self._name = name def get_name(self): return self._name def check(self): return False class LibDependency(AbstractDependency): def __init__(self, name, module): AbstractDependency.__init__(self, name) self._module = module def check(self): pid = os.fork() if not pid: os.execvp('pkg-config', [ 'pkg-config', '--exists', self._module ]) return os.wait()[1] == 0 def get_installed(dependencies): installed = [] for dep in dependencies: if dep.check(): installed.append(dep.get_name()) return installed