[ctypes-commit] ctypes/ctypes util.py,1.1.2.2,1.1.2.3 __init__.py,1.61.2.24,1.61.2.25
Brought to you by:
theller
From: Thomas H. <th...@us...> - 2006-01-26 19:49:22
|
Update of /cvsroot/ctypes/ctypes/ctypes In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv22036 Modified Files: Tag: branch_1_0 util.py __init__.py Log Message: ctypes now uses the LibraryLoader from ctypes._loader Index: util.py =================================================================== RCS file: /cvsroot/ctypes/ctypes/ctypes/util.py,v retrieving revision 1.1.2.2 retrieving revision 1.1.2.3 diff -C2 -d -r1.1.2.2 -r1.1.2.3 *** util.py 22 Dec 2005 20:34:57 -0000 1.1.2.2 --- util.py 26 Jan 2006 19:49:14 -0000 1.1.2.3 *************** *** 1,45 **** ! import os, re, tempfile ! ! if os.name == "posix": ! ! def findLib_gcc(name): ! expr = '[^\(\)\s]*lib%s\.[^\(\)\s]*' % name ! cmd = 'if type gcc &>/dev/null; then CC=gcc; else CC=cc; fi;' \ ! '$CC -Wl,-t -o /dev/null 2>&1 -l' + name ! try: ! fdout, outfile = tempfile.mkstemp() ! fd = os.popen(cmd) ! trace = fd.read() ! err = fd.close() ! finally: ! try: ! os.unlink(outfile) ! except OSError, e: ! if e.errno != errno.ENOENT: ! raise ! res = re.search(expr, trace) ! if not res: ! return None ! return res.group(0) ! ! def findLib_ld(name): ! expr = '/[^\(\)\s]*lib%s\.[^\(\)\s]*' % name ! res = re.search(expr, os.popen('/sbin/ldconfig -p 2>/dev/null').read()) ! if not res: ! return None ! return res.group(0) ! ! def get_soname(f): ! cmd = "objdump -p -j .dynamic 2>/dev/null " + f ! res = re.search(r'\sSONAME\s+([^\s]+)', os.popen(cmd).read()) ! if not res: ! return f ! return res.group(1) ! ! def findLib(name): ! lib = findLib_ld(name) ! if not lib: ! lib = findLib_gcc(name) ! if not lib: ! return [name] ! return [get_soname(lib)] --- 1 ---- ! # ctypes.util is no longer used. Index: __init__.py =================================================================== RCS file: /cvsroot/ctypes/ctypes/ctypes/__init__.py,v retrieving revision 1.61.2.24 retrieving revision 1.61.2.25 diff -C2 -d -r1.61.2.24 -r1.61.2.25 *** __init__.py 23 Jan 2006 12:25:34 -0000 1.61.2.24 --- __init__.py 26 Jan 2006 19:49:14 -0000 1.61.2.25 *************** *** 35,38 **** --- 35,40 ---- FUNCFLAG_PYTHONAPI as _FUNCFLAG_PYTHONAPI + from ctypes._loader import LibraryLoader + """ WINOLEAPI -> HRESULT *************** *** 381,485 **** _restype_ = c_int # needed, but unused (see _FUNCFLAG_HRESULT flag) ! def register_library_alias(alias, libname, osname, platform=None): ! global _library_map ! if osname is not None and osname != _os.name: ! return ! if platform is not None and platform != _sys.platform: ! return ! _library_map[alias] = libname ! ! _library_map = {} ! ! register_library_alias("c", "msvcrt", "nt") ! register_library_alias("m", "msvcrt", "nt") ! ! register_library_alias("c", "coredll", "ce") ! register_library_alias("m", "coredll", "ce") ! ! class _DLLS(object): ! def __init__(self, dlltype): ! self._dlltype = dlltype ! ! def __getattr__(self, name): ! if name[0] == '_': ! raise AttributeError, name ! dll = self.LoadLibrary(name) ! setattr(self, name, dll) ! return dll ! ! def __getitem__(self, name): ! return getattr(self, name) ! ! def LoadLibrary(self, name): ! return self._dlltype(name) ! ! def find(self, name, showname=True): ! global _library_map ! if name in _library_map: ! names = _chain( ! self._findLibrary(name), ! self._findLibrary(_library_map[name])) ! else: ! names = self._findLibrary(name) ! for libname in names: ! try: ! dll = self._dlltype(libname) ! except OSError: ! continue ! break ! else: ! raise OSError, "not found: %s" % name ! if showname: ! print "ctypes.find: %s" % libname ! return dll ! ! def LoadLibraryVersion(self, name, version=''): ! global _library_map ! try: ! return self._LoadLibraryVersion(name, version) ! except OSError, e: ! pass ! if name not in _library_map: ! raise ! name = _library_map[name] ! try: ! return self._LoadLibraryVersion(name, version) ! except OSError: ! raise e ! ! if _os.name == "posix" and _sys.platform == "darwin": ! def _findLibrary(self, name): ! return ['lib%s.dylib' % name, ! '%s.dylib' % name, ! '%s.framework/%s' % (name, name)] ! ! def _LoadLibraryVersion(self, name, version=''): ! for libname in self._findLibrary(name): ! try: ! return self._dlltype(libname) ! except OSError: ! continue ! raise OSError, "not found: %s" % name ! ! elif _os.name == "posix": ! def _findLibrary(self, name): ! from util import findLib ! return findLib(name) ! ! def _LoadLibraryVersion(self, name, version=''): ! if version: ! version = '.' + version ! dll = self._dlltype("lib%s.so%s" % (name, version)) ! return dll ! ! else: ! def _findLibrary(self, name): ! return [name] ! ! def _LoadLibraryVersion(self, name, version=''): ! return self._dlltype(name) ! ! cdll = _DLLS(CDLL) ! pydll = _DLLS(PyDLL) if _os.name in ("nt", "ce"): --- 383,388 ---- _restype_ = c_int # needed, but unused (see _FUNCFLAG_HRESULT flag) ! cdll = LibraryLoader(CDLL) ! pydll = LibraryLoader(PyDLL) if _os.name in ("nt", "ce"): *************** *** 492,497 **** if _os.name in ("nt", "ce"): ! windll = _DLLS(WinDLL) ! oledll = _DLLS(OleDLL) if _os.name == "nt": --- 395,400 ---- if _os.name in ("nt", "ce"): ! windll = LibraryLoader(WinDLL) ! oledll = LibraryLoader(OleDLL) if _os.name == "nt": |