scipopt / SCIP.jl

Julia interface to SCIP solver
MIT License
95 stars 24 forks source link

SCIP still recommends installing binaries on MacOS #214

Closed NLaws closed 2 years ago

NLaws commented 2 years ago

I have tried add SCIP#master on two different MacBooks, both with the latest OS and one with the M1 chips with no success.

Here is what I see:

nlaws-> julia
               _
   _       _ _(_)_     |  Documentation: https://docs.julialang.org
  (_)     | (_) (_)    |
   _ _   _| |_  __ _   |  Type "?" for help, "]?" for Pkg help.
  | | | | | | |/ _` |  |
  | | |_| | | | (_| |  |  Version 1.6.4 (2021-11-19)
 _/ |\__'_|_|_|\__'_|  |  Official https://julialang.org/ release
|__/                   |

(@v1.6) pkg> add SCIP#master
    Updating git-repo `https://github.com/scipopt/SCIP.jl.git`
    Updating registry at `~/.julia/registries/General`
   Resolving package versions...
  No Changes to `~/.julia/environments/v1.6/Project.toml`
  No Changes to `~/.julia/environments/v1.6/Manifest.toml`

julia> using SCIP
[ Info: Precompiling SCIP [82193955-e24f-5292-bf16-6f2c5261a85f]
ERROR: LoadError: LoadError: SCIP was not built properly, please run Pkg.build("SCIP")
Stacktrace:
  [1] error(s::String)
    @ Base ./error.jl:33
  [2] top-level scope
    @ ~/.julia/packages/SCIP/UDu6p/src/init.jl:7
  [3] include(mod::Module, _path::String)
    @ Base ./Base.jl:384
  [4] include(x::String)
    @ SCIP ~/.julia/packages/SCIP/UDu6p/src/SCIP.jl:1
  [5] top-level scope
    @ ~/.julia/packages/SCIP/UDu6p/src/SCIP.jl:7
  [6] include
    @ ./Base.jl:384 [inlined]
  [7] include_package_for_output(pkg::Base.PkgId, input::String, depot_path::Vector{String}, dl_load_path::Vector{String}, load_path::Vector{String}, concrete_deps::Vector{Pair{Base.PkgId, UInt64}}, source::Nothing)
    @ Base ./loading.jl:1235
  [8] top-level scope
    @ none:1
  [9] eval
    @ ./boot.jl:360 [inlined]
 [10] eval(x::Expr)
    @ Base.MainInclude ./client.jl:446
 [11] top-level scope
    @ none:1
in expression starting at /Users/nlaws/.julia/packages/SCIP/UDu6p/src/init.jl:3
in expression starting at /Users/nlaws/.julia/packages/SCIP/UDu6p/src/SCIP.jl:1
ERROR: Failed to precompile SCIP [82193955-e24f-5292-bf16-6f2c5261a85f] to /Users/nlaws/.julia/compiled/v1.6/SCIP/jl_pqSqqz.
Stacktrace:
 [1] error(s::String)
   @ Base ./error.jl:33
 [2] compilecache(pkg::Base.PkgId, path::String, internal_stderr::Base.TTY, internal_stdout::Base.TTY, ignore_loaded_modules::Bool)
   @ Base ./loading.jl:1385
 [3] compilecache(pkg::Base.PkgId, path::String)
   @ Base ./loading.jl:1329
 [4] _require(pkg::Base.PkgId)
   @ Base ./loading.jl:1043
 [5] require(uuidkey::Base.PkgId)
   @ Base ./loading.jl:936
 [6] require(into::Module, mod::Symbol)
   @ Base ./loading.jl:923

(@v1.6) pkg> build SCIP
    Building SCIP → `~/.julia/scratchspaces/44cfe95a-1eb2-52ea-b672-e2afdf69b78f/7e720366c240ee8b29dc52b11c2dffbd4a2c389f/build.log`
ERROR: Error building `SCIP`: 
ERROR: LoadError: Unable to locate SCIP installation. Tried:

/Users/nlaws/bin/libscip.dylib: could not load library "/Users/nlaws/bin/libscip.dylib"
dlopen(/Users/nlaws/bin/libscip.dylib, 1): image not found

/Users/nlaws/lib/libscip.dylib: could not load library "/Users/nlaws/lib/libscip.dylib"
dlopen(/Users/nlaws/lib/libscip.dylib, 1): image not found

libscip.dylib: could not load library "libscip.dylib"
dlopen(libscip.dylib, 1): image not found

Note that this must be downloaded separately from scip.zib.de.
Please set the environment variable SCIPOPTDIR to SCIP's installation path.

Stacktrace:
 [1] error(s::String)
   @ Base ./error.jl:33
 [2] top-level scope
   @ ~/.julia/packages/SCIP/UDu6p/deps/build.jl:56
 [3] include(fname::String)
   @ Base.MainInclude ./client.jl:444
 [4] top-level scope
   @ none:5
in expression starting at /Users/nlaws/.julia/packages/SCIP/UDu6p/deps/build.jl:55
rschwarz commented 2 years ago

To be sure, do you have set the ENV variable SCIPOPTDIR to something?

The user can set this variable in order to use their own library and not use SCIP_jll, see build.jl.

NLaws commented 2 years ago

Yes good catch! The solution for Mac is

unset SCIPOPTDIR