Source code for core.ctypes_ext

# -*- python -*-
#
#       OpenAlea.Core
#
#       Copyright 2011 INRIA - CIRAD - INRA
#
#       File author(s): Daniel BARBEAU <daniel.barbeau@inria.fr>
#
#       Distributed under the Cecill-C License.
#       See accompanying file LICENSE.txt or copy at
#           http://www.cecill.info/licences/Licence_CeCILL-C_V1-en.html
#
#       OpenAlea WebSite : http://openalea.gforge.inria.fr
#
###############################################################################
""" This file contains fixes for shared library location under different
oses"""

__license__ = "Cecill-C"
__revision__ = " $Id$ "


import os
import os.path
import sys
from ctypes import util as ctutil


[docs]def find_library(name): """Similar to ctypes.util.find_library except that on posixes that are not darwin, besides using ldconfig, gcc and objdump, it also browses the LD_LIBRARY_PATH.""" libname = ctutil.find_library(name) if not libname: if os.name == "posix" and sys.platform != "darwin": lddirs = os.environ.get("LD_LIBRARY_PATH", "") lddirs = lddirs.split(":") libs = [f for d in lddirs if os.path.exists(d) for f in os.listdir(d)] candidateName = "lib"+name+".so" for lname in libs: if candidateName in lname and not lname.endswith("egm"): libname = lname break return libname