fix(tower-uv): use copy link mode when no cache dir is set#318
Merged
Conversation
When no explicit cache dir is configured, uv uses its default cache (~/.cache/uv). In containerized or sandboxed execution that default often lives on a different filesystem than the target venv, so uv can't hardlink across the two (EXDEV) and prints a noisy "Failed to hardlink files; falling back to full copy" warning into the setup logs. Force UV_LINK_MODE=copy on the sync/pip/run commands in that case so the warning is suppressed (uv was already falling back to copy anyway). Callers that pass an explicit cache dir on the same filesystem as the venv are unaffected and keep fast hardlink/clone.
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
socksy
approved these changes
Jul 6, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
When a Python app is set up,
uvoccasionally prints this warning into the setup logs:Root cause
When
tower_uv::Uvis constructed without an explicit cache dir,uvuses its default cache (~/.cache/uv). In sandboxed execution the default cache and the target virtualenv frequently live on different filesystems, souvcan't hardlink across them and falls back to copying, emitting the warning. It looks intermittent because it only surfaces on runs whose app actually has dependencies to materialize into the venv.The copy fallback was already happening; the warning is just noise.