diff options
author | Joshua Lock <joshua.g.lock@intel.com> | 2016-09-07 23:04:25 +0100 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2016-09-09 12:07:32 +0100 |
commit | 8a8948e0e1c3851aca7ad514ffc13d8416fca174 (patch) | |
tree | 50a2b6a541fcb3d00f06528eeed924948e959f11 | |
parent | d5d4869634e5db8bde334e23f786ccb28a53972f (diff) | |
download | poky-8a8948e0e1c3851aca7ad514ffc13d8416fca174.tar.gz |
runqemu: fixes for when invoked during a bitbake run
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]
(From OE-Core rev: 1e8165ea2f19aecdc03ccd102ee44ef0544f0f39)
Signed-off-by: Joshua Lock <joshua.g.lock@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rwxr-xr-x | scripts/runqemu | 28 |
1 files changed, 22 insertions, 6 deletions
diff --git a/scripts/runqemu b/scripts/runqemu index 2830c15d52..e8d14f5142 100755 --- a/scripts/runqemu +++ b/scripts/runqemu | |||
@@ -567,12 +567,28 @@ class BaseConfig(object): | |||
567 | if not havenative: | 567 | if not havenative: |
568 | if not self.bitbake_e: | 568 | if not self.bitbake_e: |
569 | self.load_bitbake_env() | 569 | self.load_bitbake_env() |
570 | native_vars = ['STAGING_DIR_NATIVE', 'STAGING_BINDIR_NATIVE'] | 570 | |
571 | for nv in native_vars: | 571 | if self.bitbake_e: |
572 | s = re.search('^%s="(.*)"' % nv, self.bitbake_e, re.M) | 572 | native_vars = ['STAGING_DIR_NATIVE', 'STAGING_BINDIR_NATIVE'] |
573 | if s and s.group(1) != self.get(nv): | 573 | for nv in native_vars: |
574 | logger.info('Overriding conf file setting of %s to %s from Bitbake environment' % (nv, s.group(1))) | 574 | s = re.search('^%s="(.*)"' % nv, self.bitbake_e, re.M) |
575 | self.set(nv, s.group(1)) | 575 | if s and s.group(1) != self.get(nv): |
576 | logger.info('Overriding conf file setting of %s to %s from Bitbake environment' % (nv, s.group(1))) | ||
577 | self.set(nv, s.group(1)) | ||
578 | else: | ||
579 | # when we're invoked from a running bitbake instance we won't | ||
580 | # be able to call `bitbake -e` but should have OE_TMPDIR set in | ||
581 | # the environment and can guess paths based on it | ||
582 | tmpdir = os.environ.get('OE_TMPDIR', None) | ||
583 | if tmpdir: | ||
584 | logger.info('Setting STAGING_DIR_NATIVE and STAGING_BINDIR_NATIVE relative to OE_TMPDIR (%s)' % tmpdir) | ||
585 | hostos, _, _, _, machine = os.uname() | ||
586 | buildsys = '%s-%s' % (machine, hostos.lower()) | ||
587 | staging_dir_native = '%s/sysroots/%s' % (tmpdir, buildsys) | ||
588 | self.set('STAGING_DIR_NATIVE', staging_dir_native) | ||
589 | # we have to assume that STAGING_BINDIR_NATIVE is at usr/bin | ||
590 | staging_bindir_native = '%s/usr/bin' % staging_dir_native | ||
591 | self.set('STAGING_BINDIR_NATIVE', staging_bindir_native) | ||
576 | 592 | ||
577 | def print_config(self): | 593 | def print_config(self): |
578 | logger.info('Continuing with the following parameters:\n') | 594 | logger.info('Continuing with the following parameters:\n') |