1fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot# Copyright 2014 The Chromium Authors. All rights reserved.
2fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot# Use of this source code is governed by a BSD-style license that can be
3fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot# found in the LICENSE file.
4fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot
5fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot
6fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot# Recipe for the Skia PerCommit Housekeeper.
7fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot
8fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team RobotDEPS = [
9fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot  'depot_tools/bot_update',
10fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot  'recipe_engine/context',
11fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot  'recipe_engine/path',
12fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot  'recipe_engine/properties',
13fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot  'recipe_engine/python',
14fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot  'recipe_engine/step',
15fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot  'core',
16fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot  'run',
17fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot  'vars',
18fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot]
19fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot
20fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot
21fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotdef RunSteps(api):
22fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot  # Checkout, compile, etc.
23fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot  api.core.setup()
24fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot
25fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot  cwd = api.path['checkout']
26fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot
27fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot  # TODO(borenet): Detect static initializers?
28fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot
29fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot  with api.context(cwd=cwd):
30fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot    gsutil_path = api.bot_update._module.PACKAGE_REPO_ROOT.join('gsutil.py')
31fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot    if not api.vars.is_trybot:
32fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot      api.run(
33fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot        api.step,
34fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot        'generate and upload doxygen',
35fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot        cmd=['python', api.core.resource('generate_and_upload_doxygen.py')],
36fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot        abort_on_failure=False)
37fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot
38fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot    cmd = ['python', api.core.resource('run_binary_size_analysis.py'),
39fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot           '--library', api.vars.skia_out.join(
40fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot               'Release', 'lib', 'libskia.so'),
41fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot           '--githash', api.properties['revision'],
42fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot           '--gsutil_path', gsutil_path]
43fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot    if api.vars.is_trybot:
44fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot      cmd.extend(['--issue_number', str(api.properties['patch_issue'])])
45fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot    api.run(
46fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot      api.step,
47fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot      'generate and upload binary size data',
48fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot      cmd=cmd,
49fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot      abort_on_failure=False)
50fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot
51fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot
52fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotdef GenTests(api):
53fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot  yield (
54fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot      api.test('Housekeeper-PerCommit') +
55fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot      api.properties(buildername='Housekeeper-PerCommit',
56fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot                     repository='https://skia.googlesource.com/skia.git',
57fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot                     revision='abc123',
58fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot                     path_config='kitchen',
59fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot                     swarm_out_dir='[SWARM_OUT_DIR]') +
60fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot      api.path.exists(api.path['start_dir'])
61fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot  )
62fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot  yield (
63fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot      api.test('Housekeeper-PerCommit-Trybot') +
64fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot      api.properties(buildername='Housekeeper-PerCommit',
65fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot                     repository='https://skia.googlesource.com/skia.git',
66fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot                     revision='abc123',
67fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot                     path_config='kitchen',
68fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot                     patch_storage='gerrit',
69fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot                     swarm_out_dir='[SWARM_OUT_DIR]') +
70fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot      api.properties.tryserver(
71fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot          buildername='Housekeeper-PerCommit',
72fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot          gerrit_project='skia',
73fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot          gerrit_url='https://skia-review.googlesource.com/',
74fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot      ) +
75fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot      api.path.exists(api.path['start_dir'])
76fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot  )
77