From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by mail.openembedded.org (Postfix) with ESMTP id 6F00377195 for ; Mon, 22 Feb 2016 16:23:05 +0000 (UTC) Received: from orsmga001.jf.intel.com ([10.7.209.18]) by fmsmga104.fm.intel.com with ESMTP; 22 Feb 2016 08:23:06 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.22,485,1449561600"; d="scan'208";a="891838149" 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 08:23:05 -0800 To: =?UTF-8?B?QW7DrWJhbCBMaW3Ds24=?= , openembedded-core@lists.openembedded.org References: <99d32b8b8e7d0422dfa5f89a30e86668d88ef77f.1456153260.git.anibal.limon@linux.intel.com> <56CB2F1D.4050605@linux.intel.com> <56CB32C1.9040308@linux.intel.com> From: Randy Witt Message-ID: <56CB35E8.6060301@linux.intel.com> Date: Mon, 22 Feb 2016 08:23:04 -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: <56CB32C1.9040308@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 16:23:06 -0000 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit 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 >>> >>> 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. > > 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 >>> >> >