@@ -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)
21862195end
21872196
21882197function targeted_resolve (
0 commit comments