bazel-contrib / bazel-contrib/rules_python
Emit RunfilesGroupInfo in py_binary targets
- Lingua principale
- Starlark
- Stelle
- 688
- Fork
- 721
- Merge medio
- 15h 7m
- PR unite (30g)
- 76
Descrizione
# 🚀 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.
Guida per i contributori
Apri la guida per i contributori
Direzione di ricerca
Inizia leggendo le implementazioni delle regole py_library e py_binary e la semantica dei provider nel modulo Bazel rules_runfiles_group collegato. Definisci come vengono inoltrate e aggregate le dipendenze, quindi verifica che py_binary emetta gruppi per l’interprete e la libreria standard, oltre che per le dipendenze di terze parti, con test che coprano i provider e i metadati richiesti.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- python
- Ambito
- build-system
- Tipo di issue
- Funzionalità
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Stato di attività
- Attiva
- Chiarezza
- Abbastanza chiara
- Idoneità per principianti
- 48/100