bazel-contrib / bazel-contrib/rules_python

Emit RunfilesGroupInfo in py_binary targets

未关闭
#3,757 18 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看
主要语言
Starlark
星标
688
派生
721
平均合并
15 小时 7 分钟
30 天内合并 PR
76

描述

# 🚀 feature request

### Relevant Rules

I want `py_binary` to return an additional provider, [`RunfilesGroupInfo`](https://github.com/hermeticbuild/rules_runfiles_group).
`py_library` could contribute by also returning this provider, but that's more of an implementation detail.

I'd be open to work on this if you agree that this is a good idea.

### Description

I'd like to make packaging of `py_binary` targets in container images more efficient. To that end, I have designed a set of providers and described their semantics in [a new Bazel module](https://github.com/hermeticbuild/rules_runfiles_group).

### Describe the solution you'd like

`py_library` targets should forward `RunfilesGroupInfo` and `RunfilesGroupMetadataInfo` from their deps and add their own runfiles (`srcs`, `data`) to a group.
`py_binary` targets should aggregate runfiles groups from their deps and emit `RunfilesGroupInfo` and `RunfilesGroupMetadataInfo` that contain at least:

* A group for the interpreter + standard library
* One group per third party dependency

Additionally, it could also make sense to produce groups for each `py_library` target in the transitive dependency graph.

### Describe alternatives you've considered

Doing nothing would mean we continue creating (very large) container image layers that contain the full runfiles tree of a `py_binary` target.

Writing custom packaging rules just for rules_python is unsustainable in my opinion.

贡献指南

打开贡献指南

调研方向

首先阅读已链接的 rules_runfiles_group Bazel 模块中的 py_library 和 py_binary 规则实现以及 provider 语义。定义依赖项如何被转发和聚合,然后验证 py_binary 是否会为解释器和标准库以及第三方依赖项生成组,并通过测试覆盖所请求的 provider 和元数据。

由索引模型根据 Issue 内容生成。

评估

技术栈
python
领域
build-system
Issue 类型
功能
难度
5/5
预计耗时
一周以上
活跃度
活跃
描述清晰度
基本清楚
新手友好度
48/100

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。