我正在尝试将mercurial版本烘焙到我的Bazel文件中,以便我可以得到这样的东西:
# These I set manually, since they're "semantic"
MAJOR_VERSION = 2
MINOR_VERSION = 3
BUGFIX_VERSION = 1
# This should be the result of `hg id -n`
BUILD_VERSION = ?
apple_bundle_version(
name = "my_version",
build_version = "{}.{}.{}.{}".format(MAJOR_VERSION, MINOR_VERSION, BUGFIX_VERSION, BUILD_VERSION),
short_version_string = "{}.{}.{}".format(MAJOR_VERSION, MINOR_VERSION, BUGFIX_VERSION),
)
Run Code Online (Sandbox Code Playgroud)
这显然不是密封的,所以我知道这违反了Bazel的一些假设,所以我对其他选择持开放态度.
这里有一些可能的选择:
实际上hg id -n在Bazel分析期间运行,我不知道该怎么做.
在via命令行中传递构建版本,例如--define=build_version=$(hg id -n).不幸的是,这需要一个单独的命令来包装bazel build.
手动设置BUILD_VERSION.显然,这会很烦人.
有没有办法做#1?我还有什么其他选择?