Set PATH_PREFIX=./
instead of failing to bazel run a program with a perl_binary data dep
#65
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
I had the issue that the binary wrapper fails when it is a data dependency of some other program which is run under
bazel run
(it does work underbazel test
!)The issue is that during bazel run RUNFILES_DIR may not be set and the MANIFEST file may not exist at ../.. even if you did not cd somewhere else.
The correct thing to do for the wrapper in this case is to accept the interpreter short path and main short path as-is from the starlark side. We can just set PATH_PREFIX=./ for the same effect.
I added a test that is red without the binary_wrapper change and becomes green when the change is applied. The trick here is to use
env -i
to remove the test envs from the sh_test so it behaves more like a bazel run and not bazel test.Note that I don't think the binary_wrapper should explicitly fail anyways. Rather it should just let things play out. Other things will fail in any case if paths are not set up correctly. And if things won't fail -- well then the wrapper shouldn't make them fail either :)