skia2/site/dev/chrome/multi_repo_trybots.md
Andrew Monshizadeh 9d6681cc70 Changes to site documentation
Mostly just formatting fixes with a few grammatical changes.

Two real notable changes:
  - Removed references to SkGLCanvas from Tips & FAQ and replaced with
    references to `SkDevice` and `SkSurface`.
  - Deleted deprecated "Quick Start Guides" folder

Docs-Preview: https://skia.org/?cl=92361
Bug: skia:
Change-Id: Ief790b1c2bae8fe0e39aa8d66c79f80560d18c9e
Reviewed-on: https://skia-review.googlesource.com/92361
Reviewed-by: Heather Miller <hcm@google.com>
Reviewed-by: Joe Gregorio <jcgregorio@google.com>
Commit-Queue: Joe Gregorio <jcgregorio@google.com>
2018-01-11 19:47:58 +00:00

3.3 KiB

Multiple repo Chromium trybots

When a proposed Skia change will require a change in Chromium or Blink it is often helpful to locally create the Chromium and Blink changes and test with the proposed Skia change. This often happens with Skia API changes and changes which affect Blink layout tests. While simple to do locally, this explains how to do so on the Chromium trybots.

Skia only changes

If the Skia patch is already in Gerrit and there are no associated Chromium changes, then it is possible to just run the Chromium trybots. This will apply the Skia patch and run the bot.

Skia and Chromium changes

If the Skia patch is already in Gerrit and there are associated Chromium changes, then in the Chromium CL add the following to <chromium>/src/DEPS in the 'hooks' array.

  {
    'name': 'fetch_custom_patch',
    'pattern': '.',
    'action': [ 'git', '-C', 'src/third_party/skia/',
                'fetch', 'https://skia.googlesource.com/skia', 'refs/changes/13/10513/13',
    ],
  },
  {
    'name': 'apply_custom_patch',
    'pattern': '.',
    'action': ['git', '-C', 'src/third_party/skia/',
               'cherry-pick', 'FETCH_HEAD',
    ],
  },

Modify the 'refs/changes/XX/YYYY/ZZ' to the appropriate values (where YYYY is the numeric change number, ZZ is the patch set number and XX is the last two digits of the numeric change number). This can be seen in the 'Download' link on Gerrit.

If this is for a project other than Skia, update the checkout directory and fetch source. Note that this can be used multiple times to apply multiple issues.

An example of this being used can be seen at https://crrev.com/2786433004/#ps1 .

To test locally, run gclient runhooks to update the Skia source code. Note that if your local skia patch in third_party/skia isn't clean (e.g., you already applied some patch to it), then gclient runhooks won't successfully run. In that case, run git reset --hard inside third_party/skia before gclient runhooks.

Arbitrary changes

If the patch is to files where the above is not possible, then it is still possible to patch the files manually by adding the following to <chromium>/src/DEPS in the 'hooks' array just before the 'gyp' hook.

  {
    'name': 'apply_custom_patch',
    'pattern': '.',
    'action': ['python',
               '-c', 'from distutils.dir_util import copy_tree; copy_tree("src/patch/", "src/");'
    ],
  },

Then, copy all 'out of tree' files into <chromium>/src/patch/, using the same directory structure used by Chromium. When gclient runhooks is run, the files in <chromium>/src/patch/ will be copied to and overwrite corresponding files in <chromium>/src/. For example, if changing <skia>/include/core/SkPath.h, place a copy of the modified SkPath.h at <chromium>/src/patch/third_party/skia/include/core/SkPath.h.

An example of this being used can be seen at https://crrev.com/1866773002/#ps20001 .

Try the patch

After committing a <chromium>/src/DEPS or <chromium>/src/patch/ change locally, git cl upload can be used in the usual way. Be sure to add COMMIT=false to the issue description to avoid accidentally checking it in.