From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by mail.openembedded.org (Postfix) with ESMTP id 0A9E3731BA for ; Mon, 22 Feb 2016 15:54:04 +0000 (UTC) Received: from orsmga001.jf.intel.com ([10.7.209.18]) by orsmga102.jf.intel.com with ESMTP; 22 Feb 2016 07:54:05 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.22,485,1449561600"; d="scan'208";a="891816521" Received: from bitbang.jf.intel.com (HELO [10.7.199.163]) ([10.7.199.163]) by orsmga001.jf.intel.com with ESMTP; 22 Feb 2016 07:54:05 -0800 To: =?UTF-8?B?QW7DrWJhbCBMaW3Ds24=?= , openembedded-core@lists.openembedded.org References: <99d32b8b8e7d0422dfa5f89a30e86668d88ef77f.1456153260.git.anibal.limon@linux.intel.com> From: Randy Witt Message-ID: <56CB2F1D.4050605@linux.intel.com> Date: Mon, 22 Feb 2016 07:54:05 -0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.5.0 MIME-Version: 1.0 In-Reply-To: <99d32b8b8e7d0422dfa5f89a30e86668d88ef77f.1456153260.git.anibal.limon@linux.intel.com> Cc: paul.eggleton@linux.intel.com, =?UTF-8?B?QW7DrWJhbCBMaW3Ds24=?= Subject: Re: [PATCH 2/4] classes/testsdk: Move the removal of bitbake PATH to eSDK context only X-BeenThere: openembedded-core@lists.openembedded.org X-Mailman-Version: 2.1.12 Precedence: list List-Id: Patches and discussions about the oe-core layer List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 22 Feb 2016 15:54:05 -0000 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit On 02/22/2016 07:03 AM, Aníbal Limón wrote: > From: Aníbal Limón > > 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 > --- > 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. > + 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 >