From ea5ebe59af475c4199a4f7431fcabfc6c052d797 Mon Sep 17 00:00:00 2001 From: Charlie Marsh Date: Wed, 28 Feb 2024 11:03:02 -0500 Subject: [PATCH] Use a non-local lock file for locking system interpreters (#2045) --- crates/uv-interpreter/src/python_environment.rs | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/crates/uv-interpreter/src/python_environment.rs b/crates/uv-interpreter/src/python_environment.rs index 559ebce44..36c9545d5 100644 --- a/crates/uv-interpreter/src/python_environment.rs +++ b/crates/uv-interpreter/src/python_environment.rs @@ -107,7 +107,16 @@ impl PythonEnvironment { /// Lock the virtual environment to prevent concurrent writes. pub fn lock(&self) -> Result { - LockedFile::acquire(self.root.join(".lock"), self.root.normalized_display()) + if self.interpreter.is_virtualenv() { + // If the environment a virtualenv, use a virtualenv-specific lock file. + LockedFile::acquire(self.root.join(".lock"), self.root.normalized_display()) + } else { + // Otherwise, use a global lock file. + LockedFile::acquire( + env::temp_dir().join(format!("uv-{}.lock", cache_key::digest(&self.root))), + self.root.normalized_display(), + ) + } } }