summaryrefslogtreecommitdiffstats
path: root/bitbake
diff options
context:
space:
mode:
authorUrs Fässler <urs.fassler@bbv.ch>2018-10-08 08:15:10 +0000
committerRichard Purdie <richard.purdie@linuxfoundation.org>2018-10-18 10:59:26 +0100
commit0d4fe0602ef4ac80f3cea471e48b96b71a585669 (patch)
treec790ef940b5d593b54fcee9dde3a6d5258bf6645 /bitbake
parent49f25eceeb2c2c1e7c2838ba55768e9fc7dff53f (diff)
downloadpoky-0d4fe0602ef4ac80f3cea471e48b96b71a585669.tar.gz
bitbake: fetch2/git: prevent access to non-existing clonedir
A user friendly error is throw when neither the clonedir nor fullshallow exist. Without the check, a difficult to interpret error is throw from within the fetch command. (Bitbake rev: 30cf2506007d25162f0805051212f54c39034ff3) Signed-off-by: Urs Fässler <urs.fassler@bbv.ch> Signed-off-by: Pascal Bach <pascal.bach@siemens.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake')
-rw-r--r--bitbake/lib/bb/fetch2/git.py4
-rw-r--r--bitbake/lib/bb/tests/fetch.py11
2 files changed, 14 insertions, 1 deletions
diff --git a/bitbake/lib/bb/fetch2/git.py b/bitbake/lib/bb/fetch2/git.py
index f13a25f99d..3e37f76ffb 100644
--- a/bitbake/lib/bb/fetch2/git.py
+++ b/bitbake/lib/bb/fetch2/git.py
@@ -479,8 +479,10 @@ class Git(FetchMethod):
479 if ud.shallow and os.path.exists(ud.fullshallow) and self.clonedir_need_update(ud, d): 479 if ud.shallow and os.path.exists(ud.fullshallow) and self.clonedir_need_update(ud, d):
480 bb.utils.mkdirhier(destdir) 480 bb.utils.mkdirhier(destdir)
481 runfetchcmd("tar -xzf %s" % ud.fullshallow, d, workdir=destdir) 481 runfetchcmd("tar -xzf %s" % ud.fullshallow, d, workdir=destdir)
482 else: 482 elif not self.clonedir_need_update(ud, d):
483 runfetchcmd("%s clone %s %s/ %s" % (ud.basecmd, ud.cloneflags, ud.clonedir, destdir), d) 483 runfetchcmd("%s clone %s %s/ %s" % (ud.basecmd, ud.cloneflags, ud.clonedir, destdir), d)
484 else:
485 raise bb.fetch2.UnpackError("No up to date source found", ud.url)
484 486
485 repourl = self._get_repo_url(ud) 487 repourl = self._get_repo_url(ud)
486 runfetchcmd("%s remote set-url origin %s" % (ud.basecmd, repourl), d, workdir=destdir) 488 runfetchcmd("%s remote set-url origin %s" % (ud.basecmd, repourl), d, workdir=destdir)
diff --git a/bitbake/lib/bb/tests/fetch.py b/bitbake/lib/bb/tests/fetch.py
index 9bed06ba0e..f52241fbea 100644
--- a/bitbake/lib/bb/tests/fetch.py
+++ b/bitbake/lib/bb/tests/fetch.py
@@ -1699,6 +1699,17 @@ class GitShallowTest(FetcherTest):
1699 self.assertRefs(['master', 'origin/master']) 1699 self.assertRefs(['master', 'origin/master'])
1700 self.assertRevCount(orig_revs - 1758) 1700 self.assertRevCount(orig_revs - 1758)
1701 1701
1702 def test_that_unpack_throws_an_error_when_the_git_clone_nor_shallow_tarball_exist(self):
1703 self.add_empty_file('a')
1704 fetcher, ud = self.fetch()
1705 bb.utils.remove(self.gitdir, recurse=True)
1706 bb.utils.remove(self.dldir, recurse=True)
1707
1708 with self.assertRaises(bb.fetch2.UnpackError) as context:
1709 fetcher.unpack(self.d.getVar('WORKDIR'))
1710
1711 self.assertTrue("No up to date source found" in context.exception.msg)
1712
1702 @skipIfNoNetwork() 1713 @skipIfNoNetwork()
1703 def test_that_unpack_does_work_when_using_git_shallow_tarball_but_tarball_is_not_available(self): 1714 def test_that_unpack_does_work_when_using_git_shallow_tarball_but_tarball_is_not_available(self):
1704 self.d.setVar('SRCREV', 'e5939ff608b95cdd4d0ab0e1935781ab9a276ac0') 1715 self.d.setVar('SRCREV', 'e5939ff608b95cdd4d0ab0e1935781ab9a276ac0')