diff options
| author | Joshua Lock <joshuagloe@gmail.com> | 2016-09-05 21:32:57 +0100 |
|---|---|---|
| committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2016-09-09 12:07:32 +0100 |
| commit | d5d4869634e5db8bde334e23f786ccb28a53972f (patch) | |
| tree | 28fc8d0e93d41fe42d55a2e8070844091b29bfa8 /scripts/runqemu | |
| parent | e162303ecb646b00de85b426113acbcfe0cc96c6 (diff) | |
| download | poky-d5d4869634e5db8bde334e23f786ccb28a53972f.tar.gz | |
runqemu: better handle running on a host with different paths
If the STAGING_*_NATIVE directories from the config file don't exist
and we're in a sourced OE build directory try to extract the paths
from `bitbake -e`
(From OE-Core rev: 9326af1c20636320c70caecebd47aedafb3f2d25)
Signed-off-by: Joshua Lock <joshua.g.lock@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'scripts/runqemu')
| -rwxr-xr-x | scripts/runqemu | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/scripts/runqemu b/scripts/runqemu index 5b719d5ac7..2830c15d52 100755 --- a/scripts/runqemu +++ b/scripts/runqemu | |||
| @@ -558,6 +558,22 @@ class BaseConfig(object): | |||
| 558 | logger.info('Setting DEPLOY_DIR_IMAGE to folder containing %s (%s)' % (self.qemuboot, imgdir)) | 558 | logger.info('Setting DEPLOY_DIR_IMAGE to folder containing %s (%s)' % (self.qemuboot, imgdir)) |
| 559 | self.set('DEPLOY_DIR_IMAGE', imgdir) | 559 | self.set('DEPLOY_DIR_IMAGE', imgdir) |
| 560 | 560 | ||
| 561 | # If the STAGING_*_NATIVE directories from the config file don't exist | ||
| 562 | # and we're in a sourced OE build directory try to extract the paths | ||
| 563 | # from `bitbake -e` | ||
| 564 | havenative = os.path.exists(self.get('STAGING_DIR_NATIVE')) and \ | ||
| 565 | os.path.exists(self.get('STAGING_BINDIR_NATIVE')) | ||
| 566 | |||
| 567 | if not havenative: | ||
| 568 | if not self.bitbake_e: | ||
| 569 | self.load_bitbake_env() | ||
| 570 | native_vars = ['STAGING_DIR_NATIVE', 'STAGING_BINDIR_NATIVE'] | ||
| 571 | for nv in native_vars: | ||
| 572 | s = re.search('^%s="(.*)"' % nv, self.bitbake_e, re.M) | ||
| 573 | if s and s.group(1) != self.get(nv): | ||
| 574 | logger.info('Overriding conf file setting of %s to %s from Bitbake environment' % (nv, s.group(1))) | ||
| 575 | self.set(nv, s.group(1)) | ||
| 576 | |||
| 561 | def print_config(self): | 577 | def print_config(self): |
| 562 | logger.info('Continuing with the following parameters:\n') | 578 | logger.info('Continuing with the following parameters:\n') |
| 563 | if not self.fstype in self.vmtypes: | 579 | if not self.fstype in self.vmtypes: |
| @@ -815,6 +831,29 @@ class BaseConfig(object): | |||
| 815 | shutil.rmtree(self.nfs_dir) | 831 | shutil.rmtree(self.nfs_dir) |
| 816 | shutil.rmtree('%s.pseudo_state' % self.nfs_dir) | 832 | shutil.rmtree('%s.pseudo_state' % self.nfs_dir) |
| 817 | 833 | ||
| 834 | def load_bitbake_env(self, mach=None): | ||
| 835 | if self.bitbake_e: | ||
| 836 | return | ||
| 837 | |||
| 838 | bitbake = shutil.which('bitbake') | ||
| 839 | if not bitbake: | ||
| 840 | return | ||
| 841 | |||
| 842 | if not mach: | ||
| 843 | mach = self.get('MACHINE') | ||
| 844 | |||
| 845 | if mach: | ||
| 846 | cmd = 'MACHINE=%s bitbake -e' % mach | ||
| 847 | else: | ||
| 848 | cmd = 'bitbake -e' | ||
| 849 | |||
| 850 | logger.info('Running %s...' % cmd) | ||
| 851 | try: | ||
| 852 | self.bitbake_e = subprocess.check_output(cmd, shell=True).decode('utf-8') | ||
| 853 | except subprocess.CalledProcessError as err: | ||
| 854 | self.bitbake_e = '' | ||
| 855 | logger.warn("Couldn't run 'bitbake -e' to gather environment information:\n%s" % err.output.decode('utf-8')) | ||
| 856 | |||
| 818 | def main(): | 857 | def main(): |
| 819 | if len(sys.argv) == 1 or "help" in sys.argv: | 858 | if len(sys.argv) == 1 or "help" in sys.argv: |
| 820 | print_usage() | 859 | print_usage() |
