-
-
Notifications
You must be signed in to change notification settings - Fork 216
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Autocompat #2382
Autocompat #2382
Conversation
Using: ```julia function autocompat(ctx=Pkg.Types.Context(); io=nothing) io = something(io, ctx.io) updated_deps = String[] for dep_list in (ctx.env.project.deps, ctx.env.project.weakdeps, ctx.env.project.extras), (dep, uuid) in dep_list compat_str = Pkg.Operations.get_compat_str(ctx.env.project, dep) isnothing(compat_str) || continue if uuid in ctx.env.manifest v = ctx.env.manifest[uuid].version v === nothing && (v = "<0.0.1, 1") else try pkg_versions = Pkg.Versions.VersionSpec([Pkg.Operations.get_all_registered_versions( ctx, uuid)...]) if isempty(pkg_versions) @warn "No versions of $(dep) are registered. Possibly a Standard Library package." v = "<0.0.1, 1" else latest_version = Pkg.Operations.get_latest_compatible_version( ctx, uuid, pkg_versions) v = latest_version end catch err @error "Encountered Error $(err) while processing $(dep). Skipping." continue end end Pkg.Operations.set_compat(ctx.env.project, dep, string(v)) || Pkg.Types.pkgerror("invalid compat version specifier \"$(string(v))\"") push!(updated_deps, dep) end if isempty(updated_deps) Pkg.printpkgstyle(io, :Info, "no misssing compat entries found. No changes made."; color=Base.info_color()) elseif length(updated_deps) == 1 Pkg.printpkgstyle(io, :Info, "new entry set for $(only(updated_deps)) based on its current version"; color=Base.info_color()) else Pkg.printpkgstyle(io, :Info, "new entries set for $(join(updated_deps, ", ", " and ")) based on their current versions"; color=Base.info_color()) end Pkg.Types.write_env(ctx.env) return Pkg.Operations.print_compat(ctx; io) end for x in readdir("/Users/chrisrackauckas/.julia/dev/OrdinaryDiffEq/lib") Pkg.activate("/Users/chrisrackauckas/.julia/dev/OrdinaryDiffEq/lib/$x") autocompat() end ```
This would have been much easier if JuliaLang/Pkg.jl#3266 existed! |
OrdinaryDiffEqCore = "<0.0.1, 1" | ||
OrdinaryDiffEqDifferentiation = "<0.0.1, 1" | ||
OrdinaryDiffEqSDIRK = "<0.0.1, 1" | ||
OrdinaryDiffEqTsit5 = "<0.0.1, 1" | ||
OrdinaryDiffEqVerner = "<0.0.1, 1" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Forgot to mention this on slack, for packages without a registered version it assumes stdlib and puts this in compat
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That compat actually works fine though since the first version for everything is 1.0.
Using: