| Index: third_party/cq_client/README.md | 
| diff --git a/third_party/cq_client/README.md b/third_party/cq_client/README.md | 
| index f1bb79c2ddea724aa939d2d893334880b67d0495..d3a264f0268c9e5ffb4fdde5f94bb78dc64cf588 100644 | 
| --- a/third_party/cq_client/README.md | 
| +++ b/third_party/cq_client/README.md | 
| @@ -1,29 +1,55 @@ | 
| +# CQ Client Library. | 
| + | 
| This directory contains CQ client library to be distributed to other repos. If | 
| you need to modify some files in this directory, please make sure that you are | 
| changing the canonical version of the source code and not one of the copies, | 
| which should only be updated as a whole using Glyco (when available, see | 
| [chromium issue 489420](http://crbug.com/489420)). | 
|  | 
| -The canonical version is located at `https://chrome-internal.googlesource.com/ | 
| -infra/infra_internal/+/master/commit_queue/cq_client`. | 
| +The canonical version is located at | 
| +[https://chrome-internal.googlesource.com/infra/infra_internal/+/master/commit_queue/cq_client](). | 
| + | 
| +When modifying cq.proto, consider adding checks to validator in | 
| +[https://chrome-internal.googlesource.com/infra/infra_internal/+/master/appengine/commit_queue/src/commitqueue/validate.go](). | 
| + | 
| + | 
| +## Generation of Python and Go bindings | 
| + | 
| +### tl;dr | 
| + | 
| +    make | 
| + | 
| + | 
| +### Details | 
| + | 
| +All commands below assume you are working in a standard infra_internal gclient | 
| +checkout (e.g., after you ran `mkdir src && cd src && fetch infra_internal`) and | 
| +are in current directory of this README.md (that is, in | 
| +`cd infra_internal/commit_queue/cq_client`). | 
|  | 
| -You'll need to use protoc version 2.6.1 and | 
| -recent golang/protobuf package. Sadly, the latter has neither tags nor versions. | 
| +To generate Python's `cq_pb2.py` you'll need to get and `protoc` of version | 
| +**2.6.1**. You can get it by `make py-prepare`. | 
| + | 
| +    make py | 
|  | 
| -You can get protobuf by downloading archive from | 
| -https://github.com/google/protobuf/tree/v2.6.1 and manually building it. As for | 
| -golang compiler, if you have go configured, just | 
| +To generate Golang's protobuf file `cq.pb.go`, you'll need to bootstrap | 
| +infra/infra repository and go utilities `make go-prepare`. | 
|  | 
| -    go get -u github.com/golang/protobuf/{proto,protoc-gen-go} | 
| +    make go | 
|  | 
| -TODO(tandrii,sergiyb): decide how to pin the go protobuf generator. | 
| +## Notes | 
|  | 
| -To generate `cq_pb2.py` and `cq.pb.go`: | 
| +1. Please make sure to use proto3-compatible yntax, e.g. no default | 
| +values, no required fields. As of this writing (Jan 2016), | 
| +the Go protobuf compiler has been upgraded to 3.0.0. So, if you can generate go | 
| +bindings, all is good. | 
|  | 
| -    cd commit_queue/cq_client | 
| -    protoc cq.proto --python_out $(pwd) --go_out $(pwd) | 
| +2. If after generating Python binding, CQ tests fail with: | 
|  | 
| -Additionally, please make sure to use proto3-compatible syntax, e.g. no default | 
| -values, no required fields. Ideally, we should use proto3 generator already, | 
| -however alpha version thereof is still unstable. | 
| +        TypeError: __init__() got an unexpected keyword argument 'syntax' | 
|  | 
| +You've probably used 3.0.0 protoc generator. We should eventually switch to 3x | 
| +Python version as well, but it requires upgrading infra's Python ENV to newer | 
| +package. See [bootstrap/README.md](../../bootstrap/README.md) for more | 
| +information.  We may end up deprecating Python before all infra's Python code | 
| +can be moved to protobuf v3. | 
|  |