diff --git a/src/Operations.jl b/src/Operations.jl index bc2e8bf750..a83e615a09 100644 --- a/src/Operations.jl +++ b/src/Operations.jl @@ -337,7 +337,17 @@ function resolve_versions!(env::EnvCache, registries::Vector{Registry.RegistryIn for pkg in pkgs names[pkg.uuid] = pkg.name end - reqs = Resolve.Requires(pkg.uuid => VersionSpec(pkg.version) for pkg in pkgs) + + pkgs_to_require = if env.manifest.julia_version.major == VERSION.major && env.manifest.julia_version.minor == VERSION.minor + # if the manifest was previously resolved by the same major-minor julia version, don't require stdlib versions + # to remain the same. This allows manifests that were generated on nightly julia versions, where stdlibs may change version + # to be updated + filter(pkg -> !is_stdlib(pkg.uuid), pkgs) + else + pkgs + end + + reqs = Resolve.Requires(pkg.uuid => VersionSpec(pkg.version) for pkg in pkgs_to_require) graph, compat_map = deps_graph(env, registries, names, reqs, fixed, julia_version) Resolve.simplify_graph!(graph) vers = Resolve.resolve(graph)