blob: 292e614ebfee29cdb39eca9f19ea8e93fae6835c [file] [log] [blame]
Andrew Geissler69721092021-07-23 12:57:00 -04001From 9ebea97a52e4f70e831dd6402b865c77753ce1cc Mon Sep 17 00:00:00 2001
Brad Bishop26bdd442019-08-16 17:08:17 -04002From: 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
5
6Some 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>
13---
14 buildtools/wafsamba/samba_bundled.py | 27 +++++++++++++++++++--------
Andrew Geissler69721092021-07-23 12:57:00 -040015 1 file changed, 19 insertions(+), 8 deletions(-)
Brad Bishop26bdd442019-08-16 17:08:17 -040016
17diff --git a/buildtools/wafsamba/samba_bundled.py b/buildtools/wafsamba/samba_bundled.py
Andrew Geissler69721092021-07-23 12:57:00 -040018index 5f080dd..cdc115e 100644
Brad Bishop26bdd442019-08-16 17:08:17 -040019--- a/buildtools/wafsamba/samba_bundled.py
20+++ b/buildtools/wafsamba/samba_bundled.py
21@@ -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--
Andrew Geissler69721092021-07-23 12:57:00 -0400662.17.1
Brad Bishop26bdd442019-08-16 17:08:17 -040067