bazel-contrib / bazel-contrib/rules_python
`py_binary` targets added to `py_wheel.deps` end up including the binary in the wheel. Sounds like WAI but it was surprising to me
- 主要语言
- Starlark
- 星标
- 688
- 派生
- 721
- 平均合并
- 15 小时 7 分钟
- 30 天内合并 PR
- 76
描述
# 🐞 bug report
### Affected Rule
+ `py_wheel`
### Is this a regression?
Nope, not that I can tell at least.
### Description
Adding a `py_binary` target as a dep to `py_wheel` results in both the binary's `srcs` being added to the wheel _and the binary itself_. It's this latter part that is unexpected (at least to me, haha).
Maybe I'm missing an option that causes the bazel binaries to be excluded?
## 🔬 Minimal Reproduction
```starlark
py_binary(
name = "foo",
srcs = ["foo.py"],
)
py_wheel(
...,
distribution = "our_tables",
deps = [":foo"],
)
```
```shell
$ less bazel-bin/path/to/foo/foo-0.0.1-py3-none-any.whl | cat
Metadata-Version: 2.1
Name: our_tables
Version: 0.0.1
Archive: bazel-bin/path/to/foo/our_tables-0.0.1-py3-none-any.whl
Length Method Size Cmpr Date Time CRC-32 Name
-------- ------ ------- ---- ---------- ----- -------- ----
24451 Defl:N 7964 67% 1980-01-01 00:00 2d00cf53 our_tables/foo
5124 Defl:N 1787 65% 1980-01-01 00:00 4846e197 our_tables/foo.py
91 Defl:N 86 6% 1980-01-01 00:00 4f1122ec our_tables-0.0.3.dist-info/WHEEL
9031 Defl:N 3390 63% 1980-01-01 00:00 e00f51c6 our_tables-0.0.3.dist-info/METADATA
698 Defl:N 445 36% 1980-01-01 00:00 8c16618f our_tables-0.0.3.dist-info/RECORD
-------- ------- --- -------
47408 16577 65% 5 files
```
It's that `our_tables/foo` that's strange to me. IMO it should not be included by default.
## 🔥 Exception or Error
N/A
## 🌍 Your Environment
**Operating System:**
gLinux
**Output of `bazel version`:**
```
$ bazel version
Bazelisk version: v1.20.0
Build label: 7.6.1
Build target: @@//src/main/java/com/google/devtools/build/lib/bazel:BazelServer
Build time: Mon Mar 31 17:08:56 2025 (1743440936)
Build timestamp: 1743440936
Build timestamp as int: 1743440936
```
**Rules_python version:**
```
1.4.1
```
**Anything else relevant?**
贡献指南
调研方向
首先使用 `py_binary` 和 `py_wheel` 运行最小 Bazel 重现,然后检查为二进制文件及其源代码生成的 wheel 列表。阅读 `py_wheel` 的依赖处理逻辑,并将观察到的行为与预期语义进行比较;当约定的行为已通过回归测试或文档化选项加以记录时,即视为完成。
由索引模型根据 Issue 内容生成。
评估
- 技术栈
- python
- 领域
- build-system
- Issue 类型
- 缺陷
- 难度
- 3/5
- 预计耗时
- 1-2 天
- 活跃度
- 停滞
- 描述清晰度
- 基本清楚
- 新手友好度
- 45/100