[Toaster] [PATCH] toaster: localhostbectrl Don't descend into directories for cached_layers

Smith, Elliot elliot.smith at intel.com
Fri Oct 9 03:30:02 PDT 2015


On 8 October 2015 at 12:08, Michael Wood <michael.g.wood at intel.com> wrote:

> As toaster makes use of clones of itself we have a mechanism to just
> clone the current checkout and use that as a basis for the git clone for
> the layers inside. For instance in poky if we're running in that directory
> we don't ever want to change the current checkout so we make a copy of
> ourselves to do this work in. This step is cached_layers and previously
> traversed through directories inside the current checkout to find any
> pre-existing checkouts. This was ending up traversing too many
> directories down so remove the traverse and only deal with the current
> directory.
>

Submitted upstream, added to toaster-next.

Elliot


>
> [YOCTO #8463]
>
> Signed-off-by: Michael Wood <michael.g.wood at intel.com>
> ---
>  .../toaster/bldcontrol/localhostbecontroller.py    | 29
> ++++++++++++----------
>  1 file changed, 16 insertions(+), 13 deletions(-)
>
> diff --git a/bitbake/lib/toaster/bldcontrol/localhostbecontroller.py
> b/bitbake/lib/toaster/bldcontrol/localhostbecontroller.py
> index 3ee68ae..b5cf559 100644
> --- a/bitbake/lib/toaster/bldcontrol/localhostbecontroller.py
> +++ b/bitbake/lib/toaster/bldcontrol/localhostbecontroller.py
> @@ -218,23 +218,26 @@ class
> LocalhostBEController(BuildEnvironmentController):
>          logger.debug("localhostbecontroller, our git repos are %s" %
> pformat(gitrepos))
>
>
> -        # 2. find checked-out git repos in the sourcedir directory that
> may help faster cloning
> +        # 2. Note for future use if the current source directory is a
> +        # checked-out git repos that could match a layer's vcs_url and
> therefore
> +        # be used to speed up cloning (rather than fetching it again).
>
>          cached_layers = {}
> -        for ldir in os.listdir(self.be.sourcedir):
> -            fldir = os.path.join(self.be.sourcedir, ldir)
> -            if os.path.isdir(fldir):
> +
> +        try:
> +            for remotes in self._shellcmd("git remote -v",
> self.be.sourcedir).split("\n"):
>                  try:
> -                    for line in self._shellcmd("git remote -v",
> fldir).split("\n"):
> -                        try:
> -                            remote = line.split("\t")[1].split(" ")[0]
> -                            if remote not in cached_layers:
> -                                cached_layers[remote] = fldir
> -                        except IndexError:
> -                            pass
> -                except ShellCmdException:
> -                    # ignore any errors in collecting git remotes
> +                    remote = remotes.split("\t")[1].split(" ")[0]
> +                    if remote not in cached_layers:
> +                        cached_layers[remote] = self.be.sourcedir
> +                except IndexError:
>                      pass
> +        except ShellCmdException:
> +            # ignore any errors in collecting git remotes this is an
> optional
> +            # step
> +            pass
> +
> +        logger.info("Using pre-checked out source for layer %s",
> cached_layers)
>
>          layerlist = []
>
> --
> 2.1.4
>
> --
> _______________________________________________
> toaster mailing list
> toaster at yoctoproject.org
> https://lists.yoctoproject.org/listinfo/toaster
>



-- 
Elliot Smith
Software Engineer
Intel Open Source Technology Centre
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.yoctoproject.org/pipermail/toaster/attachments/20151009/ee1499e9/attachment-0001.html>


More information about the toaster mailing list