The gRPC library itself is already pinned by "govendor" and protects as
from breaking changes. The plugin was recently updated and broke us
again. Now this should no longer happen.
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.
Since gRPC 0.13, the gRPC Python install process takes care of downloading python modules like "six" or "google.protobuf".
The new install process also no longer requires "tox", hence we dropped that dependency as well.
This commit also fixes the issue which was introduced in commit 938f31743d.
When we changed the install command flag for protobuf python from --root to --prefix, a system wide python package would always trump the locally installed version. Due to that, we could no longer run the e2e tests on our desktops. Since we no longer manually install protobuf python, this issue goes away. Before I had that solution, I did some analysis why the system wide version gets imported instead of the local version.
If --prefix is used, protobuf python is installed as an .egg file in the "site-packages" directory.
If --root is used, the .py files are copied to the "dist-packages" directory instead.
For unknown reasons, the .egg file in "site-packages" was not used when calling "import google.protobuf".
Here's what it looked like:
--prefix: (not working)
$ python -v
>>> import google.protobuf
[...]
import google # loaded from Zip /home/mberlin/workspace/vitess/dist/grpc/usr/local/lib/python2.7/site-packages/protobuf-3.0.0b2-py2.7-linux-x86_64.egg/google/__init__.pyc
import google.protobuf # directory /usr/lib/python2.7/dist-packages/google/protobuf
import google.protobuf # precompiled from /usr/lib/python2.7/dist-packages/google/protobuf/__init__.pyc
>>>
--root: (working)
$ python -v
>>> import google.protobuf
import google.protobuf # directory /home/mberlin/workspace/vitess/dist/grpc/usr/local/lib/python2.7/dist-packages/google/protobuf
import google.protobuf # precompiled from /home/mberlin/workspace/vitess/dist/grpc/usr/local/lib/python2.7/dist-packages/google/protobuf/__init__.pyc
>>>
It looks like with 10.1 MariaDB libmysqlclient is reentrant by default and they got rid of the special library "libmysqlclient_r". Therefore, mysql_config --libs_r now returns "libmysqlclient" instead of "libmysqlclient_r". Replace any of these two values with the static library.
Fixes issue https://github.com/youtube/vitess/issues/1437
Recently, we saw some Travis failures because not all Go dependencies
were successfully 'go get'd. However, the test run didn't stop early and
instead it was difficult to find out the original reason for the test
failure. This commit will make it easier to find out when the bootstrap
flaked and the test simply has to be restarted.
This allows to skip the compilation of any dependencies in bootstrap.sh.
Using the cache adds minimal extra time:
- ~10 secs to retrieve and extract the ~100 MB tarball cache
- ~1.5 secs to check if the cache should be updated and no updates are necessary
In case of a corrupted cache, the cache must be deleted through the Travis CI webinterface on the settings page.
Enabling the cache required small fixes to bootstrap.sh:
- we must check for specific files and not just the existance of a directory in dist/ because the cache always creates the directories - even if they were not cached.
- py-mock must delete any existing files because Travis CI creates ".build_finished" as directory when it's not already cached. Once it's cached, it's created as file from the cache.
It was failing because the target path needs to be in PYTHONPATH already
before the install step. We need to add it in bootstrap like we do for
gRPC. After bootstrap, dev.env will find it automatically by searching
for all site-packages directories.
go/vt/proto/queryservice/queryservice.pb.go breaks if one does not
have the latest grpc installed. However, bootstrap script won't help
if there is a old grpc installed on your machine. By add the -u flag,
it forces go get command to install the latest version.
It should match the convention established with "MariaDB".
I looked into making them case-insensitive, but it would be more tricky
than it's worth because flavor IDs are used as part of the protocol
between servers. So an old server that is case-sensitive would choke on
a message from a new one.
for building. Also properly parsing the command line flag
in bootstrap.sh.
Should reduce te nuber of times we build proto from 4x to 1x, and
grpc from 2x to 1x. Doh.
We don't want to auto-remove the directory on failure, since the user
may need to investigate what went wrong. So we can't use the existence
of the directory to know whether the build finished.
Fixes#472