summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJosh Smith <joshsmith@codethink.co.uk>2018-07-25 12:48:10 +0100
committerTristan Van Berkom <tristan.vanberkom@codethink.co.uk>2018-07-27 13:41:26 +0900
commita9a1048e337ee0a5778f0029fd7ae08a4b17915f (patch)
treef32d2610976f4eabf7ba588ad545a815c2b0b58f
parent4986527fd2f434cd7d71864689093a9c4f802f24 (diff)
downloadbuildstream-a9a1048e337ee0a5778f0029fd7ae08a4b17915f.tar.gz
git.py: Update git plugin to fail temporarily on clone failures
The git plugin will now make use of the fail_temporarily parameter to Plugin.call(), allowing failures to trigger a retry.
-rw-r--r--buildstream/plugin.py2
-rw-r--r--buildstream/plugins/sources/git.py10
2 files changed, 8 insertions, 4 deletions
diff --git a/buildstream/plugin.py b/buildstream/plugin.py
index 9823ddbf2..633fc9765 100644
--- a/buildstream/plugin.py
+++ b/buildstream/plugin.py
@@ -559,7 +559,7 @@ class Plugin():
raise SourceError(
fmt.format(plugin=self, track=tracking)) from e
"""
- return self.__call(*popenargs, collect_stdout=True, fail=fail, fail_temporarily=fail_temporarily **kwargs)
+ return self.__call(*popenargs, collect_stdout=True, fail=fail, fail_temporarily=fail_temporarily, **kwargs)
#############################################################
# Private Methods used in BuildStream #
diff --git a/buildstream/plugins/sources/git.py b/buildstream/plugins/sources/git.py
index e68de81cf..6762f6025 100644
--- a/buildstream/plugins/sources/git.py
+++ b/buildstream/plugins/sources/git.py
@@ -113,7 +113,8 @@ class GitMirror():
#
with self.source.tempdir() as tmpdir:
self.source.call([self.source.host_git, 'clone', '--mirror', '-n', self.url, tmpdir],
- fail="Failed to clone git repository {}".format(self.url))
+ fail="Failed to clone git repository {}".format(self.url),
+ fail_temporarily=True)
try:
shutil.move(tmpdir, self.mirror)
@@ -124,6 +125,7 @@ class GitMirror():
def fetch(self):
self.source.call([self.source.host_git, 'fetch', 'origin', '--prune'],
fail="Failed to fetch from remote git repository: {}".format(self.url),
+ fail_temporarily=True,
cwd=self.mirror)
def has_ref(self):
@@ -157,7 +159,8 @@ class GitMirror():
# case we're just checking out a specific commit and then removing the .git/
# directory.
self.source.call([self.source.host_git, 'clone', '--no-checkout', '--shared', self.mirror, fullpath],
- fail="Failed to create git mirror {} in directory: {}".format(self.mirror, fullpath))
+ fail="Failed to create git mirror {} in directory: {}".format(self.mirror, fullpath),
+ fail_temporarily=True)
self.source.call([self.source.host_git, 'checkout', '--force', self.ref],
fail="Failed to checkout git ref {}".format(self.ref),
@@ -170,7 +173,8 @@ class GitMirror():
fullpath = os.path.join(directory, self.path)
self.source.call([self.source.host_git, 'clone', '--no-checkout', self.mirror, fullpath],
- fail="Failed to clone git mirror {} in directory: {}".format(self.mirror, fullpath))
+ fail="Failed to clone git mirror {} in directory: {}".format(self.mirror, fullpath),
+ fail_temporarily=True)
self.source.call([self.source.host_git, 'remote', 'set-url', 'origin', self.url],
fail='Failed to add remote origin "{}"'.format(self.url),