bazelbuild/bazel

Documentation issue: General Rules: When to use genrule vs. rule ?

Open

#12,781 建立於 2021年1月6日

在 GitHub 查看
 (3 留言) (0 反應) (0 負責人)Java (4,465 fork)batch import
P3help wantedteam-Configurabilityteam-Documentationtype: documentation (cleanup)

倉庫指標

Star
 (25,384 star)
PR 合併指標
 (平均合併 22天 20小時) (30 天內合併 77 個 PR)

描述

Documentation URL: https://docs.bazel.build/versions/master/be/general.html#genrule

This documentation lacks guidance on whether, or in what situations, a rule() should be favored over a genrule() (or vice-versa).

IMHO, rules are preferable because:

  • They can return providers, thus allowing references to their targets to be typechecked.
  • The Make variable syntax of genrules is obscure and harder to look up.
  • They're more explicit in general and support various doc fields for documentation.
  • I seem to recall some quirks around inferring the relevant genrule from an output filename, but perhaps that's been fixed by now.

I guess maybe genrule's terseness could be justified if the target and its generator are one-offs?

But that's just my opinion. I'd prefer official guidance from Bazel Team, hence this issue.

貢獻者指南