Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(333)

Unified Diff: slave/skia_slave_scripts/flavor_utils/ssh_build_step_utils.py

Issue 648353002: Remove Skia's forked buildbot code (Closed) Base URL: https://skia.googlesource.com/buildbot.git@master
Patch Set: Address comment Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: slave/skia_slave_scripts/flavor_utils/ssh_build_step_utils.py
diff --git a/slave/skia_slave_scripts/flavor_utils/ssh_build_step_utils.py b/slave/skia_slave_scripts/flavor_utils/ssh_build_step_utils.py
deleted file mode 100644
index f036835c0a94655bd32c48490bbdd4d052119d34..0000000000000000000000000000000000000000
--- a/slave/skia_slave_scripts/flavor_utils/ssh_build_step_utils.py
+++ /dev/null
@@ -1,186 +0,0 @@
-# Copyright (c) 2014 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-""" BuildStepUtils for a remote-execution-via-SSH environment. """
-
-
-from default_build_step_utils import DefaultBuildStepUtils, DeviceDirs
-from slave import slave_utils
-from utils import old_gs_utils as gs_utils
-from py.utils import shell_utils
-from py.utils import ssh_utils
-import os
-import posixpath
-import shutil
-
-
-class SshBuildStepUtils(DefaultBuildStepUtils):
- def __init__(self, build_step_instance):
- DefaultBuildStepUtils.__init__(self, build_step_instance)
- self._unique_prefix = 'skia_'
- args = self._step.args
- self._ssh = ssh_utils.SshDestination(
- args.get('ssh_host', 'localhost'),
- args.get('ssh_port', 22),
- args.get('ssh_user', 'root'))
- if self._ssh.host == 'localhost':
- self._ssh.options = ['-o', 'NoHostAuthenticationForLocalhost=yes']
-
- self._build_dir = args.get('skia_out', os.path.abspath('out'))
- self._remote_dir = args.get('remote_dir', 'skia')
-
- # Subclass constructors can change these fields.
- # self._unique_prefix - (string) prefix to add to target
- # executables.
- # self._ssh.host - (string) hostname to pass to ssh
- # self._ssh.port - (string) ssh port on the remote host
- # self._ssh.user - (string) username on the remote host
- # self._remote_dir - (string) absolute or relative path of a
- # directory on the remote system.
- # self._build_dir - (string) This script assumes that the compiled
- # executables will be located in os.path.join(
- # self._build_dir, self._step.configuration)
- #
- # Subclasses should override Compile(). These values are
- # available if needed:
- # self._step.configuration
- # self._step.gyp_defines
- # self._step.deps_target_os
- # self._step.make_flags
-
- def RunFlavoredCmd(self, app, args):
- """ Override this in new BuildStep flavors. """
- assert app in self.ListBuildStepExecutables()
- executable = self.DevicePathJoin(
- self._remote_dir, self._unique_prefix + app)
- self._ssh.Run([executable] + args)
-
- def ReadFileOnDevice(self, filepath):
- """ Read the contents of a file on the device. """
- return self._ssh.Run(['cat', filepath], echo=False)
-
- def _RemoveDirectoryOnDevice(self, directory):
- """ Delete a directory on the device. """
- try:
- self._ssh.Run(['rm', '-rf', directory])
- except shell_utils.CommandFailedException:
- # `rm -f` will return 0 for nonexistent operands. Other failurs
- # will return 1, leading to a CommandFailedException.
- raise Exception('Failed to remove %s' % directory)
-
- def _CreateDirectoryOnDevice(self, directory):
- """ Create a directory on the device. """
- self._ssh.Run(['mkdir', '-p', directory])
-
- def PushFileToDevice(self, src, dst):
- """ Overrides build_step.PushFileToDevice() """
- self._ssh.Put(src, dst)
-
- def PushMultipleFilesToDevice(self, src_files, dst):
- self._ssh.MultiPut(src_files, dst)
-
- def DeviceListDir(self, directory):
- """ Overrides build_step.DeviceListDir() """
- ls = self._ssh.Run(['ls', directory], echo=False)
- # ''.split('\n') evaluates to [''], when we want [].
- return [path for path in ls.split('\n') if path != '']
-
- def _RunAndReturnSuccess(self, command):
- try:
- self._ssh.Run(command)
- except shell_utils.CommandFailedException:
- return False
- return True
-
- def DevicePathExists(self, path):
- """ Overrides build_step.DevicePathExists() """
- return self._RunAndReturnSuccess(['test', '-e', path])
-
- def DeviceDirectoryExists(self, path):
- return self._RunAndReturnSuccess(['test', '-d', path])
-
- def DevicePathJoin(self, *args):
- """ Overrides build_step.DevicePathJoin() """
- return posixpath.sep.join(args)
-
- def CreateCleanDeviceDirectory(self, directory):
- # Raises exeption if either the directory exists but is
- # un-removeable or if mkdir fails.
- self._ssh.RunCmd('rm -rf "%s" && mkdir -p "%s"' % (directory, directory))
-
- def CopyDirectoryContentsToDevice(self, host_dir, device_dir):
- """ Copy the contents of a host-side directory to a clean
- directory on the device side.
- """
- self.CreateCleanDeviceDirectory(device_dir)
- upload_list = []
- for filename in os.listdir(host_dir):
- if filename != gs_utils.TIMESTAMP_COMPLETED_FILENAME:
- path = os.path.join(host_dir, filename)
- if os.path.isfile(path):
- upload_list.append(path)
- if upload_list:
- self.PushMultipleFilesToDevice(upload_list, device_dir)
- ts_filepath = os.path.join(host_dir, gs_utils.TIMESTAMP_COMPLETED_FILENAME)
- if os.path.isfile(ts_filepath):
- self.PushFileToDevice(ts_filepath, device_dir)
-
- def CopyDirectoryContentsToHost(self, device_dir, host_dir):
- """ Copy the contents of a device-side directory to a clean
- directory on the host side.
- """
- self.CreateCleanHostDirectory(host_dir)
- if not self.DeviceDirectoryExists(device_dir):
- print 'Device directory "%s" does not exist.' % device_dir
- return
- if not self.DeviceListDir(device_dir):
- print 'Device directory "%s" is empty.' % device_dir
- return
- self._ssh.Get(host_dir, posixpath.join(device_dir, '*'), recurse=True)
-
- def Install(self):
- """ Install the Skia executables. """
- for executable in self.ListBuildStepExecutables():
- # First, make sure that the program isn't running.
- remote_executable = self._unique_prefix + executable
- try:
- self._ssh.Run(['killall', remote_executable])
- except Exception:
- pass
- remote_path = self.DevicePathJoin(
- self._remote_dir, remote_executable)
- local_path = os.path.join(
- self._build_dir, self._step.configuration, executable)
- assert os.path.isfile(local_path)
- self._ssh.Put(local_path, remote_path)
-
- def AddGsutilToPath(self):
- # Add gsutil to PATH
- gsutil_dir = os.path.dirname(slave_utils.GSUtilSetup())
- if gsutil_dir not in os.environ['PATH'].split(os.pathsep):
- os.environ['PATH'] += os.pathsep + gsutil_dir
-
- def GetDeviceDirs(self):
- """ Set the directories which will be used by the BuildStep. """
- prefix = self.DevicePathJoin(self._remote_dir, self._unique_prefix)
- return DeviceDirs(
- perf_data_dir=prefix + 'perf',
- gm_actual_dir=prefix + 'gm_actual',
- gm_expected_dir=prefix + 'gm_expected',
- dm_dir=prefix + 'dm_out', # Not dm, which will conflict with the binary.
- resource_dir=prefix + 'resources',
- skimage_in_dir=prefix + 'skimage_in',
- skimage_expected_dir=prefix + 'skimage_expected',
- skimage_out_dir=prefix + 'skimage_out',
- skp_dir=prefix + 'skp',
- skp_perf_dir=prefix + 'skp_perf',
- playback_actual_images_dir=prefix + 'playback_actual_images',
- playback_actual_summaries_dir=prefix + 'playback_actual_summaries',
- playback_expected_summaries_dir=prefix + 'playback_expected_summaries',
- tmp_dir=prefix + 'tmp_dir')
-
- def MakeClean(self):
- """ Overridden from DefaultBuildStepUtils """
- if os.path.isdir(self._build_dir):
- shutil.rmtree(os.path.realpath(self._build_dir))

Powered by Google App Engine
This is Rietveld 408576698