From: Aníbal Limón <[email protected]> The removal of bitbake and scripts PATH is only needed by eSDK tests so move to eSDK context only.
This also it's a support for eSDK update test because it needs to execute oe-publish-sdk from scripts. Signed-off-by: Aníbal Limón <[email protected]> --- meta/classes/testsdk.bbclass | 9 ++++----- meta/lib/oeqa/oetest.py | 22 +++++++++++++++++++++- 2 files changed, 25 insertions(+), 6 deletions(-) diff --git a/meta/classes/testsdk.bbclass b/meta/classes/testsdk.bbclass index 7e245e9..01d37c4 100644 --- a/meta/classes/testsdk.bbclass +++ b/meta/classes/testsdk.bbclass @@ -96,11 +96,10 @@ def testsdkext_main(d): # extensible sdk use network export_proxies(d) - # extensible sdk shows a warning if found bitbake in the path - # because can cause problems so clean it - paths_to_avoid = ['bitbake/bin', 'poky/scripts', - d.getVar('STAGING_DIR', True), - d.getVar('BASE_WORKDIR', True)] + # extensible sdk can be contaminated if native programs are + # in PATH, i.e. use perl-native instead of eSDK one. + paths_to_avoid = [d.getVar('STAGING_DIR', True), + d.getVar('BASE_WORKDIR', True)] avoid_paths_in_environ(paths_to_avoid) pn = d.getVar("PN", True) diff --git a/meta/lib/oeqa/oetest.py b/meta/lib/oeqa/oetest.py index 3e2ea0f..cd1e7e0 100644 --- a/meta/lib/oeqa/oetest.py +++ b/meta/lib/oeqa/oetest.py @@ -21,6 +21,7 @@ import logging import oeqa.runtime import oeqa.sdkext from oeqa.utils.decorators import LogResults, gettag, getResults +from oeqa.utils import avoid_paths_in_environ logger = logging.getLogger("BitBake") @@ -128,7 +129,26 @@ class oeSDKTest(oeTest): return subprocess.check_output(". %s > /dev/null; %s;" % (self.tc.sdkenv, cmd), shell=True) class oeSDKExtTest(oeSDKTest): - pass + def _run(self, cmd): + output = None + + paths = os.environ['PATH'] + + # extensible sdk shows a warning if found bitbake in the path + # because can cause contamination, i.e. use devtool from + # poky/scripts instead of eSDK one. + paths_to_avoid = ['bitbake/bin', 'poky/scripts'] + avoid_paths_in_environ(paths_to_avoid) + + try: + output = subprocess.check_output(". %s > /dev/null; %s;" % \ + (self.tc.sdkenv, cmd), shell=True) + except: + os.environ['PATH'] = paths + raise + + os.environ['PATH'] = paths + return output def getmodule(pos=2): # stack returns a list of tuples containg frame information -- 2.1.4 -- _______________________________________________ Openembedded-core mailing list [email protected] http://lists.openembedded.org/mailman/listinfo/openembedded-core
