How can I make gclient not check everything out?

Modify your .gclient file to add a custom_deps section, listing None for the paths to exclude:

"custom_deps" : {

"src/data/esctf": None,

"src/data/mozilla_js_tests": None,

"src/data/page_cycler": None,

"src/data/tab_switching": None,

"src/data/saved_caches": None,

"src/data/selenium_core": None,

"src/tools/grit/grit/test/data": None,

}

Note: the above instruction is not useful because most of the checkout time is consumed by downloading all the necessary toolchains and unpacking them. To manually disable one of the toolchains from downloading, first download all of them in the initial checkout.

shell$ ls native_client/toolchain

linux_arm-trusted

linux_x86

linux_x86_newlib

pnacl_linux_x86_64

pnacl_linux_x86_64_glibc

pnacl_linux_x86_64_newlib

pnacl_translator

To disable updating one of them, for example, pnacl_linux_x86_64, change the test in file:

All subsequent gclient syncs would (hopefully) assume that this toolchain is up-to-date.

Where does the source code to the buildbot live?

It is located in http://src.chromium.org/chrome/trunk/tools/build

NativeClient and other projects are mixed together. The files you mainly care about for nacl are:

master.client.nacl*

scripts/master/factory/nacl_*.py

There are also some internal files, which are located in the corresponding internal location under scripts/master-internal.

Note: you usually do not need to change the buildbot scripts

I keep getting patch failure on the trybots, what do I do?

Patches typically fail on the trybots because of version mismatch between what is in the patch and the revision that the trybot wants to patch against.

If your client is really old, do a gclient update before submitting try jobs to bring it in sync.

The trybot uses http://nativeclient-status.appspot.com/lkgr (last known good revision), to decide what to patch against.

This is intended to allow you to submit try jobs, even when the tree is red.

If you ever need to apply a patch which does not work against the default on the try bot, you can add various flags to gcl try:

-r REV# -- patch against a specific revision

-r HEAD -- patch against tip of trunk

-c -- clobber the build before applying the patch (of limited use for nacl, but useful for chromium)

I get strange error messages when compiling on Windows, what do I do?

Be sure to install all the service packs listed for chromium:

http://dev.chromium.org/developers/how-tos/build-instructions-windows

The toolchain in native_client appears to be out of date. How do I safely update it?

If you make changes to the untrusted or shared code, you need to update the toolchain revision(s) after your change is committed and the toolchain build is green. (If the toolchain build is red, you will need to check in a fix right away or simply rollback your change).

There are two families of toolchains that generally need to be updated in nactive_client/DEPS: arm_toolchain_version and x86_toolchain_version. It is recommended to update them both to the same revision at a time.

When found a revision with all toolchains available, do not forget to check that all builds in the "Toolchain" buildbot console are green for that row. Sometimes they can be red for reasons irrelevant to toolchain correctness, you may try those if you are brave.

To perform toolchain revision update for only one family (i.e. arm_toolchain_version or x86_toolchain_version) you will need only the 'OK' for that family in toolchain tarballs availability and buildbot green status only of a subset of the rows (subject to frequent change):

arm_toolchain_version

linux-pnacl-x86_64

linux-armtools-x86_32

linux-pnacl-x86_32

mac-pnacl-x86_32

x86_toolchain_version

win7-toolchain_x86

mac-toolchain_x86

lucid64-toolchain_x86

win7-glibc

mac-glibc

lucid64-glibc

TODO: describe the update procedure for NaCl SDK (requires updating toolchain DEPS in the Chrome tree, pushing the new manifest).