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

Krystian Garliński krystian.garlinski at comarch.pl
Tue Jan 8 07:47:37 UTC 2019


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



More information about the bitbake-devel mailing list