Skip to content

Commit 0a842b3

Browse files
fix: make it a preference, not a fix
1 parent fa08cde commit 0a842b3

File tree

3 files changed

+22
-10
lines changed

3 files changed

+22
-10
lines changed

src/Operations.jl

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -903,9 +903,9 @@ function maybe_print_preferred_loaded_note(io::IO, direct_names::Vector{String},
903903
end
904904
joined = length(parts) == 2 ? string(parts[1], " and ", parts[2]) : parts[1]
905905
msg = if length(direct_names) + indirect_count > 1
906-
"Preferring versions of $(joined) that are already loaded"
906+
"The versions of $(joined) that are already loaded have been added"
907907
else
908-
"Preferring the version of $(joined) that is already loaded"
908+
"The version of $(joined) that is already loaded has been added"
909909
end
910910
printpkgstyle(io, :Resolve, msg; color = Base.info_color())
911911
return
@@ -2155,34 +2155,43 @@ function tiered_resolve(
21552155
env::EnvCache, registries::Vector{Registry.RegistryInstance}, pkgs::Vector{PackageSpec}, julia_version,
21562156
try_all_installed::Bool; preferred_versions::Dict{UUID, VersionNumber} = Dict{UUID, VersionNumber}()
21572157
)
2158+
if !isempty(preferred_versions)
2159+
# first try maintaining any loaded versions of the new packages
2160+
try # do not modify existing subgraph
2161+
@debug "tiered_resolve: trying PRESERVE_ALL with any loaded versions of new packages"
2162+
return targeted_resolve(env, registries, pkgs, PRESERVE_ALL, julia_version; preferred_versions)
2163+
catch err
2164+
err isa Resolve.ResolverError || rethrow()
2165+
end
2166+
end
21582167
if try_all_installed
21592168
try # do not modify existing subgraph and only add installed versions of the new packages
21602169
@debug "tiered_resolve: trying PRESERVE_ALL_INSTALLED"
2161-
return targeted_resolve(env, registries, pkgs, PRESERVE_ALL_INSTALLED, julia_version; preferred_versions)
2170+
return targeted_resolve(env, registries, pkgs, PRESERVE_ALL_INSTALLED, julia_version)
21622171
catch err
21632172
err isa Resolve.ResolverError || rethrow()
21642173
end
21652174
end
21662175
try # do not modify existing subgraph
21672176
@debug "tiered_resolve: trying PRESERVE_ALL"
2168-
return targeted_resolve(env, registries, pkgs, PRESERVE_ALL, julia_version; preferred_versions)
2177+
return targeted_resolve(env, registries, pkgs, PRESERVE_ALL, julia_version)
21692178
catch err
21702179
err isa Resolve.ResolverError || rethrow()
21712180
end
21722181
try # do not modify existing direct deps
21732182
@debug "tiered_resolve: trying PRESERVE_DIRECT"
2174-
return targeted_resolve(env, registries, pkgs, PRESERVE_DIRECT, julia_version; preferred_versions)
2183+
return targeted_resolve(env, registries, pkgs, PRESERVE_DIRECT, julia_version)
21752184
catch err
21762185
err isa Resolve.ResolverError || rethrow()
21772186
end
21782187
try
21792188
@debug "tiered_resolve: trying PRESERVE_SEMVER"
2180-
return targeted_resolve(env, registries, pkgs, PRESERVE_SEMVER, julia_version; preferred_versions)
2189+
return targeted_resolve(env, registries, pkgs, PRESERVE_SEMVER, julia_version)
21812190
catch err
21822191
err isa Resolve.ResolverError || rethrow()
21832192
end
21842193
@debug "tiered_resolve: trying PRESERVE_NONE"
2185-
return targeted_resolve(env, registries, pkgs, PRESERVE_NONE, julia_version; preferred_versions)
2194+
return targeted_resolve(env, registries, pkgs, PRESERVE_NONE, julia_version)
21862195
end
21872196

21882197
function targeted_resolve(

src/Resolve/maxsum.jl

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
# This file is a part of Julia. License is MIT: https://julialang.org/license
22

33
const DEFAULT_MAX_TIME = "300"
4-
const PREFERRED_VERSION_WEIGHT_BONUS = VersionWeight(typemax(Int32))
4+
# Prefer loaded versions, but not so strongly that it overrides compatibility constraints.
5+
# This bonus is added to the version weight of already-loaded packages, making them more
6+
# favorable than other versions but not creating hard requirements.
7+
const PREFERRED_VERSION_WEIGHT_BONUS = VersionWeight(100, 0, 0)
58

69
# Some parameters to drive the decimation process
710
mutable struct MaxSumParams

test/registry.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -431,13 +431,13 @@ end
431431
# Tests that [email protected] does not get installed
432432
temp_pkg_dir() do env
433433
Pkg.Registry.add(url = "https://github.com/JuliaRegistries/Test")
434-
Pkg.add("Example"; prefer_loaded_versions = false)
434+
Pkg.add("Example")
435435
@test manifest_info(EnvCache().manifest, uuid).version == v"0.5.0"
436436
Pkg.update() # should not update Example
437437
@test manifest_info(EnvCache().manifest, uuid).version == v"0.5.0"
438438
@test_throws Pkg.Resolve.ResolverError Pkg.add(PackageSpec(name = "Example", version = v"0.5.1"))
439439
Pkg.rm("Example")
440-
Pkg.add("JSON"; prefer_loaded_versions = false) # depends on Example
440+
Pkg.add("JSON") # depends on Example
441441
@test manifest_info(EnvCache().manifest, uuid).version == v"0.5.0"
442442
Pkg.update()
443443
@test manifest_info(EnvCache().manifest, uuid).version == v"0.5.0"

0 commit comments

Comments
 (0)