7
# Ok.. the code to find the filename for __getattr__ should look
11
# from macholib.dyld import dyld_find
14
# possible = ['lib'+name+'.dylib', name+'.dylib',
15
# name+'.framework/'+name]
16
# for dylib in possible:
18
# return os.path.realpath(dyld_find(dylib))
21
# raise ValueError, "%s not found" % (name,)
23
# It'll have output like this:
25
# >>> find_lib('pthread')
26
# '/usr/lib/libSystem.B.dylib'
28
# '/usr/lib/libz.1.dylib'
29
# >>> find_lib('IOKit')
30
# '/System/Library/Frameworks/IOKit.framework/Versions/A/IOKit'
34
from ctypes.macholib.dyld import dyld_find
37
possible = ['lib'+name+'.dylib', name+'.dylib', name+'.framework/'+name]
38
for dylib in possible:
40
return os.path.realpath(dyld_find(dylib))
43
raise ValueError("%s not found" % (name,))
45
class MachOTest(unittest.TestCase):
46
if sys.platform == "darwin":
49
self.assertEqual(find_lib('pthread'),
50
'/usr/lib/libSystem.B.dylib')
52
result = find_lib('z')
53
self.assertTrue(result.startswith('/usr/lib/libz.1'))
54
self.assertTrue(result.endswith('.dylib'))
56
self.assertEqual(find_lib('IOKit'),
57
'/System/Library/Frameworks/IOKit.framework/Versions/A/IOKit')
59
if __name__ == "__main__":