15319
|
1 |
--- ctypes-1.0.2/ctypes/util.py.orig 2009-02-19 18:03:24.380668000 +0800
|
|
2 |
+++ ctypes-1.0.2/ctypes/util.py 2009-02-20 10:33:42.945817000 +0800
|
|
3 |
@@ -66,15 +66,26 @@
|
|
4 |
return None
|
|
5 |
return res.group(0)
|
|
6 |
|
|
7 |
- def _get_soname(f):
|
|
8 |
- # assuming GNU binutils / ELF
|
|
9 |
- if not f:
|
|
10 |
- return None
|
|
11 |
- cmd = "objdump -p -j .dynamic 2>/dev/null " + f
|
|
12 |
- res = re.search(r'\sSONAME\s+([^\s]+)', os.popen(cmd).read())
|
|
13 |
- if not res:
|
|
14 |
- return None
|
|
15 |
- return res.group(1)
|
|
16 |
+ if sys.platform == "sunos5":
|
|
17 |
+ # use /usr/ccs/bin/dump on solaris
|
|
18 |
+ def _get_soname(f):
|
|
19 |
+ if not f:
|
|
20 |
+ return None
|
|
21 |
+ cmd = "/usr/ccs/bin/dump -Lpv 2>/dev/null " + f
|
|
22 |
+ res = re.search(r'\[.*\]\sSONAME\s+([^\s]+)', os.popen(cmd).read())
|
|
23 |
+ if not res:
|
|
24 |
+ return None
|
|
25 |
+ return res.group(1)
|
|
26 |
+ else:
|
|
27 |
+ def _get_soname(f):
|
|
28 |
+ # assuming GNU binutils / ELF
|
|
29 |
+ if not f:
|
|
30 |
+ return None
|
|
31 |
+ cmd = "objdump -p -j .dynamic 2>/dev/null " + f
|
|
32 |
+ res = re.search(r'\sSONAME\s+([^\s]+)', os.popen(cmd).read())
|
|
33 |
+ if not res:
|
|
34 |
+ return None
|
|
35 |
+ return res.group(1)
|
|
36 |
|
|
37 |
if (sys.platform.startswith("freebsd")
|
|
38 |
or sys.platform.startswith("openbsd")
|
|
39 |
@@ -101,6 +112,35 @@
|
|
40 |
res.sort(cmp= lambda x,y: cmp(_num_version(x), _num_version(y)))
|
|
41 |
return res[-1]
|
|
42 |
|
|
43 |
+ elif sys.platform == "sunos5":
|
|
44 |
+
|
|
45 |
+ def _findLib_crle(name, is64):
|
|
46 |
+ if not os.path.exists('/usr/bin/crle'):
|
|
47 |
+ return None
|
|
48 |
+
|
|
49 |
+ if is64:
|
|
50 |
+ cmd = 'env LC_ALL=C /usr/bin/crle -64 2>/dev/null'
|
|
51 |
+ else:
|
|
52 |
+ cmd = 'env LC_ALL=C /usr/bin/crle 2>/dev/null'
|
|
53 |
+
|
|
54 |
+ for line in os.popen(cmd).readlines():
|
|
55 |
+ line = line.strip()
|
|
56 |
+ if (line.startswith('Default Library Path (ELF):')):
|
|
57 |
+ paths = line.split()[4]
|
|
58 |
+
|
|
59 |
+ if not paths:
|
|
60 |
+ return None
|
|
61 |
+
|
|
62 |
+ for dir in paths.split(":"):
|
|
63 |
+ libfile = os.path.join(dir, "lib%s.so" % name)
|
|
64 |
+ if os.path.exists(libfile):
|
|
65 |
+ return libfile
|
|
66 |
+
|
|
67 |
+ return None
|
|
68 |
+
|
|
69 |
+ def find_library(name, is64 = False):
|
|
70 |
+ return _get_soname(_findLib_crle(name, is64) or _findLib_gcc(name))
|
|
71 |
+
|
|
72 |
else:
|
|
73 |
|
|
74 |
def _findLib_ldconfig(name):
|