gpt4 book ai didi

go - 如何强制 Bazel 标记所有二进制文件?

转载 作者:IT王子 更新时间:2023-10-29 02:11:44 28 4
gpt4 key购买 nike

--stamp 的文档在 Bazel User Manual状态:

Specifying --stamp does not force affected targets to be rebuilt, if their dependencies have not changed.

有没有办法强制构建受影响的目标,以便所有输出二进制文件具有相同的标记,即使它们的依赖关系没有改变?

具体用例是我正在构建大量相关的 Go 二进制文件(使用 rules_go ),我想用相同的版本号可靠地标记它们(取自最新的 git commit hash ).我可以事先做一个 bazel clean,但这有点违背了使用 Bazel 的意义:)

谢谢!

最佳答案

您可以添加 .git/refs/heads/<release branch>文件作为数据输入?然后,当提交更改时,您的输入将“自动”更改。您可以将其包装在一个 genrule 中以添加一些检查或避免在开发分支上重建所有内容:

genrule(
name = "stamper",
outs = ["stamper.out"],
srcs = [
".git/HEAD",
".git/refs/heads/master",
],
cmd = """
if [[ $$(cat $(location :.git/HEAD)) = "refs: refs/heads/<release branch>" ]]; then
cat $(location :.git/refs/heads/master)
else
# If we're not on the release branch, don't uncache things on commit.
echo "dev"
fi
""",
)

a bug用于强制重新运行您可以跟踪/评论的操作(如果有兴趣)。

关于go - 如何强制 Bazel 标记所有二进制文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44704728/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com