blob: 3f2921ed3348bed327d19c3f958f4fed4025cb0d [file] [log] [blame]
Brad Bishop26bdd442019-08-16 17:08:17 -04001From cc0576405803bcae45ee353c4333c449cead9207 Mon Sep 17 00:00:00 2001
2From: Changqing Li <changqing.li@windriver.com>
3Date: Tue, 25 Jun 2019 14:25:08 +0800
4Subject: [PATCH] do not import target module while cross compile
Brad Bishop1a4b7ee2018-12-16 17:11:34 -08005
Brad Bishop26bdd442019-08-16 17:08:17 -04006Some modules such as dynamic library maybe cann't be imported
7while cross compile, we just check whether does the module exist.
Patrick Williamsb48b7b42016-08-17 15:04:38 -05008
9Signed-off-by: Bian Naimeng <biannm@cn.fujitsu.com>
10
Brad Bishop26bdd442019-08-16 17:08:17 -040011update to version 4.10.5, and switch to python3
12Signed-off-by: Changqing Li <changqing.li@windriver.com>
Brad Bishop1a4b7ee2018-12-16 17:11:34 -080013---
Brad Bishop26bdd442019-08-16 17:08:17 -040014 buildtools/wafsamba/samba_bundled.py | 27 +++++++++++++++++++--------
15 1 file changed, 18 insertions(+), 8 deletions(-)
Brad Bishop1a4b7ee2018-12-16 17:11:34 -080016
17diff --git a/buildtools/wafsamba/samba_bundled.py b/buildtools/wafsamba/samba_bundled.py
Brad Bishop26bdd442019-08-16 17:08:17 -040018index 60ce7da..5468a36 100644
Brad Bishop1a4b7ee2018-12-16 17:11:34 -080019--- a/buildtools/wafsamba/samba_bundled.py
20+++ b/buildtools/wafsamba/samba_bundled.py
Brad Bishop26bdd442019-08-16 17:08:17 -040021@@ -4,6 +4,7 @@ import sys
22 from waflib import Build, Options, Logs
23 from waflib.Configure import conf
24 from wafsamba import samba_utils
25+import importlib.util, os
Patrick Williamsb48b7b42016-08-17 15:04:38 -050026
Brad Bishop26bdd442019-08-16 17:08:17 -040027 def PRIVATE_NAME(bld, name, private_extension, private_library):
28 '''possibly rename a library to include a bundled extension'''
29@@ -249,17 +250,27 @@ def CHECK_BUNDLED_SYSTEM_PYTHON(conf, libname, modulename, minversion='0.0.0'):
Patrick Williamsb48b7b42016-08-17 15:04:38 -050030 # versions
31 minversion = minimum_library_version(conf, libname, minversion)
32
33- try:
34- m = __import__(modulename)
35- except ImportError:
36- found = False
37- else:
38+ # Find module in PYTHONPATH
Brad Bishop26bdd442019-08-16 17:08:17 -040039+ spec = importlib.util._find_spec_from_path(modulename, [os.environ["PYTHONPATH"]])
40+ if spec:
Patrick Williamsb48b7b42016-08-17 15:04:38 -050041 try:
42- version = m.__version__
43- except AttributeError:
Brad Bishop26bdd442019-08-16 17:08:17 -040044+ module = importlib.util.module_from_spec(spec)
45+ spec.loader.load_module(module)
Patrick Williamsb48b7b42016-08-17 15:04:38 -050046+ except ImportError:
47 found = False
48+
49+ if conf.env.CROSS_COMPILE:
50+ # Some modules such as dynamic library maybe cann't be imported
51+ # while cross compile, we just check whether the module exist
Brad Bishop26bdd442019-08-16 17:08:17 -040052+ Logs.warn('Cross module[%s] has been found, but can not be loaded.' % (spec.name))
Patrick Williamsb48b7b42016-08-17 15:04:38 -050053+ found = True
54 else:
55- found = tuplize_version(version) >= tuplize_version(minversion)
56+ try:
Brad Bishop26bdd442019-08-16 17:08:17 -040057+ version = module.__version__
Patrick Williamsb48b7b42016-08-17 15:04:38 -050058+ except AttributeError:
59+ found = False
60+ else:
61+ found = tuplize_version(version) >= tuplize_version(minversion)
Patrick Williamsb48b7b42016-08-17 15:04:38 -050062 if not found and not conf.LIB_MAY_BE_BUNDLED(libname):
63 Logs.error('ERROR: Python module %s of version %s not found, and bundling disabled' % (libname, minversion))
64 sys.exit(1)
Brad Bishop26bdd442019-08-16 17:08:17 -040065--
662.7.4
67