blob: e21524237191007d3242928c484ba658c3420df2 [file] [log] [blame]
Andrew Geissler517393d2023-01-13 08:55:19 -06001From 69c409195ede704ed7e9298ed4942cc70a52e099 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
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>
Andrew Geissler69721092021-07-23 12:57:00 -040013
14Upstream-Status: Inappropriate [embedded specific]
15
16Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
Brad Bishop1a4b7ee2018-12-16 17:11:34 -080017---
Brad Bishop26bdd442019-08-16 17:08:17 -040018 buildtools/wafsamba/samba_bundled.py | 27 +++++++++++++++++++--------
Andrew Geissler69721092021-07-23 12:57:00 -040019 1 file changed, 19 insertions(+), 8 deletions(-)
Brad Bishop1a4b7ee2018-12-16 17:11:34 -080020
21diff --git a/buildtools/wafsamba/samba_bundled.py b/buildtools/wafsamba/samba_bundled.py
Andrew Geissler517393d2023-01-13 08:55:19 -060022index 7d2d855..01dcb56 100644
Brad Bishop1a4b7ee2018-12-16 17:11:34 -080023--- a/buildtools/wafsamba/samba_bundled.py
24+++ b/buildtools/wafsamba/samba_bundled.py
Brad Bishop26bdd442019-08-16 17:08:17 -040025@@ -4,6 +4,7 @@ import sys
26 from waflib import Build, Options, Logs
27 from waflib.Configure import conf
28 from wafsamba import samba_utils
29+import importlib.util, os
Patrick Williamsb48b7b42016-08-17 15:04:38 -050030
Andrew Geissler517393d2023-01-13 08:55:19 -060031 def PRIVATE_NAME(bld, name):
Brad Bishop26bdd442019-08-16 17:08:17 -040032 '''possibly rename a library to include a bundled extension'''
Andrew Geissler517393d2023-01-13 08:55:19 -060033@@ -241,17 +242,27 @@ def CHECK_BUNDLED_SYSTEM_PYTHON(conf, libname, modulename, minversion='0.0.0'):
Patrick Williamsb48b7b42016-08-17 15:04:38 -050034 # versions
35 minversion = minimum_library_version(conf, libname, minversion)
36
37- try:
38- m = __import__(modulename)
39- except ImportError:
40- found = False
41- else:
42+ # Find module in PYTHONPATH
Brad Bishop26bdd442019-08-16 17:08:17 -040043+ spec = importlib.util._find_spec_from_path(modulename, [os.environ["PYTHONPATH"]])
44+ if spec:
Patrick Williamsb48b7b42016-08-17 15:04:38 -050045 try:
46- version = m.__version__
47- except AttributeError:
Brad Bishop26bdd442019-08-16 17:08:17 -040048+ module = importlib.util.module_from_spec(spec)
49+ spec.loader.load_module(module)
Patrick Williamsb48b7b42016-08-17 15:04:38 -050050+ except ImportError:
51 found = False
52+
53+ if conf.env.CROSS_COMPILE:
54+ # Some modules such as dynamic library maybe cann't be imported
55+ # while cross compile, we just check whether the module exist
Brad Bishop26bdd442019-08-16 17:08:17 -040056+ Logs.warn('Cross module[%s] has been found, but can not be loaded.' % (spec.name))
Patrick Williamsb48b7b42016-08-17 15:04:38 -050057+ found = True
58 else:
59- found = tuplize_version(version) >= tuplize_version(minversion)
60+ try:
Brad Bishop26bdd442019-08-16 17:08:17 -040061+ version = module.__version__
Patrick Williamsb48b7b42016-08-17 15:04:38 -050062+ except AttributeError:
63+ found = False
64+ else:
65+ found = tuplize_version(version) >= tuplize_version(minversion)
Patrick Williamsb48b7b42016-08-17 15:04:38 -050066 if not found and not conf.LIB_MAY_BE_BUNDLED(libname):
67 Logs.error('ERROR: Python module %s of version %s not found, and bundling disabled' % (libname, minversion))
68 sys.exit(1)
Brad Bishop26bdd442019-08-16 17:08:17 -040069--
Andrew Geissler517393d2023-01-13 08:55:19 -0600702.25.1
Brad Bishop26bdd442019-08-16 17:08:17 -040071