Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code | Sign in
(176865)

Delta Between Two Patch Sets: Lib/ctypes/util.py

Issue 21042: ctypes.util.find_library() should return full pathname instead of filename in linux
Left Patch Set: Created 3 years, 5 months ago
Right Patch Set: Created 3 years, 4 months ago
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments. Please Sign in to add in-line comments.
Jump to:
Left: Side by side diff | Download
Right: Side by side diff | Download
« no previous file with change/comment | « Lib/ctypes/test/test_find.py ('k') | no next file » | no next file with change/comment »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
LEFTRIGHT
1 import sys, os 1 import sys, os
2 import contextlib 2 import contextlib
3 import subprocess 3 import subprocess
4 4
5 # find_library(name) returns the pathname of a library, or None. 5 # find_library(name) returns the pathname of a library, or None.
6 if os.name == "nt": 6 if os.name == "nt":
7 7
8 def _get_build_version(): 8 def _get_build_version():
9 """Return the version of MSVC that was used to build Python. 9 """Return the version of MSVC that was used to build Python.
10 10
(...skipping 204 matching lines...) Expand 10 before | Expand all | Expand 10 after
215 'x86_64-64': 'libc6,x86-64', 215 'x86_64-64': 'libc6,x86-64',
216 'ppc64-64': 'libc6,64bit', 216 'ppc64-64': 'libc6,64bit',
217 'sparc64-64': 'libc6,64bit', 217 'sparc64-64': 'libc6,64bit',
218 's390x-64': 'libc6,64bit', 218 's390x-64': 'libc6,64bit',
219 'ia64-64': 'libc6,IA-64', 219 'ia64-64': 'libc6,IA-64',
220 } 220 }
221 abi_type = mach_map.get(machine, 'libc6') 221 abi_type = mach_map.get(machine, 'libc6')
222 222
223 # XXX assuming GLIBC's ldconfig (with option -p) 223 # XXX assuming GLIBC's ldconfig (with option -p)
224 regex = os.fsencode( 224 regex = os.fsencode(
225 'lib%s\.[^\s]+\s\(%s.*\)\s=>\s(.*)' % (re.escape(name), abi_type )) 225 r'lib%s\.[^\s]+\s\(%s(?:,\s.*)?\)\s=>\s(.*)' % (re.escape(name), abi_type))
226 try: 226 try:
227 with subprocess.Popen(['/sbin/ldconfig', '-p'], 227 with subprocess.Popen(['/sbin/ldconfig', '-p'],
228 stdin=subprocess.DEVNULL, 228 stdin=subprocess.DEVNULL,
229 stderr=subprocess.DEVNULL, 229 stderr=subprocess.DEVNULL,
230 stdout=subprocess.PIPE, 230 stdout=subprocess.PIPE,
231 env={'LC_ALL': 'C', 'LANG': 'C'}) as p: 231 env={'LC_ALL': 'C', 'LANG': 'C'}) as p:
232 res = re.search(regex, p.stdout.read()) 232 res = re.search(regex, p.stdout.read())
233 if res: 233 if res:
234 return os.fsdecode(res.group(1)) 234 return os.fsdecode(res.group(1))
235 except OSError: 235 except OSError:
(...skipping 28 matching lines...) Expand all
264 print(cdll.LoadLibrary("libcrypto.dylib")) 264 print(cdll.LoadLibrary("libcrypto.dylib"))
265 print(cdll.LoadLibrary("libSystem.dylib")) 265 print(cdll.LoadLibrary("libSystem.dylib"))
266 print(cdll.LoadLibrary("System.framework/System")) 266 print(cdll.LoadLibrary("System.framework/System"))
267 else: 267 else:
268 print(cdll.LoadLibrary("libm.so")) 268 print(cdll.LoadLibrary("libm.so"))
269 print(cdll.LoadLibrary("libcrypt.so")) 269 print(cdll.LoadLibrary("libcrypt.so"))
270 print(find_library("crypt")) 270 print(find_library("crypt"))
271 271
272 if __name__ == "__main__": 272 if __name__ == "__main__":
273 test() 273 test()
LEFTRIGHT

RSS Feeds Recent Issues | This issue
This is Rietveld 894c83f36cb7+