Skip to content

Commit ad1efce

Browse files
committed
Respect build tag priority in uv.lock
1 parent dc82a84 commit ad1efce

File tree

2 files changed

+24
-9
lines changed

2 files changed

+24
-9
lines changed

crates/uv-resolver/src/lock/mod.rs

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,9 @@ use crate::{
2727
use uv_cache_key::RepositoryUrl;
2828
use uv_configuration::BuildOptions;
2929
use uv_distribution::DistributionDatabase;
30-
use uv_distribution_filename::{DistExtension, ExtensionError, SourceDistExtension, WheelFilename};
30+
use uv_distribution_filename::{
31+
BuildTag, DistExtension, ExtensionError, SourceDistExtension, WheelFilename,
32+
};
3133
use uv_distribution_types::{
3234
BuiltDist, DependencyMetadata, DirectUrlBuiltDist, DirectUrlSourceDist, DirectorySourceDist,
3335
Dist, DistributionMetadata, FileLocation, GitSourceDist, IndexLocations, IndexUrl, Name,
@@ -1679,6 +1681,10 @@ impl Package {
16791681
best_wheel_index,
16801682
sdist: None,
16811683
};
1684+
println!(
1685+
"reg_built_dist: {:?}",
1686+
reg_built_dist.wheels[reg_built_dist.best_wheel_index]
1687+
);
16821688
Ok(Dist::Built(BuiltDist::Registry(reg_built_dist)))
16831689
}
16841690
Source::Path(path) => {
@@ -2094,13 +2100,17 @@ impl Package {
20942100
}
20952101

20962102
fn find_best_wheel(&self, tag_policy: TagPolicy<'_>) -> Option<usize> {
2097-
let mut best: Option<(TagPriority, usize)> = None;
2103+
type WheelPriority<'lock> = (TagPriority, Option<&'lock BuildTag>);
2104+
2105+
let mut best: Option<(WheelPriority, usize)> = None;
20982106
for (i, wheel) in self.wheels.iter().enumerate() {
2099-
let TagCompatibility::Compatible(priority) =
2107+
let TagCompatibility::Compatible(tag_priority) =
21002108
wheel.filename.compatibility(tag_policy.tags())
21012109
else {
21022110
continue;
21032111
};
2112+
let build_tag = wheel.filename.build_tag.as_ref();
2113+
let priority = (tag_priority, build_tag);
21042114
match best {
21052115
None => {
21062116
best = Some((priority, i));

crates/uv/src/commands/project/sync.rs

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@ use uv_cache::Cache;
1010
use uv_client::{Connectivity, FlatIndexClient, RegistryClientBuilder};
1111
use uv_configuration::{
1212
Concurrency, Constraints, DevGroupsManifest, DevGroupsSpecification, EditableMode,
13-
ExtrasSpecification, HashCheckingMode, InstallOptions, LowerBound, PreviewMode, TrustedHost,
13+
ExtrasSpecification, HashCheckingMode, InstallOptions, LowerBound, PreviewMode, TargetTriple,
14+
TrustedHost,
1415
};
1516
use uv_dispatch::{BuildDispatch, SharedState};
1617
use uv_distribution_types::{
@@ -31,8 +32,8 @@ use uv_workspace::pyproject::{DependencyGroupSpecifier, Source, Sources, ToolUvS
3132
use uv_workspace::{DiscoveryOptions, MemberDiscovery, VirtualProject, Workspace};
3233

3334
use crate::commands::pip::loggers::{DefaultInstallLogger, DefaultResolveLogger, InstallLogger};
34-
use crate::commands::pip::operations;
3535
use crate::commands::pip::operations::Modifications;
36+
use crate::commands::pip::{operations, resolution_tags};
3637
use crate::commands::project::lock::{do_safe_lock, LockMode};
3738
use crate::commands::project::{
3839
default_dependency_groups, detect_conflicts, DependencyGroupsTarget, ProjectError,
@@ -341,12 +342,16 @@ pub(super) async fn do_sync(
341342
}
342343

343344
// Determine the tags to use for resolution.
344-
let tags = venv.interpreter().tags()?;
345+
let tags = resolution_tags(
346+
None,
347+
Some(&TargetTriple::X8664Manylinux231),
348+
venv.interpreter(),
349+
)?;
345350

346351
// Read the lockfile.
347352
let resolution = target.to_resolution(
348353
&marker_env,
349-
tags,
354+
&tags,
350355
extras,
351356
dev,
352357
build_options,
@@ -406,7 +411,7 @@ pub(super) async fn do_sync(
406411
let entries = client
407412
.fetch(index_locations.flat_indexes().map(Index::url))
408413
.await?;
409-
FlatIndex::from_entries(entries, Some(tags), &hasher, build_options)
414+
FlatIndex::from_entries(entries, Some(&tags), &hasher, build_options)
410415
};
411416

412417
// Create a build dispatch.
@@ -446,7 +451,7 @@ pub(super) async fn do_sync(
446451
index_locations,
447452
config_setting,
448453
&hasher,
449-
tags,
454+
&tags,
450455
&client,
451456
state.in_flight(),
452457
concurrency,

0 commit comments

Comments
 (0)