我正在尝试创建一个规则(可能已存在一个?),在bazel构建步骤中解压缩文件。
如果我理解正确,则需要在"分析阶段"中知道所有输出文件。为了解决这个问题,我有一个文件,我们称之为manifest.txt,它列出了tar文件中的所有文件。但是,我不太明白如何将此文件作为我的云雀规则的列表输出读取?是否有一种简单的方法来读取文件并使每一行成为生成的输出?
感谢。
答案 0 :(得分:0)
仅当清单文件是源文件时才可以这样做,即它不是由构建中的某些规则生成的。
规则必须声明其所有输出而不依赖于生成的文件的内容,因此不支持创建例如基于由另一个规则生成的清单文件计算outs
的基类。
要使用tar文件输入,规则需要通过操作解压缩tar,并最终产生可预测的输出量(即,与tar中有多少文件无关)。通常,这是通过重新打包输出来完成的,也就是说,规则会消耗一个tar并生成另一个tar。