Make `out` on `native_binary` optional (#474)

Fixes: #399
This commit is contained in:
Ted Pudlik 2024-04-24 12:40:31 -07:00 committed by GitHub
parent 553c08dc60
commit 09b1079228
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 15 additions and 4 deletions

View File

@ -30,7 +30,7 @@ in genrule.tools for example. You can also augment the binary with runfiles.
| :------------- | :------------- | :------------- | :------------- | :------------- | | :------------- | :------------- | :------------- | :------------- | :------------- |
| <a id="native_binary-name"></a>name | A unique name for this target. | <a href="https://bazel.build/concepts/labels#target-names">Name</a> | required | | | <a id="native_binary-name"></a>name | A unique name for this target. | <a href="https://bazel.build/concepts/labels#target-names">Name</a> | required | |
| <a id="native_binary-data"></a>data | data dependencies. See https://bazel.build/reference/be/common-definitions#typical.data | <a href="https://bazel.build/concepts/labels">List of labels</a> | optional | <code>[]</code> | | <a id="native_binary-data"></a>data | data dependencies. See https://bazel.build/reference/be/common-definitions#typical.data | <a href="https://bazel.build/concepts/labels">List of labels</a> | optional | <code>[]</code> |
| <a id="native_binary-out"></a>out | An output name for the copy of the binary | String | required | | | <a id="native_binary-out"></a>out | An output name for the copy of the binary. Defaults to name.exe. (We add .exe to the name by default because it's required on Windows and tolerated on other platforms.) | String | optional | <code>""</code> |
| <a id="native_binary-src"></a>src | path of the pre-built executable | <a href="https://bazel.build/concepts/labels">Label</a> | required | | | <a id="native_binary-src"></a>src | path of the pre-built executable | <a href="https://bazel.build/concepts/labels">Label</a> | required | |
@ -56,7 +56,7 @@ the binary with runfiles.
| :------------- | :------------- | :------------- | :------------- | :------------- | | :------------- | :------------- | :------------- | :------------- | :------------- |
| <a id="native_test-name"></a>name | A unique name for this target. | <a href="https://bazel.build/concepts/labels#target-names">Name</a> | required | | | <a id="native_test-name"></a>name | A unique name for this target. | <a href="https://bazel.build/concepts/labels#target-names">Name</a> | required | |
| <a id="native_test-data"></a>data | data dependencies. See https://bazel.build/reference/be/common-definitions#typical.data | <a href="https://bazel.build/concepts/labels">List of labels</a> | optional | <code>[]</code> | | <a id="native_test-data"></a>data | data dependencies. See https://bazel.build/reference/be/common-definitions#typical.data | <a href="https://bazel.build/concepts/labels">List of labels</a> | optional | <code>[]</code> |
| <a id="native_test-out"></a>out | An output name for the copy of the binary | String | required | | | <a id="native_test-out"></a>out | An output name for the copy of the binary. Defaults to name.exe. (We add .exe to the name by default because it's required on Windows and tolerated on other platforms.) | String | optional | <code>""</code> |
| <a id="native_test-src"></a>src | path of the pre-built executable | <a href="https://bazel.build/concepts/labels">Label</a> | required | | | <a id="native_test-src"></a>src | path of the pre-built executable | <a href="https://bazel.build/concepts/labels">Label</a> | required | |

View File

@ -21,7 +21,7 @@ don't depend on Bash and work with --shell_executable="".
""" """
def _impl_rule(ctx): def _impl_rule(ctx):
out = ctx.actions.declare_file(ctx.attr.out) out = ctx.actions.declare_file(ctx.attr.out if (ctx.attr.out != "") else ctx.attr.name + ".exe")
ctx.actions.symlink( ctx.actions.symlink(
target_file = ctx.executable.src, target_file = ctx.executable.src,
output = out, output = out,
@ -64,7 +64,12 @@ _ATTRS = {
" https://bazel.build/reference/be/common-definitions#typical.data", " https://bazel.build/reference/be/common-definitions#typical.data",
), ),
# "out" is attr.string instead of attr.output, so that it is select()'able. # "out" is attr.string instead of attr.output, so that it is select()'able.
"out": attr.string(mandatory = True, doc = "An output name for the copy of the binary"), "out": attr.string(
default = "",
doc = "An output name for the copy of the binary. Defaults to " +
"name.exe. (We add .exe to the name by default because it's " +
"required on Windows and tolerated on other platforms.)",
),
} }
native_binary = rule( native_binary = rule(

View File

@ -96,6 +96,12 @@ native_binary(
data = ["testdata.txt"], data = ["testdata.txt"],
) )
native_binary(
name = "no_out_bin",
src = ":copy_assertdata_exe",
data = ["testdata.txt"],
)
native_test( native_test(
name = "data_test", name = "data_test",
src = ":copy_assertdata_exe", src = ":copy_assertdata_exe",