[OE-core] [PATCH 5/6] runqemu: try symlinks when kernel or rootfs can't be found

Robert Yang liezhi.yang at windriver.com
Sun Sep 18 07:23:57 UTC 2016



On 09/16/2016 08:52 PM, Joshua Lock wrote:
> If the kernel or rootfs names written to the qemuboot.conf can't
> be found, try and find the symlinked variant of the filename.
>
> This will help usability of runqemu, for example where a user
> downloads an image and associated files as the symlinked names
> yet the qemuboot.conf variables point to the full, non-linked,
> file names.
>
> Signed-off-by: Joshua Lock <joshua.g.lock at intel.com>
> ---
>  scripts/runqemu | 16 +++++++++++++---
>  1 file changed, 13 insertions(+), 3 deletions(-)
>
> diff --git a/scripts/runqemu b/scripts/runqemu
> index 6aaae44..38f9b30 100755
> --- a/scripts/runqemu
> +++ b/scripts/runqemu
> @@ -451,7 +451,12 @@ class BaseConfig(object):
>              if all_files:
>                  self.rootfs = all_files[0]
>              else:
> -                raise Exception("Failed to find rootfs: %s" % cmd)
> +                cmd = '%s/%s*.%s' % (self.get('DEPLOY_DIR_IMAGE'), self.get('IMAGE_LINK_NAME'), self.fstype)
> +                all_files = glob.glob(cmd)
> +                if all_files:
> +                    self.rootfs = all_files[0]
> +                else:
> +                    raise Exception("Failed to find rootfs: %s" % cmd)
>
>          if not os.path.exists(self.rootfs):
>              raise Exception("Can't find rootfs: %s" % self.rootfs)
> @@ -462,13 +467,18 @@ class BaseConfig(object):
>          if self.fstype in self.vmtypes:
>              return
>          kernel = self.kernel
> +        deploy_dir_image = self.get('DEPLOY_DIR_IMAGE')
>          if not kernel:
> -            kernel = "%s/%s" % (self.get('DEPLOY_DIR_IMAGE'), self.get('QB_DEFAULT_KERNEL'))
> +            kernel = "%s/%s" % (deploy_dir_image, self.get('QB_DEFAULT_KERNEL'))
>
>          if os.path.exists(kernel):
>              self.kernel = kernel
>          else:
> -            raise Exception("KERNEL %s not found" % kernel)
> +            kernel = "%s/%s" % (deploy_dir_image, self.get('KERNEL_IMAGETYPE'))
> +            if kernel != deploy_dir_image and os.path.exists(kernel):


Thank you very much for fixing this, can we use KERNEL_IMAGETYPE* here, please ?
Please take a look at here:
http://autobuilder.yoctoproject.org/pub/releases/yocto-2.2_M3.rc1/machines/qemu/qemuppc/

Its kernel name might be vmlinux-qemuppc.bin, while KERNEL_IMAGETYPE is vmlinux.

I have local patches conflicted with this, they also fix dtb,
OECORE_NATIVE_SYSROOT and nfs. I will send a V2 including your patches,
and please feel free to comment.

// Robert

> +                self.kernel = kernel
> +            else:
> +                raise Exception("KERNEL %s not found" % kernel)
>
>          dtb = self.get('QB_DTB')
>          if dtb:
>



More information about the Openembedded-core mailing list