uv: lock() .run target for uv.lock omits existing lock and writes to runfiles
Mantenedores costumam responder em até 1 dia
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 3/5
- Tempo estimado
- 1-2 dias
- Facilidade para iniciantes
- 68/100
- Tipo de issue
- Bug
- Clareza
- Claramente especificada
- Status de atividade
- Ativa
- Stack de tecnologia
- python
- Domínio
- build-system
Direção de pesquisa
Start with _common_lock in python/uv/private/lock.bzl and the uv_lock.sh and uv_lock.bat launchers. Check how the existing lock is added to runfiles and how the launcher handles BUILD_WORKSPACE_DIRECTORY, then reproduce with the provided bazel run command. Done means the existing lock is available to uv and the command updates dev/uv.lock in the source tree.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
Running bazel run <name>.run on a lock() target with a uv.lock output
(e.g. bazel run //dev:uv_lock.run -- --upgrade-package certifi==2026.1.4)
fails to update the workspace lockfile in place due to two bugs:
- Missing existing lock in runfiles:
_common_lockin
python/uv/private/lock.bzlpassesctx.files.existing_outputto the build
action'sinputs, but omits it from_RunLockInfo.runfiles. Becauseuv
runs in.runfiles/_mainwhere nouv.lockis present,uv lock
re-resolves all dependencies from scratch instead of incrementally updating
the existing lock. - Output written to
.runfilesinstead of the source tree: Unlike
uv pip compile(which accepts--output-file),uv lockalways reads and
writesuv.lockin the project directory relative to its working directory.
WhenBUILD_WORKSPACE_DIRECTORYis set,uv_lock.shanduv_lock.bat
executeuvimmediately without linking or copying{{project_lock}}to
${BUILD_WORKSPACE_DIRECTORY}/{{src_out}}. The updated lockfile is written
tobazel-bin/.../*.run.runfiles/_main/.../uv.lock, leaving the source tree
untouched.
Reproduction
#!/usr/bin/env bash
set -euo pipefail
git checkout -- dev/uv.lock
bazel run //dev:uv_lock.run -- --upgrade-package certifi==2026.1.4
changes=$(git diff dev/uv.lock | grep -c '^-version = ' || true)
if [[ "$changes" -eq 1 ]]; then
echo "PASS: dev/uv.lock updated 1 package as expected"
else
echo "FAIL: expected 1 package updated in dev/uv.lock, got $changes"
exit 1
fi
Running this prints:
FAIL: expected 1 package updated in dev/uv.lock, got 0
while bazel-bin/dev/uv_lock.run.runfiles/_main/dev/uv.lock contains a full
re-resolution of 18 packages.
- Linguagem predominante
- Starlark
- Estrelas
- 688
- Forks
- 728
- Merge médio
- 18h
- PRs com merge (30d)
- 118
Preparar o ambiente
- Sem Dockerfile nem arquivo Docker Compose
- Tem um modelo de pull request
- Ler o guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de bazel-contrib/rules_python
-
Broken links in the docsAberta
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 82/100
bazel-contrib/rules_python#4319 ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 68/100
bazel-contrib/rules_python#4251 · 1 reação ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
bazel-contrib/rules_python#4164 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
-
need: repro
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 35/100
bazel-contrib/rules_python#4315 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 45/100
bazel-contrib/rules_python#4311 ·
Mantenedores costumam responder em até 1 dia
Todas as issues de bazel-contrib/rules_python
Issues semelhantes
-
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 88/100
-
agent:Windows bug code-review MEDIUM tooling
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 83/100
mgradwohl/tasksmack#2960 · 2 comentários ·
Mantenedores costumam responder em até 1 dia
-
Area: Instruments Bug Difficulty: Low Priority: Low
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
DouglasNeuroInformatics/OpenDataCapture#1824 ·
Mantenedores costumam responder em até 1 dia
-
package_info fails analysis with --incompatible_stop_exporting_build_file_pathTalvez já em andamento @mkanat assumiu hoje. Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 84/100
bazelbuild/rules_license#184 ·
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 76/100
k2-fsa/sherpa-onnx#4100 ·
Mantenedores costumam responder em até 2 dias