[ANN] Introducing Upgradathon Fridays

You need master GitHub.jl for Checks I believe.

1 Like

FemtoCleaner is working for me. I confirm I am on master GitHub, which is tagged v4.1.0

I tried to upgrade Ipopt.jl . Femtocleaner did not find anything.
Warning when using Ipopt:

julia> @time using Ipopt
WARNING: importing deprecated binding Base.Libdl into Sys.
WARNING: Base.Libdl is deprecated, run `using Libdl` instead
 in module Ipopt
in __init__ at /home/ufechner/.julia/packages/Ipopt/udV2/src/Ipopt.jl
┌ Warning: `contains(haystack, needle)` is deprecated, use `occursin(needle, haystack)` instead.
│   caller = (::getfield(Ipopt, Symbol("##1#2")))(::String) at Ipopt.jl:26
└ @ Ipopt Ipopt.jl:26
  1.425591 seconds (2.26 M allocations: 118.443 MiB, 4.80% gc time) 

The last warning was easy to fix. But how can I fix the first two warnings regarding Base.Libdl? I did not find where this depreciated code is used. It does not seam to happen in Ipopt.jl, but in some dependency.
Any idea?

Pkg3 question: if I want to keep up with the new package developments generally, do I have to

pkg> activate . 
pkg> up

separately in each package/project I am working on? My understanding is that unless I do this, the manifest in each project just remains fixed.

In contrast to v0.6, where the package state was global and a single Pkg.update() would update everything. Note that I am not complaining, I think the new way makes more sense, just asking a clarifying question.

No the package manifests are ignored on the global level AFAICT, so up in the top level environment is enough.

I found Base.Libdl in Ipopt.jl and replaced it with Libdl.

In addition I added at the top:

if VERSION >= v"0.7.0-DEV.3382"
    using Libdl
end

Is it suggested to use such an if statement?

Sure, or you can include using Compat.Libdl, which should work on both 0.6 and 0.7.

1 Like

Thanks!
I started to fix the depreciations in the tests of Ipopt, but I realized that most of the depreciations appear in MathProgBase.jl, which is used by Ipopt. Unfortunately the tests of MathProgBase.jl fail, and fixing them is beyond my skills.
Have a look:
https://github.com/JuliaOpt/MathProgBase.jl/issues/213
Any hints welcome!

1 Like

Is there a standardized way of telling where a given package is in this upgrade process? For example, Trying to use Distributions.jl led me to problems with Arpack.jl, which were quickly fixed. Distributions still isn’t working. There a a few commits mentioning v0.7, but strangely there’s not a single issue mentioning it. Still, I can’t imagine I’m the only one trying to use it with 0.7 - is that possible?

I’m happy to learn the upgrade process and try to do a couple. But the uncertainty makes it really hard to judge what the road ahead looks like before I can get started on my own project. Any suggestions?

Just create an issue “Update Distributions.jl for Julia 0.7” and discuss the needed work with collaborators. :sunny:

1 Like

Fair enough, maybe others are wondering the same as me. Thanks :slight_smile:

1 Like

I was able to install FemtoCleaner as instructed (had to run Pkg.update() a few times). Now, when running the FemtoCleaner, I get an error:

julia> import FemtoCleaner

julia> FemtoCleaner.cleanrepo("home/tim/.julia/dev/Discretizers"; show_diff=true, delete_local=false)
INFO: Cloning home/tim/.julia/dev/Discretizers to /tmp/tmpArNh0h...
ERROR: GitError(Code:ERROR, Class:Net, Unsupported URL protocol)
Stacktrace:
 [1] macro expansion at ./libgit2/error.jl:99 [inlined]
 [2] clone(::String, ::String, ::Base.LibGit2.CloneOptions) at ./libgit2/repository.jl:276
 [3] #clone#100(::String, ::Bool, ::Ptr{Void}, ::Nullable{Base.LibGit2.AbstractCredentials}, ::Function, ::String, ::String) at ./libgit2/libgit2.jl:562
 [4] #cleanrepo#23(::Bool, ::Bool, ::Function, ::String) at /home/tim/.julia/v0.6/FemtoCleaner/src/FemtoCleaner.jl:301
 [5] (::FemtoCleaner.#kw##cleanrepo)(::Array{Any,1}, ::FemtoCleaner.#cleanrepo, ::String) at ./<missing>:0
fatal: Not a git repository (or any of the parent directories): .git
ERROR: failed process: Process(`git status`, ProcessExited(128)) [128]
Stacktrace:
 [1] pipeline_error(::Base.Process) at ./process.jl:682
 [2] run(::Cmd) at ./process.jl:651
 [3] #24 at /home/tim/.julia/v0.6/FemtoCleaner/src/FemtoCleaner.jl:313 [inlined]
 [4] cd(::FemtoCleaner.##24#25, ::String) at ./file.jl:70
 [5] #cleanrepo#23(::Bool, ::Bool, ::Function, ::String) at /home/tim/.julia/v0.6/FemtoCleaner/src/FemtoCleaner.jl:312
 [6] (::FemtoCleaner.#kw##cleanrepo)(::Array{Any,1}, ::FemtoCleaner.#cleanrepo, ::String) at ./<missing>:0

Any suggestions on how to overcome this?

Try using an absolute path.

1 Like

Thanks, looks like I blindly followed the example code without thinking. Needed a ‘/’ before “home”.