On 02/22/2016 08:09 AM, Aníbal Limón wrote:


On 02/22/2016 09:54 AM, Randy Witt wrote:
On 02/22/2016 07:03 AM, Aníbal Limón wrote:
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)

Just pass env to the check_output call, then you won't have to worry
about resetting the parent process' env back to the original value.

Could be but then we need the code for generate the env line so for
practically the result is the same.

Modify avoid_paths_in_environ() to instead return the environment rather than modify it as a side effect. Then the code reads more easily and prevents future bugs where someone uses avoid_paths_in_environ, but forgets to reset the os.environ.



+        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




--
_______________________________________________
Openembedded-core mailing list
[email protected]
http://lists.openembedded.org/mailman/listinfo/openembedded-core

Reply via email to