[Toaster] [review-request][PATCH] toaster: Add fake entry to Target_File for filesystem root

Ed Bartosh ed.bartosh at linux.intel.com
Tue Sep 22 01:03:23 PDT 2015


On Mon, Sep 21, 2015 at 06:49:22PM +0100, Elliot Smith wrote:
> The files-in-image.txt file is produced by bitbake after an
> image is created, listing all the files in the image.
> However, this list doesn't include the root directory ('/').
>
Did you try to look what caused this change? Bitbake used to include
root dir into this file previously, right?

> buildinfohelper.py then tries to construct the filesystem
> tree from this file, assuming that every directory apart from
> the root directory (which is special-cased) can be assigned
> a parent. But because the root directory isn't listed in
> files-in-image.txt, an object for the root directory is never
> created.
> 
> The direct subdirectories of the root ('./bin', './usr' etc.)
> then can't be assigned a parent directory, as the object
> representing the root directory doesn't exist. This
> results in a Target_File lookup error and causes the
> directory listing page to fail.
> 
> Fix this by creating a fake entry for the root directory
> in the Target_File table, so that the direct subdirectories
> of / can be assigned a parent. Note that it doesn't matter
> that the root is faked, as its properties are never shown
> in the directory structure tree.
>
This looks like a workaround to me. It should be fixed in bitbake code
if it's possible.

Regards,
Ed


> [YOCTO #8280]
> 
> Signed-off-by: Elliot Smith <elliot.smith at intel.com>
> ---
>  bitbake/lib/bb/ui/buildinfohelper.py | 31 +++++++++++++++++--------------
>  1 file changed, 17 insertions(+), 14 deletions(-)
> 
> diff --git a/bitbake/lib/bb/ui/buildinfohelper.py b/bitbake/lib/bb/ui/buildinfohelper.py
> index 6e313fe..b2201f6 100644
> --- a/bitbake/lib/bb/ui/buildinfohelper.py
> +++ b/bitbake/lib/bb/ui/buildinfohelper.py
> @@ -353,26 +353,29 @@ class ORMWrapper(object):
>          files = filedata['files']
>          syms = filedata['syms']
> 
> -        # we insert directories, ordered by name depth
> +        # always create the root directory as a special case;
> +        # note that this is never displayed, so the owner, group,
> +        # size, permission are irrelevant
> +        tf_obj = Target_File.objects.create(target = target_obj,
> +                                            path = '/',
> +                                            size = 0,
> +                                            owner = '',
> +                                            group = '',
> +                                            permission = '',
> +                                            inodetype = Target_File.ITYPE_DIRECTORY)
> +        tf_obj.save()
> +
> +        # insert directories, ordered by name depth
>          for d in sorted(dirs, key=lambda x:len(x[-1].split("/"))):
>              (user, group, size) = d[1:4]
>              permission = d[0][1:]
>              path = d[4].lstrip(".")
> +
> +            # we already created the root directory, so ignore any
> +            # entry for it
>              if len(path) == 0:
> -                # we create the root directory as a special case
> -                path = "/"
> -                tf_obj = Target_File.objects.create(
> -                        target = target_obj,
> -                        path = path,
> -                        size = size,
> -                        inodetype = Target_File.ITYPE_DIRECTORY,
> -                        permission = permission,
> -                        owner = user,
> -                        group = group,
> -                        )
> -                tf_obj.directory = tf_obj
> -                tf_obj.save()
>                  continue
> +
>              parent_path = "/".join(path.split("/")[:len(path.split("/")) - 1])
>              if len(parent_path) == 0:
>                  parent_path = "/"
> --
> Elliot Smith
> Software Engineer
> Intel OTC
> 
> ---------------------------------------------------------------------
> Intel Corporation (UK) Limited
> Registered No. 1134945 (England)
> Registered Office: Pipers Way, Swindon SN3 1RJ
> VAT No: 860 2173 47
> 
> This e-mail and any attachments may contain confidential material for
> the sole use of the intended recipient(s). Any review or distribution
> by others is strictly prohibited. If you are not the intended
> recipient, please contact the sender and delete all copies.
> 
> -- 
> _______________________________________________
> toaster mailing list
> toaster at yoctoproject.org
> https://lists.yoctoproject.org/listinfo/toaster

-- 
--
Regards,
Ed


More information about the toaster mailing list