From fc8b3860c487212b5f6d29b82235bab5fc92fcaa Mon Sep 17 00:00:00 2001 From: Josh Smith Date: Wed, 25 Jul 2018 12:48:10 +0100 Subject: 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. --- buildstream/plugin.py | 2 +- buildstream/plugins/sources/git.py | 10 +++++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/buildstream/plugin.py b/buildstream/plugin.py index 9d399fc96..5c3b3ce6e 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), -- cgit v1.2.1