不同项目中Bazel外部依赖项的名称不一致

不同项目中Bazel外部依赖项的名称不一致,bazel,Bazel,假设有两个Bazel项目,它们都依赖于Python包 项目A用名称添加六个six\u 1\u 10\u 0: new_http_archive( name = "six_1_10_0" ... ) py_binary( name = "lib_a", deps = ["@six_1_10_0//:six"] ) 项目B添加了六个名称为six\u archive new_http_archive( name = "six_archive" ...

假设有两个Bazel项目,它们都依赖于Python包

项目A用名称添加六个
six\u 1\u 10\u 0

new_http_archive(
    name = "six_1_10_0"
    ...
)

py_binary(
    name = "lib_a",
    deps = ["@six_1_10_0//:six"]
)
项目B添加了六个名称为
six\u archive

new_http_archive(
    name = "six_archive"
    ...
)

py_binary(
    name = "lib_b",
    deps = ["@six_archive//:six"]
)

在我的项目中,我同时依赖于A和B。有没有办法让他们使用相同的
six

要更改依赖项的
构建
文件内容,我能想到的最简单的方法是使用
新的
存储库规则之一(例如)。使用
build\u file
build\u file\u content
属性编写一个新的
build
文件,编写一个新的
py\u二进制
规则,其
deps
包含您的规范
@six
存储库,并保持所有其他属性不变

没有一种简单的方法可以做到这一点,因为Bazel没有假设为什么项目a使用与项目B不同的
six

Bazel知道他们使用相同版本的唯一方法是,如果两个
new_http_archive
规则都指定了相同的
SHA
校验和。如果它们是相同的校验和,您可以使用
--experimental\u repository\u cache=/some/path
来避免两次下载相同的归档文件