blob: 3c21d8b88dae7fc8249368f25d623d570827f2e1 [file]
"""Build step class for setting up a clean SDK build environment."""
from __future__ import absolute_import
from slave.step import shell_step
_REPO_CMD = ['repo', '--time']
def _dirty_validator(returncode, stdout, stderr):
return returncode == 0 and 'dirty' not in stdout and 'dirty' not in stderr
class CleanPrebuiltsSDKStep(shell_step.ShellStep):
"""Build step class for setting up a clean SDK build environment."""
def __init__(self, purge_dirs, **kwargs):
"""Creates a CleanSDKStep instance."""
shell_step.ShellStep.__init__(
self,
name='SDK: clean build output & prebuilts',
halt_on_failure=True,
num_retries=0,
**kwargs)
self._purge_dirs = purge_dirs
def get_commands(self):
commands = []
if self._purge_dirs:
commands += [self.ShellCommand(['rm', '-rf'] + self._purge_dirs)]
return commands
class DirtyCheckSDKStep(shell_step.ShellStep):
"""Build step class for setting up a clean SDK build environment."""
def __init__(self, halt_on_failure=True, **kwargs):
"""Creates a CleanSDKStep instance."""
name = 'SDK: git rev dirty '
name += 'check' if halt_on_failure else 'info'
shell_step.ShellStep.__init__(
self,
name=name,
halt_on_failure=halt_on_failure,
num_retries=0,
**kwargs)
self._repo_regex = ['-r', kwargs['repo_regex']
] if 'repo_regex' in kwargs else []
def get_commands(self):
return [
self.ShellCommand(
_REPO_CMD + [
'forall', *self._repo_regex, '-p', '--verbose', '--command',
'git rev-parse --verify --short HEAD'
],
validator=_dirty_validator),
]
class CleanCheckoutSDKStep(shell_step.ShellStep):
"""Build step class for setting up a clean SDK build environment."""
def __init__(self, **kwargs):
"""Creates a CleanSDKStep instance."""
shell_step.ShellStep.__init__(
self,
name='SDK: reset & clean',
halt_on_failure=True,
num_retries=0,
**kwargs)
self._repo_regex = ['-r', kwargs['repo_regex']
] if 'repo_regex' in kwargs else []
def get_commands(self):
return [
self.ShellCommand(_REPO_CMD + [
'forall', *self._repo_regex, '-p', '--verbose', '--command',
'git reset --hard'
]),
self.ShellCommand(_REPO_CMD + [
'forall', *self._repo_regex, '-p', '--verbose', '--command',
'git clean -fdx'
]),
]