首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何创建使用另一个规则的runfiles路径的自定义bazel构建规则?

问如何创建使用另一个规则的runfiles路径的自定义bazel构建规则?
EN

Stack Overflow用户
提问于 2017-05-25 02:58:57
回答 1查看 1.2K关注 0票数 2

我正在尝试创建一个自定义构建规则,以从py_binary输出构建一个pip包。要创建我的pip包,我需要调用一个shell脚本。外壳脚本通过从py_binary输出的runfile创建一个zip文件来构建一个pip包。

例如,假设我有

代码语言:javascript
复制
py_binary(
    name = "some_binary",
    srcs = ["some_binary.py"],
    srcs_version = "PY2AND3",
)

构建此规则会产生

代码语言:javascript
复制
bazel-bin/some_binary.runfiles

现在,我想创建一个自定义构建规则,它将调用带有bazel/Somebinary.runfiles位置的shell脚本。

我试着创建一个宏

代码语言:javascript
复制
def build_pip_package(
    name, py_binary=None, setup_file=None):
  """Create a pip package from a py_binary.

  The source file should be a text file with python formatting i.e.

  Args:
    name: Name for the rule.
    py_binary: Build rule producing the py_binary
    setup_file: Build rule producing the setup.py file to use to produce
      the package.
  """
  output= "somefile"
  native.genrule(
      name=name,
      outs=[output],
      cmd="echo $(location //:build_pip_package_script) "
      + "--py_runfiles_path=$(locations %s)" % py_binary
      + " --setup_file=$(location %s) " % setup_file,
      tools=["//:build_pip_package_script"],
      srcs=[setup_file, py_binary])

这将调用我的shell脚本。

代码语言:javascript
复制
bazel-out/local-fastbuild/bin/some_binary/model_train some_binary.py 

如何使用与some_binary目标对应的runfiles目录的位置调用脚本。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-25 16:07:53

如果将py_binary放在tools属性中而不是srcs中,bazel将包括runfiles树。您可以通过"$(location %s).runfiles" % py_binary访问它

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

https://stackoverflow.com/questions/44171570

复制
相关文章

相似问题

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