[bitbake-devel] [PATCH v2] fetch2/gitsm.py: Change the URI construction logic

Linus Ziegert linus.ziegert at holoplot.com
Tue Jan 8 16:35:42 UTC 2019


Hello people,

I am working as well on fetch2/gitsm.py. We have a privat repo with
submodules but the current gitsm.py does not support ssh.

I tested the patch by Krystian but it did not worked for me. I got the
following ERROR:

ERROR: <recipe> do_fetch: The URL: 'gitsm:git at github.com/<user>/<submodule
_name1>.git;protocol=ssh;name=<submodule_name2>;bareclone=1;nocheckout=1;
nobranch=1' is invalid and cannot be interpreted


The .gitmodules file used looks like this:

[submodule "submodule_name1"]
path = submodule_name1
        url = git at github.com/<user>/<submodule_name1>.git
[submodule "submodule_name2"]
path = submodule_name2
        url = git at github.com/<user>/<submodule_name2>.git

Attached you find my proposal.


Am Di., 8. Jan. 2019 um 08:48 Uhr schrieb Krystian Garliński <krystian.
garlinski at comarch.pl>:

> Git allows to use both the proper URI's and SCP-like short style syntax
> for the SSH protocol. This commit changes construction logic to detect
> which
> one of the two is used in the submodule specification and to build a
> correct
> URI out of it.
>
> Signed-off-by: Krystian Garliński <krystian.garlinski at comarch.pl>
> ---
>  lib/bb/fetch2/gitsm.py | 16 ++++++++++++++--
>  1 file changed, 14 insertions(+), 2 deletions(-)
>
> diff --git a/lib/bb/fetch2/gitsm.py b/lib/bb/fetch2/gitsm.py
> index 35729dbc..95d5f652 100644
> --- a/lib/bb/fetch2/gitsm.py
> +++ b/lib/bb/fetch2/gitsm.py
> @@ -32,6 +32,7 @@ NOTE: Switching a SRC_URI from "git://" to "gitsm://"
> requires a clean of your r
>  import os
>  import bb
>  import copy
> +import re
>  from   bb.fetch2.git import Git
>  from   bb.fetch2 import runfetchcmd
>  from   bb.fetch2 import logger
> @@ -39,6 +40,8 @@ from   bb.fetch2 import Fetch
>  from   bb.fetch2 import BBFetchException
>
>  class GitSM(Git):
> +    scp_regex = re.compile(r'^([a-zA-Z0-9_]+)@([a-zA-Z0-9._-]+):(.+)$')
> +
>      def supports(self, ud, d):
>          """
>          Check to see if a given url can be fetched with git.
> @@ -88,8 +91,17 @@ class GitSM(Git):
>              module_hash = module_hash.split()[2]
>
>              # Build new SRC_URI
> -            proto = uris[module].split(':', 1)[0]
> -            url = uris[module].replace('%s:' % proto, 'gitsm:', 1)
> +            uri = uris[module]
> +            match = GitSM.scp_regex.match(uri)
> +
> +            if match:
> +                # this URI follows the short SCP-like syntax
> +                url = 'gitsm://{}@{}/{}'.format(match.group(1),
> match.group(2), match.group(3))
> +                proto = 'ssh'
> +            else:
> +                proto = uri.split(':', 1)[0]
> +                url = 'gitsm' + uri[len(proto):]
> +
>              url += ';protocol=%s' % proto
>              url += ";name=%s" % module
>              url += ";bareclone=1;nocheckout=1;nobranch=1"
> --
> 2.19.1
>
> --
> _______________________________________________
> bitbake-devel mailing list
> bitbake-devel at lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/bitbake-devel
>


-- 

Cheers,
Linus
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openembedded.org/pipermail/bitbake-devel/attachments/20190108/cd7ae544/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-fetch2-gitsm.py-Enable-SSH-protocol-option.patch
Type: text/x-patch
Size: 2133 bytes
Desc: not available
URL: <http://lists.openembedded.org/pipermail/bitbake-devel/attachments/20190108/cd7ae544/attachment.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-fetch2-gitsm.py-Enable-SSH-protocol-option.patch
Type: text/x-patch
Size: 2133 bytes
Desc: not available
URL: <http://lists.openembedded.org/pipermail/bitbake-devel/attachments/20190108/cd7ae544/attachment-0001.bin>


More information about the bitbake-devel mailing list