Please provide the following information. The more we know about your system and use case, the more easily and likely we can help.

### Description of the problem / feature request / question:

_If asking a question or requesting a feature, also tell us about the underlying problem you're trying to solve._


### If possible, provide a minimal example to reproduce the problem:


### Environment info
* Operating System:


* Bazel version (output of `bazel info release`):


* If `bazel info release` returns "development version" or "(@non-git)", please tell us what source tree you compiled Bazel from; git commit hash is appreciated (`git rev-parse HEAD`):


###  Have you found anything relevant by searching the web?
(e.g. [StackOverflow answers](http://stackoverflow.com/questions/tagged/bazel),
[GitHub issues](https://github.com/bazelbuild/bazel/issues),
email threads on the [`bazel-discuss`](https://groups.google.com/forum/#!forum/bazel-discuss) Google group)


### Anything else, information or logs or outputs that would be helpful?
(If they are large, please upload as attachment or provide link).
