diff options
author | Benjamin Peterson <benjamin@python.org> | 2013-02-04 00:25:11 (GMT) |
---|---|---|
committer | Benjamin Peterson <benjamin@python.org> | 2013-02-04 00:25:11 (GMT) |
commit | f727c31133822b3e39f851fcca9d3239f389c054 (patch) | |
tree | b810517c804c8f4334683626ce8d7fca5d793bfb /Lib/ctypes | |
parent | 3e081c73b8ab1780740794a9cf718ec330dba9d7 (diff) | |
download | cpython-f727c31133822b3e39f851fcca9d3239f389c054.zip cpython-f727c31133822b3e39f851fcca9d3239f389c054.tar.gz cpython-f727c31133822b3e39f851fcca9d3239f389c054.tar.bz2 |
fix find_library on Solaris (closes #5289)
Diffstat (limited to 'Lib/ctypes')
-rw-r--r-- | Lib/ctypes/util.py | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/Lib/ctypes/util.py b/Lib/ctypes/util.py index 7aee0ef..fe2b520 100644 --- a/Lib/ctypes/util.py +++ b/Lib/ctypes/util.py @@ -180,6 +180,35 @@ elif os.name == "posix": res.sort(cmp= lambda x,y: cmp(_num_version(x), _num_version(y))) return res[-1] + elif sys.platform == "sunos5": + + def _findLib_crle(name, is64): + if not os.path.exists('/usr/bin/crle'): + return None + + if is64: + cmd = 'env LC_ALL=C /usr/bin/crle -64 2>/dev/null' + else: + cmd = 'env LC_ALL=C /usr/bin/crle 2>/dev/null' + + for line in os.popen(cmd).readlines(): + line = line.strip() + if line.startswith('Default Library Path (ELF):'): + paths = line.split()[4] + + if not paths: + return None + + for dir in paths.split(":"): + libfile = os.path.join(dir, "lib%s.so" % name) + if os.path.exists(libfile): + return libfile + + return None + + def find_library(name, is64 = False): + return _get_soname(_findLib_crle(name, is64) or _findLib_gcc(name)) + else: def _findSoname_ldconfig(name): |