From ba492aead265edfd1da2a6c45dd7661c248309cb Mon Sep 17 00:00:00 2001
From: Changqing Li <changqing.li@windriver.com>
Date: Tue, 25 Jun 2019 14:25:08 +0800
Subject: [PATCH] do not import target module while cross compile

Some modules such as dynamic library maybe cann't be imported
while cross compile, we just check whether does the module exist.

Upstream-Status: Pending

Signed-off-by: Bian Naimeng <biannm@cn.fujitsu.com>

update to version 4.10.5, and switch to python3
Signed-off-by: Changqing Li <changqing.li@windriver.com>
---
 buildtools/wafsamba/samba_bundled.py | 27 +++++++++++++++++++--------
 1 file changed, 19 insertions(+), 8 deletions(-)

diff --git a/buildtools/wafsamba/samba_bundled.py b/buildtools/wafsamba/samba_bundled.py
index 2300565..26d9e8c 100644
--- a/buildtools/wafsamba/samba_bundled.py
+++ b/buildtools/wafsamba/samba_bundled.py
@@ -4,6 +4,7 @@ import sys
 from waflib import Build, Options, Logs
 from waflib.Configure import conf
 from wafsamba import samba_utils
+import importlib.util, os
 
 def PRIVATE_NAME(bld, name):
     '''possibly rename a library to include a bundled extension'''
@@ -245,17 +246,27 @@ 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
+    spec = importlib.util._find_spec_from_path(modulename, [os.environ["PYTHONPATH"]])
+    if spec:
         try:
-            version = m.__version__
-        except AttributeError:
+            module = importlib.util.module_from_spec(spec)
+            spec.loader.load_module(module)
+        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.' % (spec.name))
+                found = True
         else:
-            found = tuplize_version(version) >= tuplize_version(minversion)
+            try:
+                version = module.__version__
+            except AttributeError:
+                found = False
+            else:
+                found = tuplize_version(version) >= tuplize_version(minversion)
     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)
-- 
2.25.1

