* [PATCH v2] bitbake: layerindex: use branch when specified
@ 2019-12-19 17:39 Mark Hatle
2019-12-19 20:50 ` Jon Mason
0 siblings, 1 reply; 2+ messages in thread
From: Mark Hatle @ 2019-12-19 17:39 UTC (permalink / raw)
To: jdmason, bitbake-devel
From: Jon Mason <jdmason@kudzu.us>
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@kudzu.us>
Minor rework of the patch to use the layerBranch actual_branch since
the layerindex referenced branch may be different then the overall
release branch.
Also adjust the patch to use the default git checkout branch instead of
master if no branch was specified. (Some repositories don't have a
master branch.)
Signed-off-by: Mark Hatle <mark.hatle@kernel.crashing.org>
---
lib/bblayers/layerindex.py | 13 +++++++++----
1 file changed, 9 insertions(+), 4 deletions(-)
diff --git a/lib/bblayers/layerindex.py b/lib/bblayers/layerindex.py
index 57cd9027..aa3b682d 100644
--- a/lib/bblayers/layerindex.py
+++ b/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,9 +32,13 @@ 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])
+ cmd = ['git', 'clone', '-b' , branch, url, repodir]
+ if not branch:
+ # Branch really shouldn't be empty, but use the repo default if it is
+ cmd = ['git', 'clone', url, repodir]
+ result = subprocess.call(cmd)
if result:
- logger.error("Failed to download %s" % url)
+ logger.error("Failed to download %s (%s)" % (url, branch))
return None, None, None
else:
return subdir, layername, layerdir
@@ -171,7 +175,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,
+ layerBranch.actual_branch)
if not name:
# Error already shown
return 1
--
2.17.1
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH v2] bitbake: layerindex: use branch when specified
2019-12-19 17:39 [PATCH v2] bitbake: layerindex: use branch when specified Mark Hatle
@ 2019-12-19 20:50 ` Jon Mason
0 siblings, 0 replies; 2+ messages in thread
From: Jon Mason @ 2019-12-19 20:50 UTC (permalink / raw)
To: Mark Hatle; +Cc: bitbake-devel
On Thu, Dec 19, 2019 at 12:39 PM Mark Hatle
<mark.hatle@kernel.crashing.org> wrote:
>
> From: Jon Mason <jdmason@kudzu.us>
>
> 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@kudzu.us>
>
> Minor rework of the patch to use the layerBranch actual_branch since
> the layerindex referenced branch may be different then the overall
> release branch.
>
> Also adjust the patch to use the default git checkout branch instead of
> master if no branch was specified. (Some repositories don't have a
> master branch.)
>
> Signed-off-by: Mark Hatle <mark.hatle@kernel.crashing.org>
Looks good to me!
Thanks,
Jon
> ---
> lib/bblayers/layerindex.py | 13 +++++++++----
> 1 file changed, 9 insertions(+), 4 deletions(-)
>
> diff --git a/lib/bblayers/layerindex.py b/lib/bblayers/layerindex.py
> index 57cd9027..aa3b682d 100644
> --- a/lib/bblayers/layerindex.py
> +++ b/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,9 +32,13 @@ 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])
> + cmd = ['git', 'clone', '-b' , branch, url, repodir]
> + if not branch:
> + # Branch really shouldn't be empty, but use the repo default if it is
> + cmd = ['git', 'clone', url, repodir]
> + result = subprocess.call(cmd)
> if result:
> - logger.error("Failed to download %s" % url)
> + logger.error("Failed to download %s (%s)" % (url, branch))
> return None, None, None
> else:
> return subdir, layername, layerdir
> @@ -171,7 +175,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,
> + layerBranch.actual_branch)
> if not name:
> # Error already shown
> return 1
> --
> 2.17.1
>
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2019-12-19 20:51 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-12-19 17:39 [PATCH v2] bitbake: layerindex: use branch when specified Mark Hatle
2019-12-19 20:50 ` Jon Mason
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.