diff --git a/crates/uv-resolver/src/lock/mod.rs b/crates/uv-resolver/src/lock/mod.rs index 540a597a6..577a047c7 100644 --- a/crates/uv-resolver/src/lock/mod.rs +++ b/crates/uv-resolver/src/lock/mod.rs @@ -974,7 +974,6 @@ impl Lock { overrides: &[Requirement], dependency_metadata: &DependencyMetadata, indexes: Option<&IndexLocations>, - build_options: &BuildOptions, tags: &Tags, hasher: &HashStrategy, index: &InMemoryIndex, @@ -1183,8 +1182,13 @@ impl Lock { // Get the metadata for the distribution. let dist = package.to_dist( workspace.install_path(), + // When validating, it's okay to use wheels that don't match the current platform. TagPolicy::Preferred(tags), - build_options, + // When validating, it's okay to use (e.g.) a source distribution with `--no-build`. + // We're just trying to determine whether the lockfile is up-to-date. If we end + // up needing to build a source distribution in order to do so, below, we'll error + // there. + &BuildOptions::default(), )?; // Fetch the metadata for the distribution. diff --git a/crates/uv/src/commands/project/lock.rs b/crates/uv/src/commands/project/lock.rs index f7ad9b990..9e141d3df 100644 --- a/crates/uv/src/commands/project/lock.rs +++ b/crates/uv/src/commands/project/lock.rs @@ -11,8 +11,7 @@ use tracing::debug; use uv_cache::Cache; use uv_client::{Connectivity, FlatIndexClient, RegistryClientBuilder}; use uv_configuration::{ - BuildOptions, Concurrency, Constraints, ExtrasSpecification, LowerBound, Reinstall, - TrustedHost, Upgrade, + Concurrency, Constraints, ExtrasSpecification, LowerBound, Reinstall, TrustedHost, Upgrade, }; use uv_dispatch::BuildDispatch; use uv_distribution::DistributionDatabase; @@ -531,7 +530,6 @@ async fn do_lock( interpreter, &requires_python, index_locations, - build_options, upgrade, &options, &hasher, @@ -714,7 +712,6 @@ impl ValidatedLock { interpreter: &Interpreter, requires_python: &RequiresPython, index_locations: &IndexLocations, - build_options: &BuildOptions, upgrade: &Upgrade, options: &Options, hasher: &HashStrategy, @@ -841,7 +838,6 @@ impl ValidatedLock { overrides, dependency_metadata, indexes, - build_options, interpreter.tags()?, hasher, index, diff --git a/crates/uv/tests/it/sync.rs b/crates/uv/tests/it/sync.rs index 86d038722..f95f9d4d1 100644 --- a/crates/uv/tests/it/sync.rs +++ b/crates/uv/tests/it/sync.rs @@ -1997,20 +1997,18 @@ fn no_install_project_no_build() -> Result<()> { ----- stdout ----- ----- stderr ----- - warning: Failed to validate existing lockfile: Distribution `project==0.1.0 @ editable+.` can't be installed because it is marked as `--no-build` but has no binary distribution Resolved 4 packages in [TIME] error: Distribution `project==0.1.0 @ editable+.` can't be installed because it is marked as `--no-build` but has no binary distribution "###); // But it's fine to combine `--no-install-project` with `--no-build`. We shouldn't error, since // we aren't building the project. - uv_snapshot!(context.filters(), context.sync().arg("--no-install-project").arg("--no-build"), @r###" + uv_snapshot!(context.filters(), context.sync().arg("--no-install-project").arg("--no-build").arg("--locked"), @r###" success: true exit_code: 0 ----- stdout ----- ----- stderr ----- - warning: Failed to validate existing lockfile: Distribution `project==0.1.0 @ editable+.` can't be installed because it is marked as `--no-build` but has no binary distribution Resolved 4 packages in [TIME] Prepared 3 packages in [TIME] Installed 3 packages in [TIME]