Some modules such as dynamic library maybe cann't be imported while cross compile, we just check whether does the module exist. Signed-off-by: Bian Naimeng --- a/buildtools/wafsamba/samba_bundled.py +++ b/buildtools/wafsamba/samba_bundled.py @@ -2,6 +2,7 @@ import sys import Build, Options, Logs +import imp, os from Configure import conf from samba_utils import TO_LIST @@ -249,17 +250,32 @@ def CHECK_BUNDLED_SYSTEM_PYTHON(conf, li # versions minversion = minimum_library_version(conf, libname, minversion) - try: - m = __import__(modulename) - except ImportError: - found = False - else: + # Find module in PYTHONPATH + stuff = imp.find_module(modulename, [os.environ["PYTHONPATH"]]) + if stuff: try: - version = m.__version__ - except AttributeError: + m = imp.load_module(modulename, stuff[0], stuff[1], stuff[2]) + except ImportError: found = False + + if conf.env.CROSS_COMPILE: + # Some modules such as dynamic library maybe cann't be imported + # while cross compile, we just check whether the module exist + Logs.warn('Cross module[%s] has been found, but can not be loaded.' % (stuff[1])) + found = True else: - found = tuplize_version(version) >= tuplize_version(minversion) + try: + version = m.__version__ + except AttributeError: + found = False + else: + found = tuplize_version(version) >= tuplize_version(minversion) + finally: + if stuff[0]: + stuff[0].close() + else: + found = False + if not found and not conf.LIB_MAY_BE_BUNDLED(libname): Logs.error('ERROR: Python module %s of version %s not found, and bundling disabled' % (libname, minversion)) sys.exit(1)