首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Bazel Starlark:如何按程序生成构建文件?

Bazel Starlark:如何按程序生成构建文件?
EN

Stack Overflow用户
提问于 2020-08-12 22:43:31
回答 2查看 342关注 0票数 1

并生成构建文件(通过将它们从归档文件中解压出来)我猜一定可以为http_archive编写一个包装器来生成构建文件?

EN

回答 2

Stack Overflow用户

发布于 2020-08-13 05:18:49

这是定制repository rule的完美用例。这允许您运行任意命令来为存储库生成文件,以及一些常见操作的帮助器,例如使用存储库缓存(如果已配置)通过HTTP下载文件。存储库规则在概念上类似于普通规则,但基础架构要少得多,因为它是在loading phase期间运行的,而大多数Bazel基础架构还不适用。

http_archive的starlark实现是in http.bzl。它的核心是对ctx.download_and_extract的单个调用。您的自定义规则也应该做到这一点。然后,http_archiveutil.bzl调用workspace_and_buildfilepatch,这两个调用听起来像什么就做什么。您应该调用ctx.execute来运行您的命令来生成构建文件,而不是workspace_and_buildfile。如果需要,您可以调用patch,如果不打算使用该功能,则可以跳过该功能。

文档中的repository_ctx页面是存储库规则的实现函数可以执行的所有操作的顶级参考,如果您想进一步扩展它的话。

票数 2
EN

Stack Overflow用户

发布于 2020-08-13 02:27:43

使用http_archive时,可以使用build_file参数创建构建文件。要动态生成它,我认为可以使用patch_cmds参数来运行外部命令。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63378984

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档