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. GitHub issues, email threads in the [bazel-discuss@googlegroups.com](https://groups.google.com/forum/#!forum/bazel-discuss) archive)


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