并生成构建文件(通过将它们从归档文件中解压出来)我猜一定可以为http_archive编写一个包装器来生成构建文件?
发布于 2020-08-13 05:18:49
这是定制repository rule的完美用例。这允许您运行任意命令来为存储库生成文件,以及一些常见操作的帮助器,例如使用存储库缓存(如果已配置)通过HTTP下载文件。存储库规则在概念上类似于普通规则,但基础架构要少得多,因为它是在loading phase期间运行的,而大多数Bazel基础架构还不适用。
http_archive的starlark实现是in http.bzl。它的核心是对ctx.download_and_extract的单个调用。您的自定义规则也应该做到这一点。然后,http_archive从util.bzl调用workspace_and_buildfile和patch,这两个调用听起来像什么就做什么。您应该调用ctx.execute来运行您的命令来生成构建文件,而不是workspace_and_buildfile。如果需要,您可以调用patch,如果不打算使用该功能,则可以跳过该功能。
文档中的repository_ctx页面是存储库规则的实现函数可以执行的所有操作的顶级参考,如果您想进一步扩展它的话。
发布于 2020-08-13 02:27:43
使用http_archive时,可以使用build_file参数创建构建文件。要动态生成它,我认为可以使用patch_cmds参数来运行外部命令。
https://stackoverflow.com/questions/63378984
复制相似问题