Comments (16)
Just confirming that delete of src and usr for CoinOptServices followed by Pkg.build() fixed the load problem. Back to working status. Thank you for your help and not a problem doing testing, it's my contribution to the effort.
from ipopt.jl.
Great, thanks. So the reason Ipopt.jl rebuilds (the reference) blas is that it needs 32 bit integers (vs the default Julia build on 64 bit machines uses 64 bit integers in its internal copy of openblas), and it actually only uses a fairly small part of blas - libcoinblas only has real double-precision functions in it IIRC.
Can you gist the file at /home/colin/.julia/v0.6/Ipopt/deps/src/Ipopt-3.12.1/ThirdParty/Mumps/config.log
? That will contain a more detailed error output.
from ipopt.jl.
Also what is ls -al /home/colin/.julia/v0.6/Ipopt/deps/usr/lib/
and ls -al /home/colin/.julia/v0.6/Ipopt/deps/usr/
?
from ipopt.jl.
Gist here:
mumps config: https://gist.github.com/colbec/50b0e7b64628bfb463053dfea4db4f5c
Requested usr/lib does not exist, directory usr/lib64 exists:
> ls -al /home/colin/.julia/v0.6/Ipopt/deps/usr/
total 0
drwxr-xr-x 3 colin users 19 Aug 25 05:19 .
drwxr-xr-x 5 colin users 61 Aug 25 05:19 ..
drwxr-xr-x 3 colin users 113 Aug 25 05:21 lib64
> ls -al /home/colin/.julia/v0.6/Ipopt/deps/usr/lib64/
total 1216
drwxr-xr-x 3 colin users 113 Aug 25 05:21 .
drwxr-xr-x 3 colin users 19 Aug 25 05:19 ..
-rw-r--r-- 1 colin users 253774 Aug 25 05:21 libcoinblas.a
-rwxr-xr-x 1 colin users 782 Aug 25 05:21 libcoinblas.la
-rw-r--r-- 1 colin users 979298 Aug 25 05:21 libcoinlapack.a
-rwxr-xr-x 1 colin users 795 Aug 25 05:21 libcoinlapack.la
drwxr-xr-x 2 colin users 46 Aug 25 05:21 pkgconfig
from ipopt.jl.
Yep, that explains it. It's the opensuse environment variable that tells autoconf/automake to build into lib64
. Let me find where the Julia makefiles unset it, so we can try that here.
Not really needed this time, but just to share. The trick to reading config.log
files when something goes wrong in a configure script is to search for the ## Cache variables. ##
section and look right above that. In this case it said:
configure:21960: checking whether user supplied BLASLIB="/home/colin/.julia/v0.6/Ipopt/deps/usr/lib/libcoinblas.a -lgfortran" works
configure:22077: gcc -o conftest -O3 -pipe -DNDEBUG -DMUMPS_BUILD conftest.c /home/colin/.julia/v0.6/Ipopt/deps/usr/lib/libcoinblas.a -lgfortran >&5
gcc: error: /home/colin/.julia/v0.6/Ipopt/deps/usr/lib/libcoinblas.a: No such file or directory
...
Okay, found it. The environment variable is CONFIG_SITE
. First, what is the value of ENV["CONFIG_SITE"]
for you? Second, try
withenv(filter(x->x[1]!="CONFIG_SITE", collect(ENV))...) do
Pkg.build("Ipopt")
end
You may need to rm(Pkg.dir("Ipopt","deps","usr"); recursive=true)
first.
edit: you may also need to rm(Pkg.dir("Ipopt","deps","src"); recursive=true)
from ipopt.jl.
> echo $CONFIG_SITE
/usr/share/site/x86_64-unknown-linux-gnu
Suggestion to rm(...) followed by withenv(...) resulted in same error as above.
FWIW, as an ugly hack I made a symbolic link from new usr/lib to usr/lib64 and the build works correctly.
from ipopt.jl.
Oh that's how that works, /usr/share/site/x86_64-unknown-linux-gnu
is a file that will have a bunch of content in it. Worth gisting maybe?
I made an edit and you might need to also rm(Pkg.dir("Ipopt","deps","src"); recursive=true)
- the first time when you still got the error, how much of building the library did it re-do? It might have started from cached content in src, I'm not sure.
from ipopt.jl.
Or since I might be mistaken with what withenv
will do for unset-ing certain environment variables, just
pop!(ENV, "CONFIG_SITE")
Pkg.build("Ipopt")
remembering to re-set it if you'd like (or just restart Julia to get it back to the default).
from ipopt.jl.
x86_64-unknown-linux-gnu is actually a bash script which is invoked. Here is the gist:
https://gist.github.com/colbec/681dd307d48d73bc6033d1f8640c19ed
I just completed an optimization problem to check that all was in place and it worked well. Now I will try the steps you suggest.
from ipopt.jl.
I think #63 should fix this - if your manual tests with pop!(ENV, "CONFIG_SITE")
work, would you mind clearing out the deps/src
and deps/usr
again and do
Pkg.checkout("Ipopt")
Pkg.checkout("Ipopt", "tk/fix62")
ENV["MAKEFLAGS"] = "-j4" # save some time
Pkg.build("Ipopt")
Pkg.test("Ipopt")
# and eventually go back to release once a new version of the package gets tagged
Pkg.free("Ipopt")
from ipopt.jl.
Just finished the pop!(ENV, "CONFIG_SITE")
exercise and it worked. Previously had tried removing src and usr followed by Pkg.update()
but that step failed. Now running latest.
Edit: INFO: Ipopt tests passed
from ipopt.jl.
@tkelman As a result of the new setup I am now no longer able to load AmplNLWriter which had worked before. I have tried to rebuild AmplNLWriter and restarted Julia according to standard instructions but no load. Is this related to this issue or should I be cleaning out my cache perhaps?
Edit: looks like it is related to CoinOptServices which also fails on rebuild.
ERROR: LoadError: LoadError: LoadError: Unable to load
libOS (/home/colin/.julia/v0.6/CoinOptServices/deps/usr/lib64/libOS.so)
Please re-run Pkg.build(package), and restart Julia.
in include_from_node1(::String) at ./loading.jl:481 (repeats 2 times)
in eval(::Module, ::Any) at ./boot.jl:234
in require(::Symbol) at ./loading.jl:409
in include_from_node1(::String) at ./loading.jl:481
in eval(::Module, ::Any) at ./boot.jl:234
in require(::Symbol) at ./loading.jl:409
while loading /home/colin/.julia/v0.6/CoinOptServices/src/../deps/deps.jl, in expression starting on line 12
while loading /home/colin/.julia/v0.6/CoinOptServices/src/CoinOptServices.jl, in expression starting on line 20
while loading /home/colin/.julia/v0.6/AmplNLWriter/src/AmplNLWriter.jl, in expression starting on line 28
from ipopt.jl.
Hm, interesting. It's possible that CoinOptServices needs the same change as #63, or maybe you'd need to delete deps/usr
and deps/src
from CoinOptServices as well. Apologies about all the recompilation you're doing, I appreciate the willingness to test. I feel like I would have tested these things when I was booting into my OpenSUSE partition more regularly, but now I can't remember for sure.
from ipopt.jl.
Great! Just to confirm, by "Now running latest" you mean post-Pkg.checkout("Ipopt", "tk/fix62")
, right? We'll get that merged and tagged soon then, once one of the other maintainers gets a chance to review it.
from ipopt.jl.
In Julia 0.6
julia> Pkg.status("Ipopt")
- Ipopt 0.2.4+ tk/fix62
from ipopt.jl.
oh yeah i still need to tag this i think. let's see if #66 needs any changes to be made first
from ipopt.jl.
Related Issues (20)
- add `MathOptInterface.Name()` attribute HOT 1
- `max_wall_time` is still not working HOT 5
- Allow user to specify the Ipopt binary HOT 2
- copy_to does not copy attributes for variable bound constraints HOT 6
- Only evaluate QP callbacks if needed HOT 1
- Problem with HSL solvers since updating to MacOS 13.0 HOT 3
- double free or corruption (out) error HOT 20
- Linking full hsl library to Ipopt.jl on ubuntu HOT 19
- julia 0.6.0 install Ipopt cannot connect to mumps dependency HOT 2
- Add support for GetIpoptCurrentViolations
- Incorrect number of Hessian structure (nonzero entries) HOT 10
- Does Ipopt.jl support giving hessian matrix in JuMP directly, without using the C_wrapper? HOT 2
- pointer being freed was not allocated HOT 33
- Invalid number in NLP function or derivative detected. HOT 8
- Issue with non-negative variable tolerance. HOT 2
- does not allow Ipopt_jll current version HOT 2
- Add some pre-built "debugging" callbacks HOT 1
- Crash on Windows when optimizing with SPRAL_jll HOT 11
- Using Ipopt in parallel threads HOT 4
- "double free or corruption" when providing duplicate hessian entries via MathOptInterface HOT 4
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from ipopt.jl.