From f4cda3a71311e4496b725bc5f46af93413ec7a1c Mon Sep 17 00:00:00 2001
From: Bian Naimeng <biannm@cn.fujitsu.com>
Date: Fri, 17 Jul 2015 11:58:49 +0800
Subject: [PATCH] libldb: add new recipe

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 <biannm@cn.fujitsu.com>

---
 buildtools/wafsamba/samba_bundled.py | 32 ++++++++++++++++++++++++--------
 1 file changed, 24 insertions(+), 8 deletions(-)

diff --git a/buildtools/wafsamba/samba_bundled.py b/buildtools/wafsamba/samba_bundled.py
index 253d604..398cc6a 100644
--- 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, libname, modulename, minversion='0.0.0'):
     # 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)
