summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/bb/fetch2/git.py
diff options
context:
space:
mode:
authorCharlie Davies <charles.davies@whitetree.xyz>2020-09-16 22:12:40 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2020-09-23 20:55:53 +0100
commit9ef2bc360d9cfc017a510f4d6ce811e6895672b4 (patch)
tree281b954c53a12340d426457ab59477b23ce2345a /bitbake/lib/bb/fetch2/git.py
parent79ce7f1c8234139cf8f2984c1c6d36aa04692742 (diff)
downloadpoky-9ef2bc360d9cfc017a510f4d6ce811e6895672b4.tar.gz
bitbake: bitbake: fetch/git: add support for SRC_URI containing spaces in url
Microsoft's TFS VCS system allows for spaces in a git repository url. An example of a valid url is: ssh://tfs-my-company.org:22/tfs/My Projects/FooBar This commit adds support for such urls by implementing two changes. Firstly, when bitbake makes a git command line call the url is surrounded by quotes so that the url, regardless of spaces, is treated as one argument. Secondly, additional parsing of various filepath variables, which are based off of the url, are now completed with any spaces in the url replaced with underscores. (Bitbake rev: eb38b6f0935763f7ba19e5618f376fcae1dac41a) Signed-off-by: Charlie Davies <charles.davies@whitetree.xyz> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake/lib/bb/fetch2/git.py')
-rw-r--r--bitbake/lib/bb/fetch2/git.py12
1 files changed, 6 insertions, 6 deletions
diff --git a/bitbake/lib/bb/fetch2/git.py b/bitbake/lib/bb/fetch2/git.py
index 644ba9238b..07064c694f 100644
--- a/bitbake/lib/bb/fetch2/git.py
+++ b/bitbake/lib/bb/fetch2/git.py
@@ -236,7 +236,7 @@ class Git(FetchMethod):
236 ud.unresolvedrev[name] = ud.revisions[name] 236 ud.unresolvedrev[name] = ud.revisions[name]
237 ud.revisions[name] = self.latest_revision(ud, d, name) 237 ud.revisions[name] = self.latest_revision(ud, d, name)
238 238
239 gitsrcname = '%s%s' % (ud.host.replace(':', '.'), ud.path.replace('/', '.').replace('*', '.')) 239 gitsrcname = '%s%s' % (ud.host.replace(':', '.'), ud.path.replace('/', '.').replace('*', '.').replace(' ','_'))
240 if gitsrcname.startswith('.'): 240 if gitsrcname.startswith('.'):
241 gitsrcname = gitsrcname[1:] 241 gitsrcname = gitsrcname[1:]
242 242
@@ -342,7 +342,7 @@ class Git(FetchMethod):
342 # We do this since git will use a "-l" option automatically for local urls where possible 342 # We do this since git will use a "-l" option automatically for local urls where possible
343 if repourl.startswith("file://"): 343 if repourl.startswith("file://"):
344 repourl = repourl[7:] 344 repourl = repourl[7:]
345 clone_cmd = "LANG=C %s clone --bare --mirror %s %s --progress" % (ud.basecmd, repourl, ud.clonedir) 345 clone_cmd = "LANG=C %s clone --bare --mirror \"%s\" %s --progress" % (ud.basecmd, repourl, ud.clonedir)
346 if ud.proto.lower() != 'file': 346 if ud.proto.lower() != 'file':
347 bb.fetch2.check_network_access(d, clone_cmd, ud.url) 347 bb.fetch2.check_network_access(d, clone_cmd, ud.url)
348 progresshandler = GitProgressHandler(d) 348 progresshandler = GitProgressHandler(d)
@@ -354,8 +354,8 @@ class Git(FetchMethod):
354 if "origin" in output: 354 if "origin" in output:
355 runfetchcmd("%s remote rm origin" % ud.basecmd, d, workdir=ud.clonedir) 355 runfetchcmd("%s remote rm origin" % ud.basecmd, d, workdir=ud.clonedir)
356 356
357 runfetchcmd("%s remote add --mirror=fetch origin %s" % (ud.basecmd, repourl), d, workdir=ud.clonedir) 357 runfetchcmd("%s remote add --mirror=fetch origin \"%s\"" % (ud.basecmd, repourl), d, workdir=ud.clonedir)
358 fetch_cmd = "LANG=C %s fetch -f --progress %s refs/*:refs/*" % (ud.basecmd, repourl) 358 fetch_cmd = "LANG=C %s fetch -f --progress \"%s\" refs/*:refs/*" % (ud.basecmd, repourl)
359 if ud.proto.lower() != 'file': 359 if ud.proto.lower() != 'file':
360 bb.fetch2.check_network_access(d, fetch_cmd, ud.url) 360 bb.fetch2.check_network_access(d, fetch_cmd, ud.url)
361 progresshandler = GitProgressHandler(d) 361 progresshandler = GitProgressHandler(d)
@@ -504,7 +504,7 @@ class Git(FetchMethod):
504 raise bb.fetch2.UnpackError("No up to date source found: " + "; ".join(source_error), ud.url) 504 raise bb.fetch2.UnpackError("No up to date source found: " + "; ".join(source_error), ud.url)
505 505
506 repourl = self._get_repo_url(ud) 506 repourl = self._get_repo_url(ud)
507 runfetchcmd("%s remote set-url origin %s" % (ud.basecmd, repourl), d, workdir=destdir) 507 runfetchcmd("%s remote set-url origin \"%s\"" % (ud.basecmd, repourl), d, workdir=destdir)
508 508
509 if self._contains_lfs(ud, d, destdir): 509 if self._contains_lfs(ud, d, destdir):
510 if need_lfs and not self._find_git_lfs(d): 510 if need_lfs and not self._find_git_lfs(d):
@@ -623,7 +623,7 @@ class Git(FetchMethod):
623 d.setVar('_BB_GIT_IN_LSREMOTE', '1') 623 d.setVar('_BB_GIT_IN_LSREMOTE', '1')
624 try: 624 try:
625 repourl = self._get_repo_url(ud) 625 repourl = self._get_repo_url(ud)
626 cmd = "%s ls-remote %s %s" % \ 626 cmd = "%s ls-remote \"%s\" %s" % \
627 (ud.basecmd, repourl, search) 627 (ud.basecmd, repourl, search)
628 if ud.proto.lower() != 'file': 628 if ud.proto.lower() != 'file':
629 bb.fetch2.check_network_access(d, cmd, repourl) 629 bb.fetch2.check_network_access(d, cmd, repourl)