summaryrefslogtreecommitdiffstats
path: root/bitbake
diff options
context:
space:
mode:
authorNaveen Saini <naveen.kumar.saini@intel.com>2019-04-26 16:34:38 +0800
committerRichard Purdie <richard.purdie@linuxfoundation.org>2019-04-29 14:16:31 +0100
commite7c2bc67b51aff57fe3d6c1caf22f457565deede (patch)
tree80183b94861f3f0c68daf2d9a715a39d61a7a322 /bitbake
parent6b74b69b2333c6f9e91d47bd6da6101293ed96f1 (diff)
downloadpoky-e7c2bc67b51aff57fe3d6c1caf22f457565deede.tar.gz
bitbake: bitbake: fetch2/git: git-lfs check
Build will fail if repository has lfs contents in absense of git-lfs tool on host. Build will pass if repository may or may not contains lfs content if host has git-lfs installed. [YOCTO #13198] (Bitbake rev: 3f2c2eb2f59707828bdcdd6414db837da8dc3b0e) Signed-off-by: Naveen Saini <naveen.kumar.saini@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
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