[Toaster] [review-request][PATCH] toaster: Add fake entry to Target_File for filesystem root
Brian Avery
avery.brian at gmail.com
Mon Sep 21 19:41:20 PDT 2015
upstreamed.
ty,
b
On Mon, Sep 21, 2015 at 10:49 AM, Elliot Smith <elliot.smith at intel.com> 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 ('/').
>
> 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.
>
> [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
More information about the toaster
mailing list