[bitbake-devel] [PATCH] bitbake: layerindex: use branch when specified

Mark Hatle mark.hatle at kernel.crashing.org
Thu Dec 19 02:44:19 UTC 2019


I just found this same issue and was working on a fix.  What you have below is
almsot correct, however the value of the branch is NOT args.branch.

args.branch specifies the branch of the layerindex, but the layerindex
internally knows the name of the branch corresponding the release branch.

You actually need to get the 'actual_branch' value from the layerBranch item.

See below:

On 12/18/19 12:45 PM, Jon Mason wrote:
> When currently specified, the branch is used to verify the versioning of
> the meta layer, but the master branch is checked out.  This change
> allows for the branch to be specified.  Now it is easy to specify all
> of the meta layers being added are of the same version, without having
> to do it in each individual git tree.  Also, it will error if there are
> branches without a matching version.  Finally, this allows for meta
> layer git trees without a master branch.
> 
> Signed-off-by: Jon Mason <jdmason at kudzu.us>
> ---
>  bitbake/lib/bblayers/layerindex.py | 9 ++++++---
>  1 file changed, 6 insertions(+), 3 deletions(-)
> 
> diff --git a/bitbake/lib/bblayers/layerindex.py b/bitbake/lib/bblayers/layerindex.py
> index 57cd9027f6..55029e0482 100644
> --- a/bitbake/lib/bblayers/layerindex.py
> +++ b/bitbake/lib/bblayers/layerindex.py
> @@ -24,7 +24,7 @@ class LayerIndexPlugin(ActionPlugin):
>      This class inherits ActionPlugin to get do_add_layer.
>      """
>  
> -    def get_fetch_layer(self, fetchdir, url, subdir, fetch_layer):
> +    def get_fetch_layer(self, fetchdir, url, subdir, fetch_layer, branch):
>          layername = self.get_layer_name(url)
>          if os.path.splitext(layername)[1] == '.git':
>              layername = os.path.splitext(layername)[0]
> @@ -32,7 +32,9 @@ class LayerIndexPlugin(ActionPlugin):
>          layerdir = os.path.join(repodir, subdir)
>          if not os.path.exists(repodir):
>              if fetch_layer:
> -                result = subprocess.call(['git', 'clone', url, repodir])
> +                if not branch:
> +                    branch = "master"
> +                result = subprocess.call(['git', 'clone', '-b' , branch, url, repodir])
>                  if result:
>                      logger.error("Failed to download %s" % url)
>                      return None, None, None
> @@ -171,7 +173,8 @@ class LayerIndexPlugin(ActionPlugin):
>                  subdir, name, layerdir = self.get_fetch_layer(fetchdir,
>                                                        layerBranch.layer.vcs_url,
>                                                        layerBranch.vcs_subdir,
> -                                                      not args.show_only)
> +                                                      not args.show_only,
> +                                                      args.branch)

The above should be 'layerBranch.actual_branch', instead of args.branch.

For example, in master -- "meta-gumstix" in master is set to the branch 'dora'.

--Mark

>                  if not name:
>                      # Error already shown
>                      return 1
> 


More information about the bitbake-devel mailing list