Skip to content

resource_set should allow specify the resource dict directly. #15187

Open
@cloudhan

Description

@cloudhan

Description of the problem / feature request:

Feature Request for directly specify the resoure requirement via resource_set

Feature requests: what underlying problem are you trying to solve with this feature?

resource_set support for actions.run and actions.run_shell is added in d7f0724

However, per the comment #6477 (comment) #6477 (comment) and #6477 (comment). The API is not flexible enough.

Firstly, the callbale only receive a input_size on calling-back. For example, rules_foreign_cc can invoke underlying make command, with the -j option. The -j option for make command is not dependent on input_size in any way. The rule author of rules_foreign_cc can just use a magic number, say -j8 here. Or get the cpu count info from somewhere else. But the info cannot be determined from the input_size in any means. And there are many more similar cases that the parallelism cannot be simply infered from input_size

Secondly, the API receive a callable, which is weird in Bazel, since Bazel is not designed around high order function at first.

Thirdly, the callable can only be top-level def-ed function, which is very limited.

So it is suggested to simply accept a ResourceSetInfo or dict at starlark api actions.run and actions.run_shell

ctx.actions.run(
    outputs = ...,
    executable = ...,
    resource_set = ResourceSetInfo(
        cpu = 8,
        memory = 512,
        ...,
    ),
)

And leave the responsibility of inferencing the number and constructing the ResourceSetInfo to the rule authors to maximize the rule authoring flexibility.

Metadata

Metadata

Assignees

Labels

P3We're not considering working on this, but happy to review a PR. (No assignee)team-Local-ExecIssues and PRs for the Execution (Local) teamtype: feature request

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions