Skip to content

Commit b49a77f

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

File tree

4 files changed

+23
-11
lines changed

4 files changed

+23
-11
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+
"was able to add the versions of $(joined) that are already loaded"
907907
else
908-
"Preferring the version of $(joined) that is already loaded"
908+
"was able to add the version of $(joined) that is already loaded"
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/new.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3935,7 +3935,7 @@ end
39353935
Pkg.activate(; temp = true)
39363936
Pkg.add("Example", io = io) # v0.5.5 exists, but v0.5.4 is loaded
39373937
add_output = String(take!(io))
3938-
@test occursin("Preferring the version of Example that is already loaded", add_output)
3938+
@test occursin("was able to add the version of Example that is already loaded", add_output)
39393939
@test occursin("[7876af07] + Example v0.5.4", add_output)
39403940
"""
39413941
cmd = addenv(

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)