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

Mark Hatle mark.hatle at kernel.crashing.org
Thu Dec 19 16:18:09 UTC 2019


I just realized I wasn't clear with my reply yesterday.  I will start with Jon's
patch, and make the change and test it and then send up a V2.  (Since I was
already working on that code.)

--Mark

On 12/18/19 8:44 PM, Mark Hatle wrote:
> 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