bazel-contrib / bazel-contrib/rules_python
`compile_pip_requirements` fails because setuptools contains file with spaces in name
- Lenguaje dominante
- Starlark
- Estrellas
- 688
- Forks
- 721
- Merge medio
- 15 h 7 min
- PR fusionados (30 d)
- 76
Descripción
# 🐞 bug report
### Affected Rule
`compile_pip_requirements` when ran with `bazel run //:requirements.update`
### Is this a regression?
Not sure. Similar issue is #4605.
### Description
My BUILD file contains the following -
```
load("@rules_python//python:pip.bzl", "compile_pip_requirements")
compile_pip_requirements(
name = "requirements",
src = "requirements.in",
requirements_txt = "requirements_lock.txt",
)
```
The issue seems to be that the file "pypi__setuptools/setuptools/_vendor/jaraco/text/Lorem ipsum.txt" used by setuptools has a space in the name and Bazel won't accept that.
I am using `USE_BAZEL_VERSION=7.3.2`. With MODULE having -
```
bazel_dep(name = "rules_python", version = "1.8.5")
python = use_extension("@rules_python//python/extensions:python.bzl", "python")
python.toolchain(
python_version = "3.13",
)
```
## 🔬 Minimal Reproduction
`bazel run //:requirements.update`
## 🔥 Exception or Error
BUILD.bazel:31:25: Creating runfiles tree bazel-out/k8-fastbuild/bin/requirements.update.runfiles failed: build-runfiles failed: error executing command
(cd /home/rishin/.cache/bazel/_bazel_rishin/a5698ab7503342d8072bd8e495f01f91/execroot/_main && \
exec env - \
PATH=/home/rishin/.cache/bazelisk/downloads/sha256/96e9c34caf77b25a2fe1f0699cb85d23226a7a9f563ac156f0ed2033402b080b/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/snap/bin \
/home/rishin/.cache/bazel/_bazel_rishin/install/aeea4605fbb10c56d04772b8e314db75/build-runfiles --allow_relative bazel-out/k8-fastbuild/bin/requirements.update.runfiles_manifest bazel-out/k8-fastbuild/bin/requirements.update.runfiles): Process exited with status 1: Process exited with status 1
/home/rishin/.cache/bazel/_bazel_rishin/install/aeea4605fbb10c56d04772b8e314db75/build-runfiles (args bazel-out/k8-fastbuild/bin/requirements.update.runfiles_manifest bazel-out/k8-fastbuild/bin/requirements.update.runfiles): link or target filename contains space on line 937: '_main/external/rules_python~~config~pypi__setuptools/setuptools/_vendor/jaraco/text/Lorem ipsum.txt /home/rishin/.cache/bazel/_bazel_rishin/a5698ab7503342d8072bd8e495f01f91/external/rules_python~~config~pypi__setuptools/setuptools/_vendor/jaraco/text/Lorem ipsum.txt'
Target //:requirements.update failed to build
## 🌍 Your Environment
**Operating System:** 11.8.5
**Output of `bazel version`:**
Bazelisk version: v1.27.0
Starting local Bazel server and connecting to it...
Build label: 7.3.2
Build target: @@//src/main/java/com/google/devtools/build/lib/bazel:BazelServer
Build time: Tue Oct 1 17:46:05 2024 (1727804765)
Build timestamp: 1727804765
Build timestamp as int: 1727804765
**Rules_python version:** 1.8.5
Guía de contribución
Línea de trabajo
Comienza reproduciendo `bazel run //:requirements.update` con la configuración mostrada de `compile_pip_requirements` e inspecciona cómo la regla gestiona la ruta de setuptools `Lorem ipsum.txt`. Comprueba el manifiesto de runfiles generado y los puntos de entrada relacionados de la regla. Se considera terminado cuando el destino de actualización de requirements se compila correctamente cuando una dependencia contiene un nombre de archivo con espacios.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- python
- Área
- build-system
- Tipo de issue
- Error
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Estado de actividad
- Tranquilo
- Claridad
- Bastante claro
- Aptitud para principiantes
- 48/100