diff options
Diffstat (limited to 'lib/spack/external/macholib/MachOGraph.py')
-rw-r--r-- | lib/spack/external/macholib/MachOGraph.py | 39 |
1 files changed, 21 insertions, 18 deletions
diff --git a/lib/spack/external/macholib/MachOGraph.py b/lib/spack/external/macholib/MachOGraph.py index 5a733c3ed0..8943ed8bd3 100644 --- a/lib/spack/external/macholib/MachOGraph.py +++ b/lib/spack/external/macholib/MachOGraph.py @@ -8,10 +8,10 @@ import sys from altgraph.ObjectGraph import ObjectGraph from macholib.dyld import dyld_find -from macholib.MachO import MachO from macholib.itergraphreport import itergraphreport +from macholib.MachO import MachO -__all__ = ['MachOGraph'] +__all__ = ["MachOGraph"] try: unicode @@ -25,13 +25,14 @@ class MissingMachO(object): self.headers = () def __repr__(self): - return '<%s graphident=%r>' % (type(self).__name__, self.graphident) + return "<%s graphident=%r>" % (type(self).__name__, self.graphident) class MachOGraph(ObjectGraph): """ Graph data structure of Mach-O dependencies """ + def __init__(self, debug=0, graph=None, env=None, executable_path=None): super(MachOGraph, self).__init__(debug=debug, graph=graph) self.env = env @@ -41,16 +42,18 @@ class MachOGraph(ObjectGraph): def locate(self, filename, loader=None): if not isinstance(filename, (str, unicode)): raise TypeError("%r is not a string" % (filename,)) - if filename.startswith('@loader_path/') and loader is not None: + if filename.startswith("@loader_path/") and loader is not None: fn = self.trans_table.get((loader.filename, filename)) if fn is None: loader_path = loader.loader_path try: fn = dyld_find( - filename, env=self.env, + filename, + env=self.env, executable_path=self.executable_path, - loader_path=loader_path) + loader_path=loader_path, + ) self.trans_table[(loader.filename, filename)] = fn except ValueError: return None @@ -60,8 +63,8 @@ class MachOGraph(ObjectGraph): if fn is None: try: fn = dyld_find( - filename, env=self.env, - executable_path=self.executable_path) + filename, env=self.env, executable_path=self.executable_path + ) self.trans_table[filename] = fn except ValueError: return None @@ -83,11 +86,11 @@ class MachOGraph(ObjectGraph): m = self.findNode(pathname, loader=caller) if m is None: if not os.path.exists(pathname): - raise ValueError('%r does not exist' % (pathname,)) + raise ValueError("%r does not exist" % (pathname,)) m = self.createNode(MachO, pathname) - self.createReference(caller, m, edge_data='run_file') + self.createReference(caller, m, edge_data="run_file") self.scan_node(m) - self.msgout(2, '') + self.msgout(2, "") return m def load_file(self, name, caller=None): @@ -103,20 +106,20 @@ class MachOGraph(ObjectGraph): self.scan_node(m) else: m = self.createNode(MissingMachO, name) - self.msgout(2, '') + self.msgout(2, "") return m def scan_node(self, node): - self.msgin(2, 'scan_node', node) + self.msgin(2, "scan_node", node) for header in node.headers: - for idx, name, filename in header.walkRelocatables(): + for _idx, name, filename in header.walkRelocatables(): assert isinstance(name, (str, unicode)) assert isinstance(filename, (str, unicode)) m = self.load_file(filename, caller=node) self.createReference(node, m, edge_data=name) - self.msgout(2, '', node) + self.msgout(2, "", node) - def itergraphreport(self, name='G'): + def itergraphreport(self, name="G"): nodes = map(self.graph.describe_node, self.graph.iterdfs(self)) describe_edge = self.graph.describe_edge return itergraphreport(nodes, describe_edge, name=name) @@ -134,5 +137,5 @@ def main(args): g.graphreport() -if __name__ == '__main__': - main(sys.argv[1:] or ['/bin/ls']) +if __name__ == "__main__": + main(sys.argv[1:] or ["/bin/ls"]) |