假设有两个Bazel项目,它们都依赖于Python包six。
项目A增加了六个名称为six_1_10_0
:
new_http_archive(
name = "six_1_10_0"
...
)
py_binary(
name = "lib_a",
deps = ["@six_1_10_0//:six"]
)
项目B增加了六个名称为six_archive
。
new_http_archive(
name = "six_archive"
...
)
py_binary(
name = "lib_b",
deps = ["@six_archive//:six"]
)
在我的项目中,我依赖于A和B.有没有办法让他们使用相同的six
?
答案 0 :(得分:1)
要更改依赖项的BUILD
文件内容,我能想到的最简单方法是使用new_*
存储库规则之一(例如new_git_repository
)。使用build_file
或build_file_content
属性编写新的BUILD
文件,编写一个新的py_binary
规则,其deps
包含您的规范@six
存储库,并保持所有其他属性相同。
没有一种直接的方法可以做到这一点,因为Bazel没有假设项目A使用与项目B相比的six
的不同版本。
Bazel知道他们使用相同版本的唯一方法是两个new_http_archive
规则都指定相同的SHA
校验和。如果它们是相同的校验和,则可以使用--experimental_repository_cache=/some/path
来避免两次下载相同的存档。