Gurobi.jl precompile fails after upgrade

Hi!

My worst fear got realized when I upgraded my Julia installation to the newest version:

julia> versioninfo()
Julia Version 0.6.0-dev.1562
Commit 3037157 (2016-12-14 07:11 UTC)
Platform Info:
  OS: Linux (x86_64-linux-gnu)
  CPU: Intel(R) Core(TM) i5-4440 CPU @ 3.10GHz
  WORD_SIZE: 64
  BLAS: libopenblas (USE64BITINT DYNAMIC_ARCH NO_AFFINITY Haswell)
  LAPACK: libopenblas64_
  LIBM: libopenlibm
  LLVM: libLLVM-3.7.1 (ORCJIT, haswell)

I then tried to test that the packages I use the most frequently are working: JuMP with Gurobi.jl.
I tried loading Gurobi but I get a precompilation error:

julia> using Gurobi
INFO: Precompiling module Gurobi.
ERROR: LoadError: LoadError: UndefVarError: _major not defined
 in getlibversion() at /home/jesse/.julia/v0.6/Gurobi/src/grb_common.jl:49
 in include_from_node1(::String) at ./loading.jl:532
 in include(::String) at ./sysimg.jl:14
 in include_from_node1(::String) at ./loading.jl:532
 in include(::String) at ./sysimg.jl:14
 in anonymous at ./<missing>:2
 in eval(::Module, ::Any) at ./boot.jl:236
 in process_options(::Base.JLOptions) at ./client.jl:248
 in _start() at ./client.jl:335
while loading /home/jesse/.julia/v0.6/Gurobi/src/grb_common.jl, in expression starting on line 67
while loading /home/jesse/.julia/v0.6/Gurobi/src/Gurobi.jl, in expression starting on line 63
ERROR: Failed to precompile Gurobi to /home/jesse/.julia/lib/v0.6/Gurobi.ji.
 in compilecache(::String) at ./loading.jl:672
 in require(::Symbol) at ./loading.jl:453

Using Gurobi 7.0.1. Is there anything I can do? Seems like a variable _major is not defined in the code. JuMP works fine, althought while loading it gives me warning that WARNING: Base.take is deprecated.

0.6 is not yet ready for non-broken use, in particular with packages.

2 Likes

Well thanks for the quick response, I’ll revert to 0.5.

We’d definitely accept PRs to fix compatibility with 0.6-dev, but while things are still changing and breaking, tracking master is not a high priority for us.

-Joey

If package breaking when upgrading to the latest master branch of an open source project is your “worst fear”, I envy your calm life :slight_smile:

This isn’t the first time this has come up. With many new users I’ve tracked down issues to being due to them using v0.6 since they want to try out the latest features. Maybe the downloads page Download Julia should be more explicit. It currently says:

However, because Julia is under heavy development, you may be unlucky and get a build with a serious bug, or one which breaks existing packages.

But maybe it should go a little further, something along the lines of:

However, because Julia is under heavy development, you may be unlucky and get a build with a serious bug. Also, many packages are not compatible with this unreleased version, and thus this version is only advised for developers looking to update packages before release.

?

I think “you may be unlucky” is too weak. It’s more like “things will definitely be broken, especially packages, and no-one will be interested in fixing them until such and such a date, so please don’t even bother trying to use it”. (Not the suggested words for the website!)

3 Likes

Maybe it should say something like “the nightly builds are for developer previews and not intended for normal use. You can expect many packages to not work with this version.” ?

1 Like

That’s pretty good. “to not” → “not to”?

I put in a PR with this last change included:

https://github.com/JuliaLang/julialang.github.com/pull/472

I admit I was being overly dramatic :smirk: The truth is that I forgot to checkout my local repository to 0.5 before building.