| Index: infra/bots/recipe_modules/flavor/api.py
|
| diff --git a/infra/bots/recipe_modules/flavor/api.py b/infra/bots/recipe_modules/flavor/api.py
|
| index fbfa9ba1cd76c6ef094918e94f43354ee765a9bd..84bc8999093ffdfc55e1bf4e6505383144a8768e 100644
|
| --- a/infra/bots/recipe_modules/flavor/api.py
|
| +++ b/infra/bots/recipe_modules/flavor/api.py
|
| @@ -19,6 +19,15 @@ from . import valgrind_flavor
|
| from . import xsan_flavor
|
|
|
|
|
| +TEST_EXPECTED_SKP_VERSION = '42'
|
| +TEST_EXPECTED_SK_IMAGE_VERSION = '42'
|
| +
|
| +VERSION_FILE_SK_IMAGE = 'SK_IMAGE_VERSION'
|
| +VERSION_FILE_SKP = 'SKP_VERSION'
|
| +
|
| +VERSION_NONE = -1
|
| +
|
| +
|
| def is_android(builder_cfg):
|
| """Determine whether the given builder is an Android builder."""
|
| return ('Android' in builder_cfg.get('extra_config', '') or
|
| @@ -118,9 +127,90 @@ class SkiaFlavorApi(recipe_api.RecipeApi):
|
| return self._f.remove_file_on_device(path)
|
|
|
| def install(self):
|
| - rv = self._f.install()
|
| + self._f.install()
|
| self.device_dirs = self._f.device_dirs
|
| - return rv
|
| +
|
| + # TODO(borenet): Only copy files which have changed.
|
| + # Resources
|
| + self.copy_directory_contents_to_device(
|
| + self.m.vars.resource_dir,
|
| + self.device_dirs.resource_dir)
|
| +
|
| + self._copy_skps()
|
| + self._copy_images()
|
|
|
| def cleanup_steps(self):
|
| return self._f.cleanup_steps()
|
| +
|
| + def _copy_dir(self, host_version, version_file, tmp_dir,
|
| + host_path, device_path, test_expected_version,
|
| + test_actual_version):
|
| + actual_version_file = self.m.path.join(tmp_dir, version_file)
|
| + # Copy to device.
|
| + device_version_file = self.device_path_join(
|
| + self.device_dirs.tmp_dir, version_file)
|
| + if str(actual_version_file) != str(device_version_file):
|
| + try:
|
| + device_version = self.read_file_on_device(device_version_file)
|
| + except self.m.step.StepFailure:
|
| + device_version = VERSION_NONE
|
| + if device_version != host_version:
|
| + self.remove_file_on_device(device_version_file)
|
| + self.create_clean_device_dir(device_path)
|
| + self.copy_directory_contents_to_device(
|
| + host_path, device_path)
|
| +
|
| + # Copy the new version file.
|
| + self.copy_file_to_device(actual_version_file, device_version_file)
|
| +
|
| + def _copy_images(self):
|
| + """Download and copy test images if needed."""
|
| + version_file = self.m.vars.infrabots_dir.join(
|
| + 'assets', 'skimage', 'VERSION')
|
| + test_data = self.m.properties.get(
|
| + 'test_downloaded_sk_image_version', TEST_EXPECTED_SK_IMAGE_VERSION)
|
| + version = self.m.run.readfile(
|
| + version_file,
|
| + name='Get downloaded skimage VERSION',
|
| + test_data=test_data).rstrip()
|
| + self.m.run.writefile(
|
| + self.m.path.join(self.m.vars.tmp_dir, VERSION_FILE_SK_IMAGE),
|
| + version)
|
| + self._copy_dir(
|
| + version,
|
| + VERSION_FILE_SK_IMAGE,
|
| + self.m.vars.tmp_dir,
|
| + self.m.vars.images_dir,
|
| + self.device_dirs.images_dir,
|
| + test_expected_version=self.m.properties.get(
|
| + 'test_downloaded_sk_image_version',
|
| + TEST_EXPECTED_SK_IMAGE_VERSION),
|
| + test_actual_version=self.m.properties.get(
|
| + 'test_downloaded_sk_image_version',
|
| + TEST_EXPECTED_SK_IMAGE_VERSION))
|
| + return version
|
| +
|
| + def _copy_skps(self):
|
| + """Download and copy the SKPs if needed."""
|
| + version_file = self.m.vars.infrabots_dir.join(
|
| + 'assets', 'skp', 'VERSION')
|
| + test_data = self.m.properties.get(
|
| + 'test_downloaded_skp_version', TEST_EXPECTED_SKP_VERSION)
|
| + version = self.m.run.readfile(
|
| + version_file,
|
| + name='Get downloaded SKP VERSION',
|
| + test_data=test_data).rstrip()
|
| + self.m.run.writefile(
|
| + self.m.path.join(self.m.vars.tmp_dir, VERSION_FILE_SKP),
|
| + version)
|
| + self._copy_dir(
|
| + version,
|
| + VERSION_FILE_SKP,
|
| + self.m.vars.tmp_dir,
|
| + self.m.vars.local_skp_dir,
|
| + self.device_dirs.skp_dir,
|
| + test_expected_version=self.m.properties.get(
|
| + 'test_downloaded_skp_version', TEST_EXPECTED_SKP_VERSION),
|
| + test_actual_version=self.m.properties.get(
|
| + 'test_downloaded_skp_version', TEST_EXPECTED_SKP_VERSION))
|
| + return version
|
|
|