It means the actions generated by this target will not run inside a sandbox or on a remote builder.
You should only use this when you run a script / command without knowing all the inputs and outputs that it uses. Which is really something I cannot recommend if you can avoid it.
Bazel will run the corresponding action, but because it lacks appropriate information about all the inputs, you may encounter a number of surprising incremental build issues.
For example, if you modify one of the implicit inputs, the next `bazel build` command will _not_ rebuild the outputs of that target, because it doesn't know about them (instead, Bazel will tell you there is nothing to do). Worse things are possible though, like relying on stale build artifacts, failing to rebuild the implicit inputs if these are themselves generated by other targets. If you are lucky, you will get a build break, and you will have a hard-time understanding why. If you are unlucky, Bazel will just build the wrong build artifacts, and you will not be able to understand why.
In short, this throws away all promise of hermeticity and correctness out of your build graph, at least for incremental builds (the issue will not appear if you do a clean build every time, but then why use Bazel at all).
Thanks,
Alok.
--
You received this message because you are subscribed to the Google Groups "bazel-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email to bazel-discus...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/bazel-discuss/37573753-a542-46e8-94e2-05abf2e13749n%40googlegroups.com.