All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ed Bartosh <ed.bartosh@linux.intel.com>
To: Elliot Smith <elliot.smith@intel.com>
Cc: toaster@yoctoproject.org
Subject: Re: [review-request][PATCH] toaster: Add fake entry to Target_File for filesystem root
Date: Tue, 22 Sep 2015 11:03:23 +0300	[thread overview]
Message-ID: <20150922080323.GA21718@linux.intel.com> (raw)
In-Reply-To: <1442857762-2642-1-git-send-email-elliot.smith@intel.com>

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@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@yoctoproject.org
> https://lists.yoctoproject.org/listinfo/toaster

-- 
--
Regards,
Ed


  parent reply	other threads:[~2015-09-22  8:03 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-09-21 17:49 [review-request][PATCH] toaster: Add fake entry to Target_File for filesystem root Elliot Smith
2015-09-22  2:41 ` Brian Avery
2015-09-22  8:03 ` Ed Bartosh [this message]
2015-09-22  8:37   ` Smith, Elliot
2015-09-22 16:47     ` Brian Avery
2015-09-23  7:12       ` Smith, Elliot

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20150922080323.GA21718@linux.intel.com \
    --to=ed.bartosh@linux.intel.com \
    --cc=elliot.smith@intel.com \
    --cc=toaster@yoctoproject.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.