[oe-commits] [openembedded-core] 26/43: recipetool: git reformat URI mangling & parameter stripped
git at git.openembedded.org
git at git.openembedded.org
Thu Jul 27 21:38:21 UTC 2017
This is an automated email from the git hooks/post-receive script.
rpurdie pushed a commit to branch pyro
in repository openembedded-core.
commit e3c832e49a9596537198a46075ed3d6794639953
Author: Stanley Cheong Kwan, Phoong <stanley.cheong.kwan.phoong at intel.com>
AuthorDate: Wed Jul 12 17:25:45 2017 +0800
recipetool: git reformat URI mangling & parameter stripped
recipetool seems to be mangling and stripping out the parameters for git
URI. This will fix this issue as well as resolve the conflict of
protocol parameter added by user. If a user adds their own protocol as
an argument, it'll be honored.
[YOCTO #11390]
[YOCTO #11391]
Signed-off-by: Stanley Cheong Kwan, Phoong <stanley.cheong.kwan.phoong at intel.com>
Signed-off-by: Ross Burton <ross.burton at intel.com>
(cherry picked from commit 0cd2fc8ca278ebaa76de95545eef26a07b350c8e)
Signed-off-by: Armin Kuster <akuster808 at gmail.com>
---
scripts/lib/recipetool/create.py | 35 ++++++++++++++++++++++++++---------
1 file changed, 26 insertions(+), 9 deletions(-)
diff --git a/scripts/lib/recipetool/create.py b/scripts/lib/recipetool/create.py
index 5af58a1..4de52fc 100644
--- a/scripts/lib/recipetool/create.py
+++ b/scripts/lib/recipetool/create.py
@@ -26,7 +26,7 @@ import logging
import scriptutils
from urllib.parse import urlparse, urldefrag, urlsplit
import hashlib
-
+import bb.fetch2
logger = logging.getLogger('recipetool')
tinfoil = None
@@ -368,14 +368,31 @@ def reformat_git_uri(uri):
'''Convert any http[s]://....git URI into git://...;protocol=http[s]'''
checkuri = uri.split(';', 1)[0]
if checkuri.endswith('.git') or '/git/' in checkuri or re.match('https?://github.com/[^/]+/[^/]+/?$', checkuri):
- res = re.match('(http|https|ssh)://([^;]+(\.git)?)(;.*)?$', uri)
- if res:
- # Need to switch the URI around so that the git fetcher is used
- return 'git://%s;protocol=%s%s' % (res.group(2), res.group(1), res.group(4) or '')
- elif '@' in checkuri:
- # Catch e.g. git at git.example.com:repo.git
- return 'git://%s;protocol=ssh' % checkuri.replace(':', '/', 1)
- return uri
+ # Appends scheme if the scheme is missing
+ if not '://' in uri:
+ uri = 'git://' + uri
+ scheme, host, path, user, pswd, parms = bb.fetch2.decodeurl(uri)
+ # Detection mechanism, this is required due to certain URL are formatter with ":" rather than "/"
+ # which causes decodeurl to fail getting the right host and path
+ if len(host.split(':')) > 1:
+ splitslash = host.split(':')
+ host = splitslash[0]
+ path = '/' + splitslash[1] + path
+ #Algorithm:
+ # if user is defined, append protocol=ssh or if a protocol is defined, then honor the user-defined protocol
+ # if no user & password is defined, check for scheme type and append the protocol with the scheme type
+ # finally if protocols or if the url is well-formed, do nothing and rejoin everything back to normal
+ # Need to repackage the arguments for encodeurl, the format is: (scheme, host, path, user, password, OrderedDict([('key', 'value')]))
+ if user:
+ if not 'protocol' in parms:
+ parms.update({('protocol', 'ssh')})
+ elif (scheme == "http" or scheme == 'https' or scheme == 'ssh') and not ('protocol' in parms):
+ parms.update({('protocol', scheme)})
+ # Always append 'git://'
+ fUrl = bb.fetch2.encodeurl(('git', host, path, user, pswd, parms))
+ return fUrl
+ else:
+ return uri
def is_package(url):
'''Check if a URL points to a package'''
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the Openembedded-commits
mailing list