The change achieves the following:
1. Adds generation of Go and Python protobuf files during build by adding
dependency of 'build' rule on 'proto' rule. This will avoid surprises of
'make build' giving error when proto file is changed.
2. Modifies the generation of protobuf files to be more in line of how Makefiles
should be written. This has an additional benefit that protobuf files won't
be regenerated if proto files did not change.
3. Modifies the generation rules to work both locally on a workstation and
inside the docker image. Docker image doesn't have /vt/dist/grpc installed,
so the existing rule didn't work.
Note that as a result of this a new directory go/vt/.proto.tmp will exist after
building. I believe that should be fine and won't interfere with anything.
Like godep, govendor helps manage the native Go vendor dir. But it also
supports a mode where you don't have to copy all the files into your own
repo. Instead, you run `govendor sync` after updating the `vendor.json`
file, and it reconciles everything by downloading as needed.
This is an alternative to 'make integration_test',
with the following advantages:
* Tests run in Docker, so no bootstrap is necessary.
* Tests are hermetic and can run in parallel.
* Test against different flavors just by setting a flag.
* Failing tests are retried to see if they are flaky.
* A failed test will be recorded for later inspection, while the script
continues to run other tests.
* A test that takes too long will be considered stuck and retried.
There's plenty of room for improvement, but now that we have something
in a more readable language than Makefile, we can iterate.
Switch to using go install. Leads to faster and cleaner builds.
go install directly installs the binaries into $VTROOT/bin directly
because $GOPATH==$VTROOT. It also intalls intermediate libraries under
pkg, which results in reuse.
There is also no more clutter in the source dirs: cleaner .gitignore.
Numbered pool now accepts a purpose when locking resources,
and reports it as part of the error if it's in use.
Also dropping vttopo from Makefile and .gitignore.