diff options
author | Charlie Davies <charles.davies@whitetree.xyz> | 2020-09-16 22:12:40 +0100 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2020-09-23 20:55:53 +0100 |
commit | 9ef2bc360d9cfc017a510f4d6ce811e6895672b4 (patch) | |
tree | 281b954c53a12340d426457ab59477b23ce2345a /bitbake/lib | |
parent | 79ce7f1c8234139cf8f2984c1c6d36aa04692742 (diff) | |
download | poky-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')
-rw-r--r-- | bitbake/lib/bb/fetch2/git.py | 12 |
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) |