如果我不知道zip的内容,如何在bazel中正确解压缩文件?

时间:2017-09-20 15:58:25

标签: bazel

我要定义解压缩给定zip文件的规则。但是,我不知道zip的内容,因此我不能在genrule中指定outs。这似乎是一个常见的问题,谷歌搜索引导我遇到类似情况的人,但我还没有看到如何解决这个问题的具体例子。

我想要类似的东西:

genrule(
  name="unzip",
  src="file.zip",
  outs=glob(["**"]), # except you're not allowed to use glob here
  cmd = "unzip $(location file)",
)

1 个答案:

答案 0 :(得分:1)

您可以使用Workspace Rule为压缩文件创建一个BUILD文件。

WORKSPACE文件中包含以下内容:

new_http_archive(
    name = "my_zip",
    url = "http://example.com/my_zip.zip",
    build_file_content = """
        filegroup(
            name = "srcs",
            srcs = glob(["*"]),
            visibility = ["//visibility:public"]
        )
    """
)

然后,您可以使用BUILD

@my_zip//:srcs文件中将其引用为输入