* [PATCH 0/2] Python 3 runqemu fixes @ 2016-09-07 22:04 Joshua Lock 2016-09-07 22:04 ` [PATCH 1/2] runqemu: remove use of subprocess.run() Joshua Lock 2016-09-07 22:04 ` [PATCH 2/2] runqemu: fixes for when invoked during a bitbake run Joshua Lock 0 siblings, 2 replies; 3+ messages in thread From: Joshua Lock @ 2016-09-07 22:04 UTC (permalink / raw) To: openembedded-core Note: This patch is against master-next, as the Python 3 runqemu hasn't made it to master yet. This supercedes my earlier one patch series "Python3 runqemu: remove use of subprocess.run()" (both versions) Two fixes for the Python3 runqemu: * Use of subprocess.run() in recent runqemu changes (by me) elevates the Python 3 requirement from 3.4+ to 3.5+. Replace subprocess.run() with subprocess.check_output(), as that is available in Python 3.1+ * testimage calls runqemu from within a bitbake run, which prevents us from using `bitbake -e` to determine bitbake environment variables. The test code exports an OE_TMPDIR variable which was used by the shell runqemu to infer/guess paths into the sysroot. This patch does the equivalent. Changes since "Python3 runqemu: remove use of subprocess.run()" v2: * Fix typo in exception handler log message. * Add extra fix to support testimage Changes since "Python3 runqemu: remove use of subprocess.run()" v1: * Fix printing of error message in exception handler The following changes since commit 3df3462d81216d8b26a87d9915abd9de1b2c2faa: bitbake: cooker: record events on cooker exit (2016-09-06 23:18:06 +0100) are available in the git repository at: git://git.yoctoproject.org/poky-contrib joshuagl/runqemu http://git.yoctoproject.org/cgit.cgi/poky-contrib/log/?h=joshuagl/runqemu Joshua Lock (2): runqemu: remove use of subprocess.run() runqemu: fixes for when invoked during a bitbake run scripts/runqemu | 37 +++++++++++++++++++++++++++---------- 1 file changed, 27 insertions(+), 10 deletions(-) -- 2.7.4 ^ permalink raw reply [flat|nested] 3+ messages in thread
* [PATCH 1/2] runqemu: remove use of subprocess.run() 2016-09-07 22:04 [PATCH 0/2] Python 3 runqemu fixes Joshua Lock @ 2016-09-07 22:04 ` Joshua Lock 2016-09-07 22:04 ` [PATCH 2/2] runqemu: fixes for when invoked during a bitbake run Joshua Lock 1 sibling, 0 replies; 3+ messages in thread From: Joshua Lock @ 2016-09-07 22:04 UTC (permalink / raw) To: openembedded-core We aim to support Python 3.4+ whereas subprocess.run() was added in Python 3.5. Replace subprocess.run() with subprocess.check_output(). Signed-off-by: Joshua Lock <joshua.g.lock@intel.com> --- scripts/runqemu | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/scripts/runqemu b/scripts/runqemu index 0a56c60..cbc5cc6 100755 --- a/scripts/runqemu +++ b/scripts/runqemu @@ -858,10 +858,11 @@ class BaseConfig(object): cmd = 'bitbake -e' logger.info('Running %s...' % cmd) - proc = subprocess.run(cmd, shell=True, stdout=subprocess.PIPE) - if proc.returncode != 0: - logger.warn("Couldn't run 'bitbake -e' to gather environment information") - self.bitbake_e = proc.stdout.decode('utf-8') + try: + self.bitbake_e = subprocess.check_output(cmd, shell=True).decode('utf-8') + except subprocess.CalledProcessError as err: + self.bitbake_e = '' + logger.warn("Couldn't run 'bitbake -e' to gather environment information:\n%s" % err.output.decode('utf-8')) def main(): if len(sys.argv) == 1 or "help" in sys.argv: -- 2.7.4 ^ permalink raw reply related [flat|nested] 3+ messages in thread
* [PATCH 2/2] runqemu: fixes for when invoked during a bitbake run 2016-09-07 22:04 [PATCH 0/2] Python 3 runqemu fixes Joshua Lock 2016-09-07 22:04 ` [PATCH 1/2] runqemu: remove use of subprocess.run() Joshua Lock @ 2016-09-07 22:04 ` Joshua Lock 1 sibling, 0 replies; 3+ messages in thread From: Joshua Lock @ 2016-09-07 22:04 UTC (permalink / raw) To: openembedded-core When runqemu is invoked from a running bitbake instance it will be unable to call `bitbake -e` due to the lock held by the calling bitbake instance. Our test code sets an OE_TMPDIR environment variable from which we can infer/guess paths. Add code to do so when self.bitbake_e can't be set, much as the sh version of runqemu did. [YOCTO #10240] Signed-off-by: Joshua Lock <joshua.g.lock@intel.com> --- scripts/runqemu | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/scripts/runqemu b/scripts/runqemu index cbc5cc6..7919564 100755 --- a/scripts/runqemu +++ b/scripts/runqemu @@ -570,12 +570,28 @@ class BaseConfig(object): if not havenative: if not self.bitbake_e: self.load_bitbake_env() - native_vars = ['STAGING_DIR_NATIVE', 'STAGING_BINDIR_NATIVE'] - for nv in native_vars: - s = re.search('^%s="(.*)"' % nv, self.bitbake_e, re.M) - if s and s.group(1) != self.get(nv): - logger.info('Overriding conf file setting of %s to %s from Bitbake environment' % (nv, s.group(1))) - self.set(nv, s.group(1)) + + if self.bitbake_e: + native_vars = ['STAGING_DIR_NATIVE', 'STAGING_BINDIR_NATIVE'] + for nv in native_vars: + s = re.search('^%s="(.*)"' % nv, self.bitbake_e, re.M) + if s and s.group(1) != self.get(nv): + logger.info('Overriding conf file setting of %s to %s from Bitbake environment' % (nv, s.group(1))) + self.set(nv, s.group(1)) + else: + # when we're invoked from a running bitbake instance we won't + # be able to call `bitbake -e` but should have OE_TMPDIR set in + # the environment and can guess paths based on it + tmpdir = os.environ.get('OE_TMPDIR', None) + if tmpdir: + logger.info('Setting STAGING_DIR_NATIVE and STAGING_BINDIR_NATIVE relative to OE_TMPDIR (%s)' % tmpdir) + hostos, _, _, _, machine = os.uname() + buildsys = '%s-%s' % (machine, hostos.lower()) + staging_dir_native = '%s/sysroots/%s' % (tmpdir, buildsys) + self.set('STAGING_DIR_NATIVE', staging_dir_native) + # we have to assume that STAGING_BINDIR_NATIVE is at usr/bin + staging_bindir_native = '%s/usr/bin' % staging_dir_native + self.set('STAGING_BINDIR_NATIVE', staging_bindir_native) def print_config(self): logger.info('Continuing with the following parameters:\n') -- 2.7.4 ^ permalink raw reply related [flat|nested] 3+ messages in thread
end of thread, other threads:[~2016-09-07 22:04 UTC | newest] Thread overview: 3+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2016-09-07 22:04 [PATCH 0/2] Python 3 runqemu fixes Joshua Lock 2016-09-07 22:04 ` [PATCH 1/2] runqemu: remove use of subprocess.run() Joshua Lock 2016-09-07 22:04 ` [PATCH 2/2] runqemu: fixes for when invoked during a bitbake run Joshua Lock
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox