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分
- マージ済み PR(30日)
- 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