summaryrefslogtreecommitdiffstats
path: root/bitbake
diff options
context:
space:
mode:
Diffstat (limited to 'bitbake')
-rw-r--r--bitbake/lib/bb/fetch2/git.py25
1 files changed, 25 insertions, 0 deletions
diff --git a/bitbake/lib/bb/fetch2/git.py b/bitbake/lib/bb/fetch2/git.py
index 8185bf4db0..c69d25c914 100644
--- a/bitbake/lib/bb/fetch2/git.py
+++ b/bitbake/lib/bb/fetch2/git.py
@@ -503,6 +503,17 @@ class Git(FetchMethod):
503 503
504 repourl = self._get_repo_url(ud) 504 repourl = self._get_repo_url(ud)
505 runfetchcmd("%s remote set-url origin %s" % (ud.basecmd, repourl), d, workdir=destdir) 505 runfetchcmd("%s remote set-url origin %s" % (ud.basecmd, repourl), d, workdir=destdir)
506
507 if self._contains_lfs(ud, d, destdir):
508 path = d.getVar('PATH')
509 if path:
510 gitlfstool = bb.utils.which(path, "git-lfs", executable=True)
511 if not gitlfstool:
512 raise bb.fetch2.FetchError("Repository %s has lfs content, install git-lfs plugin on host to download" % (repourl))
513 else:
514 bb.note("Could not find 'PATH'")
515
516
506 if not ud.nocheckout: 517 if not ud.nocheckout:
507 if subdir != "": 518 if subdir != "":
508 runfetchcmd("%s read-tree %s%s" % (ud.basecmd, ud.revisions[ud.names[0]], readpathspec), d, 519 runfetchcmd("%s read-tree %s%s" % (ud.basecmd, ud.revisions[ud.names[0]], readpathspec), d,
@@ -553,6 +564,20 @@ class Git(FetchMethod):
553 raise bb.fetch2.FetchError("The command '%s' gave output with more then 1 line unexpectedly, output: '%s'" % (cmd, output)) 564 raise bb.fetch2.FetchError("The command '%s' gave output with more then 1 line unexpectedly, output: '%s'" % (cmd, output))
554 return output.split()[0] != "0" 565 return output.split()[0] != "0"
555 566
567 def _contains_lfs(self, ud, d, wd):
568 """
569 Check if the repository has 'lfs' (large file) content
570 """
571 cmd = "%s grep lfs HEAD:.gitattributes | wc -l" % (
572 ud.basecmd)
573 try:
574 output = runfetchcmd(cmd, d, quiet=True, workdir=wd)
575 if int(output) > 0:
576 return True
577 except (bb.fetch2.FetchError,ValueError):
578 pass
579 return False
580
556 def _get_repo_url(self, ud): 581 def _get_repo_url(self, ud):
557 """ 582 """
558 Return the repository URL 583 Return the repository URL